From c640688308aacc469ffeb278a5d1a337766f1363 Mon Sep 17 00:00:00 2001 From: Mavdol Date: Mon, 13 Apr 2026 00:07:50 +0200 Subject: [PATCH 1/4] feat: implement command options parsing and manual display system with updated state management interface --- packages/bash-types/src/command.ts | 23 +++++++++++- packages/bash-types/src/index.ts | 2 +- packages/bash-types/src/state.ts | 10 +++++ packages/bash/src/commands/cd/handler.ts | 18 +++++++++ packages/bash/src/core/executor.ts | 27 +++++++++----- packages/bash/src/core/stateManager.ts | 24 +++++------- packages/bash/src/helpers/commandManual.ts | 10 +++++ packages/bash/src/helpers/commandOptions.ts | 41 +++++++++++++++++++++ 8 files changed, 129 insertions(+), 26 deletions(-) create mode 100644 packages/bash/src/commands/cd/handler.ts create mode 100644 packages/bash/src/helpers/commandManual.ts create mode 100644 packages/bash/src/helpers/commandOptions.ts diff --git a/packages/bash-types/src/command.ts b/packages/bash-types/src/command.ts index b50d499..8860055 100644 --- a/packages/bash-types/src/command.ts +++ b/packages/bash-types/src/command.ts @@ -5,7 +5,7 @@ import { State } from "./state"; * The context of a command execution */ export type CommandContext = { - args: string[]; + opts: CommandOptions; stdin: string; state: State; runtime: BaseRuntime; @@ -26,3 +26,24 @@ export type CommandResult = { }; +/** + * The options of a command execution + */ +export type CommandOptions = { + raw: string[]; + flags: Set; + options: Map; + positionals: string[]; + hasFlag: (...names: string[]) => boolean; +}; + +/** + * The manual of a command + */ +export type CommandManual = { + name: string; + description: string; + usage: string; + options?: Record; +}; + diff --git a/packages/bash-types/src/index.ts b/packages/bash-types/src/index.ts index 7f9d67a..0aa52f6 100644 --- a/packages/bash-types/src/index.ts +++ b/packages/bash-types/src/index.ts @@ -1,4 +1,4 @@ export { State } from "./state"; export { BaseRuntime, RuntimeResult } from "./runtime"; export { BashOptions } from "./bash"; -export { CommandResult, CommandHandler, CommandContext } from "./command"; +export { CommandResult, CommandHandler, CommandContext, CommandOptions, CommandManual } from "./command"; diff --git a/packages/bash-types/src/state.ts b/packages/bash-types/src/state.ts index 48aef48..22c5c93 100644 --- a/packages/bash-types/src/state.ts +++ b/packages/bash-types/src/state.ts @@ -17,6 +17,16 @@ export interface State { */ lastExitCode: number; + /** + * Get the absolute path of the current working directory + */ + absoluteCwd(): string; + + /** + * Change the current working directory + */ + changeDirectory(targetPath: string): Promise; + /** * Set the exit code of the last executed command */ diff --git a/packages/bash/src/commands/cd/handler.ts b/packages/bash/src/commands/cd/handler.ts new file mode 100644 index 0000000..61c4e35 --- /dev/null +++ b/packages/bash/src/commands/cd/handler.ts @@ -0,0 +1,18 @@ +import type { CommandContext, CommandHandler, CommandManual } from "@capsule-run/bash-types"; + +export const manual: CommandManual = { + name: "cd", + description: "Change the working directory.", + usage: "cd [-L|[-P] [dir]", + options: { + "-L": "force symbolic links to be followed", + "-P": "use the physical directory structure" + } +}; + +export const handler: CommandHandler = async ({ opts, state }: CommandContext) => { + // console.log(args, opts, state); + // const targetPath = opts.positionals[0] || state.absoluteCwd(); + // const success = await state.changeDirectory(targetPath); + return { stdout: '', stderr: '', exitCode: 0 }; +}; diff --git a/packages/bash/src/core/executor.ts b/packages/bash/src/core/executor.ts index 84ade9b..3baa7e1 100644 --- a/packages/bash/src/core/executor.ts +++ b/packages/bash/src/core/executor.ts @@ -1,7 +1,11 @@ import path from 'path'; -import type { BaseRuntime, CommandHandler, CommandResult, State } from '@capsule-run/bash-types'; +import { parsedCommandOptions } from '../helpers/commandOptions'; +import { displayCommandManual } from '../helpers/commandManual'; + +import type { BaseRuntime, CommandHandler, CommandManual, CommandResult, State } from '@capsule-run/bash-types'; import type { ASTNode, CommandNode } from './parser'; + export class Executor { constructor( @@ -21,6 +25,7 @@ export class Executor { private async executeCommand(node: CommandNode, stdin: string): Promise { const [name, ...args] = node.args; + let result: CommandResult; for (const r of node.redirects) { if (r.op === '<') { @@ -41,13 +46,15 @@ export class Executor { } } - const handler = await this.searchCommandHandler(name); - let result: CommandResult; + const opts = parsedCommandOptions(args); + const command = await this.searchCommandHandler(name); - if (handler) { - result = await handler({ args, stdin, state: this.state, runtime: this.runtime }); - } else { + if (!command) { result = { stdout: '', stderr: `bash: ${name}: command not found`, exitCode: 127 }; + } else if (opts.hasFlag('h', 'help') && command.manual) { + result = { stdout: displayCommandManual(command.manual), stderr: '', exitCode: 0 }; + } else { + result = await command.handler({ opts, stdin, state: this.state, runtime: this.runtime }); } let currentStdout = result.stdout; @@ -59,11 +66,11 @@ export class Executor { currentStdout = ''; continue; } - + if (r.file === '/dev/stdout') { continue; } - + if (r.file === '/dev/stderr') { currentStderr += currentStdout; currentStdout = ''; @@ -127,13 +134,13 @@ export class Executor { return this.execute(node.right); } - private async searchCommandHandler(name: string): Promise { + private async searchCommandHandler(name: string): Promise<{handler: CommandHandler, manual?: CommandManual} | undefined> { const commandsDir = path.resolve(__dirname, '../commands'); const handlerPath = path.join(commandsDir, name, 'handler'); try { const mod = require(handlerPath); - return mod.handle as CommandHandler; + return { handler: mod.handler as CommandHandler, manual: mod.manual as CommandManual }; } catch { return undefined; } diff --git a/packages/bash/src/core/stateManager.ts b/packages/bash/src/core/stateManager.ts index 29cb961..73bdff7 100644 --- a/packages/bash/src/core/stateManager.ts +++ b/packages/bash/src/core/stateManager.ts @@ -8,29 +8,25 @@ export class StateManager { cwd: initialCwd, env: {}, lastExitCode: 0, + absoluteCwd: () => this.state.cwd.startsWith('/') ? this.state.cwd : `/${this.state.cwd}`, setLastExitCode: (code: number) => { this.state.lastExitCode = code; }, setEnv: (key: string, value: string) => { this.state.env[key] = value; + }, + changeDirectory: async (targetPath: string) => { + try { + const resolvedPath = await this.runtime.resolvePath(this.state, targetPath); + this.state.cwd = resolvedPath; + return true; + } catch { + return false; + } } }; } - get displayCwd(): string { - return this.state.cwd.startsWith('/') ? this.state.cwd : `/${this.state.cwd}`; - } - - public async changeDirectory(targetPath: string): Promise { - try { - const resolvedPath = await this.runtime.resolvePath(this.state, targetPath); - this.state.cwd = resolvedPath; - return true; - } catch { - return false; - } - } - public reset() { this.state.cwd = 'workspace'; this.state.env = {}; diff --git a/packages/bash/src/helpers/commandManual.ts b/packages/bash/src/helpers/commandManual.ts new file mode 100644 index 0000000..99f3d27 --- /dev/null +++ b/packages/bash/src/helpers/commandManual.ts @@ -0,0 +1,10 @@ +import type { CommandManual } from "@capsule-run/bash-types"; + +export function displayCommandManual(command: CommandManual): string { + const helpText = `NAME:\n${command.name}\n\nUSAGE:\n${command.usage}\n\nDESCRIPTION:\n${command.description}\n\nOPTIONS:\n` + + Object.entries(command.options || {}) + .map(([flag, desc]) => ` ${flag.padEnd(5)} ${desc}`) + .join('\n'); + + return helpText + '\n'; +} diff --git a/packages/bash/src/helpers/commandOptions.ts b/packages/bash/src/helpers/commandOptions.ts new file mode 100644 index 0000000..f3ed75f --- /dev/null +++ b/packages/bash/src/helpers/commandOptions.ts @@ -0,0 +1,41 @@ +import type { CommandOptions } from "@capsule-run/bash-types"; + +export function parsedCommandOptions(args: string[]): CommandOptions { + const flags: Set = new Set(); + const options: Map = new Map(); + const positionals: string[] = []; + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (arg.startsWith('--') && arg.includes('=')) { + const [key, ...val] = arg.slice(2).split('='); + options.set(key, val.join('=')); + } + else if (arg.startsWith('--')) { + const key = arg.slice(2); + if (args[i + 1] && !args[i + 1].startsWith('-')) { + options.set(key, args[++i]); + } else { + flags.add(key); + } + } + else if (arg.startsWith('-') && arg.length > 1) { + for (const char of arg.slice(1)) { + flags.add(char); + } + } + + else { + positionals.push(arg); + } + } + + return { + raw: args, + flags, + options, + positionals, + hasFlag: (...names: string[]) => names.some(name => flags.has(name)) + }; +} From 82318d7569dbf79938939d6c84be061025619143 Mon Sep 17 00:00:00 2001 From: Mavdol Date: Mon, 13 Apr 2026 02:38:12 +0200 Subject: [PATCH 2/4] chore: upgrade capsule-run dependencies, implement cd logic, and update path resolution tests --- package.json | 4 +- packages/bash-wasm/package.json | 4 +- packages/bash/src/commands/cd/handler.ts | 22 +- pnpm-lock.yaml | 551 ++------------------- pnpm-workspace.yaml | 3 + wasm-sandboxes/js/__test__/sandbox.test.ts | 28 +- wasm-sandboxes/js/package.json | 4 +- 7 files changed, 91 insertions(+), 525 deletions(-) diff --git a/package.json b/package.json index d5dd4f2..676f280 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { - "@capsule-run/cli": "^0.8.5", - "@capsule-run/sdk": "^0.8.5" + "@capsule-run/cli": "^0.8.6", + "@capsule-run/sdk": "^0.8.6" }, "devDependencies": { "esbuild": "^0.28.0", diff --git a/packages/bash-wasm/package.json b/packages/bash-wasm/package.json index d3fdd58..93cd10f 100644 --- a/packages/bash-wasm/package.json +++ b/packages/bash-wasm/package.json @@ -12,8 +12,8 @@ "tsup": "^8.0.0" }, "dependencies": { - "@capsule-run/cli": "^0.8.5", - "@capsule-run/sdk": "^0.8.5", + "@capsule-run/cli": "^0.8.6", + "@capsule-run/sdk": "^0.8.6", "@capsule-run/bash-types": "workspace:*" } } diff --git a/packages/bash/src/commands/cd/handler.ts b/packages/bash/src/commands/cd/handler.ts index 61c4e35..46430f4 100644 --- a/packages/bash/src/commands/cd/handler.ts +++ b/packages/bash/src/commands/cd/handler.ts @@ -3,16 +3,26 @@ import type { CommandContext, CommandHandler, CommandManual } from "@capsule-run export const manual: CommandManual = { name: "cd", description: "Change the working directory.", - usage: "cd [-L|[-P] [dir]", + usage: "cd [-L] [dir]", options: { - "-L": "force symbolic links to be followed", - "-P": "use the physical directory structure" + "-L": "force symbolic links to be followed" } }; export const handler: CommandHandler = async ({ opts, state }: CommandContext) => { - // console.log(args, opts, state); - // const targetPath = opts.positionals[0] || state.absoluteCwd(); - // const success = await state.changeDirectory(targetPath); + + if(opts.hasFlag('L')) { /* no particular behavior for now */ } + + let targetPath = "/workspace"; + if(opts.positionals[0]) { + targetPath = opts.positionals[0]; + } + + const success = await state.changeDirectory(targetPath); + + if (!success) { + return { stdout: '', stderr: `bash: cd: ${targetPath}: No such file or directory`, exitCode: 1 }; + } + return { stdout: '', stderr: '', exitCode: 0 }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 822b2e9..fbe4222 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,16 +4,19 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@capsule-run/sdk': link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + importers: .: dependencies: '@capsule-run/cli': - specifier: ^0.8.5 - version: 0.8.5 + specifier: ^0.8.6 + version: 0.8.6 '@capsule-run/sdk': - specifier: ^0.8.5 - version: 0.8.5(@types/node@25.6.0) + specifier: link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + version: link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk devDependencies: '@types/node': specifier: ^25.2.3 @@ -56,11 +59,11 @@ importers: specifier: workspace:* version: link:../bash-types '@capsule-run/cli': - specifier: ^0.8.5 - version: 0.8.5 + specifier: ^0.8.6 + version: 0.8.6 '@capsule-run/sdk': - specifier: ^0.8.5 - version: 0.8.5(@types/node@25.6.0) + specifier: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + version: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk devDependencies: tsup: specifier: ^8.0.0 @@ -72,11 +75,11 @@ importers: specifier: workspace:* version: link:../../packages/bash-types '@capsule-run/cli': - specifier: ^0.8.5 - version: 0.8.5 + specifier: ^0.8.6 + version: 0.8.6 '@capsule-run/sdk': - specifier: ^0.8.5 - version: 0.8.5(@types/node@25.2.3) + specifier: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + version: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk devDependencies: '@types/node': specifier: 25.2.3 @@ -88,8 +91,8 @@ importers: wasm-sandboxes/python: devDependencies: '@capsule-run/sdk': - specifier: ^0.8.4 - version: 0.8.5(@types/node@25.2.3) + specifier: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + version: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk '@types/node': specifier: 25.2.3 version: 25.2.3 @@ -99,95 +102,35 @@ importers: packages: - '@bytecodealliance/componentize-js@0.19.3': - resolution: {integrity: sha512-ju7Y4WeF0B9uMkSPHJgmT6ouEfSwbe9M1uR/YOnYZjBpxJjH9qzxIkJg/kf8NycVDyFJ2/lscmJ1E1uPiDQVRQ==} - hasBin: true - - '@bytecodealliance/jco@1.17.6': - resolution: {integrity: sha512-2D/v9m+6cwVd/MYmv6rBgaiUv6vBJaSKWwbPh4ltAfxcbh4KYJioSsAiEyiwKSD2HlK0LZ45N0Kzfc9WOyWnVQ==} - hasBin: true - - '@bytecodealliance/preview2-shim@0.17.8': - resolution: {integrity: sha512-wS5kg8u0KCML1UeHQPJ1IuOI24x/XLentCzsqPER1+gDNC5Cz2hG4G2blLOZap+3CEGhIhnJ9mmZYj6a2W0Lww==} - - '@bytecodealliance/wizer-darwin-arm64@10.0.0': - resolution: {integrity: sha512-dhZTWel+xccGTKSJtI9A7oM4yyP20FWflsT+AoqkOqkCY7kCNrj4tmMtZ6GXZFRDkrPY5+EnOh62sfShEibAMA==} + '@capsule-run/cli-darwin-arm64@0.8.6': + resolution: {integrity: sha512-ZIYvT/LqRGUi1TiV3C+yQ61KhfUWcyv7bGJujMgUczQ2klIRPVHMEArZItHMugUJRBZ7xoU7qSeidmyBRd1D3A==} cpu: [arm64] os: [darwin] hasBin: true - '@bytecodealliance/wizer-darwin-x64@10.0.0': - resolution: {integrity: sha512-r/LUIZw6Q3Hf4htd46mD+EBxfwjBkxVIrTM1r+B2pTCddoBYQnKVdVsI4UFyy7NoBxzEg8F8BwmTNoSLmFRjpw==} + '@capsule-run/cli-darwin-x64@0.8.6': + resolution: {integrity: sha512-LKStnHeNSEXu1Yfh/6mZlQ1kWsb8+bEca3dYk4WcXe82YuKS+moA2A4BfMdHBh/FKRkmqbjwd8vMyZdUA7SvvQ==} cpu: [x64] os: [darwin] hasBin: true - '@bytecodealliance/wizer-linux-arm64@10.0.0': - resolution: {integrity: sha512-pGSfFWXzeTqHm6z1PtVaEn+7Fm3QGC8YnHrzBV4sQDVS3N1NwmuHZAc8kslmlFPNdu61ycEvdOsSgCny8JPQvg==} - cpu: [arm64] - os: [linux] - hasBin: true - - '@bytecodealliance/wizer-linux-s390x@10.0.0': - resolution: {integrity: sha512-O8vHxRTAdb1lUnVXMIMTcp/9q4pq1D4iIKigJCipg2JN15taV9uFAWh0fO88wylXwuSlO7dOE1AwQl54fMKXQg==} - cpu: [s390x] - os: [linux] - hasBin: true - - '@bytecodealliance/wizer-linux-x64@10.0.0': - resolution: {integrity: sha512-fJtM1sy43FBMnp+xpapFX6U1YdTBKA/1T4CYfG/qeE8jn0SXk2EuiYoY/EnC2uyNy9hjTrvfdYO5n4MXW0EIdQ==} + '@capsule-run/cli-linux-x64@0.8.6': + resolution: {integrity: sha512-qqQb0qje8U6ZTe+tUfIiYIXykbrrOAcGg8D/4A34MXdi7PzQB/ShcKagSiXzoPG26cue6kD5ELcvsKdWLWLY8A==} cpu: [x64] os: [linux] hasBin: true - '@bytecodealliance/wizer-win32-x64@10.0.0': - resolution: {integrity: sha512-55BPLfGT7iT7gH5M69NpTM16QknJZ7OxJ0z73VOEoeGA9CT8QPKMRzFKsPIvLs+W8G28fdudFA94nElrdkp3Kg==} + '@capsule-run/cli-win32-x64@0.8.6': + resolution: {integrity: sha512-s6cZ5aKiRNAeXTfxFelErMDm6v4vMJUFPImTLJ/235F8mjeIEKmmGSJzuPmaT2oGpVdzo/4tMi7FwOJstTS97A==} cpu: [x64] os: [win32] hasBin: true - '@bytecodealliance/wizer@10.0.0': - resolution: {integrity: sha512-ziWmovyu1jQl9TsKlfC2bwuUZwxVPFHlX4fOqTzxhgS76jITIo45nzODEwPgU+jjmOr8F3YX2V2wAChC5NKujg==} - engines: {node: '>=16'} - hasBin: true - - '@capsule-run/cli-darwin-arm64@0.8.5': - resolution: {integrity: sha512-UrkHN9V4X9h8h/ftjLZ8XIMChgELm/g8xBjQiRecCBGpBVH/RIvPt0WbikpJmRxsXnLyuUbFg+nfJyhiKNOsXQ==} - cpu: [arm64] - os: [darwin] - hasBin: true - - '@capsule-run/cli-darwin-x64@0.8.5': - resolution: {integrity: sha512-WOQlrc+i+e//3TAT1/l8hXQEhpjE2Ey7zCWUL/MO+go65i03o83RyHkr7D7YalfRyxe9GuzzXGXvxxlMownnbQ==} - cpu: [x64] - os: [darwin] - hasBin: true - - '@capsule-run/cli-linux-x64@0.8.5': - resolution: {integrity: sha512-HTyMg2G7UyZwwDQ6dtqepGqb9NHM+IH5ZglK86J96KE5kXFB55h1eYg6BQu3vF6/8BXcsK8RqtAeFUxtOsGpxQ==} - cpu: [x64] - os: [linux] - hasBin: true - - '@capsule-run/cli-win32-x64@0.8.5': - resolution: {integrity: sha512-p1ZeiqMSRMhj86CZkGmZAi4ymtmGRfI2p8EdOTNsjmQZrf/PMb1gmtFc5rli500jNFA8iwWCQGg+AQf+Mslg/w==} - cpu: [x64] - os: [win32] - hasBin: true - - '@capsule-run/cli@0.8.5': - resolution: {integrity: sha512-MPa+9PNsrZ9aV1356GHP6X93ehD8XxQRnPncFw8Xp9BDd2O6q3bdtFf9ZOPHXbktrpb33Fn8/lVQ9m6tKPGJmg==} + '@capsule-run/cli@0.8.6': + resolution: {integrity: sha512-E2tVDGquvPBAiq0bs7fUdpDKz7j2WMmHpUWT4NGEFm2F1S6la3GT+DqY0et0Q7BP3ennJGPiHgTXIuH0rLzKpA==} engines: {node: '>=18'} hasBin: true - '@capsule-run/sdk@0.8.5': - resolution: {integrity: sha512-Z8RwcuL3EH5MldZ+3WXd8/0HEDHt758Mem6mB0TQbDF4psoETGtVAqDioyYrTjxtKzGuAN/yiIWcVYv8KyNt6A==} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@emnapi/core@1.9.2': resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} @@ -525,110 +468,15 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.1.3': resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@oxc-parser/binding-android-arm64@0.76.0': - resolution: {integrity: sha512-1XJW/16CDmF5bHE7LAyPPmEEVnxSadDgdJz+xiLqBrmC4lfAeuAfRw3HlOygcPGr+AJsbD4Z5sFJMkwjbSZlQg==} - engines: {node: '>=20.0.0'} - cpu: [arm64] - os: [android] - - '@oxc-parser/binding-darwin-arm64@0.76.0': - resolution: {integrity: sha512-yoQwSom8xsB+JdGsPUU0xxmxLKiF2kdlrK7I56WtGKZilixuBf/TmOwNYJYLRWkBoW5l2/pDZOhBm2luwmLiLw==} - engines: {node: '>=20.0.0'} - cpu: [arm64] - os: [darwin] - - '@oxc-parser/binding-darwin-x64@0.76.0': - resolution: {integrity: sha512-uRIopPLvr3pf2Xj7f5LKyCuqzIU6zOS+zEIR8UDYhcgJyZHnvBkfrYnfcztyIcrGdQehrFUi3uplmI09E7RdiQ==} - engines: {node: '>=20.0.0'} - cpu: [x64] - os: [darwin] - - '@oxc-parser/binding-freebsd-x64@0.76.0': - resolution: {integrity: sha512-a0EOFvnOd2FqmDSvH6uWLROSlU6KV/JDKbsYDA/zRLyKcG6HCsmFnPsp8iV7/xr9WMbNgyJi6R5IMpePQlUq7Q==} - engines: {node: '>=20.0.0'} - cpu: [x64] - os: [freebsd] - - '@oxc-parser/binding-linux-arm-gnueabihf@0.76.0': - resolution: {integrity: sha512-ikRYDHL3fOdZwfJKmcdqjlLgkeNZ3Ez0qM8wAev5zlHZ+lY/Ig7qG5SCqPlvuTu+nNQ6zrFFaKvvt69EBKXU/g==} - engines: {node: '>=20.0.0'} - cpu: [arm] - os: [linux] - - '@oxc-parser/binding-linux-arm-musleabihf@0.76.0': - resolution: {integrity: sha512-dtRv5J5MRCLR7x39K8ufIIW4svIc7gYFUaI0YFXmmeOBhK/K2t/CkguPnDroKtsmXIPHDRtmJ1JJYzNcgJl6Wg==} - engines: {node: '>=20.0.0'} - cpu: [arm] - os: [linux] - - '@oxc-parser/binding-linux-arm64-gnu@0.76.0': - resolution: {integrity: sha512-IE4iiiggFH2snagQxHrY5bv6dDpRMMat+vdlMN/ibonA65eOmRLp8VLTXnDiNrcla/itJ1L9qGABHNKU+SnE8g==} - engines: {node: '>=20.0.0'} - cpu: [arm64] - os: [linux] - - '@oxc-parser/binding-linux-arm64-musl@0.76.0': - resolution: {integrity: sha512-wi9zQPMDHrBuRuT7Iurfidc9qlZh7cKa5vfYzOWNBCaqJdgxmNOFzvYen02wVUxSWGKhpiPHxrPX0jdRyJ8Npg==} - engines: {node: '>=20.0.0'} - cpu: [arm64] - os: [linux] - - '@oxc-parser/binding-linux-riscv64-gnu@0.76.0': - resolution: {integrity: sha512-0tqqu1pqPee2lLGY8vtYlX1L415fFn89e0a3yp4q5N9f03j1rRs0R31qesTm3bt/UK8HYjECZ+56FCVPs2MEMQ==} - engines: {node: '>=20.0.0'} - cpu: [riscv64] - os: [linux] - - '@oxc-parser/binding-linux-s390x-gnu@0.76.0': - resolution: {integrity: sha512-y36Hh1a5TA+oIGtlc8lT7N9vdHXBlhBetQJW0p457KbiVQ7jF7AZkaPWhESkjHWAsTVKD2OjCa9ZqfaqhSI0FQ==} - engines: {node: '>=20.0.0'} - cpu: [s390x] - os: [linux] - - '@oxc-parser/binding-linux-x64-gnu@0.76.0': - resolution: {integrity: sha512-7/acaG9htovp3gp/J0kHgbItQTuHctl+rbqPPqZ9DRBYTz8iV8kv3QN8t8Or8i/hOmOjfZp9McDoSU1duoR4/A==} - engines: {node: '>=20.0.0'} - cpu: [x64] - os: [linux] - - '@oxc-parser/binding-linux-x64-musl@0.76.0': - resolution: {integrity: sha512-AxFt0reY6Q2rfudABmMTFGR8tFFr58NlH2rRBQgcj+F+iEwgJ+jMwAPhXd2y1I2zaI8GspuahedUYQinqxWqjA==} - engines: {node: '>=20.0.0'} - cpu: [x64] - os: [linux] - - '@oxc-parser/binding-wasm32-wasi@0.76.0': - resolution: {integrity: sha512-wHdkHdhf6AWBoO8vs5cpoR6zEFY1rB+fXWtq6j/xb9j/lu1evlujRVMkh8IM/M/pOUIrNkna3nzST/mRImiveQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@oxc-parser/binding-win32-arm64-msvc@0.76.0': - resolution: {integrity: sha512-G7ZlEWcb2hNwCK3qalzqJoyB6HaTigQ/GEa7CU8sAJ/WwMdG/NnPqiC9IqpEAEy1ARSo4XMALfKbKNuqbSs5mg==} - engines: {node: '>=20.0.0'} - cpu: [arm64] - os: [win32] - - '@oxc-parser/binding-win32-x64-msvc@0.76.0': - resolution: {integrity: sha512-0jLzzmnu8/mqNhKBnNS2lFUbPEzRdj5ReiZwHGHpjma0+ullmmwP2AqSEqx3ssHDK9CpcEMdKOK2LsbCfhHKIA==} - engines: {node: '>=20.0.0'} - cpu: [x64] - os: [win32] - '@oxc-project/types@0.124.0': resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} - '@oxc-project/types@0.76.0': - resolution: {integrity: sha512-CH3THIrSViKal8yV/Wh3FK0pFhp40nzW1MUDCik9fNuid2D/7JJXKJnfFOAvMxInGXDlvmgT6ACAzrl47TqzkQ==} - '@rolldown/binding-android-arm64@1.0.0-rc.15': resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -904,10 +752,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -915,10 +759,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - binaryen@123.0.0: - resolution: {integrity: sha512-/hls/a309aZCc0itqP6uhoR+5DsKSlJVfB8Opd2BY9Ndghs84IScTunlyidyF4r2Xe3lQttnfBNIDjaNpj6mTw==} - hasBin: true - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -936,26 +776,10 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -986,12 +810,6 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-module-lexer@2.0.0: resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} @@ -1029,22 +847,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} - engines: {node: '>=18'} - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -1130,22 +932,9 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} @@ -1167,18 +956,6 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} - engines: {node: '>=18'} - - oxc-parser@0.76.0: - resolution: {integrity: sha512-l98B2e9evuhES7zN99rb1QGhbzx25829TJFaKi2j0ib3/K/G5z1FdGYz6HZkrU3U8jdH7v2FC8mX1j2l9JrOUg==} - engines: {node: '>=20.0.0'} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -1226,10 +1003,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - rolldown@1.0.0-rc.15: resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1247,10 +1020,6 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1272,18 +1041,6 @@ packages: std-env@4.0.0: resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} - sucrase@3.35.1: resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1348,11 +1105,6 @@ packages: typescript: optional: true - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - typescript@6.0.2: resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} @@ -1367,9 +1119,6 @@ packages: undici-types@7.19.2: resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} - unenv@2.0.0-rc.24: - resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} - vite@8.0.8: resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1461,88 +1210,24 @@ packages: snapshots: - '@bytecodealliance/componentize-js@0.19.3': - dependencies: - '@bytecodealliance/jco': 1.17.6 - '@bytecodealliance/wizer': 10.0.0 - es-module-lexer: 1.7.0 - oxc-parser: 0.76.0 - - '@bytecodealliance/jco@1.17.6': - dependencies: - '@bytecodealliance/componentize-js': 0.19.3 - '@bytecodealliance/preview2-shim': 0.17.8 - binaryen: 123.0.0 - commander: 14.0.3 - mkdirp: 3.0.1 - ora: 8.2.0 - terser: 5.46.1 - - '@bytecodealliance/preview2-shim@0.17.8': {} - - '@bytecodealliance/wizer-darwin-arm64@10.0.0': - optional: true - - '@bytecodealliance/wizer-darwin-x64@10.0.0': - optional: true - - '@bytecodealliance/wizer-linux-arm64@10.0.0': - optional: true - - '@bytecodealliance/wizer-linux-s390x@10.0.0': + '@capsule-run/cli-darwin-arm64@0.8.6': optional: true - '@bytecodealliance/wizer-linux-x64@10.0.0': + '@capsule-run/cli-darwin-x64@0.8.6': optional: true - '@bytecodealliance/wizer-win32-x64@10.0.0': + '@capsule-run/cli-linux-x64@0.8.6': optional: true - '@bytecodealliance/wizer@10.0.0': - optionalDependencies: - '@bytecodealliance/wizer-darwin-arm64': 10.0.0 - '@bytecodealliance/wizer-darwin-x64': 10.0.0 - '@bytecodealliance/wizer-linux-arm64': 10.0.0 - '@bytecodealliance/wizer-linux-s390x': 10.0.0 - '@bytecodealliance/wizer-linux-x64': 10.0.0 - '@bytecodealliance/wizer-win32-x64': 10.0.0 - - '@capsule-run/cli-darwin-arm64@0.8.5': + '@capsule-run/cli-win32-x64@0.8.6': optional: true - '@capsule-run/cli-darwin-x64@0.8.5': - optional: true - - '@capsule-run/cli-linux-x64@0.8.5': - optional: true - - '@capsule-run/cli-win32-x64@0.8.5': - optional: true - - '@capsule-run/cli@0.8.5': - optionalDependencies: - '@capsule-run/cli-darwin-arm64': 0.8.5 - '@capsule-run/cli-darwin-x64': 0.8.5 - '@capsule-run/cli-linux-x64': 0.8.5 - '@capsule-run/cli-win32-x64': 0.8.5 - - '@capsule-run/sdk@0.8.5(@types/node@25.2.3)': - dependencies: - '@bytecodealliance/jco': 1.17.6 - esbuild: 0.27.7 - typescript: 5.9.3 - unenv: 2.0.0-rc.24 - optionalDependencies: - '@types/node': 25.2.3 - - '@capsule-run/sdk@0.8.5(@types/node@25.6.0)': - dependencies: - '@bytecodealliance/jco': 1.17.6 - esbuild: 0.27.7 - typescript: 5.9.3 - unenv: 2.0.0-rc.24 + '@capsule-run/cli@0.8.6': optionalDependencies: - '@types/node': 25.6.0 + '@capsule-run/cli-darwin-arm64': 0.8.6 + '@capsule-run/cli-darwin-x64': 0.8.6 + '@capsule-run/cli-linux-x64': 0.8.6 + '@capsule-run/cli-win32-x64': 0.8.6 '@emnapi/core@1.9.2': dependencies: @@ -1727,6 +1412,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 + optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -1735,13 +1421,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@napi-rs/wasm-runtime@0.2.12': - dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.1 - optional: true - '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: '@emnapi/core': 1.9.2 @@ -1749,57 +1428,8 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@oxc-parser/binding-android-arm64@0.76.0': - optional: true - - '@oxc-parser/binding-darwin-arm64@0.76.0': - optional: true - - '@oxc-parser/binding-darwin-x64@0.76.0': - optional: true - - '@oxc-parser/binding-freebsd-x64@0.76.0': - optional: true - - '@oxc-parser/binding-linux-arm-gnueabihf@0.76.0': - optional: true - - '@oxc-parser/binding-linux-arm-musleabihf@0.76.0': - optional: true - - '@oxc-parser/binding-linux-arm64-gnu@0.76.0': - optional: true - - '@oxc-parser/binding-linux-arm64-musl@0.76.0': - optional: true - - '@oxc-parser/binding-linux-riscv64-gnu@0.76.0': - optional: true - - '@oxc-parser/binding-linux-s390x-gnu@0.76.0': - optional: true - - '@oxc-parser/binding-linux-x64-gnu@0.76.0': - optional: true - - '@oxc-parser/binding-linux-x64-musl@0.76.0': - optional: true - - '@oxc-parser/binding-wasm32-wasi@0.76.0': - dependencies: - '@napi-rs/wasm-runtime': 0.2.12 - optional: true - - '@oxc-parser/binding-win32-arm64-msvc@0.76.0': - optional: true - - '@oxc-parser/binding-win32-x64-msvc@0.76.0': - optional: true - '@oxc-project/types@0.124.0': {} - '@oxc-project/types@0.76.0': {} - '@rolldown/binding-android-arm64@1.0.0-rc.15': optional: true @@ -2003,15 +1633,12 @@ snapshots: acorn@8.16.0: {} - ansi-regex@6.2.2: {} - any-promise@1.3.0: {} assertion-error@2.0.1: {} - binaryen@123.0.0: {} - - buffer-from@1.1.2: {} + buffer-from@1.1.2: + optional: true bundle-require@5.1.0(esbuild@0.27.7): dependencies: @@ -2022,21 +1649,12 @@ snapshots: chai@6.2.2: {} - chalk@5.6.2: {} - chokidar@4.0.3: dependencies: readdirp: 4.1.2 - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-spinners@2.9.2: {} - - commander@14.0.3: {} - - commander@2.20.3: {} + commander@2.20.3: + optional: true commander@4.1.1: {} @@ -2052,10 +1670,6 @@ snapshots: detect-libc@2.1.2: {} - emoji-regex@10.6.0: {} - - es-module-lexer@1.7.0: {} - es-module-lexer@2.0.0: {} esbuild@0.27.7: @@ -2135,14 +1749,6 @@ snapshots: fsevents@2.3.3: optional: true - get-east-asian-width@1.5.0: {} - - is-interactive@2.0.0: {} - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.1.0: {} - joycon@3.1.1: {} lightningcss-android-arm64@1.32.0: @@ -2200,19 +1806,10 @@ snapshots: load-tsconfig@0.2.5: {} - log-symbols@6.0.0: - dependencies: - chalk: 5.6.2 - is-unicode-supported: 1.3.0 - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - mimic-function@5.0.1: {} - - mkdirp@3.0.1: {} - mlly@1.8.2: dependencies: acorn: 8.16.0 @@ -2234,42 +1831,6 @@ snapshots: obug@2.1.1: {} - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - ora@8.2.0: - dependencies: - chalk: 5.6.2 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.2.0 - - oxc-parser@0.76.0: - dependencies: - '@oxc-project/types': 0.76.0 - optionalDependencies: - '@oxc-parser/binding-android-arm64': 0.76.0 - '@oxc-parser/binding-darwin-arm64': 0.76.0 - '@oxc-parser/binding-darwin-x64': 0.76.0 - '@oxc-parser/binding-freebsd-x64': 0.76.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.76.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.76.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.76.0 - '@oxc-parser/binding-linux-arm64-musl': 0.76.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.76.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.76.0 - '@oxc-parser/binding-linux-x64-gnu': 0.76.0 - '@oxc-parser/binding-linux-x64-musl': 0.76.0 - '@oxc-parser/binding-wasm32-wasi': 0.76.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.76.0 - '@oxc-parser/binding-win32-x64-msvc': 0.76.0 - pathe@2.0.3: {} picocolors@1.1.1: {} @@ -2300,11 +1861,6 @@ snapshots: resolve-from@5.0.0: {} - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - rolldown@1.0.0-rc.15: dependencies: '@oxc-project/types': 0.124.0 @@ -2361,16 +1917,16 @@ snapshots: siginfo@2.0.0: {} - signal-exit@4.1.0: {} - source-map-js@1.2.1: {} source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + optional: true - source-map@0.6.1: {} + source-map@0.6.1: + optional: true source-map@0.7.6: {} @@ -2378,18 +1934,6 @@ snapshots: std-env@4.0.0: {} - stdin-discarder@0.2.2: {} - - string-width@7.2.0: - dependencies: - emoji-regex: 10.6.0 - get-east-asian-width: 1.5.0 - strip-ansi: 7.2.0 - - strip-ansi@7.2.0: - dependencies: - ansi-regex: 6.2.2 - sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -2406,6 +1950,7 @@ snapshots: acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 + optional: true thenify-all@1.6.0: dependencies: @@ -2463,8 +2008,6 @@ snapshots: - tsx - yaml - typescript@5.9.3: {} - typescript@6.0.2: {} ufo@1.6.3: {} @@ -2473,10 +2016,6 @@ snapshots: undici-types@7.19.2: {} - unenv@2.0.0-rc.24: - dependencies: - pathe: 2.0.3 - vite@8.0.8(@types/node@25.2.3)(esbuild@0.28.0)(terser@5.46.1): dependencies: lightningcss: 1.32.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d44052b..4d0216e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,6 @@ packages: - packages/* - wasm-sandboxes/* + +overrides: + '@capsule-run/sdk': link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk diff --git a/wasm-sandboxes/js/__test__/sandbox.test.ts b/wasm-sandboxes/js/__test__/sandbox.test.ts index 72af8ae..0a4635a 100644 --- a/wasm-sandboxes/js/__test__/sandbox.test.ts +++ b/wasm-sandboxes/js/__test__/sandbox.test.ts @@ -7,7 +7,7 @@ const SANDBOX = path.resolve(__dirname, '../sandbox.ts'); const WORKSPACE = '__test__/workspace'; const baseState = JSON.stringify({ - cwd: '.', + cwd: '/', env: {}, lastExitCode: 0, }); @@ -126,7 +126,7 @@ describe('sandbox.ts – RESOLVE_PATH', () => { }); const value = assertSuccess(result); - expect(value).toBe('imports'); + expect(value).toBe('/imports'); }); it('Should return an error because the directory path does not exist', async () => { @@ -143,23 +143,23 @@ describe('sandbox.ts – RESOLVE_PATH', () => { it('resolves a directory path', async () => { const result = await run({ file: SANDBOX, - args: ['RESOLVE_PATH', baseState, 'imports/../imports/complex-path-testing'], + args: ['RESOLVE_PATH', baseState, '/imports/../imports/complex-path-testing'], mounts: [`${WORKSPACE}::/`], }); const value = assertSuccess(result); - expect(value).toBe('imports/complex-path-testing'); + expect(value).toBe('/imports/complex-path-testing'); }); it('Should works with a different initial cwd', async () => { const result = await run({ file: SANDBOX, - args: ['RESOLVE_PATH', JSON.stringify({ cwd: 'imports', env: {}, lastExitCode: 0 }), 'complex-path-testing'], + args: ['RESOLVE_PATH', JSON.stringify({ cwd: '/imports', env: {}, lastExitCode: 0 }), 'complex-path-testing'], mounts: [`${WORKSPACE}::/`], }); const value = assertSuccess(result); - expect(value).toBe('imports/complex-path-testing'); + expect(value).toBe('/imports/complex-path-testing'); }); it('Should works with a file path', async () => { @@ -170,6 +170,20 @@ describe('sandbox.ts – RESOLVE_PATH', () => { }); const value = assertSuccess(result); - expect(value).toBe('test-file.js'); + expect(value).toBe('/test-file.js'); }); + + + it('Should works resolve path for absolute path', async () => { + const result = await run({ + file: SANDBOX, + args: ['RESOLVE_PATH', JSON.stringify({ cwd: '/imports/complex-path-testing/', env: {}, lastExitCode: 0 }), '/imports'], + mounts: [`${WORKSPACE}::/`], + }); + + const value = assertSuccess(result); + expect(value).toBe('/imports'); + }); + + }); diff --git a/wasm-sandboxes/js/package.json b/wasm-sandboxes/js/package.json index f763742..a94a9af 100644 --- a/wasm-sandboxes/js/package.json +++ b/wasm-sandboxes/js/package.json @@ -11,8 +11,8 @@ "@types/node": "25.2.3" }, "dependencies": { - "@capsule-run/cli": "^0.8.5", - "@capsule-run/sdk": "^0.8.5", + "@capsule-run/cli": "^0.8.6", + "@capsule-run/sdk": "^0.8.6", "@capsule-run/bash-types": "workspace:*" } } From 21259d759d085c8226a8ebd29e53fe81230f70a1 Mon Sep 17 00:00:00 2001 From: Mavdol Date: Mon, 13 Apr 2026 10:20:12 +0200 Subject: [PATCH 3/4] feat: add test infrastructure and unit tests for the cd command in bash package --- .github/workflows/ci.yml | 24 ++++++++++++++++++ packages/bash/src/commands/cd/cd.test.ts | 27 ++++++++++++++++++++ packages/bash/src/helpers/testUtils.ts | 32 ++++++++++++++++++++++++ packages/bash/vitest.config.ts | 2 +- 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 packages/bash/src/commands/cd/cd.test.ts create mode 100644 packages/bash/src/helpers/testUtils.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fdf2a2e..5bda1bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,3 +63,27 @@ jobs: - name: Run tests working-directory: wasm-sandboxes/python run: pnpm vitest run + + bash-core-tests: + name: Bash Core Tests + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install pnpm + uses: pnpm/action-setup@v4 + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Run tests + working-directory: packages/bash + run: pnpm vitest run + diff --git a/packages/bash/src/commands/cd/cd.test.ts b/packages/bash/src/commands/cd/cd.test.ts new file mode 100644 index 0000000..8bfabf3 --- /dev/null +++ b/packages/bash/src/commands/cd/cd.test.ts @@ -0,0 +1,27 @@ +import { describe, it, expect, vi } from 'vitest'; +import { handler } from './handler'; +import { createMockContext } from '../../helpers/testUtils'; + +describe('cd command', () => { + it('should fall back to /workspace if no path is provided', async () => { + const changeDirectoryMock = vi.fn().mockResolvedValue(true); + const ctx = createMockContext([], { changeDirectory: changeDirectoryMock }); + + const result = await handler(ctx); + + expect(result.exitCode).toBe(0); + expect(changeDirectoryMock).toHaveBeenCalledWith('/workspace'); + }); + + it('should return error if directory does not exist', async () => { + const changeDirectoryMock = vi.fn().mockResolvedValue(false); + const ctx = createMockContext(['/fake-dir'], { changeDirectory: changeDirectoryMock }); + + const result = await handler(ctx); + + expect(result.exitCode).toBe(1); + expect(result.stderr).toContain('No such file or directory'); + expect(changeDirectoryMock).toHaveBeenCalledWith('/fake-dir'); + }); +}); + diff --git a/packages/bash/src/helpers/testUtils.ts b/packages/bash/src/helpers/testUtils.ts new file mode 100644 index 0000000..bb30b1a --- /dev/null +++ b/packages/bash/src/helpers/testUtils.ts @@ -0,0 +1,32 @@ +import { vi } from 'vitest'; +import type { CommandContext, State, BaseRuntime } from '@capsule-run/bash-types'; +import { parsedCommandOptions } from './commandOptions'; + +export function createMockContext( + args: string[] = [], + stateOverrides: Partial = {}, + runtimeOverrides: Partial = {} +): CommandContext { + return { + opts: parsedCommandOptions(args), + + state: { + cwd: '/workspace', + changeDirectory: vi.fn().mockResolvedValue(true), + lastExitCode: 0, + setLastExitCode: vi.fn(), + env: {}, + setEnv: vi.fn(), + absoluteCwd: vi.fn().mockReturnValue('/workspace'), + ...stateOverrides + } as unknown as State, + + runtime: { + executeCode: vi.fn().mockResolvedValue(''), + resolvePath: vi.fn().mockResolvedValue('/workspace'), + ...runtimeOverrides + } as unknown as BaseRuntime, + + stdin: '' + }; +} diff --git a/packages/bash/vitest.config.ts b/packages/bash/vitest.config.ts index fe357a5..e5982de 100644 --- a/packages/bash/vitest.config.ts +++ b/packages/bash/vitest.config.ts @@ -4,6 +4,6 @@ export default defineConfig({ test: { name: 'bash', environment: 'node', - // setupFiles: ['./test/setup.ts'], + include: ['src/**/*.test.ts'], }, }) From 517a35139338aa910372753abb4d9d04cfc47bcf Mon Sep 17 00:00:00 2001 From: Mavdol Date: Mon, 13 Apr 2026 10:29:41 +0200 Subject: [PATCH 4/4] chore: remove local SDK override from pnpm workspace and update lockfile --- pnpm-lock.yaml | 501 ++++++++++++++++++++++++++++++++++++++++++-- pnpm-workspace.yaml | 3 - 2 files changed, 481 insertions(+), 23 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbe4222..95172d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,9 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - '@capsule-run/sdk': link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk - importers: .: @@ -15,8 +12,8 @@ importers: specifier: ^0.8.6 version: 0.8.6 '@capsule-run/sdk': - specifier: link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk - version: link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + specifier: ^0.8.6 + version: 0.8.6(@types/node@25.6.0) devDependencies: '@types/node': specifier: ^25.2.3 @@ -62,8 +59,8 @@ importers: specifier: ^0.8.6 version: 0.8.6 '@capsule-run/sdk': - specifier: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk - version: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + specifier: ^0.8.6 + version: 0.8.6(@types/node@25.6.0) devDependencies: tsup: specifier: ^8.0.0 @@ -78,8 +75,8 @@ importers: specifier: ^0.8.6 version: 0.8.6 '@capsule-run/sdk': - specifier: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk - version: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + specifier: ^0.8.6 + version: 0.8.6(@types/node@25.2.3) devDependencies: '@types/node': specifier: 25.2.3 @@ -91,8 +88,8 @@ importers: wasm-sandboxes/python: devDependencies: '@capsule-run/sdk': - specifier: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk - version: link:../../../../Library/pnpm/global/5/node_modules/@capsule-run/sdk + specifier: ^0.8.4 + version: 0.8.6(@types/node@25.2.3) '@types/node': specifier: 25.2.3 version: 25.2.3 @@ -102,6 +99,58 @@ importers: packages: + '@bytecodealliance/componentize-js@0.19.3': + resolution: {integrity: sha512-ju7Y4WeF0B9uMkSPHJgmT6ouEfSwbe9M1uR/YOnYZjBpxJjH9qzxIkJg/kf8NycVDyFJ2/lscmJ1E1uPiDQVRQ==} + hasBin: true + + '@bytecodealliance/jco@1.17.6': + resolution: {integrity: sha512-2D/v9m+6cwVd/MYmv6rBgaiUv6vBJaSKWwbPh4ltAfxcbh4KYJioSsAiEyiwKSD2HlK0LZ45N0Kzfc9WOyWnVQ==} + hasBin: true + + '@bytecodealliance/preview2-shim@0.17.8': + resolution: {integrity: sha512-wS5kg8u0KCML1UeHQPJ1IuOI24x/XLentCzsqPER1+gDNC5Cz2hG4G2blLOZap+3CEGhIhnJ9mmZYj6a2W0Lww==} + + '@bytecodealliance/wizer-darwin-arm64@10.0.0': + resolution: {integrity: sha512-dhZTWel+xccGTKSJtI9A7oM4yyP20FWflsT+AoqkOqkCY7kCNrj4tmMtZ6GXZFRDkrPY5+EnOh62sfShEibAMA==} + cpu: [arm64] + os: [darwin] + hasBin: true + + '@bytecodealliance/wizer-darwin-x64@10.0.0': + resolution: {integrity: sha512-r/LUIZw6Q3Hf4htd46mD+EBxfwjBkxVIrTM1r+B2pTCddoBYQnKVdVsI4UFyy7NoBxzEg8F8BwmTNoSLmFRjpw==} + cpu: [x64] + os: [darwin] + hasBin: true + + '@bytecodealliance/wizer-linux-arm64@10.0.0': + resolution: {integrity: sha512-pGSfFWXzeTqHm6z1PtVaEn+7Fm3QGC8YnHrzBV4sQDVS3N1NwmuHZAc8kslmlFPNdu61ycEvdOsSgCny8JPQvg==} + cpu: [arm64] + os: [linux] + hasBin: true + + '@bytecodealliance/wizer-linux-s390x@10.0.0': + resolution: {integrity: sha512-O8vHxRTAdb1lUnVXMIMTcp/9q4pq1D4iIKigJCipg2JN15taV9uFAWh0fO88wylXwuSlO7dOE1AwQl54fMKXQg==} + cpu: [s390x] + os: [linux] + hasBin: true + + '@bytecodealliance/wizer-linux-x64@10.0.0': + resolution: {integrity: sha512-fJtM1sy43FBMnp+xpapFX6U1YdTBKA/1T4CYfG/qeE8jn0SXk2EuiYoY/EnC2uyNy9hjTrvfdYO5n4MXW0EIdQ==} + cpu: [x64] + os: [linux] + hasBin: true + + '@bytecodealliance/wizer-win32-x64@10.0.0': + resolution: {integrity: sha512-55BPLfGT7iT7gH5M69NpTM16QknJZ7OxJ0z73VOEoeGA9CT8QPKMRzFKsPIvLs+W8G28fdudFA94nElrdkp3Kg==} + cpu: [x64] + os: [win32] + hasBin: true + + '@bytecodealliance/wizer@10.0.0': + resolution: {integrity: sha512-ziWmovyu1jQl9TsKlfC2bwuUZwxVPFHlX4fOqTzxhgS76jITIo45nzODEwPgU+jjmOr8F3YX2V2wAChC5NKujg==} + engines: {node: '>=16'} + hasBin: true + '@capsule-run/cli-darwin-arm64@0.8.6': resolution: {integrity: sha512-ZIYvT/LqRGUi1TiV3C+yQ61KhfUWcyv7bGJujMgUczQ2klIRPVHMEArZItHMugUJRBZ7xoU7qSeidmyBRd1D3A==} cpu: [arm64] @@ -131,6 +180,14 @@ packages: engines: {node: '>=18'} hasBin: true + '@capsule-run/sdk@0.8.6': + resolution: {integrity: sha512-vVwP7TvRWrbUdvnscEZ2a3ecXM1m1UUxfmr0InIZ3PGb9o0vbVIti0kutFeAIfNlvDXM2P0GS7j5br/U5DlIcA==} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@emnapi/core@1.9.2': resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} @@ -468,15 +525,110 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@napi-rs/wasm-runtime@1.1.3': resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 + '@oxc-parser/binding-android-arm64@0.76.0': + resolution: {integrity: sha512-1XJW/16CDmF5bHE7LAyPPmEEVnxSadDgdJz+xiLqBrmC4lfAeuAfRw3HlOygcPGr+AJsbD4Z5sFJMkwjbSZlQg==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.76.0': + resolution: {integrity: sha512-yoQwSom8xsB+JdGsPUU0xxmxLKiF2kdlrK7I56WtGKZilixuBf/TmOwNYJYLRWkBoW5l2/pDZOhBm2luwmLiLw==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.76.0': + resolution: {integrity: sha512-uRIopPLvr3pf2Xj7f5LKyCuqzIU6zOS+zEIR8UDYhcgJyZHnvBkfrYnfcztyIcrGdQehrFUi3uplmI09E7RdiQ==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.76.0': + resolution: {integrity: sha512-a0EOFvnOd2FqmDSvH6uWLROSlU6KV/JDKbsYDA/zRLyKcG6HCsmFnPsp8iV7/xr9WMbNgyJi6R5IMpePQlUq7Q==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.76.0': + resolution: {integrity: sha512-ikRYDHL3fOdZwfJKmcdqjlLgkeNZ3Ez0qM8wAev5zlHZ+lY/Ig7qG5SCqPlvuTu+nNQ6zrFFaKvvt69EBKXU/g==} + engines: {node: '>=20.0.0'} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.76.0': + resolution: {integrity: sha512-dtRv5J5MRCLR7x39K8ufIIW4svIc7gYFUaI0YFXmmeOBhK/K2t/CkguPnDroKtsmXIPHDRtmJ1JJYzNcgJl6Wg==} + engines: {node: '>=20.0.0'} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.76.0': + resolution: {integrity: sha512-IE4iiiggFH2snagQxHrY5bv6dDpRMMat+vdlMN/ibonA65eOmRLp8VLTXnDiNrcla/itJ1L9qGABHNKU+SnE8g==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-arm64-musl@0.76.0': + resolution: {integrity: sha512-wi9zQPMDHrBuRuT7Iurfidc9qlZh7cKa5vfYzOWNBCaqJdgxmNOFzvYen02wVUxSWGKhpiPHxrPX0jdRyJ8Npg==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-gnu@0.76.0': + resolution: {integrity: sha512-0tqqu1pqPee2lLGY8vtYlX1L415fFn89e0a3yp4q5N9f03j1rRs0R31qesTm3bt/UK8HYjECZ+56FCVPs2MEMQ==} + engines: {node: '>=20.0.0'} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-s390x-gnu@0.76.0': + resolution: {integrity: sha512-y36Hh1a5TA+oIGtlc8lT7N9vdHXBlhBetQJW0p457KbiVQ7jF7AZkaPWhESkjHWAsTVKD2OjCa9ZqfaqhSI0FQ==} + engines: {node: '>=20.0.0'} + cpu: [s390x] + os: [linux] + + '@oxc-parser/binding-linux-x64-gnu@0.76.0': + resolution: {integrity: sha512-7/acaG9htovp3gp/J0kHgbItQTuHctl+rbqPPqZ9DRBYTz8iV8kv3QN8t8Or8i/hOmOjfZp9McDoSU1duoR4/A==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-linux-x64-musl@0.76.0': + resolution: {integrity: sha512-AxFt0reY6Q2rfudABmMTFGR8tFFr58NlH2rRBQgcj+F+iEwgJ+jMwAPhXd2y1I2zaI8GspuahedUYQinqxWqjA==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-wasm32-wasi@0.76.0': + resolution: {integrity: sha512-wHdkHdhf6AWBoO8vs5cpoR6zEFY1rB+fXWtq6j/xb9j/lu1evlujRVMkh8IM/M/pOUIrNkna3nzST/mRImiveQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.76.0': + resolution: {integrity: sha512-G7ZlEWcb2hNwCK3qalzqJoyB6HaTigQ/GEa7CU8sAJ/WwMdG/NnPqiC9IqpEAEy1ARSo4XMALfKbKNuqbSs5mg==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.76.0': + resolution: {integrity: sha512-0jLzzmnu8/mqNhKBnNS2lFUbPEzRdj5ReiZwHGHpjma0+ullmmwP2AqSEqx3ssHDK9CpcEMdKOK2LsbCfhHKIA==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [win32] + '@oxc-project/types@0.124.0': resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} + '@oxc-project/types@0.76.0': + resolution: {integrity: sha512-CH3THIrSViKal8yV/Wh3FK0pFhp40nzW1MUDCik9fNuid2D/7JJXKJnfFOAvMxInGXDlvmgT6ACAzrl47TqzkQ==} + '@rolldown/binding-android-arm64@1.0.0-rc.15': resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -752,6 +904,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -759,6 +915,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + binaryen@123.0.0: + resolution: {integrity: sha512-/hls/a309aZCc0itqP6uhoR+5DsKSlJVfB8Opd2BY9Ndghs84IScTunlyidyF4r2Xe3lQttnfBNIDjaNpj6mTw==} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -776,10 +936,26 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -810,6 +986,12 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} @@ -847,6 +1029,22 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -932,9 +1130,22 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} @@ -956,6 +1167,18 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + + oxc-parser@0.76.0: + resolution: {integrity: sha512-l98B2e9evuhES7zN99rb1QGhbzx25829TJFaKi2j0ib3/K/G5z1FdGYz6HZkrU3U8jdH7v2FC8mX1j2l9JrOUg==} + engines: {node: '>=20.0.0'} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -1003,6 +1226,10 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + rolldown@1.0.0-rc.15: resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1020,6 +1247,10 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1041,6 +1272,18 @@ packages: std-env@4.0.0: resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + sucrase@3.35.1: resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1105,6 +1348,11 @@ packages: typescript: optional: true + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@6.0.2: resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} @@ -1119,6 +1367,9 @@ packages: undici-types@7.19.2: resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + vite@8.0.8: resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1210,6 +1461,52 @@ packages: snapshots: + '@bytecodealliance/componentize-js@0.19.3': + dependencies: + '@bytecodealliance/jco': 1.17.6 + '@bytecodealliance/wizer': 10.0.0 + es-module-lexer: 1.7.0 + oxc-parser: 0.76.0 + + '@bytecodealliance/jco@1.17.6': + dependencies: + '@bytecodealliance/componentize-js': 0.19.3 + '@bytecodealliance/preview2-shim': 0.17.8 + binaryen: 123.0.0 + commander: 14.0.3 + mkdirp: 3.0.1 + ora: 8.2.0 + terser: 5.46.1 + + '@bytecodealliance/preview2-shim@0.17.8': {} + + '@bytecodealliance/wizer-darwin-arm64@10.0.0': + optional: true + + '@bytecodealliance/wizer-darwin-x64@10.0.0': + optional: true + + '@bytecodealliance/wizer-linux-arm64@10.0.0': + optional: true + + '@bytecodealliance/wizer-linux-s390x@10.0.0': + optional: true + + '@bytecodealliance/wizer-linux-x64@10.0.0': + optional: true + + '@bytecodealliance/wizer-win32-x64@10.0.0': + optional: true + + '@bytecodealliance/wizer@10.0.0': + optionalDependencies: + '@bytecodealliance/wizer-darwin-arm64': 10.0.0 + '@bytecodealliance/wizer-darwin-x64': 10.0.0 + '@bytecodealliance/wizer-linux-arm64': 10.0.0 + '@bytecodealliance/wizer-linux-s390x': 10.0.0 + '@bytecodealliance/wizer-linux-x64': 10.0.0 + '@bytecodealliance/wizer-win32-x64': 10.0.0 + '@capsule-run/cli-darwin-arm64@0.8.6': optional: true @@ -1229,6 +1526,24 @@ snapshots: '@capsule-run/cli-linux-x64': 0.8.6 '@capsule-run/cli-win32-x64': 0.8.6 + '@capsule-run/sdk@0.8.6(@types/node@25.2.3)': + dependencies: + '@bytecodealliance/jco': 1.17.6 + esbuild: 0.27.7 + typescript: 5.9.3 + unenv: 2.0.0-rc.24 + optionalDependencies: + '@types/node': 25.2.3 + + '@capsule-run/sdk@0.8.6(@types/node@25.6.0)': + dependencies: + '@bytecodealliance/jco': 1.17.6 + esbuild: 0.27.7 + typescript: 5.9.3 + unenv: 2.0.0-rc.24 + optionalDependencies: + '@types/node': 25.6.0 + '@emnapi/core@1.9.2': dependencies: '@emnapi/wasi-threads': 1.2.1 @@ -1412,7 +1727,6 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -1421,6 +1735,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.1 + optional: true + '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: '@emnapi/core': 1.9.2 @@ -1428,8 +1749,57 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@oxc-parser/binding-android-arm64@0.76.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.76.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.76.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.76.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.76.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.76.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.76.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.76.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.76.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.76.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.76.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.76.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.76.0': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.76.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.76.0': + optional: true + '@oxc-project/types@0.124.0': {} + '@oxc-project/types@0.76.0': {} + '@rolldown/binding-android-arm64@1.0.0-rc.15': optional: true @@ -1633,12 +2003,15 @@ snapshots: acorn@8.16.0: {} + ansi-regex@6.2.2: {} + any-promise@1.3.0: {} assertion-error@2.0.1: {} - buffer-from@1.1.2: - optional: true + binaryen@123.0.0: {} + + buffer-from@1.1.2: {} bundle-require@5.1.0(esbuild@0.27.7): dependencies: @@ -1649,12 +2022,21 @@ snapshots: chai@6.2.2: {} + chalk@5.6.2: {} + chokidar@4.0.3: dependencies: readdirp: 4.1.2 - commander@2.20.3: - optional: true + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + commander@14.0.3: {} + + commander@2.20.3: {} commander@4.1.1: {} @@ -1670,6 +2052,10 @@ snapshots: detect-libc@2.1.2: {} + emoji-regex@10.6.0: {} + + es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} esbuild@0.27.7: @@ -1749,6 +2135,14 @@ snapshots: fsevents@2.3.3: optional: true + get-east-asian-width@1.5.0: {} + + is-interactive@2.0.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + joycon@3.1.1: {} lightningcss-android-arm64@1.32.0: @@ -1806,10 +2200,19 @@ snapshots: load-tsconfig@0.2.5: {} + log-symbols@6.0.0: + dependencies: + chalk: 5.6.2 + is-unicode-supported: 1.3.0 + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + mimic-function@5.0.1: {} + + mkdirp@3.0.1: {} + mlly@1.8.2: dependencies: acorn: 8.16.0 @@ -1831,6 +2234,42 @@ snapshots: obug@2.1.1: {} + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + ora@8.2.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + oxc-parser@0.76.0: + dependencies: + '@oxc-project/types': 0.76.0 + optionalDependencies: + '@oxc-parser/binding-android-arm64': 0.76.0 + '@oxc-parser/binding-darwin-arm64': 0.76.0 + '@oxc-parser/binding-darwin-x64': 0.76.0 + '@oxc-parser/binding-freebsd-x64': 0.76.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.76.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.76.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.76.0 + '@oxc-parser/binding-linux-arm64-musl': 0.76.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.76.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.76.0 + '@oxc-parser/binding-linux-x64-gnu': 0.76.0 + '@oxc-parser/binding-linux-x64-musl': 0.76.0 + '@oxc-parser/binding-wasm32-wasi': 0.76.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.76.0 + '@oxc-parser/binding-win32-x64-msvc': 0.76.0 + pathe@2.0.3: {} picocolors@1.1.1: {} @@ -1861,6 +2300,11 @@ snapshots: resolve-from@5.0.0: {} + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + rolldown@1.0.0-rc.15: dependencies: '@oxc-project/types': 0.124.0 @@ -1917,16 +2361,16 @@ snapshots: siginfo@2.0.0: {} + signal-exit@4.1.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - optional: true - source-map@0.6.1: - optional: true + source-map@0.6.1: {} source-map@0.7.6: {} @@ -1934,6 +2378,18 @@ snapshots: std-env@4.0.0: {} + stdin-discarder@0.2.2: {} + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -1950,7 +2406,6 @@ snapshots: acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 - optional: true thenify-all@1.6.0: dependencies: @@ -2008,6 +2463,8 @@ snapshots: - tsx - yaml + typescript@5.9.3: {} + typescript@6.0.2: {} ufo@1.6.3: {} @@ -2016,6 +2473,10 @@ snapshots: undici-types@7.19.2: {} + unenv@2.0.0-rc.24: + dependencies: + pathe: 2.0.3 + vite@8.0.8(@types/node@25.2.3)(esbuild@0.28.0)(terser@5.46.1): dependencies: lightningcss: 1.32.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 4d0216e..d44052b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,3 @@ packages: - packages/* - wasm-sandboxes/* - -overrides: - '@capsule-run/sdk': link:../../Library/pnpm/global/5/node_modules/@capsule-run/sdk