a reactive (signals based) hypermedia web framework (wip) stormlightlabs.github.io/volt/
hypermedia frontend signals
0
fork

Configure Feed

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

chore: setup monorepo

* move library to separate package
* added package.json for docs

+984 -212
+43 -41
ROADMAP.md
··· 1 1 # Roadmap 2 2 3 - | Version | Milestone | Summary | 4 - | ------- | ---------------------------------------------------------- | ------------------------------------------------------------------------ | 5 - | | [Foundations](#foundations) | Initial project setup, tooling, and reactive signal prototype. | 6 - | | [Reactivity & Bindings](#reactivity--bindings) | Core DOM bindings (`data-x-*`) and declarative updates. | 7 - | | [Actions & Effects](#actions--effects) | Event system and derived reactivity primitives. | 8 - | | [Plugins Framework](#plugins-framework) | Modular plugin system and first built-in plugin set. | 9 - | | [Streaming & Patch Engine](#streaming--patch-engine) | SSE/WebSocket JSON patch streaming. | 10 - | | [Persistence & Offline](#persistence--offline) | State persistence, storage sync, and fallback behaviors. | 11 - | v0.1.0 | [Markup Based Reactivity](#markup-based-reactivity) | Allow users to write apps without any bundled JS | 12 - | v0.2.0 | [Animation & Transitions](#animation--transitions) | Declarative animation layer and browser View Transition API integration. | 13 - | v0.3.0 | [Inspector & Developer Tools](#inspector--developer-tools) | Built-in signal inspector, debug overlays, and dev tooling. | 14 - | v0.4.0 | [Docs & Stability](#documentation--stability-pass) | Comprehensive docs, tests, and performance review. | 15 - | v0.5.0 | PWA Capabilities | TODO | 16 - | v1.0.0 | [Release](#stable-release) | Public API freeze, plugin registry, and versioned documentation. | 3 + | Version | State | Milestone | Summary | 4 + | ------- | ----- | ---------------------------------------------------------- | ------------------------------------------------------------------------ | 5 + | | ✓ | [Foundations](#foundations) | Initial project setup, tooling, and reactive signal prototype. | 6 + | | ✓ | [Reactivity & Bindings](#reactivity--bindings) | Core DOM bindings (`data-x-*`) and declarative updates. | 7 + | | | [Actions & Effects](#actions--effects) | Event system and derived reactivity primitives. | 8 + | | | [Plugins Framework](#plugins-framework) | Modular plugin system and first built-in plugin set. | 9 + | | | [Streaming & Patch Engine](#streaming--patch-engine) | SSE/WebSocket JSON patch streaming. | 10 + | | | [Persistence & Offline](#persistence--offline) | State persistence, storage sync, and fallback behaviors. | 11 + | v0.1.0 | ✓ | [Markup Based Reactivity](#markup-based-reactivity) | Allow users to write apps without any bundled JS | 12 + | v0.2.0 | | [Animation & Transitions](#animation--transitions) | Declarative animation layer and browser View Transition API integration. | 13 + | v0.3.0 | | [Inspector & Developer Tools](#inspector--developer-tools) | Built-in signal inspector, debug overlays, and dev tooling. | 14 + | v0.4.0 | | [Docs & Stability](#documentation--stability-pass) | Comprehensive docs, tests, and performance review. | 15 + | v0.5.0 | | PWA Capabilities | TODO | 16 + | v1.0.0 | | [Release](#stable-release) | Public API freeze, plugin registry, and versioned documentation. | 17 17 18 18 ## Details 19 + 20 + _NOTE_: `data-x-*` is now `data-volt-*` 19 21 20 22 ### Foundations 21 23 22 24 **Goal:** Establish project structure, tooling, and base reactivity primitives. 23 25 **Outcome:** A bootable TypeScript project with working reactivity primitives and test coverage. 24 26 **Deliverables:** 25 - - Project scaffolding 26 - - `signal()` implementation with subscribe/set/get 27 - - Initial tests (signals, reactivity basics) 27 + - ✓ Project scaffolding 28 + - ✓ `signal()` implementation with subscribe/set/get 29 + - ✓ Initial tests (signals, reactivity basics) 28 30 29 31 ### Reactivity & Bindings 30 32 31 33 **Goal:** Connect signals to DOM via declarative `data-x-*` bindings. 32 34 **Outcome:** Reactive text/attribute binding with signals → DOM synchronization. 33 35 **Deliverables:** 34 - - `data-x-text`, `data-x-html`, `data-x-class` binding parser 35 - - Expression evaluator (safe, minimal subset) 36 - - DOM mutation batching & cleanup 37 - - Internal test harness for bindings 38 - - DOM Testing Library integration tests 36 + - ✓ `data-x-text`, `data-x-html`, `data-x-class` binding parser 37 + - ✓ Expression evaluator (safe, minimal subset) 38 + - ✓ DOM mutation batching & cleanup 39 + - ✓ Internal test harness for bindings 40 + - ✓ DOM Testing Library integration tests 39 41 40 42 ### Actions & Effects 41 43 42 44 **Goal:** Add event-driven behavior and derived reactivity. 43 45 **Outcome:** Fully functional reactive UI layer with event bindings and computed updates. 44 46 **Deliverables:** 45 - - Event binding system (`data-x-on-*`) 47 + - ✓ Event binding system (`data-x-on-*`) 46 48 - `$el` and `$event` scoped references 47 - - Derived signals (`computed`, `effect`) 49 + - ✓ Derived signals (`computed`, `effect`) 48 50 - Async effects (e.g., fetch triggers) 49 51 50 52 ### Plugins Framework ··· 52 54 **Goal:** Build a modular plugin architecture with dynamic registration. 53 55 **Outcome:** Stable plugin API enabling community-driven extensions. 54 56 **Deliverables:** 55 - - `registerPlugin(name, fn)` API 57 + - ✓ `registerPlugin(name, fn)` API 56 58 - Context and lifecycle hooks 57 - - Built-ins: 58 - - `data-x-persist` 59 - - `data-x-scroll` 60 - - `data-x-url` 61 - - Tests & registry 59 + - ✓ Built-ins: 60 + - ✓ `data-x-persist` 61 + - ✓ `data-x-scroll` 62 + - ✓ `data-x-url` 63 + - ✓ Tests & registry 62 64 - Example in docs/examples/plugins.md 63 - - Setup test coverage with generous thresholds (~50%) 65 + - ✓ Setup test coverage with generous thresholds (~50%) 64 66 - End-to-end examples (counter, form, live field updates) 65 67 - `docs/examples/reactivity.md` 66 68 - `actions`, `effects`, `signals` ··· 68 70 ### Streaming & Patch Engine 69 71 70 72 **Goal:** Enable real-time updates via SSE/WebSocket streaming. 71 - **Outcome:** Volt.js can receive and apply live updates from the server — the “reactive stream” milestone. 73 + **Outcome:** Volt.js can receive and apply live updates from the server 72 74 **Deliverables:** 73 75 - JSON Patch parser and DOM applier 74 76 - `data-x-stream` attribute ··· 83 85 **Goal:** Introduce persistent storage and offline-first behaviors. 84 86 **Outcome:** Resilient state persistence and offline replay built into Volt.js. 85 87 **Deliverables:** 86 - - Persistent signals (localStorage, sessionStorage, indexedDb) 87 - - Storage plugin (`data-x-persist`) 88 + - ✓ Persistent signals (localStorage, sessionStorage, indexedDb) 89 + - ✓ Storage plugin (`data-x-persist`) 88 90 - Offline queue for deferred stream events 89 91 - Sync strategy API (merge, overwrite, patch) 90 92 - Example apps: note editor ([golang](#examples)), counter with persistence ([spa](#examples)) ··· 94 96 **Goal:** Add animation primitives for smooth UI transitions. 95 97 **Outcome:** Volt.js enables declarative animations and view transitions alongside reactivity. 96 98 **Deliverables:** 97 - - `data-x-animate` plugin 99 + - `data-volt-animate` plugin 98 100 - View Transition API support (when available) 99 101 - CSS-based transition helpers 100 102 - Timing utilities (`transition`, `raf`) ··· 116 118 **Goal:** Prepare for stable release by finalizing docs, polish, and performance. 117 119 **Outcome:** Volt.js is stable, documented, performant, and ready for production. 118 120 **Deliverables:** 119 - - Documentation site (VitePress) 121 + - ✓ Documentation site (VitePress) 120 122 - Full API reference with examples 121 123 - Migration and versioning guide 122 124 - Performance benchmarks (vs htmx, Alpine) ··· 139 141 **Goal:** Allow Volt apps to declare state, bindings, and behavior entirely in HTML markup 140 142 **Outcome:** Authors can ship examples without companion JavaScript bundles 141 143 **Deliverables:** 142 - - Auto-bootstrapping loader (`volt.min.js`) that detects `data-volt` roots and hydrates one scope per root. 143 - - Declarative state primitives (`data-volt-state`, `data-volt-computed:*`) aligned with `docs/reactivity-spec.md`. 144 - - Binding directives for text, attributes, classes, styles, and two-way form controls (`data-volt-[bind|text|model|class:*]`). 145 - - Control-flow directives (`data-volt-for`, `data-volt-if`, `data-volt-else`) with lifecycle-safe teardown. 146 - - Declarative event system (`data-volt-on:*`) with helper surface for list mutations and plugin hooks. 144 + - ✓ Auto-bootstrapping loader (`volt.min.js`) that detects `data-volt` roots and hydrates one scope per root. 145 + - ✓ Declarative state primitives (`data-volt-state`, `data-volt-computed:*`) aligned with `docs/reactivity-spec.md`. 146 + - ✓ Binding directives for text, attributes, classes, styles, and two-way form controls (`data-volt-[bind|text|model|class:*]`). 147 + - ✓ Control-flow directives (`data-volt-for`, `data-volt-if`, `data-volt-else`) with lifecycle-safe teardown. 148 + - ✓ Declarative event system (`data-volt-on:*`) with helper surface for list mutations and plugin hooks. 147 149 - SSR compatibility helpers and sandboxed expression evaluator per the security contract. 148 150 - Integration tests covering TodoMVC and hydration edge cases. 149 151
+1 -12
cli/package.json
··· 17 17 "test:run": "vitest run", 18 18 "typecheck": "tsc --noEmit" 19 19 }, 20 - "devDependencies": { 21 - "@eslint/compat": "^1.4.0", 22 - "@eslint/js": "^9.38.0", 23 - "@types/node": "^24.7.2", 24 - "bumpp": "^10.3.1", 25 - "eslint": "^9.38.0", 26 - "eslint-plugin-unicorn": "^61.0.2", 27 - "globals": "^16.4.0", 28 - "tsdown": "^0.15.6", 29 - "typescript-eslint": "^8.46.1", 30 - "vitest": "^3.2.4" 31 - }, 20 + "devDependencies": { "bumpp": "^10.3.1", "tsdown": "^0.15.6" }, 32 21 "dependencies": { "chalk": "^5.6.2", "commander": "^14.0.1", "terser": "^5.44.0", "typescript": "^5.9.3" } 33 22 }
+6 -4
cli/src/commands/css-docs.ts
··· 1 1 import { mkdir, readFile, writeFile } from "node:fs/promises"; 2 2 import path from "node:path"; 3 - import { echo } from "../console/echo"; 3 + import { echo } from "../console/echo.js"; 4 4 import { trackVersion } from "../versioning/tracker.js"; 5 + import { getLibSrcPath, getDocsPath } from "../utils/paths.js"; 5 6 6 7 type CSSComment = { selector: string; comment: string }; 7 8 ··· 363 364 * Generates semantics.md from base.css 364 365 */ 365 366 export async function cssDocsCommand(): Promise<void> { 366 - const projectRoot = path.join(process.cwd(), ".."); 367 - const cssPath = path.join(projectRoot, "src", "styles", "base.css"); 368 - const outputDir = path.join(projectRoot, "docs", "css"); 367 + const libSrcPath = await getLibSrcPath(); 368 + const docsPath = await getDocsPath(); 369 + const cssPath = path.join(libSrcPath, "styles", "base.css"); 370 + const outputDir = path.join(docsPath, "css"); 369 371 const outputPath = path.join(outputDir, "semantics.md"); 370 372 371 373 echo.title("\nGenerating CSS Documentation\n");
+4 -3
cli/src/commands/docs.ts
··· 3 3 import ts from "typescript"; 4 4 import { echo } from "../console/echo.js"; 5 5 import { trackVersion } from "../versioning/tracker.js"; 6 + import { getLibSrcPath, getDocsPath } from "../utils/paths.js"; 6 7 7 8 type Member = { name: string; type: string; docs?: string }; 8 9 ··· 283 284 * Docs command implementation 284 285 */ 285 286 export async function docsCommand(): Promise<void> { 286 - const root = path.join(process.cwd(), ".."); 287 - const srcDir = path.join(root, "src"); 288 - const docsDir = path.join(root, "docs", "api"); 287 + const srcDir = await getLibSrcPath(); 288 + const docsPath = await getDocsPath(); 289 + const docsDir = path.join(docsPath, "api"); 289 290 290 291 echo.title("\nGenerating API Documentation\n"); 291 292
+12 -51
cli/src/commands/example.ts
··· 3 3 import path from "node:path"; 4 4 import { minify as terserMinify } from "terser"; 5 5 import { echo } from "../console/echo.js"; 6 + import { findMonorepoRoot, getLibPath, getExamplesPath } from "../utils/paths.js"; 6 7 7 8 type BuildArtifacts = { jsPath: string; cssPath: string }; 8 9 9 10 /** 10 - * Find the project root by walking up the directory tree. 11 - * 12 - * Looks for a directory containing dist/assets/ or package.json with name "volt" 13 - */ 14 - async function findProjectRoot(startDir: string): Promise<string> { 15 - let currentDir = startDir; 16 - const maxDepth = 10; 17 - let depth = 0; 18 - 19 - while (depth < maxDepth) { 20 - const distAssetsPath = path.join(currentDir, "dist", "assets"); 21 - const packageJsonPath = path.join(currentDir, "package.json"); 22 - 23 - if (existsSync(distAssetsPath)) { 24 - return currentDir; 25 - } 26 - 27 - if (existsSync(packageJsonPath)) { 28 - try { 29 - const pkgContent = JSON.parse(await readFile(packageJsonPath, "utf8")); 30 - if (pkgContent.name === "volt") { 31 - return currentDir; 32 - } 33 - } catch { 34 - // No-Op: Continue searching 35 - } 36 - } 37 - 38 - const parentDir = path.dirname(currentDir); 39 - if (parentDir === currentDir) { 40 - throw new Error("Could not find Volt project root. Make sure you're in the Volt project directory."); 41 - } 42 - 43 - currentDir = parentDir; 44 - depth++; 45 - } 46 - 47 - throw new Error("Could not find Volt project root. Make sure you're in the Volt project directory."); 48 - } 49 - 50 - /** 51 - * Build the library using Vite in library mode 11 + * Build the library using pnpm workspace commands 52 12 */ 53 - async function buildLibrary(root: string): Promise<void> { 13 + async function buildLibrary(): Promise<void> { 54 14 const { execSync } = await import("node:child_process"); 15 + const monorepoRoot = await findMonorepoRoot(); 55 16 56 17 try { 57 - execSync("pnpm vite build --mode lib", { cwd: root, stdio: "inherit" }); 18 + execSync("pnpm --filter volt build:lib", { cwd: monorepoRoot, stdio: "inherit" }); 58 19 } catch { 59 20 throw new Error("Library build failed. Make sure Vite is configured correctly."); 60 21 } ··· 63 24 /** 64 25 * Find the library build artifacts in dist/ 65 26 */ 66 - async function findBuildArtifacts(root: string): Promise<BuildArtifacts> { 67 - const distDir = path.join(root, "dist"); 27 + async function findBuildArtifacts(): Promise<BuildArtifacts> { 28 + const libPath = await getLibPath(); 29 + const distDir = path.join(libPath, "dist"); 68 30 const jsPath = path.join(distDir, "volt.js"); 69 - const cssPath = path.join(root, "src", "styles", "base.css"); 31 + const cssPath = path.join(libPath, "src", "styles", "base.css"); 70 32 71 33 if (!existsSync(jsPath)) { 72 34 throw new Error(`Library JS not found at ${jsPath}. Build may have failed.`); ··· 298 260 const mode = options.mode || "programmatic"; 299 261 const standalone = options.standalone || false; 300 262 301 - const root = await findProjectRoot(process.cwd()); 302 - const examplesDir = path.join(root, "examples"); 263 + const examplesDir = await getExamplesPath(); 303 264 const exampleDir = path.join(examplesDir, name); 304 265 305 266 echo.title(`\nCreating example: ${name}\n`); ··· 307 268 echo.info(`Standalone: ${standalone ? "Yes" : "No (shared)"}\n`); 308 269 309 270 echo.info("Building Volt.js library..."); 310 - await buildLibrary(root); 271 + await buildLibrary(); 311 272 312 273 echo.info("Finding build artifacts..."); 313 - const artifacts = await findBuildArtifacts(root); 274 + const artifacts = await findBuildArtifacts(); 314 275 315 276 echo.info("Creating minified build artifacts..."); 316 277 await createMinifiedArtifacts(artifacts, examplesDir);
+6 -6
cli/src/commands/stats.ts
··· 1 1 import { readdir, readFile, stat } from "node:fs/promises"; 2 2 import path from "node:path"; 3 3 import { echo } from "../console/echo.js"; 4 + import { getLibSrcPath, getLibTestPath, findMonorepoRoot } from "../utils/paths.js"; 4 5 5 6 type FileStats = { path: string; lines: number; totalLines: number }; 6 7 type DirectoryStats = { totalLines: number; codeLines: number; files: FileStats[] }; ··· 89 90 * Stats command implementation 90 91 */ 91 92 export async function statsCommand(includeFull: boolean): Promise<void> { 92 - const projectRoot = path.join(process.cwd(), ".."); 93 - const srcDir = path.join(projectRoot, "src"); 94 - const testDir = path.join(projectRoot, "test"); 93 + const monorepoRoot = await findMonorepoRoot(); 94 + const srcDir = await getLibSrcPath(); 95 95 96 96 echo.title("\nVolt.js Code Statistics\n"); 97 97 98 - const srcStats = await collectStats(srcDir, projectRoot); 98 + const srcStats = await collectStats(srcDir, monorepoRoot); 99 99 100 100 echo.label("Source Code (src/):"); 101 101 echo.text(` Files: ${srcStats.files.length}`); ··· 107 107 let totalTotal = srcStats.totalLines; 108 108 let totalFileCount = srcStats.files.length; 109 109 110 - // Include tests if --full flag is set 111 110 if (includeFull) { 112 - const testStats = await collectStats(testDir, projectRoot); 111 + const testDir = await getLibTestPath(); 112 + const testStats = await collectStats(testDir, monorepoRoot); 113 113 114 114 echo.label("\nTest Code (test/):"); 115 115 echo.text(` Files: ${testStats.files.length}`);
+94
cli/src/utils/paths.ts
··· 1 + import { existsSync } from "node:fs"; 2 + import { readFile } from "node:fs/promises"; 3 + import path from "node:path"; 4 + 5 + /** 6 + * Find the monorepo root by walking up the directory tree. 7 + * 8 + * Looks for pnpm-workspace.yaml with valid workspace packages or a package.json with workspaces defined. 9 + */ 10 + export async function findMonorepoRoot(startDir: string = process.cwd()): Promise<string> { 11 + let currentDir = startDir; 12 + const maxDepth = 10; 13 + let depth = 0; 14 + 15 + while (depth < maxDepth) { 16 + const workspaceYaml = path.join(currentDir, "pnpm-workspace.yaml"); 17 + const packageJson = path.join(currentDir, "package.json"); 18 + 19 + if (existsSync(workspaceYaml)) { 20 + const hasLibPackage = existsSync(path.join(currentDir, "lib", "package.json")); 21 + const hasCliPackage = existsSync(path.join(currentDir, "cli", "package.json")); 22 + 23 + if (hasLibPackage || hasCliPackage) { 24 + return currentDir; 25 + } 26 + } 27 + 28 + if (existsSync(packageJson)) { 29 + try { 30 + const pkgContent = JSON.parse(await readFile(packageJson, "utf8")); 31 + if (pkgContent.workspaces || pkgContent.private) { 32 + const hasLibPackage = existsSync(path.join(currentDir, "lib", "package.json")); 33 + const hasCliPackage = existsSync(path.join(currentDir, "cli", "package.json")); 34 + 35 + if (hasLibPackage || hasCliPackage) { 36 + return currentDir; 37 + } 38 + } 39 + } catch { 40 + // No-Op: Continue searching 41 + } 42 + } 43 + 44 + const parentDir = path.dirname(currentDir); 45 + if (parentDir === currentDir) { 46 + throw new Error("Could not find monorepo root. Make sure you're in the Volt project directory."); 47 + } 48 + 49 + currentDir = parentDir; 50 + depth++; 51 + } 52 + 53 + throw new Error("Could not find monorepo root. Make sure you're in the Volt project directory."); 54 + } 55 + 56 + /** 57 + * Get the path to the lib package directory 58 + */ 59 + export async function getLibPath(startDir?: string): Promise<string> { 60 + const root = await findMonorepoRoot(startDir); 61 + return path.join(root, "lib"); 62 + } 63 + 64 + /** 65 + * Get the path to the docs package directory 66 + */ 67 + export async function getDocsPath(startDir?: string): Promise<string> { 68 + const root = await findMonorepoRoot(startDir); 69 + return path.join(root, "docs"); 70 + } 71 + 72 + /** 73 + * Get the path to the examples directory 74 + */ 75 + export async function getExamplesPath(startDir?: string): Promise<string> { 76 + const root = await findMonorepoRoot(startDir); 77 + return path.join(root, "examples"); 78 + } 79 + 80 + /** 81 + * Get the path to the lib source directory 82 + */ 83 + export async function getLibSrcPath(startDir?: string): Promise<string> { 84 + const libPath = await getLibPath(startDir); 85 + return path.join(libPath, "src"); 86 + } 87 + 88 + /** 89 + * Get the path to the lib test directory 90 + */ 91 + export async function getLibTestPath(startDir?: string): Promise<string> { 92 + const libPath = await getLibPath(startDir); 93 + return path.join(libPath, "test"); 94 + }
+6 -3
cli/tests/docs.test.ts
··· 1 1 import { readFile } from "node:fs/promises"; 2 2 import { join } from "node:path"; 3 3 import { describe, expect, it } from "vitest"; 4 + import { getLibSrcPath } from "../src/utils/paths.js"; 4 5 5 6 describe("docs generation", () => { 6 7 it("should extract function documentation", async () => { 7 - const testFile = join(process.cwd(), "..", "src", "core", "signal.ts"); 8 + const srcPath = await getLibSrcPath(); 9 + const testFile = join(srcPath, "core", "signal.ts"); 8 10 const content = await readFile(testFile, "utf-8"); 9 11 10 12 expect(content).toContain("Creates a new signal"); ··· 14 16 }); 15 17 16 18 it("should extract interface documentation", async () => { 17 - const testFile = join(process.cwd(), "..", "src", "core", "signal.ts"); 18 - const content = await readFile(testFile, "utf-8"); 19 + const srcPath = await getLibSrcPath(); 20 + const typesFile = join(srcPath, "types", "volt.d.ts"); 21 + const content = await readFile(typesFile, "utf-8"); 19 22 20 23 expect(content).toContain("interface Signal"); 21 24 expect(content).toContain("interface ComputedSignal");
+81
cli/tests/paths.test.ts
··· 1 + import { existsSync } from "node:fs"; 2 + import { join } from "node:path"; 3 + import { describe, expect, it } from "vitest"; 4 + import { 5 + findMonorepoRoot, 6 + getDocsPath, 7 + getExamplesPath, 8 + getLibPath, 9 + getLibSrcPath, 10 + getLibTestPath, 11 + } from "../src/utils/paths.js"; 12 + 13 + describe("path utilities", () => { 14 + it("should find monorepo root from cli directory", async () => { 15 + const root = await findMonorepoRoot(process.cwd()); 16 + 17 + expect(root).toBeTruthy(); 18 + expect(existsSync(join(root, "pnpm-workspace.yaml"))).toBe(true); 19 + }); 20 + 21 + it("should find lib package path", async () => { 22 + const libPath = await getLibPath(); 23 + 24 + expect(libPath).toBeTruthy(); 25 + expect(libPath).toContain("lib"); 26 + expect(existsSync(join(libPath, "package.json"))).toBe(true); 27 + }); 28 + 29 + it("should find lib src path", async () => { 30 + const srcPath = await getLibSrcPath(); 31 + 32 + expect(srcPath).toBeTruthy(); 33 + expect(srcPath).toContain("lib"); 34 + expect(srcPath).toContain("src"); 35 + expect(existsSync(srcPath)).toBe(true); 36 + }); 37 + 38 + it("should find lib test path", async () => { 39 + const testPath = await getLibTestPath(); 40 + 41 + expect(testPath).toBeTruthy(); 42 + expect(testPath).toContain("lib"); 43 + expect(testPath).toContain("test"); 44 + expect(existsSync(testPath)).toBe(true); 45 + }); 46 + 47 + it("should find docs package path", async () => { 48 + const docsPath = await getDocsPath(); 49 + 50 + expect(docsPath).toBeTruthy(); 51 + expect(docsPath).toContain("docs"); 52 + expect(existsSync(join(docsPath, "package.json"))).toBe(true); 53 + }); 54 + 55 + it("should find examples directory path", async () => { 56 + const examplesPath = await getExamplesPath(); 57 + 58 + expect(examplesPath).toBeTruthy(); 59 + expect(examplesPath).toContain("examples"); 60 + expect(existsSync(examplesPath)).toBe(true); 61 + }); 62 + 63 + it("should return consistent paths when called multiple times", async () => { 64 + const root1 = await findMonorepoRoot(); 65 + const root2 = await findMonorepoRoot(); 66 + 67 + expect(root1).toBe(root2); 68 + 69 + const libPath1 = await getLibPath(); 70 + const libPath2 = await getLibPath(); 71 + 72 + expect(libPath1).toBe(libPath2); 73 + }); 74 + 75 + it("should handle being called from monorepo root", async () => { 76 + const root = await findMonorepoRoot(); 77 + const rootFromRoot = await findMonorepoRoot(root); 78 + 79 + expect(root).toBe(rootFromRoot); 80 + }); 81 + });
+3 -1
cli/tests/stats.test.ts
··· 1 1 import { readFile } from "node:fs/promises"; 2 2 import { join } from "node:path"; 3 3 import { describe, expect, it } from "vitest"; 4 + import { getLibSrcPath } from "../src/utils/paths.js"; 4 5 5 6 describe("stats command", () => { 6 7 it("should count lines excluding doc comments", async () => { 7 - const testDir = join(process.cwd(), "..", "src", "core"); 8 + const srcPath = await getLibSrcPath(); 9 + const testDir = join(srcPath, "core"); 8 10 const signalFile = join(testDir, "signal.ts"); 9 11 const content = await readFile(signalFile, "utf-8"); 10 12
+8
docs/package.json
··· 1 + { 2 + "name": "@volt/docs", 3 + "version": "0.1.0", 4 + "private": true, 5 + "type": "module", 6 + "scripts": { "dev": "vitepress dev", "build": "vitepress build", "preview": "vitepress preview" }, 7 + "devDependencies": { "vitepress": "^1.6.4", "vue": "^3.5.22" } 8 + }
eslint.config.js lib/eslint.config.js
index.html lib/index.html
+22
lib/package.json
··· 1 + { 2 + "name": "volt", 3 + "private": true, 4 + "version": "0.1.0", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite", 8 + "build": "tsc && vite build", 9 + "build:lib": "tsc && vite build --mode lib", 10 + "preview": "vite preview", 11 + "test": "vitest", 12 + "test:run": "vitest run" 13 + }, 14 + "devDependencies": { 15 + "@testing-library/dom": "^10.4.1", 16 + "@testing-library/jest-dom": "^6.9.1", 17 + "@vitest/coverage-v8": "3.2.4", 18 + "dprint": "^0.50.2", 19 + "jsdom": "^27.0.0", 20 + "vite": "npm:rolldown-vite@7.1.14" 21 + } 22 + }
+14 -21
package.json
··· 1 1 { 2 - "name": "volt", 2 + "name": "volt-monorepo", 3 + "version": "1.0.0", 3 4 "private": true, 4 - "version": "0.1.0", 5 5 "type": "module", 6 + "workspaces": ["lib", "cli", "docs"], 6 7 "scripts": { 7 - "dev": "vite", 8 - "build": "tsc && vite build", 9 - "build:lib": "tsc && vite build --mode lib", 10 - "preview": "vite preview", 11 - "test": "vitest", 12 - "test:ui": "vitest --ui", 13 - "test:run": "vitest run", 14 - "docs:dev": "vitepress dev docs", 15 - "docs:build": "vitepress build docs", 16 - "docs:preview": "vitepress preview docs" 8 + "dev": "pnpm --filter volt dev", 9 + "build": "pnpm -r build", 10 + "preview": "pnpm --filter volt preview", 11 + "test": "pnpm -r test", 12 + "test:ui": "pnpm --filter volt test:ui", 13 + "test:run": "pnpm -r test:run", 14 + "docs:dev": "pnpm --filter @volt/docs dev", 15 + "docs:build": "pnpm --filter @volt/docs build", 16 + "docs:preview": "pnpm --filter @volt/docs preview", 17 + "typecheck": "pnpm -r typecheck" 17 18 }, 18 19 "devDependencies": { 19 20 "@eslint/compat": "^1.4.0", 20 21 "@eslint/js": "^9.38.0", 21 - "@testing-library/dom": "^10.4.1", 22 - "@testing-library/jest-dom": "^6.9.1", 23 22 "@types/node": "^24.8.1", 24 - "@vitest/coverage-v8": "3.2.4", 25 - "dprint": "^0.50.2", 26 23 "eslint": "^9.38.0", 27 24 "eslint-plugin-unicorn": "^61.0.2", 28 25 "globals": "^16.4.0", 29 - "jsdom": "^27.0.0", 30 26 "typescript": "~5.9.3", 31 27 "typescript-eslint": "^8.46.1", 32 - "vite": "npm:rolldown-vite@7.1.14", 33 - "vitepress": "^1.6.4", 34 - "vitest": "^3.2.4", 35 - "vue": "^3.5.22" 28 + "vitest": "^3.2.4" 36 29 }, 37 30 "pnpm": { "overrides": { "vite": "npm:rolldown-vite@7.1.14" }, "onlyBuiltDependencies": ["dprint"] } 38 31 }
+679 -69
pnpm-lock.yaml
··· 13 13 devDependencies: 14 14 '@eslint/compat': 15 15 specifier: ^1.4.0 16 - version: 1.4.0(eslint@9.38.0) 16 + version: 1.4.0(eslint@9.38.0(jiti@2.6.1)) 17 17 '@eslint/js': 18 18 specifier: ^9.38.0 19 19 version: 9.38.0 20 - '@testing-library/dom': 21 - specifier: ^10.4.1 22 - version: 10.4.1 23 - '@testing-library/jest-dom': 24 - specifier: ^6.9.1 25 - version: 6.9.1 26 20 '@types/node': 27 21 specifier: ^24.8.1 28 22 version: 24.8.1 29 - '@vitest/coverage-v8': 30 - specifier: 3.2.4 31 - version: 3.2.4(vitest@3.2.4(@types/node@24.8.1)(jsdom@27.0.0(postcss@8.5.6))) 32 - dprint: 33 - specifier: ^0.50.2 34 - version: 0.50.2 35 23 eslint: 36 24 specifier: ^9.38.0 37 - version: 9.38.0 25 + version: 9.38.0(jiti@2.6.1) 38 26 eslint-plugin-unicorn: 39 27 specifier: ^61.0.2 40 - version: 61.0.2(eslint@9.38.0) 28 + version: 61.0.2(eslint@9.38.0(jiti@2.6.1)) 41 29 globals: 42 30 specifier: ^16.4.0 43 31 version: 16.4.0 44 - jsdom: 45 - specifier: ^27.0.0 46 - version: 27.0.0(postcss@8.5.6) 47 32 typescript: 48 33 specifier: ~5.9.3 49 34 version: 5.9.3 50 35 typescript-eslint: 51 36 specifier: ^8.46.1 52 - version: 8.46.1(eslint@9.38.0)(typescript@5.9.3) 53 - vite: 54 - specifier: npm:rolldown-vite@7.1.14 55 - version: rolldown-vite@7.1.14(@types/node@24.8.1) 56 - vitepress: 57 - specifier: ^1.6.4 58 - version: 1.6.4(@algolia/client-search@5.40.1)(@types/node@24.8.1)(change-case@5.4.4)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3) 37 + version: 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 59 38 vitest: 60 39 specifier: ^3.2.4 61 - version: 3.2.4(@types/node@24.8.1)(jsdom@27.0.0(postcss@8.5.6)) 40 + version: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1) 41 + 42 + cli: 43 + dependencies: 44 + chalk: 45 + specifier: ^5.6.2 46 + version: 5.6.2 47 + commander: 48 + specifier: ^14.0.1 49 + version: 14.0.1 50 + terser: 51 + specifier: ^5.44.0 52 + version: 5.44.0 53 + typescript: 54 + specifier: ^5.9.3 55 + version: 5.9.3 56 + devDependencies: 57 + bumpp: 58 + specifier: ^10.3.1 59 + version: 10.3.1(magicast@0.3.5) 60 + tsdown: 61 + specifier: ^0.15.6 62 + version: 0.15.7(typescript@5.9.3) 63 + 64 + docs: 65 + devDependencies: 66 + vitepress: 67 + specifier: ^1.6.4 68 + version: 1.6.4(@algolia/client-search@5.40.1)(@types/node@24.8.1)(change-case@5.4.4)(jiti@2.6.1)(postcss@8.5.6)(search-insights@2.17.3)(terser@5.44.0)(typescript@5.9.3)(yaml@2.8.1) 62 69 vue: 63 70 specifier: ^3.5.22 64 71 version: 3.5.22(typescript@5.9.3) 72 + 73 + lib: 74 + devDependencies: 75 + '@testing-library/dom': 76 + specifier: ^10.4.1 77 + version: 10.4.1 78 + '@testing-library/jest-dom': 79 + specifier: ^6.9.1 80 + version: 6.9.1 81 + '@vitest/coverage-v8': 82 + specifier: 3.2.4 83 + version: 3.2.4(vitest@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1)) 84 + dprint: 85 + specifier: ^0.50.2 86 + version: 0.50.2 87 + jsdom: 88 + specifier: ^27.0.0 89 + version: 27.0.0(postcss@8.5.6) 90 + vite: 91 + specifier: npm:rolldown-vite@7.1.14 92 + version: rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) 65 93 66 94 packages: 67 95 ··· 159 187 160 188 '@babel/code-frame@7.27.1': 161 189 resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 190 + engines: {node: '>=6.9.0'} 191 + 192 + '@babel/generator@7.28.3': 193 + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} 162 194 engines: {node: '>=6.9.0'} 163 195 164 196 '@babel/helper-string-parser@7.27.1': ··· 389 421 resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 390 422 engines: {node: '>=6.0.0'} 391 423 424 + '@jridgewell/source-map@0.3.11': 425 + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} 426 + 392 427 '@jridgewell/sourcemap-codec@1.5.5': 393 428 resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 394 429 ··· 417 452 '@oxc-project/types@0.93.0': 418 453 resolution: {integrity: sha512-yNtwmWZIBtJsMr5TEfoZFDxIWV6OdScOpza/f5YxbqUMJk+j6QX3Cf3jgZShGEFYWQJ5j9mJ6jM0tZHu2J9Yrg==} 419 454 455 + '@oxc-project/types@0.94.0': 456 + resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} 457 + 420 458 '@pkgjs/parseargs@0.11.0': 421 459 resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 422 460 engines: {node: '>=14'} 423 461 462 + '@quansync/fs@0.1.5': 463 + resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} 464 + 424 465 '@rolldown/binding-android-arm64@1.0.0-beta.41': 425 466 resolution: {integrity: sha512-Edflndd9lU7JVhVIvJlZhdCj5DkhYDJPIRn4Dx0RUdfc8asP9xHOI5gMd8MesDDx+BJpdIT/uAmVTearteU/mQ==} 426 467 engines: {node: ^20.19.0 || >=22.12.0} 427 468 cpu: [arm64] 428 469 os: [android] 429 470 471 + '@rolldown/binding-android-arm64@1.0.0-beta.43': 472 + resolution: {integrity: sha512-TP8bcPOb1s6UmY5syhXrDn9k0XkYcw+XaoylTN4cJxf0JOVS2j682I3aTcpfT51hOFGr2bRwNKN9RZ19XxeQbA==} 473 + engines: {node: ^20.19.0 || >=22.12.0} 474 + cpu: [arm64] 475 + os: [android] 476 + 430 477 '@rolldown/binding-darwin-arm64@1.0.0-beta.41': 431 478 resolution: {integrity: sha512-XGCzqfjdk7550PlyZRTBKbypXrB7ATtXhw/+bjtxnklLQs0mKP/XkQVOKyn9qGKSlvH8I56JLYryVxl0PCvSNw==} 479 + engines: {node: ^20.19.0 || >=22.12.0} 480 + cpu: [arm64] 481 + os: [darwin] 482 + 483 + '@rolldown/binding-darwin-arm64@1.0.0-beta.43': 484 + resolution: {integrity: sha512-kuVWnZsE4vEjMF/10SbSUyzucIW2zmdsqFghYMqy+fsjXnRHg0luTU6qWF8IqJf4Cbpm9NEZRnjIEPpAbdiSNQ==} 432 485 engines: {node: ^20.19.0 || >=22.12.0} 433 486 cpu: [arm64] 434 487 os: [darwin] ··· 439 492 cpu: [x64] 440 493 os: [darwin] 441 494 495 + '@rolldown/binding-darwin-x64@1.0.0-beta.43': 496 + resolution: {integrity: sha512-u9Ps4sh6lcmJ3vgLtyEg/x4jlhI64U0mM93Ew+tlfFdLDe7yKyA+Fe80cpr2n1mNCeZXrvTSbZluKpXQ0GxLjw==} 497 + engines: {node: ^20.19.0 || >=22.12.0} 498 + cpu: [x64] 499 + os: [darwin] 500 + 442 501 '@rolldown/binding-freebsd-x64@1.0.0-beta.41': 443 502 resolution: {integrity: sha512-ijAZETywvL+gACjbT4zBnCp5ez1JhTRs6OxRN4J+D6AzDRbU2zb01Esl51RP5/8ZOlvB37xxsRQ3X4YRVyYb3g==} 444 503 engines: {node: ^20.19.0 || >=22.12.0} 445 504 cpu: [x64] 446 505 os: [freebsd] 447 506 507 + '@rolldown/binding-freebsd-x64@1.0.0-beta.43': 508 + resolution: {integrity: sha512-h9lUtVtXgfbk/tnicMpbFfZ3DJvk5Zn2IvmlC1/e0+nUfwoc/TFqpfrRRqcNBXk/e+xiWMSKv6b0MF8N+Rtvlg==} 509 + engines: {node: ^20.19.0 || >=22.12.0} 510 + cpu: [x64] 511 + os: [freebsd] 512 + 448 513 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41': 449 514 resolution: {integrity: sha512-EgIOZt7UildXKFEFvaiLNBXm+4ggQyGe3E5Z1QP9uRcJJs9omihOnm897FwOBQdCuMvI49iBgjFrkhH+wMJ2MA==} 450 515 engines: {node: ^20.19.0 || >=22.12.0} 451 516 cpu: [arm] 452 517 os: [linux] 453 518 519 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': 520 + resolution: {integrity: sha512-IX2C6bA6wM2rX/RvD75ko+ix9yxPKjKGGq7pOhB8wGI4Z4fqX5B1nDHga/qMDmAdCAR1m9ymzxkmqhm/AFYf7A==} 521 + engines: {node: ^20.19.0 || >=22.12.0} 522 + cpu: [arm] 523 + os: [linux] 524 + 454 525 '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41': 455 526 resolution: {integrity: sha512-F8bUwJq8v/JAU8HSwgF4dztoqJ+FjdyjuvX4//3+Fbe2we9UktFeZ27U4lRMXF1vxWtdV4ey6oCSqI7yUrSEeg==} 456 527 engines: {node: ^20.19.0 || >=22.12.0} 457 528 cpu: [arm64] 458 529 os: [linux] 459 530 531 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': 532 + resolution: {integrity: sha512-mcjd57vEj+CEQbZAzUiaxNzNgwwgOpFtZBWcINm8DNscvkXl5b/s622Z1dqGNWSdrZmdjdC6LWMvu8iHM6v9sQ==} 533 + engines: {node: ^20.19.0 || >=22.12.0} 534 + cpu: [arm64] 535 + os: [linux] 536 + 460 537 '@rolldown/binding-linux-arm64-musl@1.0.0-beta.41': 461 538 resolution: {integrity: sha512-MioXcCIX/wB1pBnBoJx8q4OGucUAfC1+/X1ilKFsjDK05VwbLZGRgOVD5OJJpUQPK86DhQciNBrfOKDiatxNmg==} 462 539 engines: {node: ^20.19.0 || >=22.12.0} 463 540 cpu: [arm64] 464 541 os: [linux] 465 542 543 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': 544 + resolution: {integrity: sha512-Pa8QMwlkrztTo/1mVjZmPIQ44tCSci10TBqxzVBvXVA5CFh5EpiEi99fPSll2dHG2uT4dCOMeC6fIhyDdb0zXA==} 545 + engines: {node: ^20.19.0 || >=22.12.0} 546 + cpu: [arm64] 547 + os: [linux] 548 + 466 549 '@rolldown/binding-linux-x64-gnu@1.0.0-beta.41': 467 550 resolution: {integrity: sha512-m66M61fizvRCwt5pOEiZQMiwBL9/y0bwU/+Kc4Ce/Pef6YfoEkR28y+DzN9rMdjo8Z28NXjsDPq9nH4mXnAP0g==} 468 551 engines: {node: ^20.19.0 || >=22.12.0} 469 552 cpu: [x64] 470 553 os: [linux] 471 554 555 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': 556 + resolution: {integrity: sha512-BgynXKMjeaX4AfWLARhOKDetBOOghnSiVRjAHVvhiAaDXgdQN8e65mSmXRiVoVtD3cHXx/cfU8Gw0p0K+qYKVQ==} 557 + engines: {node: ^20.19.0 || >=22.12.0} 558 + cpu: [x64] 559 + os: [linux] 560 + 472 561 '@rolldown/binding-linux-x64-musl@1.0.0-beta.41': 473 562 resolution: {integrity: sha512-yRxlSfBvWnnfrdtJfvi9lg8xfG5mPuyoSHm0X01oiE8ArmLRvoJGHUTJydCYz+wbK2esbq5J4B4Tq9WAsOlP1Q==} 474 563 engines: {node: ^20.19.0 || >=22.12.0} 475 564 cpu: [x64] 476 565 os: [linux] 477 566 567 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': 568 + resolution: {integrity: sha512-VIsoPlOB/tDSAw9CySckBYysoIBqLeps1/umNSYUD8pMtalJyzMTneAVI1HrUdf4ceFmQ5vARoLIXSsPwVFxNg==} 569 + engines: {node: ^20.19.0 || >=22.12.0} 570 + cpu: [x64] 571 + os: [linux] 572 + 478 573 '@rolldown/binding-openharmony-arm64@1.0.0-beta.41': 479 574 resolution: {integrity: sha512-PHVxYhBpi8UViS3/hcvQQb9RFqCtvFmFU1PvUoTRiUdBtgHA6fONNHU4x796lgzNlVSD3DO/MZNk1s5/ozSMQg==} 480 575 engines: {node: ^20.19.0 || >=22.12.0} 481 576 cpu: [arm64] 482 577 os: [openharmony] 483 578 579 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': 580 + resolution: {integrity: sha512-YDXTxVJG67PqTQMKyjVJSddoPbSWJ4yRz/E3xzTLHqNrTDGY0UuhG8EMr8zsYnfH/0cPFJ3wjQd/hJWHuR6nkA==} 581 + engines: {node: ^20.19.0 || >=22.12.0} 582 + cpu: [arm64] 583 + os: [openharmony] 584 + 484 585 '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': 485 586 resolution: {integrity: sha512-OAfcO37ME6GGWmj9qTaDT7jY4rM0T2z0/8ujdQIJQ2x2nl+ztO32EIwURfmXOK0U1tzkyuaKYvE34Pug/ucXlQ==} 587 + engines: {node: '>=14.0.0'} 588 + cpu: [wasm32] 589 + 590 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': 591 + resolution: {integrity: sha512-3M+2DmorXvDuAIGYQ9Z93Oy1G9ETkejLwdXXb1uRTgKN9pMcu7N+KG2zDrJwqyxeeLIFE22AZGtSJm3PJbNu9Q==} 486 592 engines: {node: '>=14.0.0'} 487 593 cpu: [wasm32] 488 594 ··· 492 598 cpu: [arm64] 493 599 os: [win32] 494 600 601 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': 602 + resolution: {integrity: sha512-/B1j1pJs33y9ywtslOMxryUPHq8zIGu/OGEc2gyed0slimJ8fX2uR/SaJVhB4+NEgCFIeYDR4CX6jynAkeRuCA==} 603 + engines: {node: ^20.19.0 || >=22.12.0} 604 + cpu: [arm64] 605 + os: [win32] 606 + 495 607 '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41': 496 608 resolution: {integrity: sha512-kANdsDbE5FkEOb5NrCGBJBCaZ2Sabp3D7d4PRqMYJqyLljwh9mDyYyYSv5+QNvdAmifj+f3lviNEUUuUZPEFPw==} 497 609 engines: {node: ^20.19.0 || >=22.12.0} 498 610 cpu: [ia32] 499 611 os: [win32] 500 612 613 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': 614 + resolution: {integrity: sha512-29oG1swCz7hNP+CQYrsM4EtylsKwuYzM8ljqbqC5TsQwmKat7P8ouDpImsqg/GZxFSXcPP9ezQm0Q0wQwGM3JA==} 615 + engines: {node: ^20.19.0 || >=22.12.0} 616 + cpu: [ia32] 617 + os: [win32] 618 + 501 619 '@rolldown/binding-win32-x64-msvc@1.0.0-beta.41': 502 620 resolution: {integrity: sha512-UlpxKmFdik0Y2VjZrgUCgoYArZJiZllXgIipdBRV1hw6uK45UbQabSTW6Kp6enuOu7vouYWftwhuxfpE8J2JAg==} 503 621 engines: {node: ^20.19.0 || >=22.12.0} 504 622 cpu: [x64] 505 623 os: [win32] 506 624 625 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': 626 + resolution: {integrity: sha512-eWBV1Ef3gfGNehxVGCyXs7wLayRIgCmyItuCZwYYXW5bsk4EvR4n2GP5m3ohjnx7wdiY3nLmwQfH2Knb5gbNZw==} 627 + engines: {node: ^20.19.0 || >=22.12.0} 628 + cpu: [x64] 629 + os: [win32] 630 + 507 631 '@rolldown/pluginutils@1.0.0-beta.41': 508 632 resolution: {integrity: sha512-ycMEPrS3StOIeb87BT3/+bu+blEtyvwQ4zmo2IcJQy0Rd1DAAhKksA0iUZ3MYSpJtjlPhg0Eo6mvVS6ggPhRbw==} 633 + 634 + '@rolldown/pluginutils@1.0.0-beta.43': 635 + resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} 509 636 510 637 '@shikijs/core@2.5.0': 511 638 resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} ··· 824 951 argparse@2.0.1: 825 952 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 826 953 954 + args-tokenizer@0.3.0: 955 + resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} 956 + 827 957 aria-query@5.3.0: 828 958 resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 829 959 ··· 834 964 assertion-error@2.0.1: 835 965 resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 836 966 engines: {node: '>=12'} 967 + 968 + ast-kit@2.1.3: 969 + resolution: {integrity: sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==} 970 + engines: {node: '>=20.19.0'} 837 971 838 972 ast-v8-to-istanbul@0.3.7: 839 973 resolution: {integrity: sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww==} ··· 866 1000 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 867 1001 hasBin: true 868 1002 1003 + buffer-from@1.1.2: 1004 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1005 + 869 1006 builtin-modules@5.0.0: 870 1007 resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} 871 1008 engines: {node: '>=18.20'} 872 1009 1010 + bumpp@10.3.1: 1011 + resolution: {integrity: sha512-cOKPRFCWvHcYPJQAHN6V7Jp/wAfnyqQRXQ+2fgWIL6Gao20rpu7xQ1cGGo1APOfmbQmmHngEPg9Fy7nJ3giRkQ==} 1012 + engines: {node: '>=18'} 1013 + hasBin: true 1014 + 1015 + c12@3.3.1: 1016 + resolution: {integrity: sha512-LcWQ01LT9tkoUINHgpIOv3mMs+Abv7oVCrtpMRi1PaapVEpWoMga5WuT7/DqFTu7URP9ftbOmimNw1KNIGh9DQ==} 1017 + peerDependencies: 1018 + magicast: ^0.3.5 1019 + peerDependenciesMeta: 1020 + magicast: 1021 + optional: true 1022 + 873 1023 cac@6.7.14: 874 1024 resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 875 1025 engines: {node: '>=8'} ··· 892 1042 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 893 1043 engines: {node: '>=10'} 894 1044 1045 + chalk@5.6.2: 1046 + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} 1047 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 1048 + 895 1049 change-case@5.4.4: 896 1050 resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} 897 1051 ··· 905 1059 resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 906 1060 engines: {node: '>= 16'} 907 1061 1062 + chokidar@4.0.3: 1063 + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 1064 + engines: {node: '>= 14.16.0'} 1065 + 908 1066 ci-info@4.3.1: 909 1067 resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} 910 1068 engines: {node: '>=8'} 911 1069 1070 + citty@0.1.6: 1071 + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} 1072 + 912 1073 clean-regexp@1.0.0: 913 1074 resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 914 1075 engines: {node: '>=4'} ··· 923 1084 comma-separated-tokens@2.0.3: 924 1085 resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 925 1086 1087 + commander@14.0.1: 1088 + resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} 1089 + engines: {node: '>=20'} 1090 + 1091 + commander@2.20.3: 1092 + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 1093 + 926 1094 concat-map@0.0.1: 927 1095 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 928 1096 1097 + confbox@0.2.2: 1098 + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} 1099 + 1100 + consola@3.4.2: 1101 + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 1102 + engines: {node: ^14.18.0 || >=16.10.0} 1103 + 929 1104 copy-anything@3.0.5: 930 1105 resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} 931 1106 engines: {node: '>=12.13'} ··· 974 1149 deep-is@0.1.4: 975 1150 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 976 1151 1152 + defu@6.1.4: 1153 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1154 + 977 1155 dequal@2.0.3: 978 1156 resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 979 1157 engines: {node: '>=6'} 980 1158 1159 + destr@2.0.5: 1160 + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} 1161 + 981 1162 detect-libc@2.1.2: 982 1163 resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 983 1164 engines: {node: '>=8'} ··· 985 1166 devlop@1.1.0: 986 1167 resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} 987 1168 1169 + diff@8.0.2: 1170 + resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} 1171 + engines: {node: '>=0.3.1'} 1172 + 988 1173 dom-accessibility-api@0.5.16: 989 1174 resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} 990 1175 991 1176 dom-accessibility-api@0.6.3: 992 1177 resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} 993 1178 1179 + dotenv@17.2.3: 1180 + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} 1181 + engines: {node: '>=12'} 1182 + 994 1183 dprint@0.50.2: 995 1184 resolution: {integrity: sha512-+0Fzg+17jsMMUouK00/Fara5YtGOuE76EAJINHB8VpkXHd0n00rMXtw/03qorOgz23eo8Y0UpYvNZBJJo3aNtw==} 996 1185 hasBin: true 997 1186 1187 + dts-resolver@2.1.2: 1188 + resolution: {integrity: sha512-xeXHBQkn2ISSXxbJWD828PFjtyg+/UrMDo7W4Ffcs7+YWCquxU8YjV1KoxuiL+eJ5pg3ll+bC6flVv61L3LKZg==} 1189 + engines: {node: '>=20.18.0'} 1190 + peerDependencies: 1191 + oxc-resolver: '>=11.0.0' 1192 + peerDependenciesMeta: 1193 + oxc-resolver: 1194 + optional: true 1195 + 998 1196 eastasianwidth@0.2.0: 999 1197 resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1000 1198 ··· 1010 1208 emoji-regex@9.2.2: 1011 1209 resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1012 1210 1211 + empathic@2.0.0: 1212 + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} 1213 + engines: {node: '>=14'} 1214 + 1013 1215 entities@4.5.0: 1014 1216 resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1015 1217 engines: {node: '>=0.12'} ··· 1091 1293 resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} 1092 1294 engines: {node: '>=12.0.0'} 1093 1295 1296 + exsolve@1.0.7: 1297 + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} 1298 + 1094 1299 fast-deep-equal@3.1.3: 1095 1300 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1096 1301 ··· 1151 1356 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1152 1357 os: [darwin] 1153 1358 1359 + get-tsconfig@4.12.0: 1360 + resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} 1361 + 1362 + giget@2.0.0: 1363 + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} 1364 + hasBin: true 1365 + 1154 1366 glob-parent@5.1.2: 1155 1367 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1156 1368 engines: {node: '>= 6'} ··· 1282 1494 jackspeak@3.4.3: 1283 1495 resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1284 1496 1497 + jiti@2.6.1: 1498 + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 1499 + hasBin: true 1500 + 1285 1501 js-tokens@4.0.0: 1286 1502 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1287 1503 ··· 1320 1536 json-stable-stringify-without-jsonify@1.0.1: 1321 1537 resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1322 1538 1539 + jsonc-parser@3.3.1: 1540 + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} 1541 + 1323 1542 keyv@4.5.4: 1324 1543 resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1325 1544 ··· 1492 1711 natural-compare@1.4.0: 1493 1712 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1494 1713 1714 + node-fetch-native@1.6.7: 1715 + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} 1716 + 1495 1717 node-releases@2.0.25: 1496 1718 resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} 1497 1719 1720 + nypm@0.6.2: 1721 + resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} 1722 + engines: {node: ^14.16.0 || >=16.10.0} 1723 + hasBin: true 1724 + 1725 + ohash@2.0.11: 1726 + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1727 + 1498 1728 oniguruma-to-es@3.1.1: 1499 1729 resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} 1500 1730 ··· 1512 1742 1513 1743 package-json-from-dist@1.0.1: 1514 1744 resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1745 + 1746 + package-manager-detector@1.4.1: 1747 + resolution: {integrity: sha512-dSMiVLBEA4XaNJ0PRb4N5cV/SEP4BWrWZKBmfF+OUm2pQTiZ6DDkKeWaltwu3JRhLoy59ayIkJ00cx9K9CaYTg==} 1515 1748 1516 1749 parent-module@1.0.1: 1517 1750 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} ··· 1542 1775 perfect-debounce@1.0.0: 1543 1776 resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} 1544 1777 1778 + perfect-debounce@2.0.0: 1779 + resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} 1780 + 1545 1781 picocolors@1.1.1: 1546 1782 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1547 1783 ··· 1552 1788 picomatch@4.0.3: 1553 1789 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1554 1790 engines: {node: '>=12'} 1791 + 1792 + pkg-types@2.3.0: 1793 + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} 1555 1794 1556 1795 pluralize@8.0.0: 1557 1796 resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} ··· 1579 1818 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1580 1819 engines: {node: '>=6'} 1581 1820 1821 + quansync@0.2.11: 1822 + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} 1823 + 1582 1824 queue-microtask@1.2.3: 1583 1825 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1826 + 1827 + rc9@2.1.2: 1828 + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} 1584 1829 1585 1830 react-is@17.0.2: 1586 1831 resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 1832 + 1833 + readdirp@4.1.2: 1834 + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1835 + engines: {node: '>= 14.18.0'} 1587 1836 1588 1837 redent@3.0.0: 1589 1838 resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} ··· 1614 1863 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1615 1864 engines: {node: '>=4'} 1616 1865 1866 + resolve-pkg-maps@1.0.0: 1867 + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1868 + 1617 1869 reusify@1.1.0: 1618 1870 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1619 1871 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} ··· 1621 1873 rfdc@1.4.1: 1622 1874 resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 1623 1875 1876 + rolldown-plugin-dts@0.16.12: 1877 + resolution: {integrity: sha512-9dGjm5oqtKcbZNhpzyBgb8KrYiU616A7IqcFWG7Msp1RKAXQ/hapjivRg+g5IYWSiFhnk3OKYV5T4Ft1t8Cczg==} 1878 + engines: {node: '>=20.18.0'} 1879 + peerDependencies: 1880 + '@ts-macro/tsc': ^0.3.6 1881 + '@typescript/native-preview': '>=7.0.0-dev.20250601.1' 1882 + rolldown: ^1.0.0-beta.9 1883 + typescript: ^5.0.0 1884 + vue-tsc: ~3.1.0 1885 + peerDependenciesMeta: 1886 + '@ts-macro/tsc': 1887 + optional: true 1888 + '@typescript/native-preview': 1889 + optional: true 1890 + typescript: 1891 + optional: true 1892 + vue-tsc: 1893 + optional: true 1894 + 1624 1895 rolldown-vite@7.1.14: 1625 1896 resolution: {integrity: sha512-eSiiRJmovt8qDJkGyZuLnbxAOAdie6NCmmd0NkTC0RJI9duiSBTfr8X2mBYJOUFzxQa2USaHmL99J9uMxkjCyw==} 1626 1897 engines: {node: ^20.19.0 || >=22.12.0} ··· 1663 1934 1664 1935 rolldown@1.0.0-beta.41: 1665 1936 resolution: {integrity: sha512-U+NPR0Bkg3wm61dteD2L4nAM1U9dtaqVrpDXwC36IKRHpEO/Ubpid4Nijpa2imPchcVNHfxVFwSSMJdwdGFUbg==} 1937 + engines: {node: ^20.19.0 || >=22.12.0} 1938 + hasBin: true 1939 + 1940 + rolldown@1.0.0-beta.43: 1941 + resolution: {integrity: sha512-6RcqyRx0tY1MlRLnjXPp/849Rl/CPFhzpGGwNPEPjKwqBMqPq/Rbbkxasa8s0x+IkUk46ty4jazb5skZ/Vgdhw==} 1666 1942 engines: {node: ^20.19.0 || >=22.12.0} 1667 1943 hasBin: true 1668 1944 ··· 1709 1985 resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1710 1986 engines: {node: '>=0.10.0'} 1711 1987 1988 + source-map-support@0.5.21: 1989 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1990 + 1991 + source-map@0.6.1: 1992 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1993 + engines: {node: '>=0.10.0'} 1994 + 1712 1995 space-separated-tokens@2.0.2: 1713 1996 resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 1714 1997 ··· 1769 2052 1770 2053 tabbable@6.2.0: 1771 2054 resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} 2055 + 2056 + terser@5.44.0: 2057 + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} 2058 + engines: {node: '>=10'} 2059 + hasBin: true 1772 2060 1773 2061 test-exclude@7.0.1: 1774 2062 resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} ··· 1780 2068 tinyexec@0.3.2: 1781 2069 resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1782 2070 2071 + tinyexec@1.0.1: 2072 + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} 2073 + 1783 2074 tinyglobby@0.2.15: 1784 2075 resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 1785 2076 engines: {node: '>=12.0.0'} ··· 1815 2106 resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} 1816 2107 engines: {node: '>=20'} 1817 2108 2109 + tree-kill@1.2.2: 2110 + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 2111 + hasBin: true 2112 + 1818 2113 trim-lines@3.0.1: 1819 2114 resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 1820 2115 ··· 1824 2119 peerDependencies: 1825 2120 typescript: '>=4.8.4' 1826 2121 2122 + tsdown@0.15.7: 2123 + resolution: {integrity: sha512-uFaVgWAogjOMqjY+CQwrUt3C6wzy6ynt82CIoXymnbS17ipUZ8WDXUceJjkislUahF/BZc5+W44Ue3p2oWtqUg==} 2124 + engines: {node: '>=20.19.0'} 2125 + hasBin: true 2126 + peerDependencies: 2127 + '@arethetypeswrong/core': ^0.18.1 2128 + publint: ^0.3.0 2129 + typescript: ^5.0.0 2130 + unplugin-lightningcss: ^0.4.0 2131 + unplugin-unused: ^0.5.0 2132 + peerDependenciesMeta: 2133 + '@arethetypeswrong/core': 2134 + optional: true 2135 + publint: 2136 + optional: true 2137 + typescript: 2138 + optional: true 2139 + unplugin-lightningcss: 2140 + optional: true 2141 + unplugin-unused: 2142 + optional: true 2143 + 1827 2144 tslib@2.8.1: 1828 2145 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1829 2146 ··· 1842 2159 resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 1843 2160 engines: {node: '>=14.17'} 1844 2161 hasBin: true 2162 + 2163 + unconfig@7.3.3: 2164 + resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} 1845 2165 1846 2166 undici-types@7.14.0: 1847 2167 resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} ··· 1990 2310 xmlchars@2.2.0: 1991 2311 resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 1992 2312 2313 + yaml@2.8.1: 2314 + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} 2315 + engines: {node: '>= 14.6'} 2316 + hasBin: true 2317 + 1993 2318 yocto-queue@0.1.0: 1994 2319 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1995 2320 engines: {node: '>=10'} ··· 2142 2467 js-tokens: 4.0.0 2143 2468 picocolors: 1.1.1 2144 2469 2470 + '@babel/generator@7.28.3': 2471 + dependencies: 2472 + '@babel/parser': 7.28.4 2473 + '@babel/types': 7.28.4 2474 + '@jridgewell/gen-mapping': 0.3.13 2475 + '@jridgewell/trace-mapping': 0.3.31 2476 + jsesc: 3.1.0 2477 + 2145 2478 '@babel/helper-string-parser@7.27.1': {} 2146 2479 2147 2480 '@babel/helper-validator-identifier@7.27.1': {} ··· 2250 2583 tslib: 2.8.1 2251 2584 optional: true 2252 2585 2253 - '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)': 2586 + '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': 2254 2587 dependencies: 2255 - eslint: 9.38.0 2588 + eslint: 9.38.0(jiti@2.6.1) 2256 2589 eslint-visitor-keys: 3.4.3 2257 2590 2258 2591 '@eslint-community/regexpp@4.12.1': {} 2259 2592 2260 - '@eslint/compat@1.4.0(eslint@9.38.0)': 2593 + '@eslint/compat@1.4.0(eslint@9.38.0(jiti@2.6.1))': 2261 2594 dependencies: 2262 2595 '@eslint/core': 0.16.0 2263 2596 optionalDependencies: 2264 - eslint: 9.38.0 2597 + eslint: 9.38.0(jiti@2.6.1) 2265 2598 2266 2599 '@eslint/config-array@0.21.1': 2267 2600 dependencies: ··· 2345 2678 '@jridgewell/trace-mapping': 0.3.31 2346 2679 2347 2680 '@jridgewell/resolve-uri@3.1.2': {} 2681 + 2682 + '@jridgewell/source-map@0.3.11': 2683 + dependencies: 2684 + '@jridgewell/gen-mapping': 0.3.13 2685 + '@jridgewell/trace-mapping': 0.3.31 2348 2686 2349 2687 '@jridgewell/sourcemap-codec@1.5.5': {} 2350 2688 ··· 2376 2714 2377 2715 '@oxc-project/types@0.93.0': {} 2378 2716 2717 + '@oxc-project/types@0.94.0': {} 2718 + 2379 2719 '@pkgjs/parseargs@0.11.0': 2380 2720 optional: true 2721 + 2722 + '@quansync/fs@0.1.5': 2723 + dependencies: 2724 + quansync: 0.2.11 2381 2725 2382 2726 '@rolldown/binding-android-arm64@1.0.0-beta.41': 2383 2727 optional: true 2384 2728 2729 + '@rolldown/binding-android-arm64@1.0.0-beta.43': 2730 + optional: true 2731 + 2385 2732 '@rolldown/binding-darwin-arm64@1.0.0-beta.41': 2733 + optional: true 2734 + 2735 + '@rolldown/binding-darwin-arm64@1.0.0-beta.43': 2386 2736 optional: true 2387 2737 2388 2738 '@rolldown/binding-darwin-x64@1.0.0-beta.41': 2389 2739 optional: true 2390 2740 2741 + '@rolldown/binding-darwin-x64@1.0.0-beta.43': 2742 + optional: true 2743 + 2391 2744 '@rolldown/binding-freebsd-x64@1.0.0-beta.41': 2745 + optional: true 2746 + 2747 + '@rolldown/binding-freebsd-x64@1.0.0-beta.43': 2392 2748 optional: true 2393 2749 2394 2750 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41': 2395 2751 optional: true 2396 2752 2753 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': 2754 + optional: true 2755 + 2397 2756 '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41': 2398 2757 optional: true 2399 2758 2759 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': 2760 + optional: true 2761 + 2400 2762 '@rolldown/binding-linux-arm64-musl@1.0.0-beta.41': 2401 2763 optional: true 2402 2764 2765 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': 2766 + optional: true 2767 + 2403 2768 '@rolldown/binding-linux-x64-gnu@1.0.0-beta.41': 2404 2769 optional: true 2405 2770 2771 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': 2772 + optional: true 2773 + 2406 2774 '@rolldown/binding-linux-x64-musl@1.0.0-beta.41': 2407 2775 optional: true 2408 2776 2777 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': 2778 + optional: true 2779 + 2409 2780 '@rolldown/binding-openharmony-arm64@1.0.0-beta.41': 2410 2781 optional: true 2411 2782 2783 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': 2784 + optional: true 2785 + 2412 2786 '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': 2787 + dependencies: 2788 + '@napi-rs/wasm-runtime': 1.0.7 2789 + optional: true 2790 + 2791 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': 2413 2792 dependencies: 2414 2793 '@napi-rs/wasm-runtime': 1.0.7 2415 2794 optional: true ··· 2417 2796 '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41': 2418 2797 optional: true 2419 2798 2799 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': 2800 + optional: true 2801 + 2420 2802 '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41': 2803 + optional: true 2804 + 2805 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': 2421 2806 optional: true 2422 2807 2423 2808 '@rolldown/binding-win32-x64-msvc@1.0.0-beta.41': 2424 2809 optional: true 2425 2810 2811 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': 2812 + optional: true 2813 + 2426 2814 '@rolldown/pluginutils@1.0.0-beta.41': {} 2815 + 2816 + '@rolldown/pluginutils@1.0.0-beta.43': {} 2427 2817 2428 2818 '@shikijs/core@2.5.0': 2429 2819 dependencies: ··· 2527 2917 2528 2918 '@types/web-bluetooth@0.0.21': {} 2529 2919 2530 - '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)': 2920 + '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 2531 2921 dependencies: 2532 2922 '@eslint-community/regexpp': 4.12.1 2533 - '@typescript-eslint/parser': 8.46.1(eslint@9.38.0)(typescript@5.9.3) 2923 + '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 2534 2924 '@typescript-eslint/scope-manager': 8.46.1 2535 - '@typescript-eslint/type-utils': 8.46.1(eslint@9.38.0)(typescript@5.9.3) 2536 - '@typescript-eslint/utils': 8.46.1(eslint@9.38.0)(typescript@5.9.3) 2925 + '@typescript-eslint/type-utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 2926 + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 2537 2927 '@typescript-eslint/visitor-keys': 8.46.1 2538 - eslint: 9.38.0 2928 + eslint: 9.38.0(jiti@2.6.1) 2539 2929 graphemer: 1.4.0 2540 2930 ignore: 7.0.5 2541 2931 natural-compare: 1.4.0 ··· 2544 2934 transitivePeerDependencies: 2545 2935 - supports-color 2546 2936 2547 - '@typescript-eslint/parser@8.46.1(eslint@9.38.0)(typescript@5.9.3)': 2937 + '@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 2548 2938 dependencies: 2549 2939 '@typescript-eslint/scope-manager': 8.46.1 2550 2940 '@typescript-eslint/types': 8.46.1 2551 2941 '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 2552 2942 '@typescript-eslint/visitor-keys': 8.46.1 2553 2943 debug: 4.4.3 2554 - eslint: 9.38.0 2944 + eslint: 9.38.0(jiti@2.6.1) 2555 2945 typescript: 5.9.3 2556 2946 transitivePeerDependencies: 2557 2947 - supports-color ··· 2574 2964 dependencies: 2575 2965 typescript: 5.9.3 2576 2966 2577 - '@typescript-eslint/type-utils@8.46.1(eslint@9.38.0)(typescript@5.9.3)': 2967 + '@typescript-eslint/type-utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 2578 2968 dependencies: 2579 2969 '@typescript-eslint/types': 8.46.1 2580 2970 '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 2581 - '@typescript-eslint/utils': 8.46.1(eslint@9.38.0)(typescript@5.9.3) 2971 + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 2582 2972 debug: 4.4.3 2583 - eslint: 9.38.0 2973 + eslint: 9.38.0(jiti@2.6.1) 2584 2974 ts-api-utils: 2.1.0(typescript@5.9.3) 2585 2975 typescript: 5.9.3 2586 2976 transitivePeerDependencies: ··· 2604 2994 transitivePeerDependencies: 2605 2995 - supports-color 2606 2996 2607 - '@typescript-eslint/utils@8.46.1(eslint@9.38.0)(typescript@5.9.3)': 2997 + '@typescript-eslint/utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 2608 2998 dependencies: 2609 - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) 2999 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) 2610 3000 '@typescript-eslint/scope-manager': 8.46.1 2611 3001 '@typescript-eslint/types': 8.46.1 2612 3002 '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 2613 - eslint: 9.38.0 3003 + eslint: 9.38.0(jiti@2.6.1) 2614 3004 typescript: 5.9.3 2615 3005 transitivePeerDependencies: 2616 3006 - supports-color ··· 2622 3012 2623 3013 '@ungap/structured-clone@1.3.0': {} 2624 3014 2625 - '@vitejs/plugin-vue@5.2.4(rolldown-vite@7.1.14(@types/node@24.8.1))(vue@3.5.22(typescript@5.9.3))': 3015 + '@vitejs/plugin-vue@5.2.4(rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': 2626 3016 dependencies: 2627 - vite: rolldown-vite@7.1.14(@types/node@24.8.1) 3017 + vite: rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) 2628 3018 vue: 3.5.22(typescript@5.9.3) 2629 3019 2630 - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.1)(jsdom@27.0.0(postcss@8.5.6)))': 3020 + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1))': 2631 3021 dependencies: 2632 3022 '@ampproject/remapping': 2.3.0 2633 3023 '@bcoe/v8-coverage': 1.0.2 ··· 2642 3032 std-env: 3.10.0 2643 3033 test-exclude: 7.0.1 2644 3034 tinyrainbow: 2.0.0 2645 - vitest: 3.2.4(@types/node@24.8.1)(jsdom@27.0.0(postcss@8.5.6)) 3035 + vitest: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1) 2646 3036 transitivePeerDependencies: 2647 3037 - supports-color 2648 3038 ··· 2654 3044 chai: 5.3.3 2655 3045 tinyrainbow: 2.0.0 2656 3046 2657 - '@vitest/mocker@3.2.4(rolldown-vite@7.1.14(@types/node@24.8.1))': 3047 + '@vitest/mocker@3.2.4(rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))': 2658 3048 dependencies: 2659 3049 '@vitest/spy': 3.2.4 2660 3050 estree-walker: 3.0.3 2661 3051 magic-string: 0.30.19 2662 3052 optionalDependencies: 2663 - vite: rolldown-vite@7.1.14(@types/node@24.8.1) 3053 + vite: rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) 2664 3054 2665 3055 '@vitest/pretty-format@3.2.4': 2666 3056 dependencies: ··· 2836 3226 2837 3227 argparse@2.0.1: {} 2838 3228 3229 + args-tokenizer@0.3.0: {} 3230 + 2839 3231 aria-query@5.3.0: 2840 3232 dependencies: 2841 3233 dequal: 2.0.3 ··· 2843 3235 aria-query@5.3.2: {} 2844 3236 2845 3237 assertion-error@2.0.1: {} 3238 + 3239 + ast-kit@2.1.3: 3240 + dependencies: 3241 + '@babel/parser': 7.28.4 3242 + pathe: 2.0.3 2846 3243 2847 3244 ast-v8-to-istanbul@0.3.7: 2848 3245 dependencies: ··· 2881 3278 node-releases: 2.0.25 2882 3279 update-browserslist-db: 1.1.3(browserslist@4.26.3) 2883 3280 3281 + buffer-from@1.1.2: {} 3282 + 2884 3283 builtin-modules@5.0.0: {} 2885 3284 3285 + bumpp@10.3.1(magicast@0.3.5): 3286 + dependencies: 3287 + ansis: 4.2.0 3288 + args-tokenizer: 0.3.0 3289 + c12: 3.3.1(magicast@0.3.5) 3290 + cac: 6.7.14 3291 + escalade: 3.2.0 3292 + jsonc-parser: 3.3.1 3293 + package-manager-detector: 1.4.1 3294 + semver: 7.7.3 3295 + tinyexec: 1.0.1 3296 + tinyglobby: 0.2.15 3297 + yaml: 2.8.1 3298 + transitivePeerDependencies: 3299 + - magicast 3300 + 3301 + c12@3.3.1(magicast@0.3.5): 3302 + dependencies: 3303 + chokidar: 4.0.3 3304 + confbox: 0.2.2 3305 + defu: 6.1.4 3306 + dotenv: 17.2.3 3307 + exsolve: 1.0.7 3308 + giget: 2.0.0 3309 + jiti: 2.6.1 3310 + ohash: 2.0.11 3311 + pathe: 2.0.3 3312 + perfect-debounce: 2.0.0 3313 + pkg-types: 2.3.0 3314 + rc9: 2.1.2 3315 + optionalDependencies: 3316 + magicast: 0.3.5 3317 + 2886 3318 cac@6.7.14: {} 2887 3319 2888 3320 callsites@3.1.0: {} ··· 2904 3336 ansi-styles: 4.3.0 2905 3337 supports-color: 7.2.0 2906 3338 3339 + chalk@5.6.2: {} 3340 + 2907 3341 change-case@5.4.4: {} 2908 3342 2909 3343 character-entities-html4@2.1.0: {} ··· 2912 3346 2913 3347 check-error@2.1.1: {} 2914 3348 3349 + chokidar@4.0.3: 3350 + dependencies: 3351 + readdirp: 4.1.2 3352 + 2915 3353 ci-info@4.3.1: {} 2916 3354 3355 + citty@0.1.6: 3356 + dependencies: 3357 + consola: 3.4.2 3358 + 2917 3359 clean-regexp@1.0.0: 2918 3360 dependencies: 2919 3361 escape-string-regexp: 1.0.5 ··· 2926 3368 2927 3369 comma-separated-tokens@2.0.3: {} 2928 3370 3371 + commander@14.0.1: {} 3372 + 3373 + commander@2.20.3: {} 3374 + 2929 3375 concat-map@0.0.1: {} 3376 + 3377 + confbox@0.2.2: {} 3378 + 3379 + consola@3.4.2: {} 2930 3380 2931 3381 copy-anything@3.0.5: 2932 3382 dependencies: ··· 2973 3423 deep-eql@5.0.2: {} 2974 3424 2975 3425 deep-is@0.1.4: {} 3426 + 3427 + defu@6.1.4: {} 2976 3428 2977 3429 dequal@2.0.3: {} 2978 3430 3431 + destr@2.0.5: {} 3432 + 2979 3433 detect-libc@2.1.2: {} 2980 3434 2981 3435 devlop@1.1.0: 2982 3436 dependencies: 2983 3437 dequal: 2.0.3 2984 3438 3439 + diff@8.0.2: {} 3440 + 2985 3441 dom-accessibility-api@0.5.16: {} 2986 3442 2987 3443 dom-accessibility-api@0.6.3: {} 3444 + 3445 + dotenv@17.2.3: {} 2988 3446 2989 3447 dprint@0.50.2: 2990 3448 optionalDependencies: ··· 2998 3456 '@dprint/win32-arm64': 0.50.2 2999 3457 '@dprint/win32-x64': 0.50.2 3000 3458 3459 + dts-resolver@2.1.2: {} 3460 + 3001 3461 eastasianwidth@0.2.0: {} 3002 3462 3003 3463 electron-to-chromium@1.5.237: {} ··· 3007 3467 emoji-regex@8.0.0: {} 3008 3468 3009 3469 emoji-regex@9.2.2: {} 3470 + 3471 + empathic@2.0.0: {} 3010 3472 3011 3473 entities@4.5.0: {} 3012 3474 ··· 3020 3482 3021 3483 escape-string-regexp@4.0.0: {} 3022 3484 3023 - eslint-plugin-unicorn@61.0.2(eslint@9.38.0): 3485 + eslint-plugin-unicorn@61.0.2(eslint@9.38.0(jiti@2.6.1)): 3024 3486 dependencies: 3025 3487 '@babel/helper-validator-identifier': 7.27.1 3026 - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) 3488 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) 3027 3489 '@eslint/plugin-kit': 0.3.5 3028 3490 change-case: 5.4.4 3029 3491 ci-info: 4.3.1 3030 3492 clean-regexp: 1.0.0 3031 3493 core-js-compat: 3.46.0 3032 - eslint: 9.38.0 3494 + eslint: 9.38.0(jiti@2.6.1) 3033 3495 esquery: 1.6.0 3034 3496 find-up-simple: 1.0.1 3035 3497 globals: 16.4.0 ··· 3051 3513 3052 3514 eslint-visitor-keys@4.2.1: {} 3053 3515 3054 - eslint@9.38.0: 3516 + eslint@9.38.0(jiti@2.6.1): 3055 3517 dependencies: 3056 - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) 3518 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) 3057 3519 '@eslint-community/regexpp': 4.12.1 3058 3520 '@eslint/config-array': 0.21.1 3059 3521 '@eslint/config-helpers': 0.4.1 ··· 3087 3549 minimatch: 3.1.2 3088 3550 natural-compare: 1.4.0 3089 3551 optionator: 0.9.4 3552 + optionalDependencies: 3553 + jiti: 2.6.1 3090 3554 transitivePeerDependencies: 3091 3555 - supports-color 3092 3556 ··· 3116 3580 3117 3581 expect-type@1.2.2: {} 3118 3582 3583 + exsolve@1.0.7: {} 3584 + 3119 3585 fast-deep-equal@3.1.3: {} 3120 3586 3121 3587 fast-glob@3.3.3: ··· 3172 3638 fsevents@2.3.3: 3173 3639 optional: true 3174 3640 3641 + get-tsconfig@4.12.0: 3642 + dependencies: 3643 + resolve-pkg-maps: 1.0.0 3644 + 3645 + giget@2.0.0: 3646 + dependencies: 3647 + citty: 0.1.6 3648 + consola: 3.4.2 3649 + defu: 6.1.4 3650 + node-fetch-native: 1.6.7 3651 + nypm: 0.6.2 3652 + pathe: 2.0.3 3653 + 3175 3654 glob-parent@5.1.2: 3176 3655 dependencies: 3177 3656 is-glob: 4.0.3 ··· 3305 3784 optionalDependencies: 3306 3785 '@pkgjs/parseargs': 0.11.0 3307 3786 3787 + jiti@2.6.1: {} 3788 + 3308 3789 js-tokens@4.0.0: {} 3309 3790 3310 3791 js-tokens@9.0.1: {} ··· 3350 3831 json-schema-traverse@0.4.1: {} 3351 3832 3352 3833 json-stable-stringify-without-jsonify@1.0.1: {} 3834 + 3835 + jsonc-parser@3.3.1: {} 3353 3836 3354 3837 keyv@4.5.4: 3355 3838 dependencies: ··· 3499 3982 3500 3983 natural-compare@1.4.0: {} 3501 3984 3985 + node-fetch-native@1.6.7: {} 3986 + 3502 3987 node-releases@2.0.25: {} 3503 3988 3989 + nypm@0.6.2: 3990 + dependencies: 3991 + citty: 0.1.6 3992 + consola: 3.4.2 3993 + pathe: 2.0.3 3994 + pkg-types: 2.3.0 3995 + tinyexec: 1.0.1 3996 + 3997 + ohash@2.0.11: {} 3998 + 3504 3999 oniguruma-to-es@3.1.1: 3505 4000 dependencies: 3506 4001 emoji-regex-xs: 1.0.0 ··· 3526 4021 3527 4022 package-json-from-dist@1.0.1: {} 3528 4023 4024 + package-manager-detector@1.4.1: {} 4025 + 3529 4026 parent-module@1.0.1: 3530 4027 dependencies: 3531 4028 callsites: 3.1.0 ··· 3549 4046 3550 4047 perfect-debounce@1.0.0: {} 3551 4048 4049 + perfect-debounce@2.0.0: {} 4050 + 3552 4051 picocolors@1.1.1: {} 3553 4052 3554 4053 picomatch@2.3.1: {} 3555 4054 3556 4055 picomatch@4.0.3: {} 3557 4056 4057 + pkg-types@2.3.0: 4058 + dependencies: 4059 + confbox: 0.2.2 4060 + exsolve: 1.0.7 4061 + pathe: 2.0.3 4062 + 3558 4063 pluralize@8.0.0: {} 3559 4064 3560 4065 postcss@8.5.6: ··· 3577 4082 3578 4083 punycode@2.3.1: {} 3579 4084 4085 + quansync@0.2.11: {} 4086 + 3580 4087 queue-microtask@1.2.3: {} 4088 + 4089 + rc9@2.1.2: 4090 + dependencies: 4091 + defu: 6.1.4 4092 + destr: 2.0.5 3581 4093 3582 4094 react-is@17.0.2: {} 3583 4095 4096 + readdirp@4.1.2: {} 4097 + 3584 4098 redent@3.0.0: 3585 4099 dependencies: 3586 4100 indent-string: 4.0.0 ··· 3606 4120 3607 4121 resolve-from@4.0.0: {} 3608 4122 4123 + resolve-pkg-maps@1.0.0: {} 4124 + 3609 4125 reusify@1.1.0: {} 3610 4126 3611 4127 rfdc@1.4.1: {} 3612 4128 3613 - rolldown-vite@7.1.14(@types/node@24.8.1): 4129 + rolldown-plugin-dts@0.16.12(rolldown@1.0.0-beta.43)(typescript@5.9.3): 4130 + dependencies: 4131 + '@babel/generator': 7.28.3 4132 + '@babel/parser': 7.28.4 4133 + '@babel/types': 7.28.4 4134 + ast-kit: 2.1.3 4135 + birpc: 2.6.1 4136 + debug: 4.4.3 4137 + dts-resolver: 2.1.2 4138 + get-tsconfig: 4.12.0 4139 + magic-string: 0.30.19 4140 + rolldown: 1.0.0-beta.43 4141 + optionalDependencies: 4142 + typescript: 5.9.3 4143 + transitivePeerDependencies: 4144 + - oxc-resolver 4145 + - supports-color 4146 + 4147 + rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1): 3614 4148 dependencies: 3615 4149 '@oxc-project/runtime': 0.92.0 3616 4150 fdir: 6.5.0(picomatch@4.0.3) ··· 3622 4156 optionalDependencies: 3623 4157 '@types/node': 24.8.1 3624 4158 fsevents: 2.3.3 4159 + jiti: 2.6.1 4160 + terser: 5.44.0 4161 + yaml: 2.8.1 3625 4162 3626 4163 rolldown@1.0.0-beta.41: 3627 4164 dependencies: ··· 3644 4181 '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.41 3645 4182 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.41 3646 4183 4184 + rolldown@1.0.0-beta.43: 4185 + dependencies: 4186 + '@oxc-project/types': 0.94.0 4187 + '@rolldown/pluginutils': 1.0.0-beta.43 4188 + ansis: 4.2.0 4189 + optionalDependencies: 4190 + '@rolldown/binding-android-arm64': 1.0.0-beta.43 4191 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.43 4192 + '@rolldown/binding-darwin-x64': 1.0.0-beta.43 4193 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.43 4194 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.43 4195 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.43 4196 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.43 4197 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.43 4198 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.43 4199 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.43 4200 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.43 4201 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.43 4202 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.43 4203 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.43 4204 + 3647 4205 rrweb-cssom@0.8.0: {} 3648 4206 3649 4207 run-parallel@1.2.0: ··· 3682 4240 signal-exit@4.1.0: {} 3683 4241 3684 4242 source-map-js@1.2.1: {} 4243 + 4244 + source-map-support@0.5.21: 4245 + dependencies: 4246 + buffer-from: 1.1.2 4247 + source-map: 0.6.1 4248 + 4249 + source-map@0.6.1: {} 3685 4250 3686 4251 space-separated-tokens@2.0.2: {} 3687 4252 ··· 3740 4305 3741 4306 tabbable@6.2.0: {} 3742 4307 4308 + terser@5.44.0: 4309 + dependencies: 4310 + '@jridgewell/source-map': 0.3.11 4311 + acorn: 8.15.0 4312 + commander: 2.20.3 4313 + source-map-support: 0.5.21 4314 + 3743 4315 test-exclude@7.0.1: 3744 4316 dependencies: 3745 4317 '@istanbuljs/schema': 0.1.3 ··· 3749 4321 tinybench@2.9.0: {} 3750 4322 3751 4323 tinyexec@0.3.2: {} 4324 + 4325 + tinyexec@1.0.1: {} 3752 4326 3753 4327 tinyglobby@0.2.15: 3754 4328 dependencies: ··· 3779 4353 dependencies: 3780 4354 punycode: 2.3.1 3781 4355 4356 + tree-kill@1.2.2: {} 4357 + 3782 4358 trim-lines@3.0.1: {} 3783 4359 3784 4360 ts-api-utils@2.1.0(typescript@5.9.3): 3785 4361 dependencies: 3786 4362 typescript: 5.9.3 3787 4363 4364 + tsdown@0.15.7(typescript@5.9.3): 4365 + dependencies: 4366 + ansis: 4.2.0 4367 + cac: 6.7.14 4368 + chokidar: 4.0.3 4369 + debug: 4.4.3 4370 + diff: 8.0.2 4371 + empathic: 2.0.0 4372 + hookable: 5.5.3 4373 + rolldown: 1.0.0-beta.43 4374 + rolldown-plugin-dts: 0.16.12(rolldown@1.0.0-beta.43)(typescript@5.9.3) 4375 + semver: 7.7.3 4376 + tinyexec: 1.0.1 4377 + tinyglobby: 0.2.15 4378 + tree-kill: 1.2.2 4379 + unconfig: 7.3.3 4380 + optionalDependencies: 4381 + typescript: 5.9.3 4382 + transitivePeerDependencies: 4383 + - '@ts-macro/tsc' 4384 + - '@typescript/native-preview' 4385 + - oxc-resolver 4386 + - supports-color 4387 + - vue-tsc 4388 + 3788 4389 tslib@2.8.1: 3789 4390 optional: true 3790 4391 ··· 3792 4393 dependencies: 3793 4394 prelude-ls: 1.2.1 3794 4395 3795 - typescript-eslint@8.46.1(eslint@9.38.0)(typescript@5.9.3): 4396 + typescript-eslint@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): 3796 4397 dependencies: 3797 - '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) 3798 - '@typescript-eslint/parser': 8.46.1(eslint@9.38.0)(typescript@5.9.3) 4398 + '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 4399 + '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 3799 4400 '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 3800 - '@typescript-eslint/utils': 8.46.1(eslint@9.38.0)(typescript@5.9.3) 3801 - eslint: 9.38.0 4401 + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 4402 + eslint: 9.38.0(jiti@2.6.1) 3802 4403 typescript: 5.9.3 3803 4404 transitivePeerDependencies: 3804 4405 - supports-color 3805 4406 3806 4407 typescript@5.9.3: {} 3807 4408 4409 + unconfig@7.3.3: 4410 + dependencies: 4411 + '@quansync/fs': 0.1.5 4412 + defu: 6.1.4 4413 + jiti: 2.6.1 4414 + quansync: 0.2.11 4415 + 3808 4416 undici-types@7.14.0: {} 3809 4417 3810 4418 unist-util-is@6.0.1: ··· 3850 4458 '@types/unist': 3.0.3 3851 4459 vfile-message: 4.0.3 3852 4460 3853 - vite-node@3.2.4(@types/node@24.8.1): 4461 + vite-node@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1): 3854 4462 dependencies: 3855 4463 cac: 6.7.14 3856 4464 debug: 4.4.3 3857 4465 es-module-lexer: 1.7.0 3858 4466 pathe: 2.0.3 3859 - vite: rolldown-vite@7.1.14(@types/node@24.8.1) 4467 + vite: rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) 3860 4468 transitivePeerDependencies: 3861 4469 - '@types/node' 3862 4470 - esbuild ··· 3871 4479 - tsx 3872 4480 - yaml 3873 4481 3874 - vitepress@1.6.4(@algolia/client-search@5.40.1)(@types/node@24.8.1)(change-case@5.4.4)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3): 4482 + vitepress@1.6.4(@algolia/client-search@5.40.1)(@types/node@24.8.1)(change-case@5.4.4)(jiti@2.6.1)(postcss@8.5.6)(search-insights@2.17.3)(terser@5.44.0)(typescript@5.9.3)(yaml@2.8.1): 3875 4483 dependencies: 3876 4484 '@docsearch/css': 3.8.2 3877 4485 '@docsearch/js': 3.8.2(@algolia/client-search@5.40.1)(search-insights@2.17.3) ··· 3880 4488 '@shikijs/transformers': 2.5.0 3881 4489 '@shikijs/types': 2.5.0 3882 4490 '@types/markdown-it': 14.1.2 3883 - '@vitejs/plugin-vue': 5.2.4(rolldown-vite@7.1.14(@types/node@24.8.1))(vue@3.5.22(typescript@5.9.3)) 4491 + '@vitejs/plugin-vue': 5.2.4(rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) 3884 4492 '@vue/devtools-api': 7.7.7 3885 4493 '@vue/shared': 3.5.22 3886 4494 '@vueuse/core': 12.8.2(typescript@5.9.3) ··· 3889 4497 mark.js: 8.11.1 3890 4498 minisearch: 7.2.0 3891 4499 shiki: 2.5.0 3892 - vite: rolldown-vite@7.1.14(@types/node@24.8.1) 4500 + vite: rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) 3893 4501 vue: 3.5.22(typescript@5.9.3) 3894 4502 optionalDependencies: 3895 4503 postcss: 8.5.6 ··· 3923 4531 - universal-cookie 3924 4532 - yaml 3925 4533 3926 - vitest@3.2.4(@types/node@24.8.1)(jsdom@27.0.0(postcss@8.5.6)): 4534 + vitest@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1): 3927 4535 dependencies: 3928 4536 '@types/chai': 5.2.2 3929 4537 '@vitest/expect': 3.2.4 3930 - '@vitest/mocker': 3.2.4(rolldown-vite@7.1.14(@types/node@24.8.1)) 4538 + '@vitest/mocker': 3.2.4(rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1)) 3931 4539 '@vitest/pretty-format': 3.2.4 3932 4540 '@vitest/runner': 3.2.4 3933 4541 '@vitest/snapshot': 3.2.4 ··· 3945 4553 tinyglobby: 0.2.15 3946 4554 tinypool: 1.1.1 3947 4555 tinyrainbow: 2.0.0 3948 - vite: rolldown-vite@7.1.14(@types/node@24.8.1) 3949 - vite-node: 3.2.4(@types/node@24.8.1) 4556 + vite: rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) 4557 + vite-node: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) 3950 4558 why-is-node-running: 2.3.0 3951 4559 optionalDependencies: 3952 4560 '@types/node': 24.8.1 ··· 4020 4628 xml-name-validator@5.0.0: {} 4021 4629 4022 4630 xmlchars@2.2.0: {} 4631 + 4632 + yaml@2.8.1: {} 4023 4633 4024 4634 yocto-queue@0.1.0: {} 4025 4635
+4
pnpm-workspace.yaml
··· 1 + packages: 2 + - 'lib' 3 + - 'cli' 4 + - 'docs'
public/vite.svg lib/public/vite.svg
src/core/binder.ts lib/src/core/binder.ts
src/core/charge.ts lib/src/core/charge.ts
src/core/dom.ts lib/src/core/dom.ts
src/core/evaluator.ts lib/src/core/evaluator.ts
src/core/plugin.ts lib/src/core/plugin.ts
src/core/signal.ts lib/src/core/signal.ts
src/index.ts lib/src/index.ts
src/main.ts lib/src/main.ts
src/plugins/index.ts lib/src/plugins/index.ts
src/plugins/persist.ts lib/src/plugins/persist.ts
src/plugins/scroll.ts lib/src/plugins/scroll.ts
src/plugins/url.ts lib/src/plugins/url.ts
src/styles/base.css lib/src/styles/base.css
src/types/volt.d.ts lib/src/types/volt.d.ts
test/core/binder.test.ts lib/test/core/binder.test.ts
test/core/charge.test.ts lib/test/core/charge.test.ts
test/core/evaluator.test.ts lib/test/core/evaluator.test.ts
test/core/events.test.ts lib/test/core/events.test.ts
test/core/for-binding.test.ts lib/test/core/for-binding.test.ts
test/core/if-binding.test.ts lib/test/core/if-binding.test.ts
test/core/model-binding.test.ts lib/test/core/model-binding.test.ts
test/core/plugin.test.ts lib/test/core/plugin.test.ts
test/core/signal.test.ts lib/test/core/signal.test.ts
test/integration/list-rendering.test.ts lib/test/integration/list-rendering.test.ts
test/integration/mount.test.ts lib/test/integration/mount.test.ts
test/integration/plugins.test.ts lib/test/integration/plugins.test.ts
test/plugins/persist.test.ts lib/test/plugins/persist.test.ts
test/plugins/scroll.test.ts lib/test/plugins/scroll.test.ts
test/plugins/url.test.ts lib/test/plugins/url.test.ts
test/setupTests.ts lib/test/setupTests.ts
+1 -1
tsconfig.json lib/tsconfig.json
··· 23 23 "baseUrl": ".", 24 24 "paths": { "$types/*": ["./src/types/*"], "@volt/core/*": ["./src/core/*"], "@volt/plugins/*": ["./src/plugins/*"] } 25 25 }, 26 - "include": ["src", "test"] 26 + "include": ["src", "lib/test"] 27 27 }
vite.config.ts lib/vite.config.ts