diff --git a/.zed/settings.json b/.zed/settings.json index 9425503..017a870 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -4,10 +4,5 @@ // see the documentation: https://zed.dev/docs/configuring-zed#folder-specific-settings { "formatter": "prettier", - "format_on_save": "on", - "languages": { - "TypeScript": { - "language_servers": ["vtsls", "!deno"] - } - } + "format_on_save": "on" } diff --git a/build.config.ts b/build.config.ts index 0e77cd2..fe36e73 100644 --- a/build.config.ts +++ b/build.config.ts @@ -2,4 +2,4 @@ import { defineBuildConfig } from "obuild/config"; export default defineBuildConfig({ entries: ["src/mod.ts"], -}) as ReturnType; +}); diff --git a/deno.json b/deno.json index 44f593d..cede114 100644 --- a/deno.json +++ b/deno.json @@ -1,6 +1,6 @@ { "name": "@textplace/core", - "version": "0.6.1", + "version": "0.5.0", "exports": "./src/mod.ts", "imports": { "@std/cli": "jsr:@std/cli@1" diff --git a/package.json b/package.json index c572c3f..79c371d 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { "name": "@textplace/core", - "version": "0.6.1", + "version": "0.5.0", "description": "The core logic of TextPlace.", "license": "MIT", - "type": "module", "repository": { "type": "git", "url": "https://github.com/TextPlace/CoreTextPlace" @@ -13,8 +12,7 @@ }, "scripts": { "test": "vitest", - "build": "obuild", - "typecheck": "tsc --noEmit" + "build": "obuild" }, "files": [ "dist" @@ -34,5 +32,5 @@ "typescript": "^5.9.3", "vitest": "^4.0.14" }, - "packageManager": "pnpm@10.25.0" + "packageManager": "pnpm@10.23.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 070deb8..a0941fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,16 +14,16 @@ importers: devDependencies: obuild: specifier: ^0.4.3 - version: 0.4.8(typescript@5.9.3) + version: 0.4.3(typescript@5.9.3) prettier: specifier: ^3.7.2 - version: 3.7.4 + version: 3.7.2 typescript: specifier: ^5.9.3 version: 5.9.3 vitest: specifier: ^4.0.14 - version: 4.0.15(jiti@2.6.1) + version: 4.0.14(jiti@2.6.1) packages: @@ -57,158 +57,158 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -232,466 +232,475 @@ packages: '@jsr/std__internal@1.0.12': resolution: {integrity: sha512-6xReMW9p+paJgqoFRpOE2nogJFvzPfaLHLIlyADYjKMUcwDyjKZxryIbgcU+gxiTygn8yCjld1HoI0ET4/iZeA==, tarball: https://npm.jsr.io/~/11/@jsr/std__internal/1.0.12.tgz} - '@napi-rs/wasm-runtime@1.1.0': - resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} - '@oxc-minify/binding-android-arm64@0.102.0': - resolution: {integrity: sha512-pknM+ttJTwRr7ezn1v5K+o2P4RRjLAzKI10bjVDPybwWQ544AZW6jxm7/YDgF2yUbWEV9o7cAQPkIUOmCiW8vg==} + '@oxc-minify/binding-android-arm64@0.99.0': + resolution: {integrity: sha512-pzXEtLKLRoledVGdrJIl0aRR9EWW9Xfs3F6PVvua005NUF93YI6ml6SB50cEIgSmTmqh7rEOZiobjv3Sn5S0vg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-minify/binding-darwin-arm64@0.102.0': - resolution: {integrity: sha512-BDLiH41ZctNND38+GCEL3ZxFn9j7qMZJLrr6SLWMt8xlG4Sl64xTkZ0zeUy4RdVEatKKZdrRIhFZ2e5wPDQT6Q==} + '@oxc-minify/binding-darwin-arm64@0.99.0': + resolution: {integrity: sha512-xVlwgJ9Q8IMEF3Zm0IGYKzuOaRORlcm9Qps98CR2Yki5fEvk7X7J09lrYQ6CFuTW7lNBubXSBNSatpM2NXJGsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-minify/binding-darwin-x64@0.102.0': - resolution: {integrity: sha512-AcB8ZZ711w4hTDhMfMHNjT2d+hekTQ2XmNSUBqJdXB+a2bJbE50UCRq/nxXl44zkjaQTit3lcQbFvhk2wwKcpw==} + '@oxc-minify/binding-darwin-x64@0.99.0': + resolution: {integrity: sha512-1S1+7PAI+mCyXgjjdY08d5ekhfIUZp7XlEG6qzu6076wlXBf7bTj/eoDsWOstHjNNkBODY/qb2AAWGJC9UJ0GQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-minify/binding-freebsd-x64@0.102.0': - resolution: {integrity: sha512-UlLEN9mR5QaviYVMWZQsN9DgAH3qyV67XUXDEzSrbVMLsqHsVHhFU8ZIeO0fxWTQW/cgpvldvKp9/+RdrggqWw==} + '@oxc-minify/binding-freebsd-x64@0.99.0': + resolution: {integrity: sha512-TuNglAPZv/Pdha5xaWB+TgNmZsjnUH+KftP+jgsNRF644179mcrIhBk/UK8weaeG4/FtJCJMOUWUJ4fUUg/AdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-minify/binding-linux-arm-gnueabihf@0.102.0': - resolution: {integrity: sha512-CWyCwedZrUt47n56/RwHSwKXxVI3p98hB0ntLaBNeH5qjjBujs9uOh4bQ0aAlzUWunT77b3/Y+xcQnmV42HN4A==} + '@oxc-minify/binding-linux-arm-gnueabihf@0.99.0': + resolution: {integrity: sha512-OAI2jCLq9a1RVTYSZ9w67rNu2tBDrHkvE62IogyJAU0t3ehAOTimplMV05ppyvNhA1XqvIrG6+t3vuk3pMxyjg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-minify/binding-linux-arm64-gnu@0.102.0': - resolution: {integrity: sha512-W/DCw+Ys8rXj4j38ylJ2l6Kvp6SV+eO5SUWA11imz7yCWntNL001KJyGQ9PJNUFHg0jbxe3yqm4M50v6miWzeA==} + '@oxc-minify/binding-linux-arm-musleabihf@0.99.0': + resolution: {integrity: sha512-S9lv9UwuN7z7TAnagcNefqflkQCKhjRX31g0VMOtQ4Qog4r/45BadAYOEDN7LQnTdW83OV8UKG/RdnW9KoUS/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-minify/binding-linux-arm64-gnu@0.99.0': + resolution: {integrity: sha512-9giyUXQTiZWEbOrHVnih5uM1ILDEtyOgXuC2t/tdg2hFa5s1NqP1BQfYSCCf9/RfZZIAHl9CTMgZGuk3gUJziQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-minify/binding-linux-arm64-musl@0.102.0': - resolution: {integrity: sha512-DyH/t/zSZHuX4Nn239oBteeMC4OP7B13EyXWX18Qg8aJoZ+lZo90WPGOvhP04zII33jJ7di+vrtAUhsX64lp+A==} + '@oxc-minify/binding-linux-arm64-musl@0.99.0': + resolution: {integrity: sha512-9xSudEk6YxTtmiUdSLQYJuIo+gui440/pvn0yNu+UoQb1BcZC+rFyDFYYJX5sn34sVaC4WIcUfZHmaoBmQMGlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-minify/binding-linux-riscv64-gnu@0.102.0': - resolution: {integrity: sha512-CMvzrmOg+Gs44E7TRK/IgrHYp+wwVJxVV8niUrDR2b3SsrCO3NQz5LI+7bM1qDbWnuu5Cl1aiitoMfjRY61dSg==} + '@oxc-minify/binding-linux-riscv64-gnu@0.99.0': + resolution: {integrity: sha512-tf2jApnCbZ6w8GeVGFjjsdymluG0iQ1rFnf1R5rH0jjjKkNaRs/0kVERVhcNSOlc++BWw9kGOc6+y0f7xMo4bQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxc-minify/binding-linux-s390x-gnu@0.102.0': - resolution: {integrity: sha512-tZWr6j2s0ddm9MTfWTI3myaAArg9GDy4UgvpF00kMQAjLcGUNhEEQbB9Bd9KtCvDQzaan8HQs0GVWUp+DWrymw==} + '@oxc-minify/binding-linux-s390x-gnu@0.99.0': + resolution: {integrity: sha512-tJmWcbm5aHBuRWSHxFoFqAibRNzdSj5doWFA4/turVrcjfSMFbiW3aXBzVSXCg6UHabupKee7IknJr4XFU/osA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxc-minify/binding-linux-x64-gnu@0.102.0': - resolution: {integrity: sha512-0YEKmAIun1bS+Iy5Shx6WOTSj3GuilVuctJjc5/vP8/EMTZ/RI8j0eq0Mu3UFPoT/bMULL3MBXuHuEIXmq7Ddg==} + '@oxc-minify/binding-linux-x64-gnu@0.99.0': + resolution: {integrity: sha512-2Iq4piS+6i96mTvvvGwhPa2BVfys7ChV2r7Do7lciZSniXwwhQNJ/6yvqsp3hgaVvXhPYfbn9dEGRb1T1wZ5ww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-minify/binding-linux-x64-musl@0.102.0': - resolution: {integrity: sha512-Ew4QDpEsXoV+pG5+bJpheEy3GH436GBe6ASPB0X27Hh9cQ2gb1NVZ7cY7xJj68+fizwS/PtT8GHoG3uxyH17Pg==} + '@oxc-minify/binding-linux-x64-musl@0.99.0': + resolution: {integrity: sha512-9+PGJxGVfMj5bT+nH70kHu6cFcXkOXBFMxGEpi8IS537/t44fBy87gpPwhJcMd+P0K65bC6dnOHDgtPja7z2Ww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-minify/binding-openharmony-arm64@0.102.0': - resolution: {integrity: sha512-wYPXS8IOu/sXiP3CGHJNPzZo4hfPAwJKevcFH2syvU2zyqUxym7hx6smfcK/mgJBiX7VchwArdGRwrEQKcBSaQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@oxc-minify/binding-wasm32-wasi@0.102.0': - resolution: {integrity: sha512-52SepCb9e+8cVisGa9S/F14K8PxW0AnbV1j4KEYi8uwfkUIxeDNKRHVHzPoBXNrr0yxW0EHLn/3i8J7a2YCpWw==} + '@oxc-minify/binding-wasm32-wasi@0.99.0': + resolution: {integrity: sha512-JNhisxctWSXAk78NdPvf+ecrBfnmTOpkVjdW+iZXYPBlzA5Yv4anrbIBBkwRf/3ITsGE9Xaw02/WZTDDU4fVlQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-minify/binding-win32-arm64-msvc@0.102.0': - resolution: {integrity: sha512-kLs6H1y6sDBKcIimkNwu5th28SLkyvFpHNxdLtCChda0KIGeIXNSiupy5BqEutY+VlWJivKT1OV3Ev3KC5Euzg==} + '@oxc-minify/binding-win32-arm64-msvc@0.99.0': + resolution: {integrity: sha512-Gghv/PBLjlxvqcau4PcX0n7oGYJfdYCG5LkI/y5QEBKGPNwH8oDlhUZIfynHr0WF1wMSqDC5xogiOnDQgugolA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-minify/binding-win32-x64-msvc@0.102.0': - resolution: {integrity: sha512-XdyJZdSMN8rbBXH10CrFuU+Q9jIP2+MnxHmNzjK4+bldbTI1UxqwjUMS9bKVC5VCaIEZhh8IE8x4Vf8gmCgrKQ==} + '@oxc-minify/binding-win32-x64-msvc@0.99.0': + resolution: {integrity: sha512-WD7XK/0vspDXXfbHPz7xSJGzQ1TS8fQdB8DJaq+lmntRvMrdnceMgCDwfve1cZHDELyHu7ZVXqMQunkVmapd2g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-parser/binding-android-arm64@0.102.0': - resolution: {integrity: sha512-pD2if3w3cxPvYbsBSTbhxAYGDaG6WVwnqYG0mYRQ142D6SJ6BpNs7YVQrqpRA2AJQCmzaPP5TRp/koFLebagfQ==} + '@oxc-parser/binding-android-arm64@0.99.0': + resolution: {integrity: sha512-V4jhmKXgQQdRnm73F+r3ZY4pUEsijQeSraFeaCGng7abSNJGs76X6l82wHnmjLGFAeY00LWtjcELs7ZmbJ9+lA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.102.0': - resolution: {integrity: sha512-RzMN6f6MrjjpQC2Dandyod3iOscofYBpHaTecmoRRbC5sJMwsurkqUMHzoJX9F6IM87kn8m/JcClnoOfx5Sesw==} + '@oxc-parser/binding-darwin-arm64@0.99.0': + resolution: {integrity: sha512-Rp41nf9zD5FyLZciS9l1GfK8PhYqrD5kEGxyTOA2esTLeAy37rZxetG2E3xteEolAkeb2WDkVrlxPtibeAncMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.102.0': - resolution: {integrity: sha512-Sr2/3K6GEcejY+HgWp5HaxRPzW5XHe9IfGKVn9OhLt8fzVLnXbK5/GjXj7JjMCNKI3G3ZPZDG2Dgm6CX3MaHCA==} + '@oxc-parser/binding-darwin-x64@0.99.0': + resolution: {integrity: sha512-WVonp40fPPxo5Gs0POTI57iEFv485TvNKOHMwZRhigwZRhZY2accEAkYIhei9eswF4HN5B44Wybkz7Gd1Qr/5Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.102.0': - resolution: {integrity: sha512-s9F2N0KJCGEpuBW6ChpFfR06m2Id9ReaHSl8DCca4HvFNt8SJFPp8fq42n2PZy68rtkremQasM0JDrK2BoBeBQ==} + '@oxc-parser/binding-freebsd-x64@0.99.0': + resolution: {integrity: sha512-H30bjOOttPmG54gAqu6+HzbLEzuNOYO2jZYrIq4At+NtLJwvNhXz28Hf5iEAFZIH/4hMpLkM4VN7uc+5UlNW3Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.102.0': - resolution: {integrity: sha512-zRCIOWzLbqhfY4g8KIZDyYfO2Fl5ltxdQI1v2GlePj66vFWRl8cf4qcBGzxKfsH3wCZHAhmWd1Ht59mnrfH/UQ==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.99.0': + resolution: {integrity: sha512-0Z/Th0SYqzSRDPs6tk5lQdW0i73UCupnim3dgq2oW0//UdLonV/5wIZCArfKGC7w9y4h8TxgXpgtIyD1kKzzlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.102.0': - resolution: {integrity: sha512-5n5RbHgfjulRhKB0pW5p0X/NkQeOpI4uI9WHgIZbORUDATGFC8yeyPA6xYGEs+S3MyEAFxl4v544UEIWwqAgsA==} + '@oxc-parser/binding-linux-arm-musleabihf@0.99.0': + resolution: {integrity: sha512-xo0wqNd5bpbzQVNpAIFbHk1xa+SaS/FGBABCd942SRTnrpxl6GeDj/s1BFaGcTl8MlwlKVMwOcyKrw/2Kdfquw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.99.0': + resolution: {integrity: sha512-u26I6LKoLTPTd4Fcpr0aoAtjnGf5/ulMllo+QUiBhupgbVCAlaj4RyXH/mvcjcsl2bVBv9E/gYJZz2JjxQWXBA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-parser/binding-linux-arm64-musl@0.102.0': - resolution: {integrity: sha512-/XWcmglH/VJ4yKAGTLRgPKSSikh3xciNxkwGiURt8dS30b+3pwc4ZZmudMu0tQ3mjSu0o7V9APZLMpbHK8Bp5w==} + '@oxc-parser/binding-linux-arm64-musl@0.99.0': + resolution: {integrity: sha512-qhftDo2D37SqCEl3ZTa367NqWSZNb1Ddp34CTmShLKFrnKdNiUn55RdokLnHtf1AL5ssaQlYDwBECX7XiBWOhw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-parser/binding-linux-riscv64-gnu@0.102.0': - resolution: {integrity: sha512-2jtIq4nswvy6xdqv1ndWyvVlaRpS0yqomLCvvHdCFx3pFXo5Aoq4RZ39kgvFWrbAtpeYSYeAGFnwgnqjx9ftdw==} + '@oxc-parser/binding-linux-riscv64-gnu@0.99.0': + resolution: {integrity: sha512-zxn/xkf519f12FKkpL5XwJipsylfSSnm36h6c1zBDTz4fbIDMGyIhHfWfwM7uUmHo9Aqw1pLxFpY39Etv398+Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxc-parser/binding-linux-s390x-gnu@0.102.0': - resolution: {integrity: sha512-Yp6HX/574mvYryiqj0jNvNTJqo4pdAsNP2LPBTxlDQ1cU3lPd7DUA4MQZadaeLI8+AGB2Pn50mPuPyEwFIxeFg==} + '@oxc-parser/binding-linux-s390x-gnu@0.99.0': + resolution: {integrity: sha512-Y1eSDKDS5E4IVC7Oxw+NbYAKRmJPMJTIjW+9xOWwteDHkFqpocKe0USxog+Q1uhzalD9M0p9eXWEWdGQCMDBMQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxc-parser/binding-linux-x64-gnu@0.102.0': - resolution: {integrity: sha512-R4b0xZpDRhoNB2XZy0kLTSYm0ZmWeKjTii9fcv1Mk3/SIGPrrglwt4U6zEtwK54Dfi4Bve5JnQYduigR/gyDzw==} + '@oxc-parser/binding-linux-x64-gnu@0.99.0': + resolution: {integrity: sha512-YVJMfk5cFWB8i2/nIrbk6n15bFkMHqWnMIWkVx7r2KwpTxHyFMfu2IpeVKo1ITDSmt5nBrGdLHD36QRlu2nDLg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-parser/binding-linux-x64-musl@0.102.0': - resolution: {integrity: sha512-xM5A+03Ti3jvWYZoqaBRS3lusvnvIQjA46Fc9aBE/MHgvKgHSkrGEluLWg/33QEwBwxupkH25Pxc1yu97oZCtg==} + '@oxc-parser/binding-linux-x64-musl@0.99.0': + resolution: {integrity: sha512-2+SDPrie5f90A1b9EirtVggOgsqtsYU5raZwkDYKyS1uvJzjqHCDhG/f4TwQxHmIc5YkczdQfwvN91lwmjsKYQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-parser/binding-openharmony-arm64@0.102.0': - resolution: {integrity: sha512-AieLlsliblyaTFq7Iw9Nc618tgwV02JT4fQ6VIUd/3ZzbluHIHfPjIXa6Sds+04krw5TvCS8lsegtDYAyzcyhg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@oxc-parser/binding-wasm32-wasi@0.102.0': - resolution: {integrity: sha512-w6HRyArs1PBb9rDsQSHlooe31buUlUI2iY8sBzp62jZ1tmvaJo9EIVTQlRNDkwJmk9DF9uEyIJ82EkZcCZTs9A==} + '@oxc-parser/binding-wasm32-wasi@0.99.0': + resolution: {integrity: sha512-DKA4j0QerUWSMADziLM5sAyM7V53Fj95CV9SjP77bPfEfT7MnvFKnneaRMqPK1cpzjAGiQF52OBUIKyk0dwOQA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.102.0': - resolution: {integrity: sha512-pqP5UuLiiFONQxqGiUFMdsfybaK1EOK4AXiPlvOvacLaatSEPObZGpyCkAcj9aZcvvNwYdeY9cxGM9IT3togaA==} + '@oxc-parser/binding-win32-arm64-msvc@0.99.0': + resolution: {integrity: sha512-EaB3AvsxqdNUhh9FOoAxRZ2L4PCRwDlDb//QXItwyOJrX7XS+uGK9B1KEUV4FZ/7rDhHsWieLt5e07wl2Ti5AQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.102.0': - resolution: {integrity: sha512-ntMcL35wuLR1A145rLSmm7m7j8JBZGkROoB9Du0KFIFcfi/w1qk75BdCeiTl3HAKrreAnuhW3QOGs6mJhntowA==} + '@oxc-parser/binding-win32-x64-msvc@0.99.0': + resolution: {integrity: sha512-sJN1Q8h7ggFOyDn0zsHaXbP/MklAVUvhrbq0LA46Qum686P3SZQHjbATqJn9yaVEvaSKXCshgl0vQ1gWkGgpcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-project/types@0.102.0': - resolution: {integrity: sha512-8Skrw405g+/UJPKWJ1twIk3BIH2nXdiVlVNtYT23AXVwpsd79es4K+KYt06Fbnkc5BaTvk/COT2JuCLYdwnCdA==} + '@oxc-project/types@0.98.0': + resolution: {integrity: sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==} - '@oxc-transform/binding-android-arm64@0.102.0': - resolution: {integrity: sha512-JLBT7EiExsGmB6LuBBnm6qTfg0rLSxBU+F7xjqy6UXYpL7zhqelGJL7IAq6Pu5UYFT55zVlXXmgzLOXQfpQjXA==} + '@oxc-project/types@0.99.0': + resolution: {integrity: sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw==} + + '@oxc-transform/binding-android-arm64@0.99.0': + resolution: {integrity: sha512-4hD7MV7ij3HWCFFk47KcnD85idUhkkSNphxkt3r+jgkMV2OfyrGWdVV7Clo2s58g54OtMG1w4ptzxMVHfJdQKg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-transform/binding-darwin-arm64@0.102.0': - resolution: {integrity: sha512-xmsBCk/NwE0khy8h6wLEexiS5abCp1ZqJUNHsAovJdGgIW21oGwhiC3VYg1vNLbq+zEXwOHuphVuNEYfBwyNTw==} + '@oxc-transform/binding-darwin-arm64@0.99.0': + resolution: {integrity: sha512-drx+TT+irDfPx1j9dKOYuFmjla5pkJXhPjtyTV0qFo+XQLw3FID9Vpxhd/GCWR1PmD8/kbiWG1YvBwbDJRFbMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-transform/binding-darwin-x64@0.102.0': - resolution: {integrity: sha512-EhBsiq8hSd5BRjlWACB9MxTUiZT2He1s1b3tRP8k3lB8ZTt6sXnDXIWhxRmmM0h//xe6IJ2HuMlbvjXPo/tATg==} + '@oxc-transform/binding-darwin-x64@0.99.0': + resolution: {integrity: sha512-aIElmWT0VWnn9RWWLhwj+BuS09QqTmUQ0UfPHOh7DgLo2bO8WbZfu2i+G9E9JkCZY2jQ6JRfkoyoOn42yY9YvQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-transform/binding-freebsd-x64@0.102.0': - resolution: {integrity: sha512-eujvuYf0x7BFgKyFecbXUa2JBEXT4Ss6vmyrrhVdN07jaeJRiobaKAmeNXBkanoWL2KQLELJbSBgs1ykWYTkzg==} + '@oxc-transform/binding-freebsd-x64@0.99.0': + resolution: {integrity: sha512-RMc62brOr30ha9sH/pOddrYOp8H+LkwdANdOUfW0zzKfQNkwiRJzpN5UCo7n9C8XMrVLLmoHhvjaWg1TPGeqsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-transform/binding-linux-arm-gnueabihf@0.102.0': - resolution: {integrity: sha512-2x7Ro356PHBVp1SS/dOsHBSnrfs5MlPYwhdKg35t6qixt2bv1kzEH0tDmn4TNEbdjOirmvOXoCTEWUvh8A4f4Q==} + '@oxc-transform/binding-linux-arm-gnueabihf@0.99.0': + resolution: {integrity: sha512-Np9Hr2rFtE0TqmNghqE0CkxD6w9eTP+VY5q8XqytY4kDajyEqZHzdlrbX4R0V+p61zn88VHvGT3DfWQTwLBG9A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-transform/binding-linux-arm64-gnu@0.102.0': - resolution: {integrity: sha512-Rz/RbPvT4QwcHKIQ/cOt6Lwl4c7AhK2b6whZfyL6oJ7Uz8UiVl1BCwk8thedrB5h+FEykmaPHoriW1hmBev60g==} + '@oxc-transform/binding-linux-arm-musleabihf@0.99.0': + resolution: {integrity: sha512-eXCssXVXQQYUStPahIrYJBBMWllm6nQERqucNu8T5o1Yqu9SzkvndzuWDYoBtz95KpY7mqqcPt/zubY4Wv3RiQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-transform/binding-linux-arm64-gnu@0.99.0': + resolution: {integrity: sha512-kYPUsytdIkEjuG1XdDLxTRsJoomVA1xLCEiTRKt1Td1oSvY95gKFzvT0IaFxuVKxFF8douquUXChSeBDTKPl0w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-transform/binding-linux-arm64-musl@0.102.0': - resolution: {integrity: sha512-I08iWABrN7zakn3wuNIBWY3hALQGsDLPQbZT1mXws7tyiQqJNGe49uS0/O50QhX3KXj+mbRGsmjVXLXGJE1CVQ==} + '@oxc-transform/binding-linux-arm64-musl@0.99.0': + resolution: {integrity: sha512-RcG6mnQ/WgO0uEqxJGpmhPdeGipopEeMFgylqfz5uwscRwmiwKISUJd0XHPDP0IrWUo2frgtBIVq5aFcj9t/Ng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-transform/binding-linux-riscv64-gnu@0.102.0': - resolution: {integrity: sha512-9+SYW1ARAF6Oj/82ayoqKRe8SI7O1qvzs3Y0kijvhIqAaaZWcFRjI5DToyWRAbnzTtHlMcSllZLXNYdmxBjFxA==} + '@oxc-transform/binding-linux-riscv64-gnu@0.99.0': + resolution: {integrity: sha512-GLzZ/gY7qZoT1AUZm/KJqzEUtoWsHooXt+3gjDkw1GGL42OiWtS77YTrVzirWb1kHG2jmCQU1wt+zpn7NjtJwQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxc-transform/binding-linux-s390x-gnu@0.102.0': - resolution: {integrity: sha512-HV9nTyQw0TTKYPu+gBhaJBioomiM9O4LcGXi+s5IylCGG6imP0/U13q/9xJnP267QFmiWWqnnSFcv0QAWCyh8A==} + '@oxc-transform/binding-linux-s390x-gnu@0.99.0': + resolution: {integrity: sha512-ymQ9f5Z76v9R0QtecJH3tL/n/QBY3TeRi6Z9lTW4UKdv+gfRB87fKHkd0Rrmwe0MqupdCXhAVLe7fWV8DkCDXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxc-transform/binding-linux-x64-gnu@0.102.0': - resolution: {integrity: sha512-4wcZ08mmdFk8OjsnglyeYGu5PW3TDh87AmcMOi7tZJ3cpJjfzwDfY27KTEUx6G880OpjAiF36OFSPwdKTKgp2g==} + '@oxc-transform/binding-linux-x64-gnu@0.99.0': + resolution: {integrity: sha512-oF6MxCAmQBkgrgRJGlUtpYwUwAq9cOmTJ7hh9Ol27fyGM4NUGOPH2sjrUenlCJ3p3huYwkzUtg+WRqXoiyrc6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-transform/binding-linux-x64-musl@0.102.0': - resolution: {integrity: sha512-rUHZSZBw0FUnUgOhL/Rs7xJz9KjH2eFur/0df6Lwq/isgJc/ggtBtFoZ+y4Fb8ON87a3Y2gS2LT7SEctX0XdPQ==} + '@oxc-transform/binding-linux-x64-musl@0.99.0': + resolution: {integrity: sha512-PYcG6x/2IEWEETXPIDJANNTjFu2LCivHFPue2wnQaPtPuakJbjMdHyGHdxC4MV3V3Xtp7YUjhzS/x+VmiSaDJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-transform/binding-openharmony-arm64@0.102.0': - resolution: {integrity: sha512-98y4tccTQ/pA+r2KA/MEJIZ7J8TNTJ4aCT4rX8kWK4pGOko2YsfY3Ru9DVHlLDwmVj7wP8Z4JNxdBrAXRvK+0g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@oxc-transform/binding-wasm32-wasi@0.102.0': - resolution: {integrity: sha512-M6myOXxHty3L2TJEB1NlJPtQm0c0LmivAxcGv/+DSDadOoB/UnOUbjM8W2Utlh5IYS9ARSOjqHtBiPYLWJ15XA==} + '@oxc-transform/binding-wasm32-wasi@0.99.0': + resolution: {integrity: sha512-NoaFl5gqm9rXq6dcG6O6XNvn/4tyRjuqWuMRnuMqJ0F7Zo/+qfdsXwwo+VuUCmDMxSVUz0DTMJVJIAVyZoBkQA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-transform/binding-win32-arm64-msvc@0.102.0': - resolution: {integrity: sha512-jzaA1lLiMXiJs4r7E0BHRxTPiwAkpoCfSNRr8npK/SqL4UQE4cSz3WDTX5wJWRrN2U+xqsDGefeYzH4reI8sgw==} + '@oxc-transform/binding-win32-arm64-msvc@0.99.0': + resolution: {integrity: sha512-/XtVvl7sLC2vct7AgvAzBq4g8gnkWToU9fZhbbiY1Pj5mGRGhXhNW0jbugHIWW8VopEqeOv9nwkY9Gt2f8fPVw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-transform/binding-win32-x64-msvc@0.102.0': - resolution: {integrity: sha512-eYOm6mch+1cP9qlNkMdorfBFY8aEOxY/isqrreLmEWqF/hyXA0SbLKDigTbvh3JFKny/gXlHoCKckqfua4cwtg==} + '@oxc-transform/binding-win32-x64-msvc@0.99.0': + resolution: {integrity: sha512-77wESR0e8M+I2RR2KY769JJtRUzQfPs7AMtli6VoDa9cNP/T6HOd8MThjhLqK/CpppuhqaqC2xHAw52Lsg2mDw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/binding-android-arm64@1.0.0-beta.54': - resolution: {integrity: sha512-zZRx/ur3Fai3fxiEmVp48+6GCBR48PRWJR1X3TTMn9yiq2bBHlYPgBaQtDOYWXv5H3J5dXujeTyGnuoY+kdGCg==} + '@rolldown/binding-android-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.54': - resolution: {integrity: sha512-zMyFEJmbIs91x22HAA/eUvmZHgjX8tGsD3TJ+WC9aY4bCdl3w84H9vMZmChSHAF1dYvGNH4KQDI2IubeZaCYtg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.54': - resolution: {integrity: sha512-Ex7QttdaVnEpmE/zroUT5Qm10e2+Vjd9q0LX9eXm59SitxDODMpC8GI1Rct5RrLf4GLU4DzdXBj6DGzuR+6g6w==} + '@rolldown/binding-darwin-x64@1.0.0-beta.51': + resolution: {integrity: sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.54': - resolution: {integrity: sha512-E1XO10ryM/Vxw3Q1wvs9s2mSpVBfbHtzkbJcdu26qh17ZmVwNWLiIoqEcbkXm028YwkReG4Gd2gCZ3NxgTQ28Q==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': + resolution: {integrity: sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.54': - resolution: {integrity: sha512-oS73Uks8jczQR9pg0Bj718vap/x71exyJ5yuxu4X5V4MhwRQnky7ANSPm6ARUfraxOqt49IBfcMeGnw2rTSqdA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': + resolution: {integrity: sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.54': - resolution: {integrity: sha512-pY8N2X5C+/ZQcy0eRdfOzOP//OFngP1TaIqDjFwfBPws2UNavKS8SpxhPEgUaYIaT0keVBd/TB+eVy9z+CIOtw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.54': - resolution: {integrity: sha512-cgTooAFm2MUmFriB7IYaWBNyqrGlRPKG+yaK2rGFl2rcdOcO24urY4p3eyB0ogqsRLvJbIxwjjYiWiIP7Eo1Cw==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.54': - resolution: {integrity: sha512-nGyLT1Qau0W+kEL44V2jhHmvfS3wyJW08E4WEu2E6NuIy+uChKN1X0aoxzFIDi2owDsYaZYez/98/f268EupIQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.54': - resolution: {integrity: sha512-KH374P0TUjDXssROT/orvzaWrzGOptD13PTrltgKwbDprJTMknoLiYsOD6Ttz92O2VuAcCtFuJ1xbyFM2Uo/Xg==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.54': - resolution: {integrity: sha512-oMAVO4wbfAbhpBxPsSp8R7ntL2DchpNfO+tGhN8/sI9jsbYwOv78uIW1fTwOBslhjTVFltGJ+l23mubNQcYNaQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.54': - resolution: {integrity: sha512-MYY/FmY+HehHiQkNx04W5oLy/Fqd1hXYqZmmorSDXvAHnxMbSgmdFicKsSYOg/sVGHBMEP1tTn6kV5sWrS45rA==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': + resolution: {integrity: sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.54': - resolution: {integrity: sha512-66o3uKxUmcYskT9exskxs3OVduXf5x0ndlMkYOjSpBgqzhLtkub136yDvZkNT1OkNDET0odSwcU7aWdpnwzAyg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.54': - resolution: {integrity: sha512-FbbbrboChLBXfeEsOfaypBGqzbdJ/CcSA2BPLCggojnIHy58Jo+AXV7HATY8opZk7194rRbokIT8AfPJtZAWtg==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==} engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@rolldown/pluginutils@1.0.0-beta.54': - resolution: {integrity: sha512-AHgcZ+w7RIRZ65ihSQL8YuoKcpD9Scew4sEeP1BBUT9QdTo6KjwHrZZXjID6nL10fhKessCH6OPany2QKwAwTQ==} - - '@rollup/rollup-android-arm-eabi@4.53.4': - resolution: {integrity: sha512-PWU3Y92H4DD0bOqorEPp1Y0tbzwAurFmIYpjcObv5axGVOtcTlB0b2UKMd2echo08MgN7jO8WQZSSysvfisFSQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.53.4': - resolution: {integrity: sha512-Gw0/DuVm3rGsqhMGYkSOXXIx20cC3kTlivZeuaGt4gEgILivykNyBWxeUV5Cf2tDA2nPLah26vq3emlRrWVbng==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.53.4': - resolution: {integrity: sha512-+w06QvXsgzKwdVg5qRLZpTHh1bigHZIqoIUPtiqh05ZiJVUQ6ymOxaPkXTvRPRLH88575ZCRSRM3PwIoNma01Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.53.4': - resolution: {integrity: sha512-EB4Na9G2GsrRNRNFPuxfwvDRDUwQEzJPpiK1vo2zMVhEeufZ1k7J1bKnT0JYDfnPC7RNZ2H5YNQhW6/p2QKATw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.53.4': - resolution: {integrity: sha512-bldA8XEqPcs6OYdknoTMaGhjytnwQ0NClSPpWpmufOuGPN5dDmvIa32FygC2gneKK4A1oSx86V1l55hyUWUYFQ==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.53.4': - resolution: {integrity: sha512-3T8GPjH6mixCd0YPn0bXtcuSXi1Lj+15Ujw2CEb7dd24j9thcKscCf88IV7n76WaAdorOzAgSSbuVRg4C8V8Qw==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.53.4': - resolution: {integrity: sha512-UPMMNeC4LXW7ZSHxeP3Edv09aLsFUMaD1TSVW6n1CWMECnUIJMFFB7+XC2lZTdPtvB36tYC0cJWc86mzSsaviw==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.53.4': - resolution: {integrity: sha512-H8uwlV0otHs5Q7WAMSoyvjV9DJPiy5nJ/xnHolY0QptLPjaSsuX7tw+SPIfiYH6cnVx3fe4EWFafo6gH6ekZKA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.53.4': - resolution: {integrity: sha512-BLRwSRwICXz0TXkbIbqJ1ibK+/dSBpTJqDClF61GWIrxTXZWQE78ROeIhgl5MjVs4B4gSLPCFeD4xML9vbzvCQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.53.4': - resolution: {integrity: sha512-6bySEjOTbmVcPJAywjpGLckK793A0TJWSbIa0sVwtVGfe/Nz6gOWHOwkshUIAp9j7wg2WKcA4Snu7Y1nUZyQew==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loong64-gnu@4.53.4': - resolution: {integrity: sha512-U0ow3bXYJZ5MIbchVusxEycBw7bO6C2u5UvD31i5IMTrnt2p4Fh4ZbHSdc/31TScIJQYHwxbj05BpevB3201ug==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-ppc64-gnu@4.53.4': - resolution: {integrity: sha512-iujDk07ZNwGLVn0YIWM80SFN039bHZHCdCCuX9nyx3Jsa2d9V/0Y32F+YadzwbvDxhSeVo9zefkoPnXEImnM5w==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.53.4': - resolution: {integrity: sha512-MUtAktiOUSu+AXBpx1fkuG/Bi5rhlorGs3lw5QeJ2X3ziEGAq7vFNdWVde6XGaVqi0LGSvugwjoxSNJfHFTC0g==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.53.4': - resolution: {integrity: sha512-btm35eAbDfPtcFEgaXCI5l3c2WXyzwiE8pArhd66SDtoLWmgK5/M7CUxmUglkwtniPzwvWioBKKl6IXLbPf2sQ==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.53.4': - resolution: {integrity: sha512-uJlhKE9ccUTCUlK+HUz/80cVtx2RayadC5ldDrrDUFaJK0SNb8/cCmC9RhBhIWuZ71Nqj4Uoa9+xljKWRogdhA==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.53.4': - resolution: {integrity: sha512-jjEMkzvASQBbzzlzf4os7nzSBd/cvPrpqXCUOqoeCh1dQ4BP3RZCJk8XBeik4MUln3m+8LeTJcY54C/u8wb3DQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.53.4': - resolution: {integrity: sha512-lu90KG06NNH19shC5rBPkrh6mrTpq5kviFylPBXQVpdEu0yzb0mDgyxLr6XdcGdBIQTH/UAhDJnL+APZTBu1aQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-openharmony-arm64@4.53.4': - resolution: {integrity: sha512-dFDcmLwsUzhAm/dn0+dMOQZoONVYBtgik0VuY/d5IJUUb787L3Ko/ibvTvddqhb3RaB7vFEozYevHN4ox22R/w==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.53.4': - resolution: {integrity: sha512-WvUpUAWmUxZKtRnQWpRKnLW2DEO8HB/l8z6oFFMNuHndMzFTJEXzaYJ5ZAmzNw0L21QQJZsUQFt2oPf3ykAD/w==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.53.4': - resolution: {integrity: sha512-JGbeF2/FDU0x2OLySw/jgvkwWUo05BSiJK0dtuI4LyuXbz3wKiC1xHhLB1Tqm5VU6ZZDmAorj45r/IgWNWku5g==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.4': - resolution: {integrity: sha512-zuuC7AyxLWLubP+mlUwEyR8M1ixW1ERNPHJfXm8x7eQNP4Pzkd7hS3qBuKBR70VRiQ04Kw8FNfRMF5TNxuZq2g==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.4': - resolution: {integrity: sha512-Sbx45u/Lbb5RyptSbX7/3deP+/lzEmZ0BTSHxwxN/IMOZDZf8S0AGo0hJD5n/LQssxb5Z3B4og4P2X6Dd8acCA==} + '@rolldown/pluginutils@1.0.0-beta.51': + resolution: {integrity: sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==} + + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] @@ -710,11 +719,11 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@vitest/expect@4.0.15': - resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} + '@vitest/expect@4.0.14': + resolution: {integrity: sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==} - '@vitest/mocker@4.0.15': - resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} + '@vitest/mocker@4.0.14': + resolution: {integrity: sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -724,20 +733,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.15': - resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} + '@vitest/pretty-format@4.0.14': + resolution: {integrity: sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==} - '@vitest/runner@4.0.15': - resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} + '@vitest/runner@4.0.14': + resolution: {integrity: sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==} - '@vitest/snapshot@4.0.15': - resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} + '@vitest/snapshot@4.0.14': + resolution: {integrity: sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==} - '@vitest/spy@4.0.15': - resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} + '@vitest/spy@4.0.14': + resolution: {integrity: sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==} - '@vitest/utils@4.0.15': - resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} + '@vitest/utils@4.0.14': + resolution: {integrity: sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==} assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} @@ -747,8 +756,8 @@ packages: resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} - birpc@3.0.0: - resolution: {integrity: sha512-by+04pHuxpCEQcucAXqzopqfhyI8TLK5Qg5MST0cB6MP+JhHna9ollrtK9moVh27aq6Q6MEJgebD0cVm//yBkg==} + birpc@2.8.0: + resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} c12@3.3.2: resolution: {integrity: sha512-QkikB2X5voO1okL3QsES0N690Sn/K9WokXqUsDQsWy5SnYb+psYQFGA10iy1bZHj3fjISKsI67Q90gruvWWM3A==} @@ -798,16 +807,16 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} exsolve@1.0.8: @@ -862,23 +871,23 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - obuild@0.4.8: - resolution: {integrity: sha512-gFr6JPaMZOZmYGAwBQuJUpCgb9vV3JGPQ8ufEIyb3DBQv9MPM5z3DWw4bBnmfUs2fSj3CH7wTXk6jlxWvqRZKw==} + obuild@0.4.3: + resolution: {integrity: sha512-EjbeMT01VlLMabLM1C/En4EtXzzBx1FrV1VaM7JckWlqMw1DyoSS8tGgsSMHjqol5AAG8qOmw5EyaS6ZRu9g1Q==} hasBin: true ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - oxc-minify@0.102.0: - resolution: {integrity: sha512-FphAHDyTCNepQbiQTSyWFMbNc9zdUmj1WBsoLwvZhWm7rEe/IeIKYKRhy75lWOjwFsi5/i4Qucq43hgs3n2Exw==} + oxc-minify@0.99.0: + resolution: {integrity: sha512-eQ8iDj1eFeiw258iiSRfRJARbVgLjweyh81ykt8fTjX0JQLwU8ASYpAzymD/HaIqSsiOas8cGd3EElwKPL3GCQ==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-parser@0.102.0: - resolution: {integrity: sha512-xMiyHgr2FZsphQ12ZCsXRvSYzmKXCm1ejmyG4GDZIiKOmhyt5iKtWq0klOfFsEQ6jcgbwrUdwcCVYzr1F+h5og==} + oxc-parser@0.99.0: + resolution: {integrity: sha512-MpS1lbd2vR0NZn1v0drpgu7RUFu3x9Rd0kxExObZc2+F+DIrV0BOMval/RO3BYGwssIOerII6iS8EbbpCCZQpQ==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-transform@0.102.0: - resolution: {integrity: sha512-MR5ohiBS6/kvxRpmUZ3LIDTTJBEC4xLAEZXfYr7vrA0eP7WHewQaNQPFDgT4Bee89TdmVQ5ZKrifGwxLjSyHHw==} + oxc-transform@0.99.0: + resolution: {integrity: sha512-50VC9deilv1i4IDKTvbxRduzi8ZtB+rmFow0PO0P2a/OavP963FEIAQGA4AFBvgl3hD+MXB4uUgz055Qj0sd3w==} engines: {node: ^20.19.0 || >=22.12.0} pathe@2.0.3: @@ -901,8 +910,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.7.2: + resolution: {integrity: sha512-n3HV2J6QhItCXndGa3oMWvWFAgN1ibnS7R9mt6iokScBOC0Ul9/iZORmU2IWUMcyAQaMPjTlY3uT34TqocUxMA==} engines: {node: '>=14'} hasBin: true @@ -920,8 +929,8 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - rolldown-plugin-dts@0.18.3: - resolution: {integrity: sha512-rd1LZ0Awwfyn89UndUF/HoFF4oH9a5j+2ZeuKSJYM80vmeN/p0gslYMnHTQHBEXPhUlvAlqGA3tVgXB/1qFNDg==} + rolldown-plugin-dts@0.18.1: + resolution: {integrity: sha512-uIgNMix6OI+6bSkw0nw6O+G/ydPRCWKwvvcEyL6gWkVkSFVGWWO23DX4ZYVOqC7w5u2c8uPY9Q74U0QCKvegFA==} engines: {node: '>=20.19.0'} peerDependencies: '@ts-macro/tsc': ^0.3.6 @@ -939,13 +948,13 @@ packages: vue-tsc: optional: true - rolldown@1.0.0-beta.54: - resolution: {integrity: sha512-3lIvjCWgjPL3gmiATUdV1NeVBGJZy6FdtwgLPol25tAkn46Q/MsVGfCSNswXwFOxGrxglPaN20IeALSIFuFyEg==} + rolldown@1.0.0-beta.51: + resolution: {integrity: sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.53.4: - resolution: {integrity: sha512-YpXaaArg0MvrnJpvduEDYIp7uGOqKXbH9NsHGQ6SxKCOsNAjZF018MmxefFUulVP2KLtiGw1UvZbr+/ekjvlDg==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -965,6 +974,9 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -985,8 +997,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - vite@7.3.0: - resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} + vite@7.2.4: + resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1025,18 +1037,18 @@ packages: yaml: optional: true - vitest@4.0.15: - resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} + vitest@4.0.14: + resolution: {integrity: sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.15 - '@vitest/browser-preview': 4.0.15 - '@vitest/browser-webdriverio': 4.0.15 - '@vitest/ui': 4.0.15 + '@vitest/browser-playwright': 4.0.14 + '@vitest/browser-preview': 4.0.14 + '@vitest/browser-webdriverio': 4.0.14 + '@vitest/ui': 4.0.14 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -1103,82 +1115,82 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.27.1': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.1': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.27.1': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.27.1': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.1': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.1': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.1': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.1': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.1': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.27.1': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.1': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.1': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.1': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.1': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.1': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.1': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.27.1': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.1': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.1': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.1': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.1': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.1': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.1': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.1': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.1': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.27.1': + '@esbuild/win32-x64@0.25.12': optional: true '@jridgewell/gen-mapping@0.3.13': @@ -1201,263 +1213,268 @@ snapshots: '@jsr/std__internal@1.0.12': {} - '@napi-rs/wasm-runtime@1.1.0': + '@napi-rs/wasm-runtime@1.0.7': dependencies: '@emnapi/core': 1.7.1 '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.10.1 optional: true - '@oxc-minify/binding-android-arm64@0.102.0': + '@oxc-minify/binding-android-arm64@0.99.0': optional: true - '@oxc-minify/binding-darwin-arm64@0.102.0': + '@oxc-minify/binding-darwin-arm64@0.99.0': optional: true - '@oxc-minify/binding-darwin-x64@0.102.0': + '@oxc-minify/binding-darwin-x64@0.99.0': optional: true - '@oxc-minify/binding-freebsd-x64@0.102.0': + '@oxc-minify/binding-freebsd-x64@0.99.0': optional: true - '@oxc-minify/binding-linux-arm-gnueabihf@0.102.0': + '@oxc-minify/binding-linux-arm-gnueabihf@0.99.0': optional: true - '@oxc-minify/binding-linux-arm64-gnu@0.102.0': + '@oxc-minify/binding-linux-arm-musleabihf@0.99.0': optional: true - '@oxc-minify/binding-linux-arm64-musl@0.102.0': + '@oxc-minify/binding-linux-arm64-gnu@0.99.0': optional: true - '@oxc-minify/binding-linux-riscv64-gnu@0.102.0': + '@oxc-minify/binding-linux-arm64-musl@0.99.0': optional: true - '@oxc-minify/binding-linux-s390x-gnu@0.102.0': + '@oxc-minify/binding-linux-riscv64-gnu@0.99.0': optional: true - '@oxc-minify/binding-linux-x64-gnu@0.102.0': + '@oxc-minify/binding-linux-s390x-gnu@0.99.0': optional: true - '@oxc-minify/binding-linux-x64-musl@0.102.0': + '@oxc-minify/binding-linux-x64-gnu@0.99.0': optional: true - '@oxc-minify/binding-openharmony-arm64@0.102.0': + '@oxc-minify/binding-linux-x64-musl@0.99.0': optional: true - '@oxc-minify/binding-wasm32-wasi@0.102.0': + '@oxc-minify/binding-wasm32-wasi@0.99.0': dependencies: - '@napi-rs/wasm-runtime': 1.1.0 + '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@oxc-minify/binding-win32-arm64-msvc@0.102.0': + '@oxc-minify/binding-win32-arm64-msvc@0.99.0': optional: true - '@oxc-minify/binding-win32-x64-msvc@0.102.0': + '@oxc-minify/binding-win32-x64-msvc@0.99.0': optional: true - '@oxc-parser/binding-android-arm64@0.102.0': + '@oxc-parser/binding-android-arm64@0.99.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.102.0': + '@oxc-parser/binding-darwin-arm64@0.99.0': optional: true - '@oxc-parser/binding-darwin-x64@0.102.0': + '@oxc-parser/binding-darwin-x64@0.99.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.102.0': + '@oxc-parser/binding-freebsd-x64@0.99.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.102.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.99.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.102.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.99.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.102.0': + '@oxc-parser/binding-linux-arm64-gnu@0.99.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.102.0': + '@oxc-parser/binding-linux-arm64-musl@0.99.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.102.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.99.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.102.0': + '@oxc-parser/binding-linux-s390x-gnu@0.99.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.102.0': + '@oxc-parser/binding-linux-x64-gnu@0.99.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.102.0': + '@oxc-parser/binding-linux-x64-musl@0.99.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.102.0': + '@oxc-parser/binding-wasm32-wasi@0.99.0': dependencies: - '@napi-rs/wasm-runtime': 1.1.0 + '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.102.0': + '@oxc-parser/binding-win32-arm64-msvc@0.99.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.102.0': + '@oxc-parser/binding-win32-x64-msvc@0.99.0': optional: true - '@oxc-project/types@0.102.0': {} + '@oxc-project/types@0.98.0': {} - '@oxc-transform/binding-android-arm64@0.102.0': + '@oxc-project/types@0.99.0': {} + + '@oxc-transform/binding-android-arm64@0.99.0': optional: true - '@oxc-transform/binding-darwin-arm64@0.102.0': + '@oxc-transform/binding-darwin-arm64@0.99.0': optional: true - '@oxc-transform/binding-darwin-x64@0.102.0': + '@oxc-transform/binding-darwin-x64@0.99.0': optional: true - '@oxc-transform/binding-freebsd-x64@0.102.0': + '@oxc-transform/binding-freebsd-x64@0.99.0': optional: true - '@oxc-transform/binding-linux-arm-gnueabihf@0.102.0': + '@oxc-transform/binding-linux-arm-gnueabihf@0.99.0': optional: true - '@oxc-transform/binding-linux-arm64-gnu@0.102.0': + '@oxc-transform/binding-linux-arm-musleabihf@0.99.0': optional: true - '@oxc-transform/binding-linux-arm64-musl@0.102.0': + '@oxc-transform/binding-linux-arm64-gnu@0.99.0': optional: true - '@oxc-transform/binding-linux-riscv64-gnu@0.102.0': + '@oxc-transform/binding-linux-arm64-musl@0.99.0': optional: true - '@oxc-transform/binding-linux-s390x-gnu@0.102.0': + '@oxc-transform/binding-linux-riscv64-gnu@0.99.0': optional: true - '@oxc-transform/binding-linux-x64-gnu@0.102.0': + '@oxc-transform/binding-linux-s390x-gnu@0.99.0': optional: true - '@oxc-transform/binding-linux-x64-musl@0.102.0': + '@oxc-transform/binding-linux-x64-gnu@0.99.0': optional: true - '@oxc-transform/binding-openharmony-arm64@0.102.0': + '@oxc-transform/binding-linux-x64-musl@0.99.0': optional: true - '@oxc-transform/binding-wasm32-wasi@0.102.0': + '@oxc-transform/binding-wasm32-wasi@0.99.0': dependencies: - '@napi-rs/wasm-runtime': 1.1.0 + '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@oxc-transform/binding-win32-arm64-msvc@0.102.0': + '@oxc-transform/binding-win32-arm64-msvc@0.99.0': optional: true - '@oxc-transform/binding-win32-x64-msvc@0.102.0': + '@oxc-transform/binding-win32-x64-msvc@0.99.0': optional: true - '@rolldown/binding-android-arm64@1.0.0-beta.54': + '@rolldown/binding-android-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.54': + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.54': + '@rolldown/binding-darwin-x64@1.0.0-beta.51': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.54': + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.54': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.54': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.54': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.54': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.54': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.54': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.54': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': dependencies: - '@napi-rs/wasm-runtime': 1.1.0 + '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.54': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.54': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': optional: true - '@rolldown/pluginutils@1.0.0-beta.54': {} - - '@rollup/rollup-android-arm-eabi@4.53.4': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': optional: true - '@rollup/rollup-android-arm64@4.53.4': + '@rolldown/pluginutils@1.0.0-beta.51': {} + + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.53.4': + '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.53.4': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.53.4': + '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.53.4': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.4': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.4': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.4': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.4': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.4': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.4': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.4': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.4': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.4': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.4': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.53.4': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-openharmony-arm64@4.53.4': + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.4': + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.4': + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.4': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.4': + '@rollup/rollup-win32-x64-gnu@4.53.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true '@standard-schema/spec@1.0.0': {} @@ -1476,43 +1493,43 @@ snapshots: '@types/estree@1.0.8': {} - '@vitest/expect@4.0.15': + '@vitest/expect@4.0.14': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 + '@vitest/spy': 4.0.14 + '@vitest/utils': 4.0.14 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.3.0(jiti@2.6.1))': + '@vitest/mocker@4.0.14(vite@7.2.4(jiti@2.6.1))': dependencies: - '@vitest/spy': 4.0.15 + '@vitest/spy': 4.0.14 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(jiti@2.6.1) + vite: 7.2.4(jiti@2.6.1) - '@vitest/pretty-format@4.0.15': + '@vitest/pretty-format@4.0.14': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.15': + '@vitest/runner@4.0.14': dependencies: - '@vitest/utils': 4.0.15 + '@vitest/utils': 4.0.14 pathe: 2.0.3 - '@vitest/snapshot@4.0.15': + '@vitest/snapshot@4.0.14': dependencies: - '@vitest/pretty-format': 4.0.15 + '@vitest/pretty-format': 4.0.14 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.15': {} + '@vitest/spy@4.0.14': {} - '@vitest/utils@4.0.15': + '@vitest/utils@4.0.14': dependencies: - '@vitest/pretty-format': 4.0.15 + '@vitest/pretty-format': 4.0.14 tinyrainbow: 3.0.3 assertion-error@2.0.1: {} @@ -1522,7 +1539,7 @@ snapshots: '@babel/parser': 7.28.5 pathe: 2.0.3 - birpc@3.0.0: {} + birpc@2.8.0: {} c12@3.3.2: dependencies: @@ -1563,40 +1580,40 @@ snapshots: es-module-lexer@1.7.0: {} - esbuild@0.27.1: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 + '@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 estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 - expect-type@1.3.0: {} + expect-type@1.2.2: {} exsolve@1.0.8: {} @@ -1642,20 +1659,20 @@ snapshots: obug@2.1.1: {} - obuild@0.4.8(typescript@5.9.3): + obuild@0.4.3(typescript@5.9.3): dependencies: c12: 3.3.2 consola: 3.4.2 defu: 6.1.4 exsolve: 1.0.8 magic-string: 0.30.21 - oxc-minify: 0.102.0 - oxc-parser: 0.102.0 - oxc-transform: 0.102.0 + oxc-minify: 0.99.0 + oxc-parser: 0.99.0 + oxc-transform: 0.99.0 pathe: 2.0.3 pretty-bytes: 7.1.0 - rolldown: 1.0.0-beta.54 - rolldown-plugin-dts: 0.18.3(rolldown@1.0.0-beta.54)(typescript@5.9.3) + rolldown: 1.0.0-beta.51 + rolldown-plugin-dts: 0.18.1(rolldown@1.0.0-beta.51)(typescript@5.9.3) tinyglobby: 0.2.15 transitivePeerDependencies: - '@ts-macro/tsc' @@ -1667,61 +1684,61 @@ snapshots: ohash@2.0.11: {} - oxc-minify@0.102.0: + oxc-minify@0.99.0: optionalDependencies: - '@oxc-minify/binding-android-arm64': 0.102.0 - '@oxc-minify/binding-darwin-arm64': 0.102.0 - '@oxc-minify/binding-darwin-x64': 0.102.0 - '@oxc-minify/binding-freebsd-x64': 0.102.0 - '@oxc-minify/binding-linux-arm-gnueabihf': 0.102.0 - '@oxc-minify/binding-linux-arm64-gnu': 0.102.0 - '@oxc-minify/binding-linux-arm64-musl': 0.102.0 - '@oxc-minify/binding-linux-riscv64-gnu': 0.102.0 - '@oxc-minify/binding-linux-s390x-gnu': 0.102.0 - '@oxc-minify/binding-linux-x64-gnu': 0.102.0 - '@oxc-minify/binding-linux-x64-musl': 0.102.0 - '@oxc-minify/binding-openharmony-arm64': 0.102.0 - '@oxc-minify/binding-wasm32-wasi': 0.102.0 - '@oxc-minify/binding-win32-arm64-msvc': 0.102.0 - '@oxc-minify/binding-win32-x64-msvc': 0.102.0 + '@oxc-minify/binding-android-arm64': 0.99.0 + '@oxc-minify/binding-darwin-arm64': 0.99.0 + '@oxc-minify/binding-darwin-x64': 0.99.0 + '@oxc-minify/binding-freebsd-x64': 0.99.0 + '@oxc-minify/binding-linux-arm-gnueabihf': 0.99.0 + '@oxc-minify/binding-linux-arm-musleabihf': 0.99.0 + '@oxc-minify/binding-linux-arm64-gnu': 0.99.0 + '@oxc-minify/binding-linux-arm64-musl': 0.99.0 + '@oxc-minify/binding-linux-riscv64-gnu': 0.99.0 + '@oxc-minify/binding-linux-s390x-gnu': 0.99.0 + '@oxc-minify/binding-linux-x64-gnu': 0.99.0 + '@oxc-minify/binding-linux-x64-musl': 0.99.0 + '@oxc-minify/binding-wasm32-wasi': 0.99.0 + '@oxc-minify/binding-win32-arm64-msvc': 0.99.0 + '@oxc-minify/binding-win32-x64-msvc': 0.99.0 - oxc-parser@0.102.0: + oxc-parser@0.99.0: dependencies: - '@oxc-project/types': 0.102.0 + '@oxc-project/types': 0.99.0 optionalDependencies: - '@oxc-parser/binding-android-arm64': 0.102.0 - '@oxc-parser/binding-darwin-arm64': 0.102.0 - '@oxc-parser/binding-darwin-x64': 0.102.0 - '@oxc-parser/binding-freebsd-x64': 0.102.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.102.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.102.0 - '@oxc-parser/binding-linux-arm64-musl': 0.102.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.102.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.102.0 - '@oxc-parser/binding-linux-x64-gnu': 0.102.0 - '@oxc-parser/binding-linux-x64-musl': 0.102.0 - '@oxc-parser/binding-openharmony-arm64': 0.102.0 - '@oxc-parser/binding-wasm32-wasi': 0.102.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.102.0 - '@oxc-parser/binding-win32-x64-msvc': 0.102.0 + '@oxc-parser/binding-android-arm64': 0.99.0 + '@oxc-parser/binding-darwin-arm64': 0.99.0 + '@oxc-parser/binding-darwin-x64': 0.99.0 + '@oxc-parser/binding-freebsd-x64': 0.99.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.99.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.99.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.99.0 + '@oxc-parser/binding-linux-arm64-musl': 0.99.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.99.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.99.0 + '@oxc-parser/binding-linux-x64-gnu': 0.99.0 + '@oxc-parser/binding-linux-x64-musl': 0.99.0 + '@oxc-parser/binding-wasm32-wasi': 0.99.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.99.0 + '@oxc-parser/binding-win32-x64-msvc': 0.99.0 - oxc-transform@0.102.0: + oxc-transform@0.99.0: optionalDependencies: - '@oxc-transform/binding-android-arm64': 0.102.0 - '@oxc-transform/binding-darwin-arm64': 0.102.0 - '@oxc-transform/binding-darwin-x64': 0.102.0 - '@oxc-transform/binding-freebsd-x64': 0.102.0 - '@oxc-transform/binding-linux-arm-gnueabihf': 0.102.0 - '@oxc-transform/binding-linux-arm64-gnu': 0.102.0 - '@oxc-transform/binding-linux-arm64-musl': 0.102.0 - '@oxc-transform/binding-linux-riscv64-gnu': 0.102.0 - '@oxc-transform/binding-linux-s390x-gnu': 0.102.0 - '@oxc-transform/binding-linux-x64-gnu': 0.102.0 - '@oxc-transform/binding-linux-x64-musl': 0.102.0 - '@oxc-transform/binding-openharmony-arm64': 0.102.0 - '@oxc-transform/binding-wasm32-wasi': 0.102.0 - '@oxc-transform/binding-win32-arm64-msvc': 0.102.0 - '@oxc-transform/binding-win32-x64-msvc': 0.102.0 + '@oxc-transform/binding-android-arm64': 0.99.0 + '@oxc-transform/binding-darwin-arm64': 0.99.0 + '@oxc-transform/binding-darwin-x64': 0.99.0 + '@oxc-transform/binding-freebsd-x64': 0.99.0 + '@oxc-transform/binding-linux-arm-gnueabihf': 0.99.0 + '@oxc-transform/binding-linux-arm-musleabihf': 0.99.0 + '@oxc-transform/binding-linux-arm64-gnu': 0.99.0 + '@oxc-transform/binding-linux-arm64-musl': 0.99.0 + '@oxc-transform/binding-linux-riscv64-gnu': 0.99.0 + '@oxc-transform/binding-linux-s390x-gnu': 0.99.0 + '@oxc-transform/binding-linux-x64-gnu': 0.99.0 + '@oxc-transform/binding-linux-x64-musl': 0.99.0 + '@oxc-transform/binding-wasm32-wasi': 0.99.0 + '@oxc-transform/binding-win32-arm64-msvc': 0.99.0 + '@oxc-transform/binding-win32-x64-msvc': 0.99.0 pathe@2.0.3: {} @@ -1743,7 +1760,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prettier@3.7.4: {} + prettier@3.7.2: {} pretty-bytes@7.1.0: {} @@ -1756,68 +1773,69 @@ snapshots: resolve-pkg-maps@1.0.0: {} - rolldown-plugin-dts@0.18.3(rolldown@1.0.0-beta.54)(typescript@5.9.3): + rolldown-plugin-dts@0.18.1(rolldown@1.0.0-beta.51)(typescript@5.9.3): dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 '@babel/types': 7.28.5 ast-kit: 2.2.0 - birpc: 3.0.0 + birpc: 2.8.0 dts-resolver: 2.1.3 get-tsconfig: 4.13.0 magic-string: 0.30.21 obug: 2.1.1 - rolldown: 1.0.0-beta.54 + rolldown: 1.0.0-beta.51 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver - rolldown@1.0.0-beta.54: + rolldown@1.0.0-beta.51: dependencies: - '@oxc-project/types': 0.102.0 - '@rolldown/pluginutils': 1.0.0-beta.54 + '@oxc-project/types': 0.98.0 + '@rolldown/pluginutils': 1.0.0-beta.51 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.54 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.54 - '@rolldown/binding-darwin-x64': 1.0.0-beta.54 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.54 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.54 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.54 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.54 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.54 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.54 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.54 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.54 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.54 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.54 + '@rolldown/binding-android-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-x64': 1.0.0-beta.51 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.51 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.51 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.51 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.51 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.51 - rollup@4.53.4: + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.4 - '@rollup/rollup-android-arm64': 4.53.4 - '@rollup/rollup-darwin-arm64': 4.53.4 - '@rollup/rollup-darwin-x64': 4.53.4 - '@rollup/rollup-freebsd-arm64': 4.53.4 - '@rollup/rollup-freebsd-x64': 4.53.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.4 - '@rollup/rollup-linux-arm-musleabihf': 4.53.4 - '@rollup/rollup-linux-arm64-gnu': 4.53.4 - '@rollup/rollup-linux-arm64-musl': 4.53.4 - '@rollup/rollup-linux-loong64-gnu': 4.53.4 - '@rollup/rollup-linux-ppc64-gnu': 4.53.4 - '@rollup/rollup-linux-riscv64-gnu': 4.53.4 - '@rollup/rollup-linux-riscv64-musl': 4.53.4 - '@rollup/rollup-linux-s390x-gnu': 4.53.4 - '@rollup/rollup-linux-x64-gnu': 4.53.4 - '@rollup/rollup-linux-x64-musl': 4.53.4 - '@rollup/rollup-openharmony-arm64': 4.53.4 - '@rollup/rollup-win32-arm64-msvc': 4.53.4 - '@rollup/rollup-win32-ia32-msvc': 4.53.4 - '@rollup/rollup-win32-x64-gnu': 4.53.4 - '@rollup/rollup-win32-x64-msvc': 4.53.4 + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 siginfo@2.0.0: {} @@ -1830,6 +1848,8 @@ snapshots: tinybench@2.9.0: {} + tinyexec@0.3.2: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -1844,39 +1864,39 @@ snapshots: typescript@5.9.3: {} - vite@7.3.0(jiti@2.6.1): + vite@7.2.4(jiti@2.6.1): dependencies: - esbuild: 0.27.1 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.4 + rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: fsevents: 2.3.3 jiti: 2.6.1 - vitest@4.0.15(jiti@2.6.1): + vitest@4.0.14(jiti@2.6.1): dependencies: - '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.3.0(jiti@2.6.1)) - '@vitest/pretty-format': 4.0.15 - '@vitest/runner': 4.0.15 - '@vitest/snapshot': 4.0.15 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 + '@vitest/expect': 4.0.14 + '@vitest/mocker': 4.0.14(vite@7.2.4(jiti@2.6.1)) + '@vitest/pretty-format': 4.0.14 + '@vitest/runner': 4.0.14 + '@vitest/snapshot': 4.0.14 + '@vitest/spy': 4.0.14 + '@vitest/utils': 4.0.14 es-module-lexer: 1.7.0 - expect-type: 1.3.0 + expect-type: 1.2.2 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 1.0.2 + tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(jiti@2.6.1) + vite: 7.2.4(jiti@2.6.1) why-is-node-running: 2.3.0 transitivePeerDependencies: - jiti diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index efc037a..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,2 +0,0 @@ -onlyBuiltDependencies: - - esbuild diff --git a/src/logic/board.ts b/src/logic/board.ts index 9d199c0..0436cdc 100644 --- a/src/logic/board.ts +++ b/src/logic/board.ts @@ -1,7 +1,12 @@ -import type { SectionData, SectionPosition } from "../types/section"; -import type { BoardConfig, BoardData, CharacterPosition } from "../types/board"; -import { applyChange, createSection } from "./section"; -import type { BoardChange } from "../types/change"; +import type { SectionData, SectionPosition } from "../types/section.ts"; +import type { + BoardConfig, + BoardData, + CharacterPosition, + FullBoard, +} from "../types/board.ts"; +import { applyChange, createSection } from "./section.ts"; +import type { BoardChange } from "../types/change.ts"; export function createBoard(config: BoardConfig): BoardData { return { config, sections: [] }; @@ -34,17 +39,15 @@ export function getSectionOnBoard( readOnly: boolean; } = { readOnly: false }, ): SectionData { - if (!board.sections[sy]) { - if (options.readOnly) return createSection({ sx, sy }, board.config); - board.sections[sy] = []; + let section: SectionData; + if (!board.sections[sy] && !options.readOnly) board.sections[sy] = []; + + if (!board.sections[sy]?.[sx]) { + section = createSection({ sx, sy }, board.config); + if (!options.readOnly) board.sections[sy][sx] = section; + } else { + section = board.sections[sy][sx]; } - - const row = board.sections[sy]; - const existing = row[sx]; - if (existing) return existing; - - const section = createSection({ sx, sy }, board.config); - if (!options.readOnly) row[sx] = section; return section; } @@ -53,3 +56,59 @@ export function applyChangeOnBoard(change: BoardChange, board: BoardData) { const section = getSectionOnBoard(sPos, board); applyChange(change, section); } + +export function renderFullBoard(data: BoardData): FullBoard { + const totalLineCount = data.config.sectionHeight * data.config.ySections; + const lineLength = data.config.sectionWidth * data.config.xSections; + + const chLines: string[][] = Array(totalLineCount); + const colorLines: string[][] = Array(totalLineCount); + const bgColorLines: string[][] = Array(totalLineCount); + const widthLines: number[][] = Array(totalLineCount); + + for (let y = 0; y < totalLineCount; y++) { + const chLine: string[] = []; + const colorLine: string[] = []; + const bgColorLine: string[] = []; + const widthLine: number[] = []; + + let charsToSkip = 0; + + for (let x = 0; x < lineLength; x++) { + if (charsToSkip > 0) { + charsToSkip--; + continue; + } + + const sPos = locateSection({ x, y }, data.config); + const section = getSectionOnBoard(sPos, data, { readOnly: true }); + const xInSection = x % data.config.sectionWidth; + const yInSection = y % data.config.sectionHeight; + + const cCh = section.ch[yInSection][xInSection]; + const cCo = section.color[yInSection][xInSection]; + const cBg = section.bgColor[yInSection][xInSection]; + const cWd = section.width[yInSection][xInSection]; + + chLine.push(cCh); + colorLine.push(cCo); + bgColorLine.push(cBg); + widthLine.push(cWd); + charsToSkip += cWd - 1; + } + + chLines[y] = chLine; + colorLines[y] = colorLine; + bgColorLines[y] = bgColorLine; + widthLines[y] = widthLine; + } + + return { + w: lineLength, + h: totalLineCount, + ch: chLines.flat(), + color: colorLines.flat(), + bg_color: bgColorLines.flat(), + width: widthLines.flat(), + }; +} diff --git a/src/logic/character.ts b/src/logic/character.ts index 5d046ff..2d58dac 100644 --- a/src/logic/character.ts +++ b/src/logic/character.ts @@ -1,8 +1,6 @@ import { unicodeWidth } from "@std/cli/unicode-width"; -const segmenter = /*#__PURE__*/ new Intl.Segmenter("en", { - granularity: "grapheme", -}); +const segmenter = new Intl.Segmenter("en", { granularity: "grapheme" }); export function getCharacterWidth(ch: string): number { const segments = [...segmenter.segment(ch)]; diff --git a/src/logic/render.ts b/src/logic/render.ts deleted file mode 100644 index 2eb72a4..0000000 --- a/src/logic/render.ts +++ /dev/null @@ -1,127 +0,0 @@ -import type { BoardData, BoardRegion } from "../types/board"; -import type { BoardRender } from "../types/render"; -import { getSectionOnBoard, locateSection } from "./board"; - -export function render(data: BoardData): BoardRender { - const totalLineCount = data.config.sectionHeight * data.config.ySections; - const lineLength = data.config.sectionWidth * data.config.xSections; - - const chLines: string[][] = Array(totalLineCount); - const colorLines: string[][] = Array(totalLineCount); - const bgColorLines: string[][] = Array(totalLineCount); - const widthLines: number[][] = Array(totalLineCount); - - for (let y = 0; y < totalLineCount; y++) { - const chLine: string[] = []; - const colorLine: string[] = []; - const bgColorLine: string[] = []; - const widthLine: number[] = []; - - let charsToSkip = 0; - - for (let x = 0; x < lineLength; x++) { - if (charsToSkip > 0) { - charsToSkip--; - continue; - } - - const sPos = locateSection({ x, y }, data.config); - const section = getSectionOnBoard(sPos, data, { readOnly: true }); - const xInSection = x % data.config.sectionWidth; - const yInSection = y % data.config.sectionHeight; - - const cCh = section.ch[yInSection]?.[xInSection] ?? " "; - const cCo = section.color[yInSection]?.[xInSection] ?? ""; - const cBg = section.bgColor[yInSection]?.[xInSection] ?? ""; - const cWd = section.width[yInSection]?.[xInSection] ?? 1; - - chLine.push(cCh); - colorLine.push(cCo); - bgColorLine.push(cBg); - widthLine.push(cWd); - charsToSkip += cWd - 1; - } - - chLines[y] = chLine; - colorLines[y] = colorLine; - bgColorLines[y] = bgColorLine; - widthLines[y] = widthLine; - } - - return { - w: lineLength, - h: totalLineCount, - ch: chLines.flat(), - color: colorLines.flat(), - bg_color: bgColorLines.flat(), - width: widthLines.flat(), - }; -} - -export function cropRender( - render: BoardRender, - region: BoardRegion, -): BoardRender { - const ch: string[] = []; - const color: string[] = []; - const bg_color: string[] = []; - const width: number[] = []; - - const regionEndX = region.x + region.width; - const regionEndY = region.y + region.height; - - let srcIdx = 0; - let displayX = 0; - let displayY = 0; - - while (srcIdx < render.ch.length) { - const cCh = render.ch[srcIdx]; - const cCo = render.color[srcIdx]; - const cBg = render.bg_color[srcIdx]; - const cWd = render.width[srcIdx]; - - if ( - typeof cCh !== "string" || - typeof cCo !== "string" || - typeof cBg !== "string" || - typeof cWd !== "number" - ) { - throw new Error("Invalid render data"); - } - - const charEndX = displayX + cWd; - - if (displayY >= region.y && displayY < regionEndY) { - // Check if this character overlaps with the crop region horizontally - if (charEndX > region.x && displayX < regionEndX) { - // Clamp the width to fit within the crop region - const clampedStartX = Math.max(displayX, region.x); - const clampedEndX = Math.min(charEndX, regionEndX); - const clampedWidth = clampedEndX - clampedStartX; - - ch.push(cCh); - color.push(cCo); - bg_color.push(cBg); - width.push(clampedWidth); - } - } - - // Advance display position - displayX += cWd; - if (displayX >= render.w) { - displayX = 0; - displayY++; - } - - srcIdx++; - } - - return { - w: region.width, - h: region.height, - ch, - color, - bg_color, - width, - }; -} diff --git a/src/logic/section.ts b/src/logic/section.ts index 54a6d8b..c3f976c 100644 --- a/src/logic/section.ts +++ b/src/logic/section.ts @@ -1,7 +1,7 @@ -import { getCharacterWidth } from "../mod"; -import type { BoardConfig } from "../types/board"; -import type { BoardChange } from "../types/change"; -import type { SectionData, SectionPosition } from "../types/section"; +import { getCharacterWidth } from "../mod.ts"; +import type { BoardConfig } from "../types/board.ts"; +import type { BoardChange } from "../types/change.ts"; +import type { SectionData, SectionPosition } from "../types/section.ts"; export function createSection( { sx, sy }: SectionPosition, @@ -16,20 +16,18 @@ export function createSection( const offsetX = sx * boardConfig.sectionWidth; const offsetY = sy * boardConfig.sectionHeight; - const ch: string[][] = Array(boardConfig.sectionHeight) - .fill([]) - .map(() => Array(boardConfig.sectionWidth).fill(boardConfig.defaultCh)); - const color: string[][] = Array(boardConfig.sectionHeight) - .fill([]) - .map(() => Array(boardConfig.sectionWidth).fill(boardConfig.defaultColor)); - const bgColor: string[][] = Array(boardConfig.sectionHeight) - .fill([]) - .map(() => - Array(boardConfig.sectionWidth).fill(boardConfig.defaultBgColor), - ); - const width: number[][] = Array(boardConfig.sectionHeight) - .fill([]) - .map(() => Array(boardConfig.sectionWidth).fill(boardConfig.defaultWidth)); + const ch: string[][] = Array(boardConfig.sectionHeight).fill([]).map(() => + Array(boardConfig.sectionWidth).fill(boardConfig.defaultCh) + ); + const color: string[][] = Array(boardConfig.sectionHeight).fill([]).map(() => + Array(boardConfig.sectionWidth).fill(boardConfig.defaultColor) + ); + const bgColor: string[][] = Array(boardConfig.sectionHeight).fill([]).map( + () => Array(boardConfig.sectionWidth).fill(boardConfig.defaultBgColor), + ); + const width: number[][] = Array(boardConfig.sectionHeight).fill([]).map(() => + Array(boardConfig.sectionWidth).fill(boardConfig.defaultWidth) + ); return { offsetX, offsetY, ch, color, bgColor, width }; } @@ -38,23 +36,9 @@ export function applyChange(change: BoardChange, section: SectionData) { const xInSection = change.x - section.offsetX; const yInSection = change.y - section.offsetY; - const row0 = section.ch[0]; - const validX = - xInSection >= 0 && row0 !== undefined && xInSection < row0.length; + const validX = xInSection >= 0 && xInSection < section.ch[0].length; const validY = yInSection >= 0 && yInSection < section.ch.length; - - const chRow = section.ch[yInSection]; - const widthRow = section.width[yInSection]; - const colorRow = section.color[yInSection]; - const bgColorRow = section.bgColor[yInSection]; - - const hasRowsForY = - chRow !== undefined && - widthRow !== undefined && - colorRow !== undefined && - bgColorRow !== undefined; - - if (!validX || !validY || !hasRowsForY) { + if (!validX || !validY) { throw new Error("Change does not belong to this section"); } @@ -62,13 +46,13 @@ export function applyChange(change: BoardChange, section: SectionData) { const chWidth = getCharacterWidth(change.ch); const xCharacterOffset = xInSection % chWidth; const offsetAdjustedXInSection = xInSection - xCharacterOffset; - chRow[offsetAdjustedXInSection] = change.ch; - widthRow[offsetAdjustedXInSection] = chWidth; + section.ch[yInSection][offsetAdjustedXInSection] = change.ch; + section.width[yInSection][offsetAdjustedXInSection] = chWidth; } if (change.color) { - colorRow[xInSection] = change.color; + section.color[yInSection][xInSection] = change.color; } if (change.bg_color) { - bgColorRow[xInSection] = change.bg_color; + section.bgColor[yInSection][xInSection] = change.bg_color; } } diff --git a/src/mod.ts b/src/mod.ts index 6772c4e..7b01c8a 100644 --- a/src/mod.ts +++ b/src/mod.ts @@ -1,9 +1,7 @@ -export * from "./types/board"; -export * from "./types/change"; -export * from "./types/render"; -export * from "./types/section"; +export * from "./types/board.ts"; +export * from "./types/section.ts"; +export * from "./types/change.ts"; -export * from "./logic/board"; -export * from "./logic/character"; -export * from "./logic/render"; -export * from "./logic/section"; +export * from "./logic/board.ts"; +export * from "./logic/section.ts"; +export * from "./logic/character.ts"; diff --git a/src/types/board.ts b/src/types/board.ts index 9d553f0..4fa2ef7 100644 --- a/src/types/board.ts +++ b/src/types/board.ts @@ -1,5 +1,26 @@ import type { SectionData } from "./section.ts"; +/** + * A compact form to represent the whole game board. + * + * Note that this form is not designed for manipulation. It's designed for transmission and rendering, and can not be converted back to `BoardData` as all "over-shadowed" characters are removed. + */ +export interface FullBoard { + /** The total width of the board, in display characters (`ch`). */ + w: number; + /** The total height of the board, in `ch`. */ + h: number; + + /** Compact array of characters on board. */ + ch: string[]; + /** Compact array of color, for each character. */ + color: string[]; + /** Compact array of background color, for each character. */ + bg_color: string[]; + /** Compact array of width indicator for each character. */ + width: number[]; +} + /** * A structure defining a character position on board. * @@ -12,14 +33,6 @@ export interface CharacterPosition { y: number; } -/** - * A structure defining a region on board. - */ -export interface BoardRegion extends CharacterPosition { - width: number; - height: number; -} - export interface BoardConfig { xSections: number; ySections: number; diff --git a/src/types/render.ts b/src/types/render.ts deleted file mode 100644 index ef7ec80..0000000 --- a/src/types/render.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * A compact form to represent a render of a board or a part of. - * - * Note that this form is not designed for manipulation. It's designed for transmission and rendering, and can not be converted back to `BoardData` as all "over-shadowed" characters are removed. - */ -export interface BoardRender { - /** The total width of the render, in display characters (`ch`). */ - w: number; - /** The total height of the render, in `ch`. */ - h: number; - - /** Compact array of characters on board. */ - ch: string[]; - /** Compact array of color, for each character. */ - color: string[]; - /** Compact array of background color, for each character. */ - bg_color: string[]; - /** Compact array of width indicator for each character. */ - width: number[]; -} diff --git a/tests/board.test.ts b/tests/board.test.ts index 1169f8f..cacbc2f 100644 --- a/tests/board.test.ts +++ b/tests/board.test.ts @@ -1,9 +1,14 @@ import { describe, it, expect } from "vitest"; -import { createBoard, getSectionOnBoard } from "../src/logic/board"; -import type { BoardData } from "../src/types/board"; -import { locateSection } from "../src/logic/board"; -import { applyChangeOnBoard } from "../src/logic/board"; +import { + createBoard, + getSectionOnBoard, + renderFullBoard, +} from "../src/logic/board.ts"; +import type { BoardData } from "../src/types/board.ts"; +import { checkFullBoard } from "./checkFullBoard.ts"; +import { locateSection } from "../src/logic/board.ts"; +import { applyChangeOnBoard } from "../src/logic/board.ts"; describe("board", () => { let board: BoardData | undefined; @@ -45,23 +50,23 @@ describe("board", () => { applyChangeOnBoard({ x: 4, y: 3, ch: "D" }, board!); applyChangeOnBoard({ x: 5, y: 3, ch: "E" }, board!); - expect(board!.sections[0]![0]!.ch[0]![0]).toBe("A"); - expect(board!.sections[0]![1]!.ch[0]![0]).toBe("B"); - expect(board!.sections[1]![0]!.ch[0]![0]).toBe("C"); - expect(board!.sections[1]![1]!.ch[0]).toEqual(["D", "E", " ", " "]); + expect(board!.sections[0][0].ch[0][0]).toBe("A"); + expect(board!.sections[0][1].ch[0][0]).toBe("B"); + expect(board!.sections[1][0].ch[0][0]).toBe("C"); + expect(board!.sections[1][1].ch[0]).toEqual(["D", "E", " ", " "]); applyChangeOnBoard({ x: 0, y: 1, ch: "你" }, board!); applyChangeOnBoard({ x: 4, y: 2, ch: "好" }, board!); applyChangeOnBoard({ x: 0, y: 4, ch: "嗎" }, board!); applyChangeOnBoard({ x: 4, y: 4, ch: "嘛" }, board!); - expect(board!.sections[0]![0]!.ch[1]![0]).toBe("你"); - expect(board!.sections[0]![1]!.ch[2]![0]).toBe("好"); - expect(board!.sections[1]![0]!.ch[1]![0]).toBe("嗎"); - expect(board!.sections[1]![1]!.ch[1]).toEqual(["嘛", " ", " ", " "]); + expect(board!.sections[0][0].ch[1][0]).toBe("你"); + expect(board!.sections[0][1].ch[2][0]).toBe("好"); + expect(board!.sections[1][0].ch[1][0]).toBe("嗎"); + expect(board!.sections[1][1].ch[1]).toEqual(["嘛", " ", " ", " "]); applyChangeOnBoard({ x: 5, y: 4, ch: "啊" }, board!); - expect(board!.sections[1]![1]!.ch[1]).toEqual(["啊", " ", " ", " "]); + expect(board!.sections[1][1].ch[1]).toEqual(["啊", " ", " ", " "]); }); it("getSectionOnBoard: existing section", () => { @@ -71,8 +76,8 @@ describe("board", () => { readOnly: true, }); expect(section.ch[0]).toEqual(["D", "E", " ", " "]); - expect(section.color[0]![0]).toBe("F"); - expect(section.bgColor[0]![0]).toBe("0"); + expect(section.color[0][0]).toBe("F"); + expect(section.bgColor[0][0]).toBe("0"); expect(section.width[0]).toEqual([1, 1, 1, 1]); }); @@ -82,10 +87,10 @@ describe("board", () => { const section = getSectionOnBoard({ sx: 1, sy: 2 }, board!, { readOnly: true, }); - expect(section.ch[0]![0]).toBe(" "); - expect(section.color[0]![0]).toBe("F"); - expect(section.bgColor[0]![0]).toBe("0"); - expect(section.width[0]![0]).toBe(1); + expect(section.ch[0][0]).toBe(" "); + expect(section.color[0][0]).toBe("F"); + expect(section.bgColor[0][0]).toBe("0"); + expect(section.width[0][0]).toBe(1); }); it("getSectionOnBoard: non-existing section", () => { @@ -94,16 +99,23 @@ describe("board", () => { const section = getSectionOnBoard({ sx: 2, sy: 1 }, board!, { readOnly: true, }); - expect(section.ch[0]![0]).toBe(" "); - expect(section.color[0]![0]).toBe("F"); - expect(section.bgColor[0]![0]).toBe("0"); - expect(section.width[0]![0]).toBe(1); + expect(section.ch[0][0]).toBe(" "); + expect(section.color[0][0]).toBe("F"); + expect(section.bgColor[0][0]).toBe("0"); + expect(section.width[0][0]).toBe(1); + }); + + it("renderFullBoard", () => { + expect(board).toBeDefined(); + + const rendered = renderFullBoard(board!); + checkFullBoard(rendered); }); it("on-demand creation: only changed sections are saved", () => { expect(board).toBeDefined(); expect(board!.sections[2]).toBeUndefined(); - expect(board!.sections[0]![2]).toBeUndefined(); + expect(board!.sections[0][2]).toBeUndefined(); }); }); diff --git a/tests/character.test.ts b/tests/character.test.ts index 05b675a..1a8c493 100644 --- a/tests/character.test.ts +++ b/tests/character.test.ts @@ -1,6 +1,6 @@ import { it, expect } from "vitest"; -import { getCharacterWidth } from "../src/mod"; +import { getCharacterWidth } from "../src/mod.ts"; it("getCharacterWidth ASCII", () => { expect(getCharacterWidth("a")).toBe(1); diff --git a/tests/checkBoardRender.ts b/tests/checkFullBoard.ts similarity index 61% rename from tests/checkBoardRender.ts rename to tests/checkFullBoard.ts index 1a17ed2..954eceb 100644 --- a/tests/checkBoardRender.ts +++ b/tests/checkFullBoard.ts @@ -1,42 +1,30 @@ -import { getCharacterWidth } from "../src/logic/character"; -import type { BoardRender } from "../src/types/render"; +import { getCharacterWidth } from "../src/logic/character.ts"; +import type { FullBoard } from "../src/types/board.ts"; + +function isCorrectWidth(cWd: number, cCh: string): boolean { + return getCharacterWidth(cCh) === cWd; +} function isValidColor(color: string): boolean { return /^[0-9A-F]$/.test(color); } -interface Options { - /** - * Whether to allow the width of a character to be narrower than the "correct" width. - * - * For partial renders, some wide characters may be clipped to a narrower width. This option allows for that. - */ - allowsNarrowerWidth?: boolean; -} - -export function checkBoardRender(render: BoardRender, options?: Options) { +export function checkFullBoard(board: FullBoard) { let chLine = ""; let colorLine = ""; let bgColorLine = ""; let widthLine = ""; let lines = 0; - const ch = [...render.ch]; + const ch = [...board.ch]; const chLength = ch.length; let unsafeCurrentOffset = 0; - function isCorrectWidth(cWd: number, cCh: string): boolean { - const correctWidth = getCharacterWidth(cCh); - return options?.allowsNarrowerWidth - ? cWd <= correctWidth && cWd > 0 - : cWd === correctWidth; - } - for (let i = 0; i < chLength; i++) { const cCh = ch[i]; - const cCo = render.color[i]; - const cBg = render.bg_color[i]; - const cWd = render.width[i]; + const cCo = board.color[i]; + const cBg = board.bg_color[i]; + const cWd = board.width[i]; const printSituation = () => { console.error( @@ -80,7 +68,7 @@ export function checkBoardRender(render: BoardRender, options?: Options) { widthLine += String(cWd).padEnd(cWd); unsafeCurrentOffset += cCh.length; - if (colorLine.length === render.w) { + if (colorLine.length === board.w) { lines++; chLine = ""; colorLine = ""; @@ -89,5 +77,5 @@ export function checkBoardRender(render: BoardRender, options?: Options) { } } - if (lines !== render.h) throw new Error("board height error"); + if (lines !== board.h) throw new Error("board height error"); } diff --git a/tests/render.test.ts b/tests/render.test.ts deleted file mode 100644 index 4174094..0000000 --- a/tests/render.test.ts +++ /dev/null @@ -1,307 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { render, cropRender } from "../src/logic/render"; -import { checkBoardRender } from "./checkBoardRender"; -import { applyChangeOnBoard, createBoard } from "../src/logic/board"; -import type { BoardData } from "../src/types/board"; -import type { BoardRender } from "../src/types/render"; - -const board: BoardData = createBoard({ - xSections: 1, - ySections: 1, - sectionWidth: 10, - sectionHeight: 5, - defaultCh: " ", - defaultColor: "F", - defaultBgColor: "0", - defaultWidth: 1, -}); - -// Add CJK characters (width 2) -applyChangeOnBoard({ x: 0, y: 0, ch: "你" }, board); -applyChangeOnBoard({ x: 2, y: 0, ch: "好" }, board); -applyChangeOnBoard({ x: 4, y: 0, ch: "世" }, board); -applyChangeOnBoard({ x: 6, y: 0, ch: "界" }, board); - -// Add cell with non-default foreground color -applyChangeOnBoard({ x: 0, y: 1, ch: "A" }, board); -applyChangeOnBoard({ x: 0, y: 1, color: "C" }, board); - -// Add cell with non-default background color -applyChangeOnBoard({ x: 2, y: 1, ch: "B" }, board); -applyChangeOnBoard({ x: 2, y: 1, bg_color: "A" }, board); - -// Add cell with both non-default foreground and background colors -applyChangeOnBoard({ x: 4, y: 1, ch: "C" }, board); -applyChangeOnBoard({ x: 4, y: 1, color: "9" }, board); -applyChangeOnBoard({ x: 4, y: 1, bg_color: "E" }, board); - -// Add CJK character with custom colors -applyChangeOnBoard({ x: 0, y: 2, ch: "中" }, board); -applyChangeOnBoard({ x: 0, y: 2, color: "D" }, board); -applyChangeOnBoard({ x: 0, y: 2, bg_color: "B" }, board); - -describe("render", () => { - it("render", () => { - expect(board).toBeDefined(); - - const rendered = render(board!); - checkBoardRender(rendered); - }); -}); - -describe("cropRender", () => { - // Helper to create a simple render for testing - function createTestRender(): BoardRender { - // Create a 10x5 board with: - // Row 0: "你好世界 " (4 CJK chars = 8 display cols + 2 spaces) - // Row 1: "A B C " (ASCII with spaces) - // Row 2: "中 " (1 CJK char + 8 spaces) - // Row 3: " " (all spaces) - // Row 4: " " (all spaces) - return render(board); - } - - describe("basic cropping with width-1 characters", () => { - it("crops a region containing only width-1 characters", () => { - const rendered = createTestRender(); - // Crop row 1 (ASCII chars), columns 0-5 - const cropped = cropRender(rendered, { x: 0, y: 1, width: 5, height: 1 }); - - expect(cropped.w).toBe(5); - expect(cropped.h).toBe(1); - checkBoardRender(cropped); - }); - - it("crops middle section of width-1 characters", () => { - const rendered = createTestRender(); - // Crop row 1, columns 1-4 (should get " B C") - const cropped = cropRender(rendered, { x: 1, y: 1, width: 4, height: 1 }); - - expect(cropped.w).toBe(4); - expect(cropped.h).toBe(1); - checkBoardRender(cropped); - }); - }); - - describe("wide characters (width 2)", () => { - it("includes wide character entirely within crop region", () => { - const rendered = createTestRender(); - // Crop row 0, columns 0-4 (should include "你好") - const cropped = cropRender(rendered, { x: 0, y: 0, width: 4, height: 1 }); - - expect(cropped.w).toBe(4); - expect(cropped.h).toBe(1); - expect(cropped.ch).toContain("你"); - expect(cropped.ch).toContain("好"); - checkBoardRender(cropped); - }); - - it("handles wide character at crop start boundary (character starts before region)", () => { - const rendered = createTestRender(); - // Crop starting at x=1 - "你" starts at x=0 and extends to x=2 - // The crop should include "你" with clamped width of 1 - const cropped = cropRender(rendered, { x: 1, y: 0, width: 3, height: 1 }); - - expect(cropped.w).toBe(3); - expect(cropped.h).toBe(1); - // "你" should be included but with width clamped to 1 (only 1 col visible) - expect(cropped.ch).toContain("你"); - checkBoardRender(cropped, { allowsNarrowerWidth: true }); - }); - - it("handles wide character at crop end boundary (character extends beyond region)", () => { - const rendered = createTestRender(); - // Crop ending at x=3 - "好" starts at x=2 and extends to x=4 - // The crop should include "好" with clamped width of 1 - const cropped = cropRender(rendered, { x: 0, y: 0, width: 3, height: 1 }); - - expect(cropped.w).toBe(3); - expect(cropped.h).toBe(1); - // "你" should be included with full width, "好" should be clamped - expect(cropped.ch).toContain("你"); - expect(cropped.ch).toContain("好"); - checkBoardRender(cropped, { allowsNarrowerWidth: true }); - }); - - it("handles wide character with both boundaries clamped", () => { - const rendered = createTestRender(); - // Crop from x=1 to x=2 (width 1) - only partial view of "你" - const cropped = cropRender(rendered, { x: 1, y: 0, width: 1, height: 1 }); - - expect(cropped.w).toBe(1); - expect(cropped.h).toBe(1); - checkBoardRender(cropped, { allowsNarrowerWidth: true }); - }); - - it("excludes wide character entirely outside crop region", () => { - const rendered = createTestRender(); - // Crop row 0, columns 8-10 (should only get spaces, no CJK) - const cropped = cropRender(rendered, { x: 8, y: 0, width: 2, height: 1 }); - - expect(cropped.w).toBe(2); - expect(cropped.h).toBe(1); - // Should only contain spaces - expect(cropped.ch.every((c) => c === " ")).toBe(true); - checkBoardRender(cropped); - }); - }); - - describe("multi-row cropping", () => { - it("crops multiple rows correctly", () => { - const rendered = createTestRender(); - // Crop rows 0-2, columns 0-4 - const cropped = cropRender(rendered, { x: 0, y: 0, width: 4, height: 3 }); - - expect(cropped.w).toBe(4); - expect(cropped.h).toBe(3); - checkBoardRender(cropped); - }); - - it("crops rows from middle of board", () => { - const rendered = createTestRender(); - // Crop rows 1-3, columns 2-6 - const cropped = cropRender(rendered, { x: 2, y: 1, width: 4, height: 3 }); - - expect(cropped.w).toBe(4); - expect(cropped.h).toBe(3); - checkBoardRender(cropped); - }); - - it("handles wide characters across multiple rows", () => { - const rendered = createTestRender(); - // Crop rows 0 and 2 which both have CJK characters - const cropped = cropRender(rendered, { x: 0, y: 0, width: 4, height: 3 }); - - expect(cropped.w).toBe(4); - expect(cropped.h).toBe(3); - expect(cropped.ch).toContain("你"); - expect(cropped.ch).toContain("中"); - checkBoardRender(cropped); - }); - }); - - describe("full board crop", () => { - it("returns equivalent data when cropping entire board", () => { - const rendered = createTestRender(); - const cropped = cropRender(rendered, { - x: 0, - y: 0, - width: rendered.w, - height: rendered.h, - }); - - expect(cropped.w).toBe(rendered.w); - expect(cropped.h).toBe(rendered.h); - expect(cropped.ch).toEqual(rendered.ch); - expect(cropped.color).toEqual(rendered.color); - expect(cropped.bg_color).toEqual(rendered.bg_color); - expect(cropped.width).toEqual(rendered.width); - checkBoardRender(cropped); - }); - }); - - describe("edge cases", () => { - it("handles zero-width region", () => { - const rendered = createTestRender(); - const cropped = cropRender(rendered, { x: 0, y: 0, width: 0, height: 1 }); - - expect(cropped.w).toBe(0); - expect(cropped.h).toBe(1); - expect(cropped.ch).toEqual([]); - }); - - it("handles zero-height region", () => { - const rendered = createTestRender(); - const cropped = cropRender(rendered, { x: 0, y: 0, width: 5, height: 0 }); - - expect(cropped.w).toBe(5); - expect(cropped.h).toBe(0); - expect(cropped.ch).toEqual([]); - }); - - it("handles single cell crop", () => { - const rendered = createTestRender(); - const cropped = cropRender(rendered, { x: 0, y: 1, width: 1, height: 1 }); - - expect(cropped.w).toBe(1); - expect(cropped.h).toBe(1); - expect(cropped.ch.length).toBe(1); - expect(cropped.ch[0]).toBe("A"); - checkBoardRender(cropped); - }); - - it("handles crop at bottom-right corner", () => { - const rendered = createTestRender(); - const cropped = cropRender(rendered, { x: 8, y: 4, width: 2, height: 1 }); - - expect(cropped.w).toBe(2); - expect(cropped.h).toBe(1); - checkBoardRender(cropped); - }); - - it("handles crop region starting beyond first row", () => { - const rendered = createTestRender(); - const cropped = cropRender(rendered, { x: 0, y: 3, width: 5, height: 2 }); - - expect(cropped.w).toBe(5); - expect(cropped.h).toBe(2); - // Should only contain spaces (rows 3-4 are empty) - expect(cropped.ch.every((c) => c === " ")).toBe(true); - checkBoardRender(cropped); - }); - }); - - describe("color preservation", () => { - it("preserves foreground color when cropping", () => { - const rendered = createTestRender(); - // Crop to get cell with custom foreground color (A at 0,1 with color C) - const cropped = cropRender(rendered, { x: 0, y: 1, width: 1, height: 1 }); - - expect(cropped.color[0]).toBe("C"); - checkBoardRender(cropped); - }); - - it("preserves background color when cropping", () => { - const rendered = createTestRender(); - // Crop to get cell with custom background color (B at 2,1 with bg_color A) - const cropped = cropRender(rendered, { x: 2, y: 1, width: 1, height: 1 }); - - expect(cropped.bg_color[0]).toBe("A"); - checkBoardRender(cropped); - }); - - it("preserves both colors on CJK character when cropping", () => { - const rendered = createTestRender(); - // Crop to get CJK with custom colors (中 at 0,2 with color D, bg_color B) - const cropped = cropRender(rendered, { x: 0, y: 2, width: 2, height: 1 }); - - expect(cropped.ch[0]).toBe("中"); - expect(cropped.color[0]).toBe("D"); - expect(cropped.bg_color[0]).toBe("B"); - checkBoardRender(cropped); - }); - }); - - describe("consecutive wide characters", () => { - it("handles crop in middle of consecutive wide characters", () => { - const rendered = createTestRender(); - // Row 0 has: 你(0-1)好(2-3)世(4-5)界(6-7) - // Crop from x=2 to x=6 should get 好世 - const cropped = cropRender(rendered, { x: 2, y: 0, width: 4, height: 1 }); - - expect(cropped.w).toBe(4); - expect(cropped.ch).toContain("好"); - expect(cropped.ch).toContain("世"); - checkBoardRender(cropped); - }); - - it("handles crop splitting multiple wide characters", () => { - const rendered = createTestRender(); - // Crop from x=1 to x=7 - should clip 你 at start and 界 at end - const cropped = cropRender(rendered, { x: 1, y: 0, width: 6, height: 1 }); - - expect(cropped.w).toBe(6); - checkBoardRender(cropped, { allowsNarrowerWidth: true }); - }); - }); -}); diff --git a/tests/section.test.ts b/tests/section.test.ts index a9a5abe..3240c0d 100644 --- a/tests/section.test.ts +++ b/tests/section.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from "vitest"; -import { applyChange, createSection } from "../src/logic/section"; -import type { SectionData } from "../src/types/section"; +import { applyChange, createSection } from "../src/logic/section.ts"; +import type { SectionData } from "../src/types/section.ts"; describe("section", () => { let section: SectionData | undefined; diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index c83df2e..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - // Visit https://aka.ms/tsconfig to read more about this file - "compilerOptions": { - // File Layout - // "rootDir": "./src", - // "outDir": "./dist", - - // Environment Settings - // See also https://aka.ms/tsconfig/module - "module": "ES2022", - "target": "ES2022", - "types": [], - "moduleResolution": "bundler", - // For nodejs: - // "lib": ["esnext"], - // "types": ["node"], - // and npm install -D @types/node - - // Other Outputs - "sourceMap": true, - "declaration": true, - "declarationMap": true, - - // Stricter Typechecking Options - "noUncheckedIndexedAccess": true, - "exactOptionalPropertyTypes": true, - - // Style Options - // "noImplicitReturns": true, - // "noImplicitOverride": true, - // "noUnusedLocals": true, - // "noUnusedParameters": true, - // "noFallthroughCasesInSwitch": true, - // "noPropertyAccessFromIndexSignature": true, - - // Recommended Options - "strict": true, - "verbatimModuleSyntax": true, - "isolatedModules": true, - "noUncheckedSideEffectImports": true, - "moduleDetection": "force", - "skipLibCheck": true, - }, -}