the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

Support nested ignore files and add tests

Add loadIgnoreFiles and makeIsIgnored to handle per-directory ignore
contexts for nested .gitignore/.pocketenvignore files when packaging.
Include comprehensive unit tests and a Vitest config, add vitest to
dev deps and test scripts, and update bun.lock/remove package-lock.json.
Also enable bash dotglob in sandbox copy commands so dotfiles are
copied.

+2821 -98
+1 -1
apps/cf-sandbox/src/index.ts
··· 1019 1019 }); 1020 1020 await sandbox.sh`mkdir -p /tmp/${outdir} && cd /tmp/${outdir} && curl https://sandbox.pocketenv.io/cp/${params.uuid} -H "Authorization: ${token}" --output - | tar xzvf -`; 1021 1021 await sandbox.sh`mkdir -p ${params.directoryPath} || sudo mkdir -p ${params.directoryPath}`; 1022 - await sandbox.sh`cp -r /tmp/${outdir}/* ${params.directoryPath} || sudo cp -r /tmp/${outdir}/* ${params.directoryPath}`; 1022 + await sandbox.sh`(shopt -s dotglob && cp -r /tmp/${outdir}/* ${params.directoryPath}) || (shopt -s dotglob && sudo cp -r /tmp/${outdir}/* ${params.directoryPath})`; 1023 1023 1024 1024 return c.json({ success: true }); 1025 1025 });
+137
apps/cli/bun.lock
··· 32 32 "@types/ws": "^8.18.1", 33 33 "pkgroll": "^2.27.0", 34 34 "tsx": "^4.21.0", 35 + "vitest": "^4.1.2", 35 36 }, 36 37 "peerDependencies": { 37 38 "typescript": "^5", ··· 40 41 }, 41 42 "packages": { 42 43 "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], 44 + 45 + "@emnapi/core": ["@emnapi/core@1.9.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA=="], 46 + 47 + "@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], 48 + 49 + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], 43 50 44 51 "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.26.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-hj0sKNCQOOo2fgyII3clmJXP28VhgDfU5iy3GNHlWO76KG6N7x4D9ezH5lJtQTG+1J6MFDAJXC1qsI+W+LvZoA=="], 45 52 ··· 129 136 130 137 "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], 131 138 139 + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.2", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw=="], 140 + 132 141 "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], 133 142 134 143 "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], 135 144 136 145 "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], 137 146 147 + "@oxc-project/types": ["@oxc-project/types@0.122.0", "", {}, "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA=="], 148 + 149 + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.12", "", { "os": "android", "cpu": "arm64" }, "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA=="], 150 + 151 + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg=="], 152 + 153 + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw=="], 154 + 155 + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q=="], 156 + 157 + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12", "", { "os": "linux", "cpu": "arm" }, "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q=="], 158 + 159 + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg=="], 160 + 161 + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw=="], 162 + 163 + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g=="], 164 + 165 + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og=="], 166 + 167 + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "x64" }, "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg=="], 168 + 169 + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.12", "", { "os": "linux", "cpu": "x64" }, "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig=="], 170 + 171 + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.12", "", { "os": "none", "cpu": "arm64" }, "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA=="], 172 + 173 + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.12", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg=="], 174 + 175 + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q=="], 176 + 177 + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.12", "", { "os": "win32", "cpu": "x64" }, "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw=="], 178 + 179 + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.12", "", {}, "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw=="], 180 + 138 181 "@rollup/plugin-alias": ["@rollup/plugin-alias@6.0.0", "", { "peerDependencies": { "rollup": ">=4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g=="], 139 182 140 183 "@rollup/plugin-commonjs": ["@rollup/plugin-commonjs@29.0.2", "", { "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", "fdir": "^6.2.0", "is-reference": "1.2.1", "magic-string": "^0.30.3", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^2.68.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg=="], ··· 199 242 200 243 "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], 201 244 245 + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], 246 + 202 247 "@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="], 203 248 249 + "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], 250 + 204 251 "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], 205 252 206 253 "@types/cors": ["@types/cors@2.8.19", "", { "dependencies": { "@types/node": "*" } }, "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg=="], 254 + 255 + "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], 207 256 208 257 "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], 209 258 ··· 229 278 230 279 "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], 231 280 281 + "@vitest/expect": ["@vitest/expect@4.1.2", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.2", "@vitest/utils": "4.1.2", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ=="], 282 + 283 + "@vitest/mocker": ["@vitest/mocker@4.1.2", "", { "dependencies": { "@vitest/spy": "4.1.2", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q=="], 284 + 285 + "@vitest/pretty-format": ["@vitest/pretty-format@4.1.2", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA=="], 286 + 287 + "@vitest/runner": ["@vitest/runner@4.1.2", "", { "dependencies": { "@vitest/utils": "4.1.2", "pathe": "^2.0.3" } }, "sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ=="], 288 + 289 + "@vitest/snapshot": ["@vitest/snapshot@4.1.2", "", { "dependencies": { "@vitest/pretty-format": "4.1.2", "@vitest/utils": "4.1.2", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A=="], 290 + 291 + "@vitest/spy": ["@vitest/spy@4.1.2", "", {}, "sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA=="], 292 + 293 + "@vitest/utils": ["@vitest/utils@4.1.2", "", { "dependencies": { "@vitest/pretty-format": "4.1.2", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ=="], 294 + 232 295 "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], 233 296 234 297 "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 298 + 299 + "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], 235 300 236 301 "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], 237 302 ··· 251 316 252 317 "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], 253 318 319 + "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], 320 + 254 321 "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], 255 322 256 323 "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="], ··· 278 345 "content-disposition": ["content-disposition@1.0.1", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="], 279 346 280 347 "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], 348 + 349 + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], 281 350 282 351 "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], 283 352 ··· 301 370 302 371 "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], 303 372 373 + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], 374 + 304 375 "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], 305 376 306 377 "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], ··· 317 388 318 389 "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], 319 390 391 + "es-module-lexer": ["es-module-lexer@2.0.0", "", {}, "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="], 392 + 320 393 "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], 321 394 322 395 "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], ··· 332 405 "eventsource": ["eventsource@4.1.0", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-2GuF51iuHX6A9xdTccMTsNb7VO0lHZihApxhvQzJB5A03DvHDd2FQepodbMaztPBmBcE/ox7o2gqaxGhYB9LhQ=="], 333 406 334 407 "eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], 408 + 409 + "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], 335 410 336 411 "express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="], 337 412 ··· 425 500 426 501 "libsodium-wrappers": ["libsodium-wrappers@0.8.2", "", { "dependencies": { "libsodium": "^0.8.0" } }, "sha512-VFLmfxkxo+U9q60tjcnSomQBRx2UzlRjKWJqvB4K1pUqsMQg4cu3QXA2nrcsj9A1qRsnJBbi2Ozx1hsiDoCkhw=="], 427 502 503 + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], 504 + 505 + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], 506 + 507 + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], 508 + 509 + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], 510 + 511 + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], 512 + 513 + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], 514 + 515 + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], 516 + 517 + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], 518 + 519 + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], 520 + 521 + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], 522 + 523 + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], 524 + 525 + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], 526 + 428 527 "log-symbols": ["log-symbols@7.0.1", "", { "dependencies": { "is-unicode-supported": "^2.0.0", "yoctocolors": "^2.1.1" } }, "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg=="], 429 528 430 529 "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], ··· 453 552 454 553 "mute-stream": ["mute-stream@3.0.0", "", {}, "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw=="], 455 554 555 + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], 556 + 456 557 "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], 457 558 458 559 "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], 459 560 460 561 "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], 562 + 563 + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], 461 564 462 565 "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], 463 566 ··· 475 578 476 579 "path-to-regexp": ["path-to-regexp@8.3.0", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="], 477 580 581 + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], 582 + 583 + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], 584 + 478 585 "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], 479 586 480 587 "pkgroll": ["pkgroll@2.27.0", "", { "dependencies": { "@rollup/plugin-alias": "^6.0.0", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-dynamic-import-vars": "^2.1.5", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "cjs-module-lexer": "^2.2.0", "esbuild": "^0.26.0", "magic-string": "^0.30.21", "rollup": "^4.53.5", "rollup-plugin-import-trace": "^1.0.1", "rollup-pluginutils": "^2.8.2", "yaml": "^2.8.2" }, "peerDependencies": { "typescript": "^4.1 || ^5.0" }, "optionalPeers": ["typescript"], "bin": { "pkgroll": "dist/cli.mjs" } }, "sha512-Huw5ZRxWTWeQ0PbNNKdbkAl52bPMy009RXdB4u3qjb47AMEBLG5VVF0V6oOD+YYiZaHaFxvjEeX+A2T9ckaClQ=="], 481 588 589 + "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], 590 + 482 591 "powershell-utils": ["powershell-utils@0.1.0", "", {}, "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A=="], 483 592 484 593 "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], ··· 502 611 "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], 503 612 504 613 "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], 614 + 615 + "rolldown": ["rolldown@1.0.0-rc.12", "", { "dependencies": { "@oxc-project/types": "=0.122.0", "@rolldown/pluginutils": "1.0.0-rc.12" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.12", "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", "@rolldown/binding-darwin-x64": "1.0.0-rc.12", "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A=="], 505 616 506 617 "rollup": ["rollup@4.59.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.59.0", "@rollup/rollup-android-arm64": "4.59.0", "@rollup/rollup-darwin-arm64": "4.59.0", "@rollup/rollup-darwin-x64": "4.59.0", "@rollup/rollup-freebsd-arm64": "4.59.0", "@rollup/rollup-freebsd-x64": "4.59.0", "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", "@rollup/rollup-linux-arm-musleabihf": "4.59.0", "@rollup/rollup-linux-arm64-gnu": "4.59.0", "@rollup/rollup-linux-arm64-musl": "4.59.0", "@rollup/rollup-linux-loong64-gnu": "4.59.0", "@rollup/rollup-linux-loong64-musl": "4.59.0", "@rollup/rollup-linux-ppc64-gnu": "4.59.0", "@rollup/rollup-linux-ppc64-musl": "4.59.0", "@rollup/rollup-linux-riscv64-gnu": "4.59.0", "@rollup/rollup-linux-riscv64-musl": "4.59.0", "@rollup/rollup-linux-s390x-gnu": "4.59.0", "@rollup/rollup-linux-x64-gnu": "4.59.0", "@rollup/rollup-linux-x64-musl": "4.59.0", "@rollup/rollup-openbsd-x64": "4.59.0", "@rollup/rollup-openharmony-arm64": "4.59.0", "@rollup/rollup-win32-arm64-msvc": "4.59.0", "@rollup/rollup-win32-ia32-msvc": "4.59.0", "@rollup/rollup-win32-x64-gnu": "4.59.0", "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg=="], 507 618 ··· 531 642 532 643 "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], 533 644 645 + "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], 646 + 534 647 "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 535 648 649 + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], 650 + 651 + "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], 652 + 536 653 "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], 654 + 655 + "std-env": ["std-env@4.0.0", "", {}, "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ=="], 537 656 538 657 "stdin-discarder": ["stdin-discarder@0.3.1", "", {}, "sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA=="], 539 658 ··· 545 664 546 665 "tar": ["tar@7.5.13", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng=="], 547 666 667 + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], 668 + 669 + "tinyexec": ["tinyexec@1.0.4", "", {}, "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw=="], 670 + 671 + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], 672 + 673 + "tinyrainbow": ["tinyrainbow@3.1.0", "", {}, "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="], 674 + 548 675 "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], 549 676 550 677 "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], ··· 563 690 564 691 "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], 565 692 693 + "vite": ["vite@8.0.3", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.12", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ=="], 694 + 695 + "vitest": ["vitest@4.1.2", "", { "dependencies": { "@vitest/expect": "4.1.2", "@vitest/mocker": "4.1.2", "@vitest/pretty-format": "4.1.2", "@vitest/runner": "4.1.2", "@vitest/snapshot": "4.1.2", "@vitest/spy": "4.1.2", "@vitest/utils": "4.1.2", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.2", "@vitest/browser-preview": "4.1.2", "@vitest/browser-webdriverio": "4.1.2", "@vitest/ui": "4.1.2", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg=="], 696 + 697 + "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], 698 + 566 699 "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], 567 700 568 701 "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="], ··· 577 710 578 711 "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], 579 712 713 + "@vitest/mocker/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], 714 + 580 715 "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], 581 716 582 717 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], ··· 586 721 "rollup-pluginutils/estree-walker": ["estree-walker@0.6.1", "", {}, "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="], 587 722 588 723 "tsx/esbuild": ["esbuild@0.27.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.4", "@esbuild/android-arm": "0.27.4", "@esbuild/android-arm64": "0.27.4", "@esbuild/android-x64": "0.27.4", "@esbuild/darwin-arm64": "0.27.4", "@esbuild/darwin-x64": "0.27.4", "@esbuild/freebsd-arm64": "0.27.4", "@esbuild/freebsd-x64": "0.27.4", "@esbuild/linux-arm": "0.27.4", "@esbuild/linux-arm64": "0.27.4", "@esbuild/linux-ia32": "0.27.4", "@esbuild/linux-loong64": "0.27.4", "@esbuild/linux-mips64el": "0.27.4", "@esbuild/linux-ppc64": "0.27.4", "@esbuild/linux-riscv64": "0.27.4", "@esbuild/linux-s390x": "0.27.4", "@esbuild/linux-x64": "0.27.4", "@esbuild/netbsd-arm64": "0.27.4", "@esbuild/netbsd-x64": "0.27.4", "@esbuild/openbsd-arm64": "0.27.4", "@esbuild/openbsd-x64": "0.27.4", "@esbuild/openharmony-arm64": "0.27.4", "@esbuild/sunos-x64": "0.27.4", "@esbuild/win32-arm64": "0.27.4", "@esbuild/win32-ia32": "0.27.4", "@esbuild/win32-x64": "0.27.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ=="], 724 + 725 + "vite/picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], 589 726 590 727 "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], 591 728
+2311 -21
apps/cli/package-lock.json
··· 1 1 { 2 2 "name": "@pocketenv/cli", 3 - "version": "0.3.0", 3 + "version": "0.6.1", 4 4 "lockfileVersion": 3, 5 5 "requires": true, 6 6 "packages": { 7 7 "": { 8 8 "name": "@pocketenv/cli", 9 - "version": "0.3.0", 9 + "version": "0.6.1", 10 10 "license": "MPL-2.0", 11 11 "dependencies": { 12 12 "@inquirer/prompts": "^8.3.0", ··· 21 21 "envalid": "^8.1.1", 22 22 "eventsource": "^4.1.0", 23 23 "express": "^5.2.1", 24 + "ignore": "^7.0.5", 24 25 "libsodium-wrappers": "^0.8.2", 25 26 "open": "^11.0.0", 27 + "ora": "^9.3.0", 28 + "tar": "^7.5.13", 26 29 "ws": "^8.19.0", 27 30 "zod": "^4.3.6" 28 31 }, ··· 35 38 "@types/express": "^5.0.6", 36 39 "@types/ws": "^8.18.1", 37 40 "pkgroll": "^2.27.0", 38 - "tsx": "^4.21.0" 41 + "tsx": "^4.21.0", 42 + "vitest": "^4.1.2" 39 43 }, 40 44 "peerDependencies": { 41 45 "typescript": "^5" ··· 47 51 "optional": true, 48 52 "engines": { 49 53 "node": ">=0.1.90" 54 + } 55 + }, 56 + "node_modules/@emnapi/wasi-threads": { 57 + "version": "1.2.1", 58 + "dev": true, 59 + "license": "MIT", 60 + "optional": true, 61 + "dependencies": { 62 + "tslib": "^2.4.0" 50 63 } 51 64 }, 52 65 "node_modules/@esbuild/aix-ppc64": { ··· 785 798 } 786 799 } 787 800 }, 801 + "node_modules/@isaacs/fs-minipass": { 802 + "version": "4.0.1", 803 + "license": "ISC", 804 + "dependencies": { 805 + "minipass": "^7.0.4" 806 + }, 807 + "engines": { 808 + "node": ">=18.0.0" 809 + } 810 + }, 788 811 "node_modules/@jridgewell/sourcemap-codec": { 789 812 "version": "1.5.5", 790 813 "dev": true, 791 814 "license": "MIT" 792 815 }, 816 + "node_modules/@napi-rs/wasm-runtime": { 817 + "version": "1.1.2", 818 + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.2.tgz", 819 + "integrity": "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==", 820 + "dev": true, 821 + "license": "MIT", 822 + "optional": true, 823 + "dependencies": { 824 + "@tybys/wasm-util": "^0.10.1" 825 + }, 826 + "funding": { 827 + "type": "github", 828 + "url": "https://github.com/sponsors/Brooooooklyn" 829 + }, 830 + "peerDependencies": { 831 + "@emnapi/core": "^1.7.1", 832 + "@emnapi/runtime": "^1.7.1" 833 + } 834 + }, 793 835 "node_modules/@nodelib/fs.scandir": { 794 836 "version": "2.1.5", 795 837 "dev": true, ··· 822 864 "node": ">= 8" 823 865 } 824 866 }, 867 + "node_modules/@oxc-project/types": { 868 + "version": "0.122.0", 869 + "dev": true, 870 + "license": "MIT", 871 + "funding": { 872 + "url": "https://github.com/sponsors/Boshen" 873 + } 874 + }, 875 + "node_modules/@rolldown/binding-android-arm64": { 876 + "version": "1.0.0-rc.12", 877 + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.12.tgz", 878 + "integrity": "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==", 879 + "cpu": [ 880 + "arm64" 881 + ], 882 + "dev": true, 883 + "license": "MIT", 884 + "optional": true, 885 + "os": [ 886 + "android" 887 + ], 888 + "engines": { 889 + "node": "^20.19.0 || >=22.12.0" 890 + } 891 + }, 892 + "node_modules/@rolldown/binding-darwin-arm64": { 893 + "version": "1.0.0-rc.12", 894 + "cpu": [ 895 + "arm64" 896 + ], 897 + "dev": true, 898 + "license": "MIT", 899 + "optional": true, 900 + "os": [ 901 + "darwin" 902 + ], 903 + "engines": { 904 + "node": "^20.19.0 || >=22.12.0" 905 + } 906 + }, 907 + "node_modules/@rolldown/binding-darwin-x64": { 908 + "version": "1.0.0-rc.12", 909 + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.12.tgz", 910 + "integrity": "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==", 911 + "cpu": [ 912 + "x64" 913 + ], 914 + "dev": true, 915 + "license": "MIT", 916 + "optional": true, 917 + "os": [ 918 + "darwin" 919 + ], 920 + "engines": { 921 + "node": "^20.19.0 || >=22.12.0" 922 + } 923 + }, 924 + "node_modules/@rolldown/binding-freebsd-x64": { 925 + "version": "1.0.0-rc.12", 926 + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.12.tgz", 927 + "integrity": "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==", 928 + "cpu": [ 929 + "x64" 930 + ], 931 + "dev": true, 932 + "license": "MIT", 933 + "optional": true, 934 + "os": [ 935 + "freebsd" 936 + ], 937 + "engines": { 938 + "node": "^20.19.0 || >=22.12.0" 939 + } 940 + }, 941 + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { 942 + "version": "1.0.0-rc.12", 943 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.12.tgz", 944 + "integrity": "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==", 945 + "cpu": [ 946 + "arm" 947 + ], 948 + "dev": true, 949 + "license": "MIT", 950 + "optional": true, 951 + "os": [ 952 + "linux" 953 + ], 954 + "engines": { 955 + "node": "^20.19.0 || >=22.12.0" 956 + } 957 + }, 958 + "node_modules/@rolldown/binding-linux-arm64-gnu": { 959 + "version": "1.0.0-rc.12", 960 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.12.tgz", 961 + "integrity": "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==", 962 + "cpu": [ 963 + "arm64" 964 + ], 965 + "dev": true, 966 + "license": "MIT", 967 + "optional": true, 968 + "os": [ 969 + "linux" 970 + ], 971 + "engines": { 972 + "node": "^20.19.0 || >=22.12.0" 973 + } 974 + }, 975 + "node_modules/@rolldown/binding-linux-arm64-musl": { 976 + "version": "1.0.0-rc.12", 977 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.12.tgz", 978 + "integrity": "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==", 979 + "cpu": [ 980 + "arm64" 981 + ], 982 + "dev": true, 983 + "license": "MIT", 984 + "optional": true, 985 + "os": [ 986 + "linux" 987 + ], 988 + "engines": { 989 + "node": "^20.19.0 || >=22.12.0" 990 + } 991 + }, 992 + "node_modules/@rolldown/binding-linux-ppc64-gnu": { 993 + "version": "1.0.0-rc.12", 994 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.12.tgz", 995 + "integrity": "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==", 996 + "cpu": [ 997 + "ppc64" 998 + ], 999 + "dev": true, 1000 + "license": "MIT", 1001 + "optional": true, 1002 + "os": [ 1003 + "linux" 1004 + ], 1005 + "engines": { 1006 + "node": "^20.19.0 || >=22.12.0" 1007 + } 1008 + }, 1009 + "node_modules/@rolldown/binding-linux-s390x-gnu": { 1010 + "version": "1.0.0-rc.12", 1011 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.12.tgz", 1012 + "integrity": "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==", 1013 + "cpu": [ 1014 + "s390x" 1015 + ], 1016 + "dev": true, 1017 + "license": "MIT", 1018 + "optional": true, 1019 + "os": [ 1020 + "linux" 1021 + ], 1022 + "engines": { 1023 + "node": "^20.19.0 || >=22.12.0" 1024 + } 1025 + }, 1026 + "node_modules/@rolldown/binding-linux-x64-gnu": { 1027 + "version": "1.0.0-rc.12", 1028 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.12.tgz", 1029 + "integrity": "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==", 1030 + "cpu": [ 1031 + "x64" 1032 + ], 1033 + "dev": true, 1034 + "license": "MIT", 1035 + "optional": true, 1036 + "os": [ 1037 + "linux" 1038 + ], 1039 + "engines": { 1040 + "node": "^20.19.0 || >=22.12.0" 1041 + } 1042 + }, 1043 + "node_modules/@rolldown/binding-linux-x64-musl": { 1044 + "version": "1.0.0-rc.12", 1045 + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.12.tgz", 1046 + "integrity": "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==", 1047 + "cpu": [ 1048 + "x64" 1049 + ], 1050 + "dev": true, 1051 + "license": "MIT", 1052 + "optional": true, 1053 + "os": [ 1054 + "linux" 1055 + ], 1056 + "engines": { 1057 + "node": "^20.19.0 || >=22.12.0" 1058 + } 1059 + }, 1060 + "node_modules/@rolldown/binding-openharmony-arm64": { 1061 + "version": "1.0.0-rc.12", 1062 + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.12.tgz", 1063 + "integrity": "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==", 1064 + "cpu": [ 1065 + "arm64" 1066 + ], 1067 + "dev": true, 1068 + "license": "MIT", 1069 + "optional": true, 1070 + "os": [ 1071 + "openharmony" 1072 + ], 1073 + "engines": { 1074 + "node": "^20.19.0 || >=22.12.0" 1075 + } 1076 + }, 1077 + "node_modules/@rolldown/binding-wasm32-wasi": { 1078 + "version": "1.0.0-rc.12", 1079 + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.12.tgz", 1080 + "integrity": "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==", 1081 + "cpu": [ 1082 + "wasm32" 1083 + ], 1084 + "dev": true, 1085 + "license": "MIT", 1086 + "optional": true, 1087 + "dependencies": { 1088 + "@napi-rs/wasm-runtime": "^1.1.1" 1089 + }, 1090 + "engines": { 1091 + "node": ">=14.0.0" 1092 + } 1093 + }, 1094 + "node_modules/@rolldown/binding-win32-arm64-msvc": { 1095 + "version": "1.0.0-rc.12", 1096 + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.12.tgz", 1097 + "integrity": "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==", 1098 + "cpu": [ 1099 + "arm64" 1100 + ], 1101 + "dev": true, 1102 + "license": "MIT", 1103 + "optional": true, 1104 + "os": [ 1105 + "win32" 1106 + ], 1107 + "engines": { 1108 + "node": "^20.19.0 || >=22.12.0" 1109 + } 1110 + }, 1111 + "node_modules/@rolldown/binding-win32-x64-msvc": { 1112 + "version": "1.0.0-rc.12", 1113 + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.12.tgz", 1114 + "integrity": "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==", 1115 + "cpu": [ 1116 + "x64" 1117 + ], 1118 + "dev": true, 1119 + "license": "MIT", 1120 + "optional": true, 1121 + "os": [ 1122 + "win32" 1123 + ], 1124 + "engines": { 1125 + "node": "^20.19.0 || >=22.12.0" 1126 + } 1127 + }, 1128 + "node_modules/@rolldown/pluginutils": { 1129 + "version": "1.0.0-rc.12", 1130 + "dev": true, 1131 + "license": "MIT" 1132 + }, 825 1133 "node_modules/@rollup/plugin-alias": { 826 1134 "version": "6.0.0", 827 1135 "dev": true, ··· 1301 1609 "version": "1.1.0", 1302 1610 "license": "MIT" 1303 1611 }, 1612 + "node_modules/@tybys/wasm-util": { 1613 + "version": "0.10.1", 1614 + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", 1615 + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", 1616 + "dev": true, 1617 + "license": "MIT", 1618 + "optional": true, 1619 + "dependencies": { 1620 + "tslib": "^2.4.0" 1621 + } 1622 + }, 1304 1623 "node_modules/@types/body-parser": { 1305 1624 "version": "1.19.6", 1306 1625 "dev": true, ··· 1310 1629 "@types/node": "*" 1311 1630 } 1312 1631 }, 1632 + "node_modules/@types/chai": { 1633 + "version": "5.2.3", 1634 + "dev": true, 1635 + "license": "MIT", 1636 + "dependencies": { 1637 + "@types/deep-eql": "*", 1638 + "assertion-error": "^2.0.1" 1639 + } 1640 + }, 1313 1641 "node_modules/@types/connect": { 1314 1642 "version": "3.4.38", 1315 1643 "dev": true, ··· 1326 1654 "@types/node": "*" 1327 1655 } 1328 1656 }, 1657 + "node_modules/@types/deep-eql": { 1658 + "version": "4.0.2", 1659 + "dev": true, 1660 + "license": "MIT" 1661 + }, 1329 1662 "node_modules/@types/estree": { 1330 1663 "version": "1.0.8", 1331 1664 "dev": true, ··· 1333 1666 }, 1334 1667 "node_modules/@types/eventsource": { 1335 1668 "version": "1.1.15", 1336 - "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.15.tgz", 1337 - "integrity": "sha512-XQmGcbnxUNa06HR3VBVkc9+A2Vpi9ZyLJcdS5dwaQQ/4ZMWFO+5c90FnMUpbtMZwB/FChoYHwuVg8TvkECacTA==", 1338 1669 "dev": true, 1339 1670 "license": "MIT" 1340 1671 }, ··· 1368 1699 "version": "25.5.0", 1369 1700 "devOptional": true, 1370 1701 "license": "MIT", 1702 + "peer": true, 1371 1703 "dependencies": { 1372 1704 "undici-types": "~7.18.0" 1373 1705 } ··· 1406 1738 }, 1407 1739 "node_modules/@types/ws": { 1408 1740 "version": "8.18.1", 1409 - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", 1410 - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", 1411 1741 "dev": true, 1412 1742 "license": "MIT", 1413 1743 "dependencies": { 1414 1744 "@types/node": "*" 1415 1745 } 1416 1746 }, 1747 + "node_modules/@vitest/expect": { 1748 + "version": "4.1.2", 1749 + "dev": true, 1750 + "license": "MIT", 1751 + "dependencies": { 1752 + "@standard-schema/spec": "^1.1.0", 1753 + "@types/chai": "^5.2.2", 1754 + "@vitest/spy": "4.1.2", 1755 + "@vitest/utils": "4.1.2", 1756 + "chai": "^6.2.2", 1757 + "tinyrainbow": "^3.1.0" 1758 + }, 1759 + "funding": { 1760 + "url": "https://opencollective.com/vitest" 1761 + } 1762 + }, 1763 + "node_modules/@vitest/pretty-format": { 1764 + "version": "4.1.2", 1765 + "dev": true, 1766 + "license": "MIT", 1767 + "dependencies": { 1768 + "tinyrainbow": "^3.1.0" 1769 + }, 1770 + "funding": { 1771 + "url": "https://opencollective.com/vitest" 1772 + } 1773 + }, 1774 + "node_modules/@vitest/runner": { 1775 + "version": "4.1.2", 1776 + "dev": true, 1777 + "license": "MIT", 1778 + "dependencies": { 1779 + "@vitest/utils": "4.1.2", 1780 + "pathe": "^2.0.3" 1781 + }, 1782 + "funding": { 1783 + "url": "https://opencollective.com/vitest" 1784 + } 1785 + }, 1786 + "node_modules/@vitest/snapshot": { 1787 + "version": "4.1.2", 1788 + "dev": true, 1789 + "license": "MIT", 1790 + "dependencies": { 1791 + "@vitest/pretty-format": "4.1.2", 1792 + "@vitest/utils": "4.1.2", 1793 + "magic-string": "^0.30.21", 1794 + "pathe": "^2.0.3" 1795 + }, 1796 + "funding": { 1797 + "url": "https://opencollective.com/vitest" 1798 + } 1799 + }, 1800 + "node_modules/@vitest/spy": { 1801 + "version": "4.1.2", 1802 + "dev": true, 1803 + "license": "MIT", 1804 + "funding": { 1805 + "url": "https://opencollective.com/vitest" 1806 + } 1807 + }, 1808 + "node_modules/@vitest/utils": { 1809 + "version": "4.1.2", 1810 + "dev": true, 1811 + "license": "MIT", 1812 + "dependencies": { 1813 + "@vitest/pretty-format": "4.1.2", 1814 + "convert-source-map": "^2.0.0", 1815 + "tinyrainbow": "^3.1.0" 1816 + }, 1817 + "funding": { 1818 + "url": "https://opencollective.com/vitest" 1819 + } 1820 + }, 1417 1821 "node_modules/accepts": { 1418 1822 "version": "2.0.0", 1419 1823 "license": "MIT", ··· 1430 1834 "license": "MIT", 1431 1835 "engines": { 1432 1836 "node": ">=8" 1837 + } 1838 + }, 1839 + "node_modules/assertion-error": { 1840 + "version": "2.0.1", 1841 + "dev": true, 1842 + "license": "MIT", 1843 + "engines": { 1844 + "node": ">=12" 1433 1845 } 1434 1846 }, 1435 1847 "node_modules/astring": { ··· 1531 1943 "url": "https://github.com/sponsors/ljharb" 1532 1944 } 1533 1945 }, 1946 + "node_modules/chai": { 1947 + "version": "6.2.2", 1948 + "dev": true, 1949 + "license": "MIT", 1950 + "engines": { 1951 + "node": ">=18" 1952 + } 1953 + }, 1534 1954 "node_modules/chalk": { 1535 1955 "version": "5.6.2", 1536 1956 "license": "MIT", ··· 1545 1965 "version": "2.1.1", 1546 1966 "license": "MIT" 1547 1967 }, 1968 + "node_modules/chownr": { 1969 + "version": "3.0.0", 1970 + "license": "BlueOak-1.0.0", 1971 + "engines": { 1972 + "node": ">=18" 1973 + } 1974 + }, 1548 1975 "node_modules/cjs-module-lexer": { 1549 1976 "version": "2.2.0", 1550 1977 "dev": true, 1551 1978 "license": "MIT" 1552 1979 }, 1980 + "node_modules/cli-cursor": { 1981 + "version": "5.0.0", 1982 + "license": "MIT", 1983 + "dependencies": { 1984 + "restore-cursor": "^5.0.0" 1985 + }, 1986 + "engines": { 1987 + "node": ">=18" 1988 + }, 1989 + "funding": { 1990 + "url": "https://github.com/sponsors/sindresorhus" 1991 + } 1992 + }, 1993 + "node_modules/cli-spinners": { 1994 + "version": "3.4.0", 1995 + "license": "MIT", 1996 + "engines": { 1997 + "node": ">=18.20" 1998 + }, 1999 + "funding": { 2000 + "url": "https://github.com/sponsors/sindresorhus" 2001 + } 2002 + }, 1553 2003 "node_modules/cli-table3": { 1554 2004 "version": "0.6.5", 1555 2005 "license": "MIT", ··· 1616 2066 "engines": { 1617 2067 "node": ">= 0.6" 1618 2068 } 2069 + }, 2070 + "node_modules/convert-source-map": { 2071 + "version": "2.0.0", 2072 + "dev": true, 2073 + "license": "MIT" 1619 2074 }, 1620 2075 "node_modules/cookie": { 1621 2076 "version": "0.7.2", ··· 1721 2176 "node": ">= 0.8" 1722 2177 } 1723 2178 }, 2179 + "node_modules/detect-libc": { 2180 + "version": "2.1.2", 2181 + "dev": true, 2182 + "license": "Apache-2.0", 2183 + "engines": { 2184 + "node": ">=8" 2185 + } 2186 + }, 1724 2187 "node_modules/dunder-proto": { 1725 2188 "version": "1.0.1", 1726 2189 "license": "MIT", ··· 1738 2201 "license": "MIT" 1739 2202 }, 1740 2203 "node_modules/effect": { 1741 - "version": "3.20.0", 1742 - "resolved": "https://registry.npmjs.org/effect/-/effect-3.20.0.tgz", 1743 - "integrity": "sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw==", 2204 + "version": "3.19.19", 1744 2205 "license": "MIT", 1745 2206 "dependencies": { 1746 2207 "@standard-schema/spec": "^1.0.0", ··· 1782 2243 "node": ">= 0.4" 1783 2244 } 1784 2245 }, 2246 + "node_modules/es-module-lexer": { 2247 + "version": "2.0.0", 2248 + "dev": true, 2249 + "license": "MIT" 2250 + }, 1785 2251 "node_modules/es-object-atoms": { 1786 2252 "version": "1.1.1", 1787 2253 "license": "MIT", ··· 1863 2329 }, 1864 2330 "node_modules/eventsource": { 1865 2331 "version": "4.1.0", 1866 - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-4.1.0.tgz", 1867 - "integrity": "sha512-2GuF51iuHX6A9xdTccMTsNb7VO0lHZihApxhvQzJB5A03DvHDd2FQepodbMaztPBmBcE/ox7o2gqaxGhYB9LhQ==", 1868 2332 "license": "MIT", 1869 2333 "dependencies": { 1870 2334 "eventsource-parser": "^3.0.1" ··· 1875 2339 }, 1876 2340 "node_modules/eventsource-parser": { 1877 2341 "version": "3.0.6", 1878 - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", 1879 - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", 1880 2342 "license": "MIT", 1881 2343 "engines": { 1882 2344 "node": ">=18.0.0" 1883 2345 } 1884 2346 }, 2347 + "node_modules/expect-type": { 2348 + "version": "1.3.0", 2349 + "dev": true, 2350 + "license": "Apache-2.0", 2351 + "engines": { 2352 + "node": ">=12.0.0" 2353 + } 2354 + }, 1885 2355 "node_modules/express": { 1886 2356 "version": "5.2.1", 1887 2357 "license": "MIT", ··· 2112 2582 "url": "https://github.com/sponsors/ljharb" 2113 2583 } 2114 2584 }, 2585 + "node_modules/get-east-asian-width": { 2586 + "version": "1.5.0", 2587 + "license": "MIT", 2588 + "engines": { 2589 + "node": ">=18" 2590 + }, 2591 + "funding": { 2592 + "url": "https://github.com/sponsors/sindresorhus" 2593 + } 2594 + }, 2115 2595 "node_modules/get-intrinsic": { 2116 2596 "version": "1.3.0", 2117 2597 "license": "MIT", ··· 2242 2722 "url": "https://opencollective.com/express" 2243 2723 } 2244 2724 }, 2725 + "node_modules/ignore": { 2726 + "version": "7.0.5", 2727 + "license": "MIT", 2728 + "engines": { 2729 + "node": ">= 4" 2730 + } 2731 + }, 2245 2732 "node_modules/inherits": { 2246 2733 "version": "2.0.4", 2247 2734 "license": "ISC" ··· 2332 2819 "url": "https://github.com/sponsors/sindresorhus" 2333 2820 } 2334 2821 }, 2822 + "node_modules/is-interactive": { 2823 + "version": "2.0.0", 2824 + "license": "MIT", 2825 + "engines": { 2826 + "node": ">=12" 2827 + }, 2828 + "funding": { 2829 + "url": "https://github.com/sponsors/sindresorhus" 2830 + } 2831 + }, 2335 2832 "node_modules/is-module": { 2336 2833 "version": "1.0.0", 2337 2834 "dev": true, ··· 2357 2854 "@types/estree": "*" 2358 2855 } 2359 2856 }, 2857 + "node_modules/is-unicode-supported": { 2858 + "version": "2.1.0", 2859 + "license": "MIT", 2860 + "engines": { 2861 + "node": ">=18" 2862 + }, 2863 + "funding": { 2864 + "url": "https://github.com/sponsors/sindresorhus" 2865 + } 2866 + }, 2360 2867 "node_modules/is-wsl": { 2361 2868 "version": "3.1.1", 2362 2869 "license": "MIT", ··· 2372 2879 }, 2373 2880 "node_modules/libsodium": { 2374 2881 "version": "0.8.2", 2375 - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.8.2.tgz", 2376 - "integrity": "sha512-TsnGYMoZtpweT+kR+lOv5TVsnJ/9U0FZOsLFzFOMWmxqOAYXjX3fsrPAW+i1LthgDKXJnI9A8dWEanT1tnJKIw==", 2377 2882 "license": "ISC" 2378 2883 }, 2379 2884 "node_modules/libsodium-wrappers": { 2380 2885 "version": "0.8.2", 2381 - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.8.2.tgz", 2382 - "integrity": "sha512-VFLmfxkxo+U9q60tjcnSomQBRx2UzlRjKWJqvB4K1pUqsMQg4cu3QXA2nrcsj9A1qRsnJBbi2Ozx1hsiDoCkhw==", 2383 2886 "license": "ISC", 2384 2887 "dependencies": { 2385 2888 "libsodium": "^0.8.0" 2386 2889 } 2387 2890 }, 2891 + "node_modules/lightningcss": { 2892 + "version": "1.32.0", 2893 + "dev": true, 2894 + "license": "MPL-2.0", 2895 + "peer": true, 2896 + "dependencies": { 2897 + "detect-libc": "^2.0.3" 2898 + }, 2899 + "engines": { 2900 + "node": ">= 12.0.0" 2901 + }, 2902 + "funding": { 2903 + "type": "opencollective", 2904 + "url": "https://opencollective.com/parcel" 2905 + }, 2906 + "optionalDependencies": { 2907 + "lightningcss-android-arm64": "1.32.0", 2908 + "lightningcss-darwin-arm64": "1.32.0", 2909 + "lightningcss-darwin-x64": "1.32.0", 2910 + "lightningcss-freebsd-x64": "1.32.0", 2911 + "lightningcss-linux-arm-gnueabihf": "1.32.0", 2912 + "lightningcss-linux-arm64-gnu": "1.32.0", 2913 + "lightningcss-linux-arm64-musl": "1.32.0", 2914 + "lightningcss-linux-x64-gnu": "1.32.0", 2915 + "lightningcss-linux-x64-musl": "1.32.0", 2916 + "lightningcss-win32-arm64-msvc": "1.32.0", 2917 + "lightningcss-win32-x64-msvc": "1.32.0" 2918 + } 2919 + }, 2920 + "node_modules/lightningcss-android-arm64": { 2921 + "version": "1.32.0", 2922 + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", 2923 + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", 2924 + "cpu": [ 2925 + "arm64" 2926 + ], 2927 + "dev": true, 2928 + "license": "MPL-2.0", 2929 + "optional": true, 2930 + "os": [ 2931 + "android" 2932 + ], 2933 + "engines": { 2934 + "node": ">= 12.0.0" 2935 + }, 2936 + "funding": { 2937 + "type": "opencollective", 2938 + "url": "https://opencollective.com/parcel" 2939 + } 2940 + }, 2941 + "node_modules/lightningcss-darwin-arm64": { 2942 + "version": "1.32.0", 2943 + "cpu": [ 2944 + "arm64" 2945 + ], 2946 + "dev": true, 2947 + "license": "MPL-2.0", 2948 + "optional": true, 2949 + "os": [ 2950 + "darwin" 2951 + ], 2952 + "engines": { 2953 + "node": ">= 12.0.0" 2954 + }, 2955 + "funding": { 2956 + "type": "opencollective", 2957 + "url": "https://opencollective.com/parcel" 2958 + } 2959 + }, 2960 + "node_modules/lightningcss-darwin-x64": { 2961 + "version": "1.32.0", 2962 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", 2963 + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", 2964 + "cpu": [ 2965 + "x64" 2966 + ], 2967 + "dev": true, 2968 + "license": "MPL-2.0", 2969 + "optional": true, 2970 + "os": [ 2971 + "darwin" 2972 + ], 2973 + "engines": { 2974 + "node": ">= 12.0.0" 2975 + }, 2976 + "funding": { 2977 + "type": "opencollective", 2978 + "url": "https://opencollective.com/parcel" 2979 + } 2980 + }, 2981 + "node_modules/lightningcss-freebsd-x64": { 2982 + "version": "1.32.0", 2983 + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", 2984 + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", 2985 + "cpu": [ 2986 + "x64" 2987 + ], 2988 + "dev": true, 2989 + "license": "MPL-2.0", 2990 + "optional": true, 2991 + "os": [ 2992 + "freebsd" 2993 + ], 2994 + "engines": { 2995 + "node": ">= 12.0.0" 2996 + }, 2997 + "funding": { 2998 + "type": "opencollective", 2999 + "url": "https://opencollective.com/parcel" 3000 + } 3001 + }, 3002 + "node_modules/lightningcss-linux-arm-gnueabihf": { 3003 + "version": "1.32.0", 3004 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", 3005 + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", 3006 + "cpu": [ 3007 + "arm" 3008 + ], 3009 + "dev": true, 3010 + "license": "MPL-2.0", 3011 + "optional": true, 3012 + "os": [ 3013 + "linux" 3014 + ], 3015 + "engines": { 3016 + "node": ">= 12.0.0" 3017 + }, 3018 + "funding": { 3019 + "type": "opencollective", 3020 + "url": "https://opencollective.com/parcel" 3021 + } 3022 + }, 3023 + "node_modules/lightningcss-linux-arm64-gnu": { 3024 + "version": "1.32.0", 3025 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", 3026 + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", 3027 + "cpu": [ 3028 + "arm64" 3029 + ], 3030 + "dev": true, 3031 + "license": "MPL-2.0", 3032 + "optional": true, 3033 + "os": [ 3034 + "linux" 3035 + ], 3036 + "engines": { 3037 + "node": ">= 12.0.0" 3038 + }, 3039 + "funding": { 3040 + "type": "opencollective", 3041 + "url": "https://opencollective.com/parcel" 3042 + } 3043 + }, 3044 + "node_modules/lightningcss-linux-arm64-musl": { 3045 + "version": "1.32.0", 3046 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", 3047 + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", 3048 + "cpu": [ 3049 + "arm64" 3050 + ], 3051 + "dev": true, 3052 + "license": "MPL-2.0", 3053 + "optional": true, 3054 + "os": [ 3055 + "linux" 3056 + ], 3057 + "engines": { 3058 + "node": ">= 12.0.0" 3059 + }, 3060 + "funding": { 3061 + "type": "opencollective", 3062 + "url": "https://opencollective.com/parcel" 3063 + } 3064 + }, 3065 + "node_modules/lightningcss-linux-x64-gnu": { 3066 + "version": "1.32.0", 3067 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", 3068 + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", 3069 + "cpu": [ 3070 + "x64" 3071 + ], 3072 + "dev": true, 3073 + "license": "MPL-2.0", 3074 + "optional": true, 3075 + "os": [ 3076 + "linux" 3077 + ], 3078 + "engines": { 3079 + "node": ">= 12.0.0" 3080 + }, 3081 + "funding": { 3082 + "type": "opencollective", 3083 + "url": "https://opencollective.com/parcel" 3084 + } 3085 + }, 3086 + "node_modules/lightningcss-linux-x64-musl": { 3087 + "version": "1.32.0", 3088 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", 3089 + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", 3090 + "cpu": [ 3091 + "x64" 3092 + ], 3093 + "dev": true, 3094 + "license": "MPL-2.0", 3095 + "optional": true, 3096 + "os": [ 3097 + "linux" 3098 + ], 3099 + "engines": { 3100 + "node": ">= 12.0.0" 3101 + }, 3102 + "funding": { 3103 + "type": "opencollective", 3104 + "url": "https://opencollective.com/parcel" 3105 + } 3106 + }, 3107 + "node_modules/lightningcss-win32-arm64-msvc": { 3108 + "version": "1.32.0", 3109 + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", 3110 + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", 3111 + "cpu": [ 3112 + "arm64" 3113 + ], 3114 + "dev": true, 3115 + "license": "MPL-2.0", 3116 + "optional": true, 3117 + "os": [ 3118 + "win32" 3119 + ], 3120 + "engines": { 3121 + "node": ">= 12.0.0" 3122 + }, 3123 + "funding": { 3124 + "type": "opencollective", 3125 + "url": "https://opencollective.com/parcel" 3126 + } 3127 + }, 3128 + "node_modules/lightningcss-win32-x64-msvc": { 3129 + "version": "1.32.0", 3130 + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", 3131 + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", 3132 + "cpu": [ 3133 + "x64" 3134 + ], 3135 + "dev": true, 3136 + "license": "MPL-2.0", 3137 + "optional": true, 3138 + "os": [ 3139 + "win32" 3140 + ], 3141 + "engines": { 3142 + "node": ">= 12.0.0" 3143 + }, 3144 + "funding": { 3145 + "type": "opencollective", 3146 + "url": "https://opencollective.com/parcel" 3147 + } 3148 + }, 3149 + "node_modules/log-symbols": { 3150 + "version": "7.0.1", 3151 + "license": "MIT", 3152 + "dependencies": { 3153 + "is-unicode-supported": "^2.0.0", 3154 + "yoctocolors": "^2.1.1" 3155 + }, 3156 + "engines": { 3157 + "node": ">=18" 3158 + }, 3159 + "funding": { 3160 + "url": "https://github.com/sponsors/sindresorhus" 3161 + } 3162 + }, 2388 3163 "node_modules/magic-string": { 2389 3164 "version": "0.30.21", 2390 3165 "dev": true, ··· 2469 3244 "url": "https://opencollective.com/express" 2470 3245 } 2471 3246 }, 3247 + "node_modules/mimic-function": { 3248 + "version": "5.0.1", 3249 + "license": "MIT", 3250 + "engines": { 3251 + "node": ">=18" 3252 + }, 3253 + "funding": { 3254 + "url": "https://github.com/sponsors/sindresorhus" 3255 + } 3256 + }, 3257 + "node_modules/minipass": { 3258 + "version": "7.1.3", 3259 + "license": "BlueOak-1.0.0", 3260 + "engines": { 3261 + "node": ">=16 || 14 >=14.17" 3262 + } 3263 + }, 3264 + "node_modules/minizlib": { 3265 + "version": "3.1.0", 3266 + "license": "MIT", 3267 + "dependencies": { 3268 + "minipass": "^7.1.2" 3269 + }, 3270 + "engines": { 3271 + "node": ">= 18" 3272 + } 3273 + }, 2472 3274 "node_modules/ms": { 2473 3275 "version": "2.1.3", 2474 3276 "license": "MIT" ··· 2480 3282 "node": "^20.17.0 || >=22.9.0" 2481 3283 } 2482 3284 }, 3285 + "node_modules/nanoid": { 3286 + "version": "3.3.11", 3287 + "dev": true, 3288 + "funding": [ 3289 + { 3290 + "type": "github", 3291 + "url": "https://github.com/sponsors/ai" 3292 + } 3293 + ], 3294 + "license": "MIT", 3295 + "bin": { 3296 + "nanoid": "bin/nanoid.cjs" 3297 + }, 3298 + "engines": { 3299 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 3300 + } 3301 + }, 2483 3302 "node_modules/negotiator": { 2484 3303 "version": "1.0.0", 2485 3304 "license": "MIT", ··· 2504 3323 "url": "https://github.com/sponsors/ljharb" 2505 3324 } 2506 3325 }, 3326 + "node_modules/obug": { 3327 + "version": "2.1.1", 3328 + "dev": true, 3329 + "funding": [ 3330 + "https://github.com/sponsors/sxzz", 3331 + "https://opencollective.com/debug" 3332 + ], 3333 + "license": "MIT" 3334 + }, 2507 3335 "node_modules/on-finished": { 2508 3336 "version": "2.4.1", 2509 3337 "license": "MIT", ··· 2521 3349 "wrappy": "1" 2522 3350 } 2523 3351 }, 3352 + "node_modules/onetime": { 3353 + "version": "7.0.0", 3354 + "license": "MIT", 3355 + "dependencies": { 3356 + "mimic-function": "^5.0.0" 3357 + }, 3358 + "engines": { 3359 + "node": ">=18" 3360 + }, 3361 + "funding": { 3362 + "url": "https://github.com/sponsors/sindresorhus" 3363 + } 3364 + }, 2524 3365 "node_modules/open": { 2525 3366 "version": "11.0.0", 2526 3367 "license": "MIT", ··· 2539 3380 "url": "https://github.com/sponsors/sindresorhus" 2540 3381 } 2541 3382 }, 3383 + "node_modules/ora": { 3384 + "version": "9.3.0", 3385 + "license": "MIT", 3386 + "dependencies": { 3387 + "chalk": "^5.6.2", 3388 + "cli-cursor": "^5.0.0", 3389 + "cli-spinners": "^3.2.0", 3390 + "is-interactive": "^2.0.0", 3391 + "is-unicode-supported": "^2.1.0", 3392 + "log-symbols": "^7.0.1", 3393 + "stdin-discarder": "^0.3.1", 3394 + "string-width": "^8.1.0" 3395 + }, 3396 + "engines": { 3397 + "node": ">=20" 3398 + }, 3399 + "funding": { 3400 + "url": "https://github.com/sponsors/sindresorhus" 3401 + } 3402 + }, 3403 + "node_modules/ora/node_modules/string-width": { 3404 + "version": "8.2.0", 3405 + "license": "MIT", 3406 + "dependencies": { 3407 + "get-east-asian-width": "^1.5.0", 3408 + "strip-ansi": "^7.1.2" 3409 + }, 3410 + "engines": { 3411 + "node": ">=20" 3412 + }, 3413 + "funding": { 3414 + "url": "https://github.com/sponsors/sindresorhus" 3415 + } 3416 + }, 3417 + "node_modules/ora/node_modules/string-width/node_modules/strip-ansi": { 3418 + "version": "7.2.0", 3419 + "license": "MIT", 3420 + "dependencies": { 3421 + "ansi-regex": "^6.2.2" 3422 + }, 3423 + "engines": { 3424 + "node": ">=12" 3425 + }, 3426 + "funding": { 3427 + "url": "https://github.com/chalk/strip-ansi?sponsor=1" 3428 + } 3429 + }, 3430 + "node_modules/ora/node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { 3431 + "version": "6.2.2", 3432 + "license": "MIT", 3433 + "engines": { 3434 + "node": ">=12" 3435 + }, 3436 + "funding": { 3437 + "url": "https://github.com/chalk/ansi-regex?sponsor=1" 3438 + } 3439 + }, 2542 3440 "node_modules/parseurl": { 2543 3441 "version": "1.3.3", 2544 3442 "license": "MIT", ··· 2559 3457 "url": "https://opencollective.com/express" 2560 3458 } 2561 3459 }, 3460 + "node_modules/pathe": { 3461 + "version": "2.0.3", 3462 + "dev": true, 3463 + "license": "MIT" 3464 + }, 3465 + "node_modules/picocolors": { 3466 + "version": "1.1.1", 3467 + "dev": true, 3468 + "license": "ISC" 3469 + }, 2562 3470 "node_modules/picomatch": { 2563 - "version": "4.0.3", 3471 + "version": "4.0.4", 3472 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", 3473 + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", 2564 3474 "dev": true, 2565 3475 "license": "MIT", 2566 3476 "engines": { ··· 2606 3516 } 2607 3517 } 2608 3518 }, 3519 + "node_modules/postcss": { 3520 + "version": "8.5.8", 3521 + "dev": true, 3522 + "funding": [ 3523 + { 3524 + "type": "opencollective", 3525 + "url": "https://opencollective.com/postcss/" 3526 + }, 3527 + { 3528 + "type": "tidelift", 3529 + "url": "https://tidelift.com/funding/github/npm/postcss" 3530 + }, 3531 + { 3532 + "type": "github", 3533 + "url": "https://github.com/sponsors/ai" 3534 + } 3535 + ], 3536 + "license": "MIT", 3537 + "dependencies": { 3538 + "nanoid": "^3.3.11", 3539 + "picocolors": "^1.1.1", 3540 + "source-map-js": "^1.2.1" 3541 + }, 3542 + "engines": { 3543 + "node": "^10 || ^12 || >=14" 3544 + } 3545 + }, 2609 3546 "node_modules/powershell-utils": { 2610 3547 "version": "0.1.0", 2611 3548 "license": "MIT", ··· 2724 3661 "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 2725 3662 } 2726 3663 }, 3664 + "node_modules/restore-cursor": { 3665 + "version": "5.1.0", 3666 + "license": "MIT", 3667 + "dependencies": { 3668 + "onetime": "^7.0.0", 3669 + "signal-exit": "^4.1.0" 3670 + }, 3671 + "engines": { 3672 + "node": ">=18" 3673 + }, 3674 + "funding": { 3675 + "url": "https://github.com/sponsors/sindresorhus" 3676 + } 3677 + }, 2727 3678 "node_modules/reusify": { 2728 3679 "version": "1.1.0", 2729 3680 "dev": true, ··· 2731 3682 "engines": { 2732 3683 "iojs": ">=1.0.0", 2733 3684 "node": ">=0.10.0" 3685 + } 3686 + }, 3687 + "node_modules/rolldown": { 3688 + "version": "1.0.0-rc.12", 3689 + "dev": true, 3690 + "license": "MIT", 3691 + "dependencies": { 3692 + "@oxc-project/types": "=0.122.0", 3693 + "@rolldown/pluginutils": "1.0.0-rc.12" 3694 + }, 3695 + "bin": { 3696 + "rolldown": "bin/cli.mjs" 3697 + }, 3698 + "engines": { 3699 + "node": "^20.19.0 || >=22.12.0" 3700 + }, 3701 + "optionalDependencies": { 3702 + "@rolldown/binding-android-arm64": "1.0.0-rc.12", 3703 + "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", 3704 + "@rolldown/binding-darwin-x64": "1.0.0-rc.12", 3705 + "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", 3706 + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", 3707 + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", 3708 + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", 3709 + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", 3710 + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", 3711 + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", 3712 + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", 3713 + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", 3714 + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", 3715 + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", 3716 + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" 2734 3717 } 2735 3718 }, 2736 3719 "node_modules/rollup": { 2737 3720 "version": "4.59.0", 2738 3721 "dev": true, 2739 3722 "license": "MIT", 3723 + "peer": true, 2740 3724 "dependencies": { 2741 3725 "@types/estree": "1.0.8" 2742 3726 }, ··· 2971 3955 "url": "https://github.com/sponsors/ljharb" 2972 3956 } 2973 3957 }, 3958 + "node_modules/siginfo": { 3959 + "version": "2.0.0", 3960 + "dev": true, 3961 + "license": "ISC" 3962 + }, 2974 3963 "node_modules/signal-exit": { 2975 3964 "version": "4.1.0", 2976 3965 "license": "ISC", ··· 2981 3970 "url": "https://github.com/sponsors/isaacs" 2982 3971 } 2983 3972 }, 3973 + "node_modules/source-map-js": { 3974 + "version": "1.2.1", 3975 + "dev": true, 3976 + "license": "BSD-3-Clause", 3977 + "engines": { 3978 + "node": ">=0.10.0" 3979 + } 3980 + }, 3981 + "node_modules/stackback": { 3982 + "version": "0.0.2", 3983 + "dev": true, 3984 + "license": "MIT" 3985 + }, 2984 3986 "node_modules/statuses": { 2985 3987 "version": "2.0.2", 2986 3988 "license": "MIT", ··· 2988 3990 "node": ">= 0.8" 2989 3991 } 2990 3992 }, 3993 + "node_modules/std-env": { 3994 + "version": "4.0.0", 3995 + "dev": true, 3996 + "license": "MIT" 3997 + }, 3998 + "node_modules/stdin-discarder": { 3999 + "version": "0.3.1", 4000 + "license": "MIT", 4001 + "engines": { 4002 + "node": ">=18" 4003 + }, 4004 + "funding": { 4005 + "url": "https://github.com/sponsors/sindresorhus" 4006 + } 4007 + }, 2991 4008 "node_modules/string-width": { 2992 4009 "version": "4.2.3", 2993 4010 "license": "MIT", ··· 3021 4038 "url": "https://github.com/sponsors/ljharb" 3022 4039 } 3023 4040 }, 4041 + "node_modules/tar": { 4042 + "version": "7.5.13", 4043 + "license": "BlueOak-1.0.0", 4044 + "dependencies": { 4045 + "@isaacs/fs-minipass": "^4.0.0", 4046 + "chownr": "^3.0.0", 4047 + "minipass": "^7.1.2", 4048 + "minizlib": "^3.1.0", 4049 + "yallist": "^5.0.0" 4050 + }, 4051 + "engines": { 4052 + "node": ">=18" 4053 + } 4054 + }, 4055 + "node_modules/tinybench": { 4056 + "version": "2.9.0", 4057 + "dev": true, 4058 + "license": "MIT" 4059 + }, 4060 + "node_modules/tinyexec": { 4061 + "version": "1.0.4", 4062 + "dev": true, 4063 + "license": "MIT", 4064 + "engines": { 4065 + "node": ">=18" 4066 + } 4067 + }, 4068 + "node_modules/tinyglobby": { 4069 + "version": "0.2.15", 4070 + "dev": true, 4071 + "license": "MIT", 4072 + "dependencies": { 4073 + "fdir": "^6.5.0", 4074 + "picomatch": "^4.0.3" 4075 + }, 4076 + "engines": { 4077 + "node": ">=12.0.0" 4078 + }, 4079 + "funding": { 4080 + "url": "https://github.com/sponsors/SuperchupuDev" 4081 + } 4082 + }, 4083 + "node_modules/tinyrainbow": { 4084 + "version": "3.1.0", 4085 + "dev": true, 4086 + "license": "MIT", 4087 + "engines": { 4088 + "node": ">=14.0.0" 4089 + } 4090 + }, 3024 4091 "node_modules/to-regex-range": { 3025 4092 "version": "5.0.1", 3026 4093 "dev": true, ··· 3047 4114 "version": "4.21.0", 3048 4115 "dev": true, 3049 4116 "license": "MIT", 4117 + "peer": true, 3050 4118 "dependencies": { 3051 4119 "esbuild": "~0.27.0", 3052 4120 "get-tsconfig": "^4.7.5" ··· 3584 4652 "node": ">= 0.8" 3585 4653 } 3586 4654 }, 4655 + "node_modules/vite": { 4656 + "version": "7.3.1", 4657 + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", 4658 + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", 4659 + "dev": true, 4660 + "license": "MIT", 4661 + "optional": true, 4662 + "dependencies": { 4663 + "esbuild": "^0.27.0", 4664 + "fdir": "^6.5.0", 4665 + "picomatch": "^4.0.3", 4666 + "postcss": "^8.5.6", 4667 + "rollup": "^4.43.0", 4668 + "tinyglobby": "^0.2.15" 4669 + }, 4670 + "bin": { 4671 + "vite": "bin/vite.js" 4672 + }, 4673 + "engines": { 4674 + "node": "^20.19.0 || >=22.12.0" 4675 + }, 4676 + "funding": { 4677 + "url": "https://github.com/vitejs/vite?sponsor=1" 4678 + }, 4679 + "optionalDependencies": { 4680 + "fsevents": "~2.3.3" 4681 + }, 4682 + "peerDependencies": { 4683 + "@types/node": "^20.19.0 || >=22.12.0", 4684 + "jiti": ">=1.21.0", 4685 + "less": "^4.0.0", 4686 + "lightningcss": "^1.21.0", 4687 + "sass": "^1.70.0", 4688 + "sass-embedded": "^1.70.0", 4689 + "stylus": ">=0.54.8", 4690 + "sugarss": "^5.0.0", 4691 + "terser": "^5.16.0", 4692 + "tsx": "^4.8.1", 4693 + "yaml": "^2.4.2" 4694 + }, 4695 + "peerDependenciesMeta": { 4696 + "@types/node": { 4697 + "optional": true 4698 + }, 4699 + "jiti": { 4700 + "optional": true 4701 + }, 4702 + "less": { 4703 + "optional": true 4704 + }, 4705 + "lightningcss": { 4706 + "optional": true 4707 + }, 4708 + "sass": { 4709 + "optional": true 4710 + }, 4711 + "sass-embedded": { 4712 + "optional": true 4713 + }, 4714 + "stylus": { 4715 + "optional": true 4716 + }, 4717 + "sugarss": { 4718 + "optional": true 4719 + }, 4720 + "terser": { 4721 + "optional": true 4722 + }, 4723 + "tsx": { 4724 + "optional": true 4725 + }, 4726 + "yaml": { 4727 + "optional": true 4728 + } 4729 + } 4730 + }, 4731 + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { 4732 + "version": "0.27.7", 4733 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", 4734 + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", 4735 + "cpu": [ 4736 + "ppc64" 4737 + ], 4738 + "dev": true, 4739 + "license": "MIT", 4740 + "optional": true, 4741 + "os": [ 4742 + "aix" 4743 + ], 4744 + "engines": { 4745 + "node": ">=18" 4746 + } 4747 + }, 4748 + "node_modules/vite/node_modules/@esbuild/android-arm": { 4749 + "version": "0.27.7", 4750 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", 4751 + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", 4752 + "cpu": [ 4753 + "arm" 4754 + ], 4755 + "dev": true, 4756 + "license": "MIT", 4757 + "optional": true, 4758 + "os": [ 4759 + "android" 4760 + ], 4761 + "engines": { 4762 + "node": ">=18" 4763 + } 4764 + }, 4765 + "node_modules/vite/node_modules/@esbuild/android-arm64": { 4766 + "version": "0.27.7", 4767 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", 4768 + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", 4769 + "cpu": [ 4770 + "arm64" 4771 + ], 4772 + "dev": true, 4773 + "license": "MIT", 4774 + "optional": true, 4775 + "os": [ 4776 + "android" 4777 + ], 4778 + "engines": { 4779 + "node": ">=18" 4780 + } 4781 + }, 4782 + "node_modules/vite/node_modules/@esbuild/android-x64": { 4783 + "version": "0.27.7", 4784 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", 4785 + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", 4786 + "cpu": [ 4787 + "x64" 4788 + ], 4789 + "dev": true, 4790 + "license": "MIT", 4791 + "optional": true, 4792 + "os": [ 4793 + "android" 4794 + ], 4795 + "engines": { 4796 + "node": ">=18" 4797 + } 4798 + }, 4799 + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { 4800 + "version": "0.27.7", 4801 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", 4802 + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", 4803 + "cpu": [ 4804 + "arm64" 4805 + ], 4806 + "dev": true, 4807 + "license": "MIT", 4808 + "optional": true, 4809 + "os": [ 4810 + "darwin" 4811 + ], 4812 + "engines": { 4813 + "node": ">=18" 4814 + } 4815 + }, 4816 + "node_modules/vite/node_modules/@esbuild/darwin-x64": { 4817 + "version": "0.27.7", 4818 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", 4819 + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", 4820 + "cpu": [ 4821 + "x64" 4822 + ], 4823 + "dev": true, 4824 + "license": "MIT", 4825 + "optional": true, 4826 + "os": [ 4827 + "darwin" 4828 + ], 4829 + "engines": { 4830 + "node": ">=18" 4831 + } 4832 + }, 4833 + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { 4834 + "version": "0.27.7", 4835 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", 4836 + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", 4837 + "cpu": [ 4838 + "arm64" 4839 + ], 4840 + "dev": true, 4841 + "license": "MIT", 4842 + "optional": true, 4843 + "os": [ 4844 + "freebsd" 4845 + ], 4846 + "engines": { 4847 + "node": ">=18" 4848 + } 4849 + }, 4850 + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { 4851 + "version": "0.27.7", 4852 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", 4853 + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", 4854 + "cpu": [ 4855 + "x64" 4856 + ], 4857 + "dev": true, 4858 + "license": "MIT", 4859 + "optional": true, 4860 + "os": [ 4861 + "freebsd" 4862 + ], 4863 + "engines": { 4864 + "node": ">=18" 4865 + } 4866 + }, 4867 + "node_modules/vite/node_modules/@esbuild/linux-arm": { 4868 + "version": "0.27.7", 4869 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", 4870 + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", 4871 + "cpu": [ 4872 + "arm" 4873 + ], 4874 + "dev": true, 4875 + "license": "MIT", 4876 + "optional": true, 4877 + "os": [ 4878 + "linux" 4879 + ], 4880 + "engines": { 4881 + "node": ">=18" 4882 + } 4883 + }, 4884 + "node_modules/vite/node_modules/@esbuild/linux-arm64": { 4885 + "version": "0.27.7", 4886 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", 4887 + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", 4888 + "cpu": [ 4889 + "arm64" 4890 + ], 4891 + "dev": true, 4892 + "license": "MIT", 4893 + "optional": true, 4894 + "os": [ 4895 + "linux" 4896 + ], 4897 + "engines": { 4898 + "node": ">=18" 4899 + } 4900 + }, 4901 + "node_modules/vite/node_modules/@esbuild/linux-ia32": { 4902 + "version": "0.27.7", 4903 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", 4904 + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", 4905 + "cpu": [ 4906 + "ia32" 4907 + ], 4908 + "dev": true, 4909 + "license": "MIT", 4910 + "optional": true, 4911 + "os": [ 4912 + "linux" 4913 + ], 4914 + "engines": { 4915 + "node": ">=18" 4916 + } 4917 + }, 4918 + "node_modules/vite/node_modules/@esbuild/linux-loong64": { 4919 + "version": "0.27.7", 4920 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", 4921 + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", 4922 + "cpu": [ 4923 + "loong64" 4924 + ], 4925 + "dev": true, 4926 + "license": "MIT", 4927 + "optional": true, 4928 + "os": [ 4929 + "linux" 4930 + ], 4931 + "engines": { 4932 + "node": ">=18" 4933 + } 4934 + }, 4935 + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { 4936 + "version": "0.27.7", 4937 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", 4938 + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", 4939 + "cpu": [ 4940 + "mips64el" 4941 + ], 4942 + "dev": true, 4943 + "license": "MIT", 4944 + "optional": true, 4945 + "os": [ 4946 + "linux" 4947 + ], 4948 + "engines": { 4949 + "node": ">=18" 4950 + } 4951 + }, 4952 + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { 4953 + "version": "0.27.7", 4954 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", 4955 + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", 4956 + "cpu": [ 4957 + "ppc64" 4958 + ], 4959 + "dev": true, 4960 + "license": "MIT", 4961 + "optional": true, 4962 + "os": [ 4963 + "linux" 4964 + ], 4965 + "engines": { 4966 + "node": ">=18" 4967 + } 4968 + }, 4969 + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { 4970 + "version": "0.27.7", 4971 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", 4972 + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", 4973 + "cpu": [ 4974 + "riscv64" 4975 + ], 4976 + "dev": true, 4977 + "license": "MIT", 4978 + "optional": true, 4979 + "os": [ 4980 + "linux" 4981 + ], 4982 + "engines": { 4983 + "node": ">=18" 4984 + } 4985 + }, 4986 + "node_modules/vite/node_modules/@esbuild/linux-s390x": { 4987 + "version": "0.27.7", 4988 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", 4989 + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", 4990 + "cpu": [ 4991 + "s390x" 4992 + ], 4993 + "dev": true, 4994 + "license": "MIT", 4995 + "optional": true, 4996 + "os": [ 4997 + "linux" 4998 + ], 4999 + "engines": { 5000 + "node": ">=18" 5001 + } 5002 + }, 5003 + "node_modules/vite/node_modules/@esbuild/linux-x64": { 5004 + "version": "0.27.7", 5005 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", 5006 + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", 5007 + "cpu": [ 5008 + "x64" 5009 + ], 5010 + "dev": true, 5011 + "license": "MIT", 5012 + "optional": true, 5013 + "os": [ 5014 + "linux" 5015 + ], 5016 + "engines": { 5017 + "node": ">=18" 5018 + } 5019 + }, 5020 + "node_modules/vite/node_modules/@esbuild/netbsd-arm64": { 5021 + "version": "0.27.7", 5022 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", 5023 + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", 5024 + "cpu": [ 5025 + "arm64" 5026 + ], 5027 + "dev": true, 5028 + "license": "MIT", 5029 + "optional": true, 5030 + "os": [ 5031 + "netbsd" 5032 + ], 5033 + "engines": { 5034 + "node": ">=18" 5035 + } 5036 + }, 5037 + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { 5038 + "version": "0.27.7", 5039 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", 5040 + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", 5041 + "cpu": [ 5042 + "x64" 5043 + ], 5044 + "dev": true, 5045 + "license": "MIT", 5046 + "optional": true, 5047 + "os": [ 5048 + "netbsd" 5049 + ], 5050 + "engines": { 5051 + "node": ">=18" 5052 + } 5053 + }, 5054 + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { 5055 + "version": "0.27.7", 5056 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", 5057 + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", 5058 + "cpu": [ 5059 + "arm64" 5060 + ], 5061 + "dev": true, 5062 + "license": "MIT", 5063 + "optional": true, 5064 + "os": [ 5065 + "openbsd" 5066 + ], 5067 + "engines": { 5068 + "node": ">=18" 5069 + } 5070 + }, 5071 + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { 5072 + "version": "0.27.7", 5073 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", 5074 + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", 5075 + "cpu": [ 5076 + "x64" 5077 + ], 5078 + "dev": true, 5079 + "license": "MIT", 5080 + "optional": true, 5081 + "os": [ 5082 + "openbsd" 5083 + ], 5084 + "engines": { 5085 + "node": ">=18" 5086 + } 5087 + }, 5088 + "node_modules/vite/node_modules/@esbuild/openharmony-arm64": { 5089 + "version": "0.27.7", 5090 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", 5091 + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", 5092 + "cpu": [ 5093 + "arm64" 5094 + ], 5095 + "dev": true, 5096 + "license": "MIT", 5097 + "optional": true, 5098 + "os": [ 5099 + "openharmony" 5100 + ], 5101 + "engines": { 5102 + "node": ">=18" 5103 + } 5104 + }, 5105 + "node_modules/vite/node_modules/@esbuild/sunos-x64": { 5106 + "version": "0.27.7", 5107 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", 5108 + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", 5109 + "cpu": [ 5110 + "x64" 5111 + ], 5112 + "dev": true, 5113 + "license": "MIT", 5114 + "optional": true, 5115 + "os": [ 5116 + "sunos" 5117 + ], 5118 + "engines": { 5119 + "node": ">=18" 5120 + } 5121 + }, 5122 + "node_modules/vite/node_modules/@esbuild/win32-arm64": { 5123 + "version": "0.27.7", 5124 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", 5125 + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", 5126 + "cpu": [ 5127 + "arm64" 5128 + ], 5129 + "dev": true, 5130 + "license": "MIT", 5131 + "optional": true, 5132 + "os": [ 5133 + "win32" 5134 + ], 5135 + "engines": { 5136 + "node": ">=18" 5137 + } 5138 + }, 5139 + "node_modules/vite/node_modules/@esbuild/win32-ia32": { 5140 + "version": "0.27.7", 5141 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", 5142 + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", 5143 + "cpu": [ 5144 + "ia32" 5145 + ], 5146 + "dev": true, 5147 + "license": "MIT", 5148 + "optional": true, 5149 + "os": [ 5150 + "win32" 5151 + ], 5152 + "engines": { 5153 + "node": ">=18" 5154 + } 5155 + }, 5156 + "node_modules/vite/node_modules/@esbuild/win32-x64": { 5157 + "version": "0.27.7", 5158 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", 5159 + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", 5160 + "cpu": [ 5161 + "x64" 5162 + ], 5163 + "dev": true, 5164 + "license": "MIT", 5165 + "optional": true, 5166 + "os": [ 5167 + "win32" 5168 + ], 5169 + "engines": { 5170 + "node": ">=18" 5171 + } 5172 + }, 5173 + "node_modules/vite/node_modules/esbuild": { 5174 + "version": "0.27.7", 5175 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", 5176 + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", 5177 + "dev": true, 5178 + "hasInstallScript": true, 5179 + "license": "MIT", 5180 + "optional": true, 5181 + "bin": { 5182 + "esbuild": "bin/esbuild" 5183 + }, 5184 + "engines": { 5185 + "node": ">=18" 5186 + }, 5187 + "optionalDependencies": { 5188 + "@esbuild/aix-ppc64": "0.27.7", 5189 + "@esbuild/android-arm": "0.27.7", 5190 + "@esbuild/android-arm64": "0.27.7", 5191 + "@esbuild/android-x64": "0.27.7", 5192 + "@esbuild/darwin-arm64": "0.27.7", 5193 + "@esbuild/darwin-x64": "0.27.7", 5194 + "@esbuild/freebsd-arm64": "0.27.7", 5195 + "@esbuild/freebsd-x64": "0.27.7", 5196 + "@esbuild/linux-arm": "0.27.7", 5197 + "@esbuild/linux-arm64": "0.27.7", 5198 + "@esbuild/linux-ia32": "0.27.7", 5199 + "@esbuild/linux-loong64": "0.27.7", 5200 + "@esbuild/linux-mips64el": "0.27.7", 5201 + "@esbuild/linux-ppc64": "0.27.7", 5202 + "@esbuild/linux-riscv64": "0.27.7", 5203 + "@esbuild/linux-s390x": "0.27.7", 5204 + "@esbuild/linux-x64": "0.27.7", 5205 + "@esbuild/netbsd-arm64": "0.27.7", 5206 + "@esbuild/netbsd-x64": "0.27.7", 5207 + "@esbuild/openbsd-arm64": "0.27.7", 5208 + "@esbuild/openbsd-x64": "0.27.7", 5209 + "@esbuild/openharmony-arm64": "0.27.7", 5210 + "@esbuild/sunos-x64": "0.27.7", 5211 + "@esbuild/win32-arm64": "0.27.7", 5212 + "@esbuild/win32-ia32": "0.27.7", 5213 + "@esbuild/win32-x64": "0.27.7" 5214 + } 5215 + }, 5216 + "node_modules/vitest": { 5217 + "version": "4.1.2", 5218 + "dev": true, 5219 + "license": "MIT", 5220 + "dependencies": { 5221 + "@vitest/expect": "4.1.2", 5222 + "@vitest/mocker": "4.1.2", 5223 + "@vitest/pretty-format": "4.1.2", 5224 + "@vitest/runner": "4.1.2", 5225 + "@vitest/snapshot": "4.1.2", 5226 + "@vitest/spy": "4.1.2", 5227 + "@vitest/utils": "4.1.2", 5228 + "es-module-lexer": "^2.0.0", 5229 + "expect-type": "^1.3.0", 5230 + "magic-string": "^0.30.21", 5231 + "obug": "^2.1.1", 5232 + "pathe": "^2.0.3", 5233 + "picomatch": "^4.0.3", 5234 + "std-env": "^4.0.0-rc.1", 5235 + "tinybench": "^2.9.0", 5236 + "tinyexec": "^1.0.2", 5237 + "tinyglobby": "^0.2.15", 5238 + "tinyrainbow": "^3.1.0", 5239 + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", 5240 + "why-is-node-running": "^2.3.0" 5241 + }, 5242 + "bin": { 5243 + "vitest": "vitest.mjs" 5244 + }, 5245 + "engines": { 5246 + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" 5247 + }, 5248 + "funding": { 5249 + "url": "https://opencollective.com/vitest" 5250 + }, 5251 + "peerDependencies": { 5252 + "@edge-runtime/vm": "*", 5253 + "@opentelemetry/api": "^1.9.0", 5254 + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", 5255 + "@vitest/browser-playwright": "4.1.2", 5256 + "@vitest/browser-preview": "4.1.2", 5257 + "@vitest/browser-webdriverio": "4.1.2", 5258 + "@vitest/ui": "4.1.2", 5259 + "happy-dom": "*", 5260 + "jsdom": "*", 5261 + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" 5262 + }, 5263 + "peerDependenciesMeta": { 5264 + "@edge-runtime/vm": { 5265 + "optional": true 5266 + }, 5267 + "@opentelemetry/api": { 5268 + "optional": true 5269 + }, 5270 + "@types/node": { 5271 + "optional": true 5272 + }, 5273 + "@vitest/browser-playwright": { 5274 + "optional": true 5275 + }, 5276 + "@vitest/browser-preview": { 5277 + "optional": true 5278 + }, 5279 + "@vitest/browser-webdriverio": { 5280 + "optional": true 5281 + }, 5282 + "@vitest/ui": { 5283 + "optional": true 5284 + }, 5285 + "happy-dom": { 5286 + "optional": true 5287 + }, 5288 + "jsdom": { 5289 + "optional": true 5290 + }, 5291 + "vite": { 5292 + "optional": false 5293 + } 5294 + } 5295 + }, 5296 + "node_modules/vitest/node_modules/@esbuild/aix-ppc64": { 5297 + "version": "0.27.7", 5298 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", 5299 + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", 5300 + "cpu": [ 5301 + "ppc64" 5302 + ], 5303 + "dev": true, 5304 + "license": "MIT", 5305 + "optional": true, 5306 + "os": [ 5307 + "aix" 5308 + ], 5309 + "engines": { 5310 + "node": ">=18" 5311 + } 5312 + }, 5313 + "node_modules/vitest/node_modules/@esbuild/android-arm": { 5314 + "version": "0.27.7", 5315 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", 5316 + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", 5317 + "cpu": [ 5318 + "arm" 5319 + ], 5320 + "dev": true, 5321 + "license": "MIT", 5322 + "optional": true, 5323 + "os": [ 5324 + "android" 5325 + ], 5326 + "engines": { 5327 + "node": ">=18" 5328 + } 5329 + }, 5330 + "node_modules/vitest/node_modules/@esbuild/android-arm64": { 5331 + "version": "0.27.7", 5332 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", 5333 + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", 5334 + "cpu": [ 5335 + "arm64" 5336 + ], 5337 + "dev": true, 5338 + "license": "MIT", 5339 + "optional": true, 5340 + "os": [ 5341 + "android" 5342 + ], 5343 + "engines": { 5344 + "node": ">=18" 5345 + } 5346 + }, 5347 + "node_modules/vitest/node_modules/@esbuild/android-x64": { 5348 + "version": "0.27.7", 5349 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", 5350 + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", 5351 + "cpu": [ 5352 + "x64" 5353 + ], 5354 + "dev": true, 5355 + "license": "MIT", 5356 + "optional": true, 5357 + "os": [ 5358 + "android" 5359 + ], 5360 + "engines": { 5361 + "node": ">=18" 5362 + } 5363 + }, 5364 + "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { 5365 + "version": "0.27.7", 5366 + "cpu": [ 5367 + "arm64" 5368 + ], 5369 + "dev": true, 5370 + "license": "MIT", 5371 + "optional": true, 5372 + "os": [ 5373 + "darwin" 5374 + ], 5375 + "engines": { 5376 + "node": ">=18" 5377 + } 5378 + }, 5379 + "node_modules/vitest/node_modules/@esbuild/darwin-x64": { 5380 + "version": "0.27.7", 5381 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", 5382 + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", 5383 + "cpu": [ 5384 + "x64" 5385 + ], 5386 + "dev": true, 5387 + "license": "MIT", 5388 + "optional": true, 5389 + "os": [ 5390 + "darwin" 5391 + ], 5392 + "engines": { 5393 + "node": ">=18" 5394 + } 5395 + }, 5396 + "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { 5397 + "version": "0.27.7", 5398 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", 5399 + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", 5400 + "cpu": [ 5401 + "arm64" 5402 + ], 5403 + "dev": true, 5404 + "license": "MIT", 5405 + "optional": true, 5406 + "os": [ 5407 + "freebsd" 5408 + ], 5409 + "engines": { 5410 + "node": ">=18" 5411 + } 5412 + }, 5413 + "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { 5414 + "version": "0.27.7", 5415 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", 5416 + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", 5417 + "cpu": [ 5418 + "x64" 5419 + ], 5420 + "dev": true, 5421 + "license": "MIT", 5422 + "optional": true, 5423 + "os": [ 5424 + "freebsd" 5425 + ], 5426 + "engines": { 5427 + "node": ">=18" 5428 + } 5429 + }, 5430 + "node_modules/vitest/node_modules/@esbuild/linux-arm": { 5431 + "version": "0.27.7", 5432 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", 5433 + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", 5434 + "cpu": [ 5435 + "arm" 5436 + ], 5437 + "dev": true, 5438 + "license": "MIT", 5439 + "optional": true, 5440 + "os": [ 5441 + "linux" 5442 + ], 5443 + "engines": { 5444 + "node": ">=18" 5445 + } 5446 + }, 5447 + "node_modules/vitest/node_modules/@esbuild/linux-arm64": { 5448 + "version": "0.27.7", 5449 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", 5450 + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", 5451 + "cpu": [ 5452 + "arm64" 5453 + ], 5454 + "dev": true, 5455 + "license": "MIT", 5456 + "optional": true, 5457 + "os": [ 5458 + "linux" 5459 + ], 5460 + "engines": { 5461 + "node": ">=18" 5462 + } 5463 + }, 5464 + "node_modules/vitest/node_modules/@esbuild/linux-ia32": { 5465 + "version": "0.27.7", 5466 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", 5467 + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", 5468 + "cpu": [ 5469 + "ia32" 5470 + ], 5471 + "dev": true, 5472 + "license": "MIT", 5473 + "optional": true, 5474 + "os": [ 5475 + "linux" 5476 + ], 5477 + "engines": { 5478 + "node": ">=18" 5479 + } 5480 + }, 5481 + "node_modules/vitest/node_modules/@esbuild/linux-loong64": { 5482 + "version": "0.27.7", 5483 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", 5484 + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", 5485 + "cpu": [ 5486 + "loong64" 5487 + ], 5488 + "dev": true, 5489 + "license": "MIT", 5490 + "optional": true, 5491 + "os": [ 5492 + "linux" 5493 + ], 5494 + "engines": { 5495 + "node": ">=18" 5496 + } 5497 + }, 5498 + "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { 5499 + "version": "0.27.7", 5500 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", 5501 + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", 5502 + "cpu": [ 5503 + "mips64el" 5504 + ], 5505 + "dev": true, 5506 + "license": "MIT", 5507 + "optional": true, 5508 + "os": [ 5509 + "linux" 5510 + ], 5511 + "engines": { 5512 + "node": ">=18" 5513 + } 5514 + }, 5515 + "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { 5516 + "version": "0.27.7", 5517 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", 5518 + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", 5519 + "cpu": [ 5520 + "ppc64" 5521 + ], 5522 + "dev": true, 5523 + "license": "MIT", 5524 + "optional": true, 5525 + "os": [ 5526 + "linux" 5527 + ], 5528 + "engines": { 5529 + "node": ">=18" 5530 + } 5531 + }, 5532 + "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { 5533 + "version": "0.27.7", 5534 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", 5535 + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", 5536 + "cpu": [ 5537 + "riscv64" 5538 + ], 5539 + "dev": true, 5540 + "license": "MIT", 5541 + "optional": true, 5542 + "os": [ 5543 + "linux" 5544 + ], 5545 + "engines": { 5546 + "node": ">=18" 5547 + } 5548 + }, 5549 + "node_modules/vitest/node_modules/@esbuild/linux-s390x": { 5550 + "version": "0.27.7", 5551 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", 5552 + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", 5553 + "cpu": [ 5554 + "s390x" 5555 + ], 5556 + "dev": true, 5557 + "license": "MIT", 5558 + "optional": true, 5559 + "os": [ 5560 + "linux" 5561 + ], 5562 + "engines": { 5563 + "node": ">=18" 5564 + } 5565 + }, 5566 + "node_modules/vitest/node_modules/@esbuild/linux-x64": { 5567 + "version": "0.27.7", 5568 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", 5569 + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", 5570 + "cpu": [ 5571 + "x64" 5572 + ], 5573 + "dev": true, 5574 + "license": "MIT", 5575 + "optional": true, 5576 + "os": [ 5577 + "linux" 5578 + ], 5579 + "engines": { 5580 + "node": ">=18" 5581 + } 5582 + }, 5583 + "node_modules/vitest/node_modules/@esbuild/netbsd-arm64": { 5584 + "version": "0.27.7", 5585 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", 5586 + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", 5587 + "cpu": [ 5588 + "arm64" 5589 + ], 5590 + "dev": true, 5591 + "license": "MIT", 5592 + "optional": true, 5593 + "os": [ 5594 + "netbsd" 5595 + ], 5596 + "engines": { 5597 + "node": ">=18" 5598 + } 5599 + }, 5600 + "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { 5601 + "version": "0.27.7", 5602 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", 5603 + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", 5604 + "cpu": [ 5605 + "x64" 5606 + ], 5607 + "dev": true, 5608 + "license": "MIT", 5609 + "optional": true, 5610 + "os": [ 5611 + "netbsd" 5612 + ], 5613 + "engines": { 5614 + "node": ">=18" 5615 + } 5616 + }, 5617 + "node_modules/vitest/node_modules/@esbuild/openbsd-arm64": { 5618 + "version": "0.27.7", 5619 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", 5620 + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", 5621 + "cpu": [ 5622 + "arm64" 5623 + ], 5624 + "dev": true, 5625 + "license": "MIT", 5626 + "optional": true, 5627 + "os": [ 5628 + "openbsd" 5629 + ], 5630 + "engines": { 5631 + "node": ">=18" 5632 + } 5633 + }, 5634 + "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { 5635 + "version": "0.27.7", 5636 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", 5637 + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", 5638 + "cpu": [ 5639 + "x64" 5640 + ], 5641 + "dev": true, 5642 + "license": "MIT", 5643 + "optional": true, 5644 + "os": [ 5645 + "openbsd" 5646 + ], 5647 + "engines": { 5648 + "node": ">=18" 5649 + } 5650 + }, 5651 + "node_modules/vitest/node_modules/@esbuild/openharmony-arm64": { 5652 + "version": "0.27.7", 5653 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", 5654 + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", 5655 + "cpu": [ 5656 + "arm64" 5657 + ], 5658 + "dev": true, 5659 + "license": "MIT", 5660 + "optional": true, 5661 + "os": [ 5662 + "openharmony" 5663 + ], 5664 + "engines": { 5665 + "node": ">=18" 5666 + } 5667 + }, 5668 + "node_modules/vitest/node_modules/@esbuild/sunos-x64": { 5669 + "version": "0.27.7", 5670 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", 5671 + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", 5672 + "cpu": [ 5673 + "x64" 5674 + ], 5675 + "dev": true, 5676 + "license": "MIT", 5677 + "optional": true, 5678 + "os": [ 5679 + "sunos" 5680 + ], 5681 + "engines": { 5682 + "node": ">=18" 5683 + } 5684 + }, 5685 + "node_modules/vitest/node_modules/@esbuild/win32-arm64": { 5686 + "version": "0.27.7", 5687 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", 5688 + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", 5689 + "cpu": [ 5690 + "arm64" 5691 + ], 5692 + "dev": true, 5693 + "license": "MIT", 5694 + "optional": true, 5695 + "os": [ 5696 + "win32" 5697 + ], 5698 + "engines": { 5699 + "node": ">=18" 5700 + } 5701 + }, 5702 + "node_modules/vitest/node_modules/@esbuild/win32-ia32": { 5703 + "version": "0.27.7", 5704 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", 5705 + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", 5706 + "cpu": [ 5707 + "ia32" 5708 + ], 5709 + "dev": true, 5710 + "license": "MIT", 5711 + "optional": true, 5712 + "os": [ 5713 + "win32" 5714 + ], 5715 + "engines": { 5716 + "node": ">=18" 5717 + } 5718 + }, 5719 + "node_modules/vitest/node_modules/@esbuild/win32-x64": { 5720 + "version": "0.27.7", 5721 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", 5722 + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", 5723 + "cpu": [ 5724 + "x64" 5725 + ], 5726 + "dev": true, 5727 + "license": "MIT", 5728 + "optional": true, 5729 + "os": [ 5730 + "win32" 5731 + ], 5732 + "engines": { 5733 + "node": ">=18" 5734 + } 5735 + }, 5736 + "node_modules/vitest/node_modules/@vitest/mocker": { 5737 + "version": "4.1.2", 5738 + "dev": true, 5739 + "license": "MIT", 5740 + "dependencies": { 5741 + "@vitest/spy": "4.1.2", 5742 + "estree-walker": "^3.0.3", 5743 + "magic-string": "^0.30.21" 5744 + }, 5745 + "funding": { 5746 + "url": "https://opencollective.com/vitest" 5747 + }, 5748 + "peerDependencies": { 5749 + "msw": "^2.4.9", 5750 + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" 5751 + }, 5752 + "peerDependenciesMeta": { 5753 + "msw": { 5754 + "optional": true 5755 + }, 5756 + "vite": { 5757 + "optional": true 5758 + } 5759 + } 5760 + }, 5761 + "node_modules/vitest/node_modules/estree-walker": { 5762 + "version": "3.0.3", 5763 + "dev": true, 5764 + "license": "MIT", 5765 + "dependencies": { 5766 + "@types/estree": "^1.0.0" 5767 + } 5768 + }, 5769 + "node_modules/vitest/node_modules/vite": { 5770 + "version": "8.0.3", 5771 + "dev": true, 5772 + "license": "MIT", 5773 + "peer": true, 5774 + "dependencies": { 5775 + "lightningcss": "^1.32.0", 5776 + "picomatch": "^4.0.4", 5777 + "postcss": "^8.5.8", 5778 + "rolldown": "1.0.0-rc.12", 5779 + "tinyglobby": "^0.2.15" 5780 + }, 5781 + "bin": { 5782 + "vite": "bin/vite.js" 5783 + }, 5784 + "engines": { 5785 + "node": "^20.19.0 || >=22.12.0" 5786 + }, 5787 + "funding": { 5788 + "url": "https://github.com/vitejs/vite?sponsor=1" 5789 + }, 5790 + "optionalDependencies": { 5791 + "fsevents": "~2.3.3" 5792 + }, 5793 + "peerDependencies": { 5794 + "@types/node": "^20.19.0 || >=22.12.0", 5795 + "@vitejs/devtools": "^0.1.0", 5796 + "esbuild": "^0.27.0", 5797 + "jiti": ">=1.21.0", 5798 + "less": "^4.0.0", 5799 + "sass": "^1.70.0", 5800 + "sass-embedded": "^1.70.0", 5801 + "stylus": ">=0.54.8", 5802 + "sugarss": "^5.0.0", 5803 + "terser": "^5.16.0", 5804 + "tsx": "^4.8.1", 5805 + "yaml": "^2.4.2" 5806 + }, 5807 + "peerDependenciesMeta": { 5808 + "@types/node": { 5809 + "optional": true 5810 + }, 5811 + "@vitejs/devtools": { 5812 + "optional": true 5813 + }, 5814 + "esbuild": { 5815 + "optional": true 5816 + }, 5817 + "jiti": { 5818 + "optional": true 5819 + }, 5820 + "less": { 5821 + "optional": true 5822 + }, 5823 + "sass": { 5824 + "optional": true 5825 + }, 5826 + "sass-embedded": { 5827 + "optional": true 5828 + }, 5829 + "stylus": { 5830 + "optional": true 5831 + }, 5832 + "sugarss": { 5833 + "optional": true 5834 + }, 5835 + "terser": { 5836 + "optional": true 5837 + }, 5838 + "tsx": { 5839 + "optional": true 5840 + }, 5841 + "yaml": { 5842 + "optional": true 5843 + } 5844 + } 5845 + }, 5846 + "node_modules/why-is-node-running": { 5847 + "version": "2.3.0", 5848 + "dev": true, 5849 + "license": "MIT", 5850 + "dependencies": { 5851 + "siginfo": "^2.0.0", 5852 + "stackback": "0.0.2" 5853 + }, 5854 + "bin": { 5855 + "why-is-node-running": "cli.js" 5856 + }, 5857 + "engines": { 5858 + "node": ">=8" 5859 + } 5860 + }, 3587 5861 "node_modules/wrappy": { 3588 5862 "version": "1.0.2", 3589 5863 "license": "ISC" 3590 5864 }, 3591 5865 "node_modules/ws": { 3592 5866 "version": "8.19.0", 3593 - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", 3594 - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", 3595 5867 "license": "MIT", 3596 5868 "engines": { 3597 5869 "node": ">=10.0.0" ··· 3623 5895 "url": "https://github.com/sponsors/sindresorhus" 3624 5896 } 3625 5897 }, 5898 + "node_modules/yallist": { 5899 + "version": "5.0.0", 5900 + "license": "BlueOak-1.0.0", 5901 + "engines": { 5902 + "node": ">=18" 5903 + } 5904 + }, 3626 5905 "node_modules/yaml": { 3627 5906 "version": "2.8.2", 3628 5907 "dev": true, 3629 5908 "license": "ISC", 5909 + "peer": true, 3630 5910 "bin": { 3631 5911 "yaml": "bin.mjs" 3632 5912 }, ··· 3635 5915 }, 3636 5916 "funding": { 3637 5917 "url": "https://github.com/sponsors/eemeli" 5918 + } 5919 + }, 5920 + "node_modules/yoctocolors": { 5921 + "version": "2.1.2", 5922 + "license": "MIT", 5923 + "engines": { 5924 + "node": ">=18" 5925 + }, 5926 + "funding": { 5927 + "url": "https://github.com/sponsors/sindresorhus" 3638 5928 } 3639 5929 }, 3640 5930 "node_modules/zod": {
+5 -2
apps/cli/package.json
··· 24 24 }, 25 25 "scripts": { 26 26 "dev": "tsx ./src/index.ts", 27 - "build": "pkgroll && chmod +x ./dist/index.js" 27 + "build": "pkgroll && chmod +x ./dist/index.js", 28 + "test": "vitest run", 29 + "test:watch": "vitest" 28 30 }, 29 31 "peerDependencies": { 30 32 "typescript": "^5" ··· 35 37 "@types/express": "^5.0.6", 36 38 "@types/ws": "^8.18.1", 37 39 "pkgroll": "^2.27.0", 38 - "tsx": "^4.21.0" 40 + "tsx": "^4.21.0", 41 + "vitest": "^4.1.2" 39 42 }, 40 43 "dependencies": { 41 44 "@inquirer/prompts": "^8.3.0",
+94 -73
apps/cli/src/cmd/copy.ts
··· 1 1 import ora from "ora"; 2 2 import { c } from "../theme"; 3 - import { glob, unlink } from "node:fs/promises"; 4 - import ignore from "ignore"; 5 - import { readFile, lstat, writeFile, mkdir } from "node:fs/promises"; 3 + import { 4 + readdir, 5 + unlink, 6 + lstat, 7 + writeFile, 8 + mkdir, 9 + readFile, 10 + } from "node:fs/promises"; 11 + import { loadIgnoreFiles, makeIsIgnored } from "../lib/ignore"; 6 12 import { join } from "node:path"; 7 13 import * as tar from "tar"; 8 14 import crypto from "node:crypto"; ··· 21 27 process.exit(1); 22 28 } 23 29 24 - if (!source.includes(":/") && destination.includes(":/")) { 25 - await localToSandbox(source, destination); 26 - } 30 + const controller = new AbortController(); 31 + const { signal } = controller; 32 + const tempFiles: string[] = []; 27 33 28 - if (source.includes(":/") && !destination.includes(":/")) { 29 - await sandboxToLocal(source, destination); 30 - } 34 + const onInterrupt = async () => { 35 + controller.abort(); 36 + spinner.stop(); 37 + await Promise.allSettled(tempFiles.map((f) => unlink(f))); 38 + process.exit(130); 39 + }; 31 40 32 - if (source.includes(":/") && destination.includes(":/")) { 33 - await sandboxToSandbox(source, destination); 34 - } 41 + process.once("SIGINT", onInterrupt); 35 42 36 - if (!source.includes(":/") && !destination.includes(":/")) { 37 - consola.error("Both source and destination cannot be local paths."); 38 - process.exit(1); 39 - } 43 + try { 44 + if (!source.includes(":/") && destination.includes(":/")) { 45 + await localToSandbox(source, destination, signal, tempFiles); 46 + } 40 47 41 - spinner.stopAndPersist({ 42 - text: `Copied files from ${c.primary(source)} to ${c.primary(destination)}`, 43 - }); 44 - } 48 + if (source.includes(":/") && !destination.includes(":/")) { 49 + await sandboxToLocal(source, destination, signal, tempFiles); 50 + } 51 + 52 + if (source.includes(":/") && destination.includes(":/")) { 53 + await sandboxToSandbox(source, destination, signal); 54 + } 45 55 46 - async function loadIgnore(...files: string[]) { 47 - const ig = ignore(); 48 - for (const file of files) { 49 - try { 50 - ig.add(await readFile(file, "utf8")); 51 - } catch { 52 - // Ignore if the file doesn't exist 56 + if (!source.includes(":/") && !destination.includes(":/")) { 57 + consola.error("Both source and destination cannot be local paths."); 58 + process.exit(1); 53 59 } 60 + 61 + spinner.stopAndPersist({ 62 + text: `Copied files from ${c.primary(source)} to ${c.primary(destination)}`, 63 + }); 64 + } finally { 65 + process.off("SIGINT", onInterrupt); 54 66 } 55 - return ig; 56 67 } 57 68 58 69 async function compressDirectory(source: string): Promise<string> { ··· 74 85 return output; 75 86 } 76 87 77 - const ig = await loadIgnore( 78 - ".pocketenvignore", 79 - ".gitignore", 80 - ".npmignore", 81 - ".dockerignore", 82 - ); 83 - const allFiles = await Array.fromAsync( 84 - glob("**/*", { cwd: source, exclude: (path) => ig.ignores(path) }), 85 - ); 88 + const isIgnored = makeIsIgnored(await loadIgnoreFiles(source)); 89 + // readdir with recursive:true includes hidden files/dirs (.git, .env, …) 90 + // which glob("**/*") silently skips. 86 91 const files = ( 87 92 await Promise.all( 88 - allFiles.map(async (file) => { 89 - const stat = await lstat(join(source, file)); 90 - return stat.isSymbolicLink() ? null : file; 93 + (await readdir(source, { recursive: true })).map(async (entry) => { 94 + if (isIgnored(entry)) return null; 95 + const stat = await lstat(join(source, entry)); 96 + if (stat.isDirectory() || stat.isSymbolicLink()) return null; 97 + return entry; 91 98 }), 92 99 ) 93 100 ).filter((f): f is string => f !== null); ··· 129 136 } 130 137 } 131 138 132 - async function uploadToStorage(filePath: string): Promise<string> { 139 + async function uploadToStorage( 140 + filePath: string, 141 + signal: AbortSignal, 142 + ): Promise<string> { 133 143 try { 134 144 const token = await getAccessToken(); 135 145 ··· 144 154 const BASE_URL = "https://sandbox.pocketenv.io"; 145 155 const response = await fetch(`${BASE_URL}/cp`, { 146 156 method: "POST", 157 + signal, 147 158 headers: { 148 159 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 149 160 }, ··· 157 168 } 158 169 } 159 170 160 - async function localToSandbox(source: string, destination: string) { 171 + async function localToSandbox( 172 + source: string, 173 + destination: string, 174 + signal: AbortSignal, 175 + tempFiles: string[], 176 + ) { 161 177 const sandboxId = destination.split(":/")[0]!; 162 178 const token = await getAccessToken(); 163 179 164 180 const { data } = await client.get<{ sandbox: Sandbox }>( 165 181 "/xrpc/io.pocketenv.sandbox.getSandbox", 166 182 { 167 - params: { 168 - id: sandboxId, 169 - }, 170 - headers: { 171 - Authorization: `Bearer ${token}`, 172 - }, 183 + params: { id: sandboxId }, 184 + signal, 185 + headers: { Authorization: `Bearer ${token}` }, 173 186 }, 174 187 ); 175 188 ··· 184 197 } 185 198 186 199 const output = await compressDirectory(source); 187 - const uuid = await uploadToStorage(output); 200 + tempFiles.push(output); 201 + 202 + signal.throwIfAborted(); 203 + 204 + const uuid = await uploadToStorage(output, signal); 188 205 await unlink(output); 206 + tempFiles.splice(tempFiles.indexOf(output), 1); 189 207 190 208 await client.post( 191 209 "/xrpc/io.pocketenv.sandbox.pullDirectory", 210 + { uuid, sandboxId, directoryPath: destination.split(":")[1] }, 192 211 { 193 - uuid, 194 - sandboxId, 195 - directoryPath: destination.split(":")[1], 196 - }, 197 - { 212 + signal, 198 213 headers: { 199 214 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 200 215 }, ··· 202 217 ); 203 218 } 204 219 205 - async function sandboxToLocal(source: string, destination: string) { 220 + async function sandboxToLocal( 221 + source: string, 222 + destination: string, 223 + signal: AbortSignal, 224 + tempFiles: string[], 225 + ) { 206 226 const token = await getAccessToken(); 207 227 const sandboxId = source.split(":/")[0]!; 208 228 209 229 const { data } = await client.get<{ sandbox: Sandbox }>( 210 230 "/xrpc/io.pocketenv.sandbox.getSandbox", 211 231 { 212 - params: { 213 - id: sandboxId, 214 - }, 232 + params: { id: sandboxId }, 233 + signal, 215 234 headers: { 216 235 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 217 236 }, ··· 230 249 231 250 const response = await client.post<{ uuid: string }>( 232 251 "/xrpc/io.pocketenv.sandbox.pushDirectory", 252 + { sandboxId, directoryPath: source.split(":")[1] }, 233 253 { 234 - sandboxId, 235 - directoryPath: source.split(":")[1], 236 - }, 237 - { 254 + signal, 238 255 headers: { 239 256 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 240 257 }, ··· 246 263 const downloadResponse = await fetch( 247 264 `https://sandbox.pocketenv.io/cp/${uuid}`, 248 265 { 266 + signal, 249 267 headers: { 250 268 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 251 269 }, ··· 260 278 const arrayBuffer = await downloadResponse.arrayBuffer(); 261 279 const buffer = Buffer.from(arrayBuffer); 262 280 const tempFile = `${crypto.randomBytes(16).toString("hex")}.tar.gz`; 281 + tempFiles.push(tempFile); 263 282 await writeFile(tempFile, buffer); 264 283 await decompressDirectory(tempFile, destination); 265 284 await unlink(tempFile); 285 + tempFiles.splice(tempFiles.indexOf(tempFile), 1); 266 286 } 267 287 268 - async function sandboxToSandbox(source: string, destination: string) { 288 + async function sandboxToSandbox( 289 + source: string, 290 + destination: string, 291 + signal: AbortSignal, 292 + ) { 269 293 const sourceSandboxId = source.split(":/")[0]!; 270 294 const destinationSandboxId = destination.split(":/")[0]!; 271 295 ··· 276 300 client.get<{ sandbox: Sandbox }>( 277 301 "/xrpc/io.pocketenv.sandbox.getSandbox", 278 302 { 279 - params: { 280 - id: sourceSandboxId, 281 - }, 303 + params: { id: sourceSandboxId }, 304 + signal, 282 305 headers: { 283 306 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 284 307 }, ··· 287 310 client.get<{ sandbox: Sandbox }>( 288 311 "/xrpc/io.pocketenv.sandbox.getSandbox", 289 312 { 290 - params: { 291 - id: destinationSandboxId, 292 - }, 313 + params: { id: destinationSandboxId }, 314 + signal, 293 315 headers: { 294 316 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 295 317 }, ··· 325 347 326 348 const { data } = await client.post<{ uuid: string }>( 327 349 "/xrpc/io.pocketenv.sandbox.pushDirectory", 328 - { 329 - sandboxId: sourceSandboxId, 330 - directoryPath: source.split(":")[1], 331 - }, 350 + { sandboxId: sourceSandboxId, directoryPath: source.split(":")[1] }, 332 351 { 352 + signal, 333 353 headers: { 334 354 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 335 355 }, ··· 344 364 directoryPath: destination.split(":")[1], 345 365 }, 346 366 { 367 + signal, 347 368 headers: { 348 369 Authorization: `Bearer ${process.env.POCKETENV_TOKEN || token}`, 349 370 },
+184
apps/cli/src/lib/ignore.test.ts
··· 1 + import { describe, it, expect } from "vitest"; 2 + import ignore from "ignore"; 3 + import { makeIsIgnored, type IgnoreContext } from "./ignore.ts"; 4 + 5 + function ctx(patterns: string, dir: string = ""): IgnoreContext { 6 + const ig = ignore(); 7 + ig.add(patterns); 8 + return { dir, ig }; 9 + } 10 + 11 + describe("makeIsIgnored", () => { 12 + describe("directory pattern with trailing slash (node_modules/)", () => { 13 + const isIgnored = makeIsIgnored([ctx("node_modules/\n")]); 14 + 15 + it("ignores root-level directory", () => { 16 + expect(isIgnored("node_modules")).toBe(true); 17 + }); 18 + 19 + it("ignores nested directory at any depth", () => { 20 + expect(isIgnored("apps/api/node_modules")).toBe(true); 21 + expect(isIgnored("a/b/c/node_modules")).toBe(true); 22 + }); 23 + 24 + it("ignores files inside root-level directory", () => { 25 + expect(isIgnored("node_modules/express/index.js")).toBe(true); 26 + }); 27 + 28 + it("ignores files inside nested directory", () => { 29 + expect(isIgnored("apps/api/node_modules/express/index.js")).toBe(true); 30 + }); 31 + 32 + it("does not ignore unrelated files", () => { 33 + expect(isIgnored("src/index.ts")).toBe(false); 34 + expect(isIgnored("apps/api/src/index.ts")).toBe(false); 35 + }); 36 + }); 37 + 38 + describe("pattern without trailing slash (node_modules)", () => { 39 + const isIgnored = makeIsIgnored([ctx("node_modules\n")]); 40 + 41 + it("ignores root-level directory", () => { 42 + expect(isIgnored("node_modules")).toBe(true); 43 + }); 44 + 45 + it("ignores nested directory at any depth", () => { 46 + expect(isIgnored("apps/api/node_modules")).toBe(true); 47 + }); 48 + 49 + it("ignores files inside nested directory", () => { 50 + expect(isIgnored("apps/api/node_modules/express/index.js")).toBe(true); 51 + }); 52 + }); 53 + 54 + describe("root-anchored pattern (/node_modules)", () => { 55 + const isIgnored = makeIsIgnored([ctx("/node_modules\n")]); 56 + 57 + it("ignores root-level directory", () => { 58 + expect(isIgnored("node_modules")).toBe(true); 59 + }); 60 + 61 + it("ignores files inside root-level directory", () => { 62 + expect(isIgnored("node_modules/express/index.js")).toBe(true); 63 + }); 64 + 65 + // Known trade-off: the suffix approach checks each path suffix independently, 66 + // so `apps/api/node_modules` eventually checks `ig.ignores('node_modules')` 67 + // which matches the anchored pattern `/node_modules` (since there's no parent 68 + // context). Root-anchored patterns are treated as global for this copy tool, 69 + // which is conservative but safe — it's better to exclude too much than to 70 + // accidentally include node_modules in a 1GB tar. 71 + it("also ignores nested directory (conservative — anchoring is not preserved)", () => { 72 + expect(isIgnored("apps/api/node_modules")).toBe(true); 73 + expect(isIgnored("apps/api/node_modules/express/index.js")).toBe(true); 74 + }); 75 + }); 76 + 77 + describe("glob pattern (*.log)", () => { 78 + const isIgnored = makeIsIgnored([ctx("*.log\n")]); 79 + 80 + it("ignores matching file at root", () => { 81 + expect(isIgnored("error.log")).toBe(true); 82 + }); 83 + 84 + it("ignores matching file in nested directory", () => { 85 + expect(isIgnored("apps/api/logs/error.log")).toBe(true); 86 + }); 87 + 88 + it("does not ignore non-matching files", () => { 89 + expect(isIgnored("src/index.ts")).toBe(false); 90 + }); 91 + }); 92 + 93 + describe("real-world root .gitignore (node_modules/, .DS_Store, result)", () => { 94 + const isIgnored = makeIsIgnored([ctx("node_modules/\n.DS_Store\nresult\n")]); 95 + 96 + it("ignores node_modules at root", () => { 97 + expect(isIgnored("node_modules")).toBe(true); 98 + }); 99 + 100 + it("ignores node_modules in monorepo packages", () => { 101 + expect(isIgnored("apps/api/node_modules")).toBe(true); 102 + expect(isIgnored("apps/web/node_modules")).toBe(true); 103 + }); 104 + 105 + it("ignores files deep inside nested node_modules", () => { 106 + expect( 107 + isIgnored("apps/api/node_modules/express/lib/router/index.js"), 108 + ).toBe(true); 109 + }); 110 + 111 + it("ignores .DS_Store at any depth", () => { 112 + expect(isIgnored(".DS_Store")).toBe(true); 113 + expect(isIgnored("apps/api/.DS_Store")).toBe(true); 114 + }); 115 + 116 + it("does not ignore regular source files", () => { 117 + expect(isIgnored("apps/api/src/index.ts")).toBe(false); 118 + expect(isIgnored("apps/web/src/app/page.tsx")).toBe(false); 119 + }); 120 + }); 121 + 122 + describe("nested ignore files (multi-directory contexts)", () => { 123 + // Simulates: root .gitignore has node_modules/, apps/api/.gitignore has dist/ 124 + const isIgnored = makeIsIgnored([ 125 + ctx("node_modules/\n", ""), 126 + ctx("dist/\n", "apps/api"), 127 + ]); 128 + 129 + it("root pattern applies at any depth", () => { 130 + expect(isIgnored("node_modules")).toBe(true); 131 + expect(isIgnored("apps/api/node_modules")).toBe(true); 132 + expect(isIgnored("apps/web/node_modules")).toBe(true); 133 + }); 134 + 135 + it("nested pattern applies within its directory", () => { 136 + expect(isIgnored("apps/api/dist")).toBe(true); 137 + expect(isIgnored("apps/api/dist/index.js")).toBe(true); 138 + }); 139 + 140 + it("nested pattern does not apply outside its directory", () => { 141 + expect(isIgnored("dist")).toBe(false); 142 + expect(isIgnored("apps/web/dist")).toBe(false); 143 + expect(isIgnored("apps/web/dist/index.js")).toBe(false); 144 + }); 145 + 146 + it("does not ignore regular source files", () => { 147 + expect(isIgnored("apps/api/src/index.ts")).toBe(false); 148 + expect(isIgnored("apps/web/src/index.ts")).toBe(false); 149 + }); 150 + }); 151 + 152 + describe("multiple nested ignore files", () => { 153 + // Simulates a monorepo where each package has its own .gitignore 154 + const isIgnored = makeIsIgnored([ 155 + ctx("node_modules/\n.DS_Store\n", ""), 156 + ctx("dist/\nbuild/\n", "apps/api"), 157 + ctx("dist/\n.next/\n", "apps/web"), 158 + ]); 159 + 160 + it("apps/api dist is ignored", () => { 161 + expect(isIgnored("apps/api/dist/bundle.js")).toBe(true); 162 + expect(isIgnored("apps/api/build/output.js")).toBe(true); 163 + }); 164 + 165 + it("apps/web dist and .next are ignored", () => { 166 + expect(isIgnored("apps/web/dist/bundle.js")).toBe(true); 167 + expect(isIgnored("apps/web/.next/cache")).toBe(true); 168 + }); 169 + 170 + it("apps/api build pattern does not leak into apps/web", () => { 171 + expect(isIgnored("apps/web/build/output.js")).toBe(false); 172 + }); 173 + 174 + it("apps/web .next pattern does not leak into apps/api", () => { 175 + expect(isIgnored("apps/api/.next/cache")).toBe(false); 176 + }); 177 + 178 + it("root node_modules pattern still applies everywhere", () => { 179 + expect(isIgnored("node_modules")).toBe(true); 180 + expect(isIgnored("apps/api/node_modules")).toBe(true); 181 + expect(isIgnored("apps/web/node_modules")).toBe(true); 182 + }); 183 + }); 184 + });
+81
apps/cli/src/lib/ignore.ts
··· 1 + import ignore from "ignore"; 2 + import { readFile, readdir } from "node:fs/promises"; 3 + import { join, dirname, basename } from "node:path"; 4 + 5 + const IGNORE_FILE_NAMES = [ 6 + ".pocketenvignore", 7 + ".gitignore", 8 + ".npmignore", 9 + ".dockerignore", 10 + ]; 11 + 12 + export type IgnoreContext = { 13 + /** Path of the ignore file's directory relative to the scan root. Empty string for root. */ 14 + dir: string; 15 + ig: ReturnType<typeof ignore>; 16 + }; 17 + 18 + /** 19 + * Recursively finds all ignore files under `root` and loads them into 20 + * per-directory contexts. Each context's patterns are scoped to its directory, 21 + * matching how git resolves nested .gitignore files. 22 + */ 23 + export async function loadIgnoreFiles(root: string): Promise<IgnoreContext[]> { 24 + const contexts: IgnoreContext[] = []; 25 + 26 + // readdir with recursive:true finds hidden ignore files (e.g. apps/api/.gitignore) 27 + // which Node.js glob("**/.gitignore") silently skips. 28 + const ignoreFileSet = new Set(IGNORE_FILE_NAMES); 29 + const candidates = (await readdir(root, { recursive: true })).filter( 30 + (entry) => ignoreFileSet.has(basename(entry)), 31 + ); 32 + 33 + for (const file of candidates) { 34 + try { 35 + const ig = ignore(); 36 + ig.add(await readFile(join(root, file), "utf8")); 37 + const dir = dirname(file); 38 + contexts.push({ dir: dir === "." ? "" : dir, ig }); 39 + } catch { 40 + // skip unreadable files 41 + } 42 + } 43 + 44 + return contexts; 45 + } 46 + 47 + /** 48 + * Returns an `isIgnored(path)` function that checks a relative path against 49 + * all loaded ignore contexts. 50 + * 51 + * For each context whose directory is an ancestor of the path, the path is 52 + * made relative to that context's directory and then tested with the suffix 53 + * approach (see below). 54 + * 55 + * Why the suffix approach? 56 + * `ig.ignores('node_modules')` returns false for pattern `node_modules/` 57 + * (trailing slash = directory-only) because the ignore package requires the 58 + * tested path to end with `/` to match. Checking each path suffix both with 59 + * and without a trailing slash fixes this and also makes unanchored patterns 60 + * (e.g. `node_modules`) apply at any depth within the context's directory. 61 + */ 62 + export function makeIsIgnored(contexts: IgnoreContext[]) { 63 + return function isIgnored(path: string): boolean { 64 + return contexts.some(({ dir, ig }) => { 65 + const rel = 66 + dir === "" 67 + ? path 68 + : path.startsWith(dir + "/") 69 + ? path.slice(dir.length + 1) 70 + : null; 71 + 72 + if (rel === null) return false; 73 + 74 + const parts = rel.split("/"); 75 + return parts.some((_, i) => { 76 + const sub = parts.slice(i).join("/"); 77 + return ig.ignores(sub) || ig.ignores(sub + "/"); 78 + }); 79 + }); 80 + }; 81 + }
+7
apps/cli/vitest.config.ts
··· 1 + import { defineConfig } from "vitest/config"; 2 + 3 + export default defineConfig({ 4 + test: { 5 + include: ["src/**/*.test.ts"], 6 + }, 7 + });
+1 -1
apps/sandbox/src/index.ts
··· 913 913 914 914 await sandbox.sh`mkdir -p /tmp/${outdir} && cd /tmp/${outdir} && curl https://sandbox.pocketenv.io/cp/${params.uuid} -H "Authorization: ${token}" --output - | tar xzvf -`; 915 915 await sandbox.sh`mkdir -p ${params.directoryPath} || sudo mkdir -p ${params.directoryPath}`; 916 - await sandbox.sh`cp -r /tmp/${outdir}/* ${params.directoryPath} || sudo cp -r /tmp/${outdir}/* ${params.directoryPath}`; 916 + await sandbox.sh`(shopt -s dotglob && cp -r /tmp/${outdir}/* ${params.directoryPath}) || (shopt -s dotglob && sudo cp -r /tmp/${outdir}/* ${params.directoryPath})`; 917 917 918 918 await c.var.db 919 919 .delete(sandboxCp)