diff --git a/.changeset/marko-virtual-followups.md b/.changeset/marko-virtual-followups.md new file mode 100644 index 000000000..457b3824b --- /dev/null +++ b/.changeset/marko-virtual-followups.md @@ -0,0 +1,15 @@ +--- +'@tanstack/marko-virtual': minor +--- + +Post-release follow-ups for the Marko adapter: full option parity for both tags +(scrollMargin, enabled, isRtl, isScrollingResetDelay, useScrollendEvent, +useAnimationFrameWithResizeObserver, laneAssignmentMode, useCachedMeasurements, +debug, custom measureElement; window tag adds horizontal and initialOffset), +named handle types (VirtualizerHandle / WindowVirtualizerHandle) whose .d.marko +declarations are generated into dist/tags at build time (via marko-type-check) +and type-checked in CI, a new Chat + Pretext example (calculated row heights via +@chenglou/pretext; streamed replies grow through resizeItem), browser e2e suites +for every example plus option-gate behavioral proofs, TypeScript-strict cleanups +across examples, and chat example improvements (accurate size estimate, +load-ahead history trigger, overflow-anchor handling). diff --git a/.gitignore b/.gitignore index 2a91fb574..8b0d0de9e 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ vite.config.ts.timestamp-* test-results/ playwright-report/ *.log +**/*.tsbuildinfo \ No newline at end of file diff --git a/docs/config.json b/docs/config.json index e908d013d..04b62a7dc 100644 --- a/docs/config.json +++ b/docs/config.json @@ -9,9 +9,18 @@ { "label": "Getting Started", "children": [ - { "label": "Introduction", "to": "introduction" }, - { "label": "Installation", "to": "installation" }, - { "label": "Text Measurement with Pretext", "to": "pretext" } + { + "label": "Introduction", + "to": "introduction" + }, + { + "label": "Installation", + "to": "installation" + }, + { + "label": "Text Measurement with Pretext", + "to": "pretext" + } ], "frameworks": [ { @@ -35,7 +44,10 @@ { "label": "solid", "children": [ - { "label": "Solid Virtual", "to": "framework/solid/solid-virtual" } + { + "label": "Solid Virtual", + "to": "framework/solid/solid-virtual" + } ] }, { @@ -69,13 +81,24 @@ }, { "label": "Guides", - "children": [{ "label": "Chat", "to": "chat" }] + "children": [ + { + "label": "Chat", + "to": "chat" + } + ] }, { "label": "Core APIs", "children": [ - { "label": "Virtualizer", "to": "api/virtualizer" }, - { "label": "VirtualItem", "to": "api/virtual-item" } + { + "label": "Virtualizer", + "to": "api/virtualizer" + }, + { + "label": "VirtualItem", + "to": "api/virtual-item" + } ] }, { @@ -282,17 +305,65 @@ "to": "framework/marko/examples/grid", "label": "Grid" }, + { + "to": "framework/marko/examples/pretext", + "label": "Pretext" + }, + { + "to": "framework/marko/examples/padding", + "label": "Padding" + }, + { + "to": "framework/marko/examples/scroll-padding", + "label": "Scroll Padding" + }, + { + "to": "framework/marko/examples/sticky", + "label": "Sticky" + }, { "to": "framework/marko/examples/infinite-scroll", "label": "Infinite Scroll" }, + { + "to": "framework/marko/examples/chat", + "label": "Chat" + }, + { + "to": "framework/marko/examples/chat-pretext", + "label": "Chat + Pretext" + }, { "to": "framework/marko/examples/smooth-scroll", "label": "Smooth Scroll" }, + { + "to": "framework/marko/examples/table", + "label": "Table" + }, { "to": "framework/marko/examples/window", "label": "Window" + }, + { + "to": "framework/marko/examples/ssr", + "label": "SSR: No Fetch, Rows Render on Client" + }, + { + "to": "framework/marko/examples/ssr-fetch", + "label": "SSR: Fetch on Server, Rows Render on Client" + }, + { + "to": "framework/marko/examples/ssr-slice", + "label": "SSR: Fetch on Server, Rows Render on Server" + }, + { + "to": "framework/marko/examples/ssr-restore", + "label": "SSR: Fetch on Server, Rows Render on Server at Offset" + }, + { + "to": "framework/marko/examples/window-ssr-slice", + "label": "SSR Window: Fetch on Server, Rows Render on Server" } ] } diff --git a/docs/framework/marko/marko-virtual.md b/docs/framework/marko/marko-virtual.md index e6cf29ccc..f798c64b3 100644 --- a/docs/framework/marko/marko-virtual.md +++ b/docs/framework/marko/marko-virtual.md @@ -1,3 +1,7 @@ +--- +title: Marko Virtual +--- + # Marko Virtual `@tanstack/marko-virtual` is the Marko 6 adapter for TanStack Virtual. It provides @@ -9,6 +13,9 @@ row, column, and grid virtualisation via two auto-discovered Marko tags: Tags are discovered automatically by the Marko compiler when the package is installed. No imports are needed in your `.marko` files. +Each tag is used **self-closing** and exposes a **tag variable** (written ``). +You then own the markup, reading `v.virtualItems` and `v.totalSize` to render the visible rows. + ## Installation ```sh @@ -18,37 +25,31 @@ npm install @tanstack/marko-virtual ## Row virtualisation ```marko - - - - -
- 35 - getScrollElement=scrollEl - > -
- -
- Row ${item.index} -
- +
+ 35 + getScrollElement=() => scrollEl() + /> +
+ +
+ Row ${item.index}
- +
- +
``` ## Column virtualisation @@ -59,72 +60,70 @@ Same tag, `horizontal=true`:
- 100 horizontal=true - getScrollElement=scrollEl - > -
- -
- Column ${item.index} -
- -
- + getScrollElement=() => scrollEl() + /> +
+ +
+ Column ${item.index} +
+ +
``` ## Grid virtualisation Compose two `` tags — one for rows, one for columns — sharing the -same scroll element: +same scroll element. Each returns its own tag variable. Pass `getScrollElement` as an +arrow (`() => ref()`) so each virtualizer resolves its own element: ```marko
- 35 - getScrollElement=scrollEl - > - 100 - horizontal=true - getScrollElement=scrollEl - > -
- - -
- Cell ${row.index}, ${col.index} -
- - -
- - + getScrollElement=() => scrollEl() + /> + 100 + horizontal=true + getScrollElement=() => scrollEl() + /> +
+ + +
+ Cell ${row.index}, ${col.index} +
+ + +
``` @@ -133,69 +132,76 @@ same scroll element: Use `` when the entire page scrolls rather than a container: ```marko - 35 -> -
- -
- Row ${item.index} -
- -
-
+/> +
+ +
+ Row ${item.index} +
+ +
``` ## Dynamic / variable item sizes -For items with unknown heights, use `measureElement` as an effect-driven ref +For items with unknown heights, use `measureElement` as a ` - - 35 - overscan=5 - > -
- -
- Row ${item.index} -
- + 35 + overscan=5 + scrollMargin=listOffset + /> + // totalSize is already margin-free (core subtracts scrollMargin), so it is the + // wrapper's height as-is; only item.start values carry the margin. +
+ +
+ Row ${item.index}
- - + +
diff --git a/examples/marko/window/tsconfig.json b/examples/marko/window/tsconfig.json new file mode 100644 index 000000000..ec50a5679 --- /dev/null +++ b/examples/marko/window/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "Bundler", + "skipLibCheck": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "strict": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src", + "e2e", + "playwright.config.ts", + "vite.config.ts", + "../../../packages/marko-virtual/src/tags/**/*" + ] +} diff --git a/examples/marko/window/vite.config.ts b/examples/marko/window/vite.config.ts index 3f5bca43a..37cef051e 100644 --- a/examples/marko/window/vite.config.ts +++ b/examples/marko/window/vite.config.ts @@ -2,7 +2,10 @@ import { defineConfig } from 'vite' import marko from '@marko/run/vite' export default defineConfig({ - // Cast to any: @marko/run/vite types are built against Vite 6 but this - // workspace uses Vite 5. The plugin works correctly at runtime. + // Cast to any: the workspace resolves two Vite majors — @marko/run/vite is + // built against Vite 8, while the examples pin Vite 6 — and their Plugin types + // are structurally incompatible (the hotUpdate hook signature differs), so + // defineConfig (typed against Vite 6 here) rejects the Vite 8 plugin. The + // plugin is correct at runtime; drop the cast once the tree is on one Vite. plugins: [marko() as any], }) diff --git a/packages/marko-virtual/README.md b/packages/marko-virtual/README.md index c6ab7a6f2..d9ff0808d 100644 --- a/packages/marko-virtual/README.md +++ b/packages/marko-virtual/README.md @@ -2,7 +2,7 @@ Headless UI for virtualizing scrollable elements in [Marko 6](https://markojs.com), built on top of [`@tanstack/virtual-core`](https://tanstack.com/virtual). -Part of the [TanStack Virtual](https://tanstack.com/virtual) family. +Part of the [TanStack Virtual](https://tanstack.com/virtual) family. Full documentation: [tanstack.com/virtual — Marko](https://tanstack.com/virtual/latest/docs/framework/marko/marko-virtual). ## Installation @@ -16,7 +16,7 @@ pnpm add @tanstack/marko-virtual ## Setup -Add to your project's `marko.json` to make the tags available: +The tags are discovered automatically by the Marko compiler when the package is installed — no imports are needed in your `.marko` files. If your build setup does not pick them up (monorepo links, unusual resolution), add the taglib explicitly to your project's `marko.json`: ```json { @@ -26,118 +26,233 @@ Add to your project's `marko.json` to make the tags available: ## Usage +Each tag is used **self-closing** and exposes a **tag variable** (``). You own the markup: read `v.virtualItems` and `v.totalSize` to render the visible rows. Declare the virtualizer **before** the markup that reads it, and pass `getScrollElement` as an **arrow thunk** (`() => scrollEl()`) so the element ref resolves at call time. + ### `` — scrollable container Use when you control the scroll element (a div with `overflow: auto`). ```marko - - - - - - - -
- - 35 - getScrollElement=scrollEl - > -
- -
- Row ${item.index} -
- +
+ 35 + getScrollElement=() => scrollEl() + /> +
+ +
+ Row ${item.index}
- - + +
- - - ``` -> **Why `mounted`?** The virtualizer measures the scroll element's dimensions on mount. During SSR the DOM has no layout, so `offsetHeight` is 0 and no items would be calculated. The `` guard ensures the virtualizer only renders after the browser has real dimensions available. +No mount guard is needed: the tag renders a deterministic initial state on the server (see [SSR](#ssr-server-rendered-slices)) and the live, observing instance takes over on mount. + +For columns, set `horizontal=true` and swap the width/height and `translateX` accordingly. For grids, compose two `` tags (rows + columns) sharing the same scroll element — each with its own tag variable and its own `() => scrollEl()` thunk. ### `` — full-page scrolling Use when the page itself is the scroll container. ```marko - - - + 35 +/> +
+ +
+ Row ${item.index} +
+ +
+``` - 35> -
- -
- Row ${item.index} -
- -
-
+If content sits above the list (it almost always does on a real page), measure the list's `offsetTop` on mount and pass it as `scrollMargin`, then subtract it from `item.start` when positioning — see the `window` example. + +## SSR: server-rendered slices + +Server rendering is **opt-in per virtualizer** via `initialRect` (a viewport size hint). When set, the server paints the initial visible rows directly into the HTML; without it the server renders an empty container and the client fills it on mount — byte-for-byte identical to a client-only build. Pair with `initialOffset` (a number) to server-render at a scroll position (deep links, restore): - - +```marko + 35 + getScrollElement=() => scrollEl() + initialRect=({ width: 800, height: 400 }) + initialOffset=3500 +/> ``` -## Tag parameters +Nothing live is serialized — the slice is computed as plain data at render time and recomputes identically on resume. See the five `ssr*` examples for the full patterns, including measurement-cache restore. + +### Streaming SSR: the tag inside `` -Both tags use Marko 6's tag parameters pattern. The body receives virtual state via `|{ ... }|` destructuring: +The tags compose with Marko's streaming out of the box — put a virtualizer inside an +`` and the whole pattern above still holds, per streamed chunk: ```marko - - - + + <@placeholder> +

Loading people…

+ + <@catch|err|> +

Failed to load: ${(err as Error).message}

+ + + +
+ 48 + getScrollElement=() => scrollEl() + initialRect=({ width: 800, height: 400 }) + /> + +
+ +
``` -## API Reference +What happens on the wire: the server flushes the page shell (with the placeholder) +**immediately**, keeps streaming, and when `fetchPeople()` resolves it flushes the +awaited subtree as a **later chunk** — including the server-painted rows when +`initialRect` is set. Each streamed chunk **resumes independently** on the client: +the live virtualizer instance for this list mounts when its chunk arrives, without +waiting for the rest of the page. Nothing extra to configure — the seed is computed +inside the awaited subtree from the resolved data, so server and resumed client +agree by construction. -### `` +Two things to know: -| Attribute | Type | Required | Description | -| -------------------- | --------------------------- | -------- | --------------------------------------------------- | -| `count` | `number` | ✅ | Total number of items | -| `getScrollElement` | `() => Element \| null` | ✅ | Returns the scroll container | -| `estimateSize` | `(index: number) => number` | | Estimated item size in px (default: `50`) | -| `overscan` | `number` | | Items to render outside the viewport (default: `5`) | -| `horizontal` | `boolean` | | Enable horizontal scrolling (default: `false`) | -| `paddingStart` | `number` | | Padding before the first item in px | -| `paddingEnd` | `number` | | Padding after the last item in px | -| `scrollPaddingStart` | `number` | | Scroll padding at the start | -| `scrollPaddingEnd` | `number` | | Scroll padding at the end | -| `gap` | `number` | | Gap between items in px | -| `lanes` | `number` | | Number of lanes for grid layouts | -| `initialOffset` | `number \| (() => number)` | | Initial scroll offset | +- Marko streams awaited content **out of order**: the chunk arrives at the end of + the byte stream and an inline script swaps it into place. With JavaScript + disabled that swap never runs, so an ``-wrapped list renders blank without + JS even though the row HTML is present in the source. If no-JS visibility + matters, fetch **before** render (await the data in the route) instead of + streaming. +- The `ssr-fetch` example shows the streamed pattern with client-rendered rows; the + `ssr-slice` example shows it with **server-painted** rows (`initialRect`) — its + test suite includes a wire-level assertion that the placeholder flushes first and + the painted rows arrive in a later chunk. -**Tag parameters provided to body:** +## Dynamic / variable item sizes -| Parameter | Type | Description | -| ---------------- | ----------------------------------------------------- | -------------------------------------------------------- | -| `virtualItems` | `VirtualItem[]` | Items to render, with `index`, `start`, `size`, `key` | -| `totalSize` | `number` | Total scrollable size in px — set on the inner container | -| `measureElement` | `(el: Element \| null) => void` | Pass to `ref` for dynamic size measurement | -| `scrollToIndex` | `(index: number, options?: ScrollToOptions) => void` | Scroll to an item by index | -| `scrollToOffset` | `(offset: number, options?: ScrollToOptions) => void` | Scroll to a px offset | +For items with unknown heights, drive `measureElement` from a per-row ` + + 35 + overscan=5 + scrollMargin=listOffset + /> + // totalSize is already margin-free (core subtracts scrollMargin), so it is the + // wrapper's height as-is; only item.start values carry the margin. +
+ +
+ Row ${item.index} +
+ +
+ + diff --git a/packages/marko-virtual/e2e/option-gates/src/routes/window-horizontal/+page.marko b/packages/marko-virtual/e2e/option-gates/src/routes/window-horizontal/+page.marko new file mode 100644 index 000000000..15b1cbd24 --- /dev/null +++ b/packages/marko-virtual/e2e/option-gates/src/routes/window-horizontal/+page.marko @@ -0,0 +1,24 @@ +// GATE: window-virtualizer horizontal — the PAGE scrolls sideways. Scrolling the +// window horizontally must advance the rendered column window. + + + gate: window horizontal + + 100 + overscan=5 + horizontal=true + /> +
+ +
+ Col ${item.index} +
+ +
+ + diff --git a/packages/marko-virtual/e2e/option-gates/src/routes/window-initial-offset/+page.marko b/packages/marko-virtual/e2e/option-gates/src/routes/window-initial-offset/+page.marko new file mode 100644 index 000000000..8a87d884f --- /dev/null +++ b/packages/marko-virtual/e2e/option-gates/src/routes/window-initial-offset/+page.marko @@ -0,0 +1,27 @@ +// GATE: window-virtualizer initialOffset override — SSR seed at a position. +// initialRect + initialOffset=3500 must make the SERVER paint the slice around +// index 100 (35px rows), not index 0. Asserted at view-source level (raw HTML) +// and live (the page loads with those rows present pre-scroll). + + + gate: window initialOffset + + 35 + overscan=5 + initialRect=({ width: 1280, height: 700 }) + initialOffset=3500 + /> +
+ +
+ Row ${item.index} +
+ +
+ + diff --git a/packages/marko-virtual/e2e/option-gates/tsconfig.json b/packages/marko-virtual/e2e/option-gates/tsconfig.json new file mode 100644 index 000000000..c27ccaf5c --- /dev/null +++ b/packages/marko-virtual/e2e/option-gates/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "Bundler", + "skipLibCheck": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "strict": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src", + "e2e", + "playwright.config.ts", + "vite.config.ts", + "../../src/tags/**/*" + ] +} diff --git a/packages/marko-virtual/e2e/option-gates/vite.config.ts b/packages/marko-virtual/e2e/option-gates/vite.config.ts new file mode 100644 index 000000000..42b1c6a94 --- /dev/null +++ b/packages/marko-virtual/e2e/option-gates/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'vite' +import marko from '@marko/run/vite' +import path from 'node:path' + +export default defineConfig({ + plugins: [marko() as any], + resolve: { + alias: { + // Run the gates against virtual-core SOURCE so no core build is needed — + // and so the optional core fix can be gate-verified by editing src alone. + '@tanstack/virtual-core': path.resolve( + __dirname, + '../../../virtual-core/src/index.ts', + ), + }, + }, +}) diff --git a/packages/marko-virtual/marko.json b/packages/marko-virtual/marko.json index 82bf8ffd5..bc929c34a 100644 --- a/packages/marko-virtual/marko.json +++ b/packages/marko-virtual/marko.json @@ -1 +1 @@ -{ "tags-dir": "./src/tags", "script-lang": "ts" } +{ "exports": "./dist/tags" } diff --git a/packages/marko-virtual/package.json b/packages/marko-virtual/package.json index 7ae7c56ba..e8c47617d 100644 --- a/packages/marko-virtual/package.json +++ b/packages/marko-virtual/package.json @@ -38,31 +38,34 @@ }, "./package.json": "./package.json", "./marko.json": "./marko.json", - "./src/tags/*": "./src/tags/*" + "./dist/tags/*": "./dist/tags/*" }, - "sideEffects": false, + "sideEffects": [ + "**/*.marko" + ], "files": [ "dist", - "src/tags", "marko.json", "README.md" ], "scripts": { "clean": "premove ./dist ./coverage", "test:eslint": "eslint ./src", - "test:types": "tsc", + "test:types": "mtc -p tsconfig.typecheck.json", "test:lib": "vitest", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "vite build" + "build": "vite build && marko-type-check -p tsconfig.tags.json" }, "dependencies": { "@tanstack/virtual-core": "workspace:*" }, "devDependencies": { - "@marko/vite": "^3.0.0", + "@marko/language-tools": "^2.6.2", + "@marko/type-check": "3.1.1", + "@marko/vite": "^6.1.0", "@testing-library/dom": "^10.0.0", - "marko": "^6.0.0" + "marko": "^6.2.2" }, "peerDependencies": { "marko": "^6.0.0" diff --git a/packages/marko-virtual/src/tags/virtualizer/index.marko b/packages/marko-virtual/src/tags/virtualizer/index.marko index 35ea0ea0b..03835294c 100644 --- a/packages/marko-virtual/src/tags/virtualizer/index.marko +++ b/packages/marko-virtual/src/tags/virtualizer/index.marko @@ -1,6 +1,20 @@ import { Virtualizer } from "@tanstack/virtual-core" -import type { VirtualItem, ScrollToOptions } from "@tanstack/virtual-core" -import { buildOptions } from "./options" +import type { Range, VirtualItem, ScrollToOptions } from "@tanstack/virtual-core" +import { buildOptions, renderSlice } from "./options" + +export interface VirtualizerHandle { + virtualItems: VirtualItem[] + totalSize: number + range: { startIndex: number; endIndex: number } | null + measureElement: ((el: Element | null) => void) | undefined + scrollToIndex: (index: number, options?: ScrollToOptions) => void + scrollToOffset: (offset: number, options?: ScrollToOptions) => void + measure: () => void + resizeItem: (index: number, size: number) => void + scrollToEnd: (options?: { behavior?: ScrollToOptions['behavior'] }) => void + isAtEnd: (threshold?: number) => boolean + getDistanceFromEnd: () => number +} export interface Input { count: number @@ -15,19 +29,41 @@ export interface Input { gap?: number lanes?: number initialOffset?: number | (() => number) - content: Marko.Body<[{ - virtualItems: VirtualItem[] - totalSize: number - measureElement: ((el: Element | null) => void) | undefined - scrollToIndex: (index: number, options?: ScrollToOptions) => void - scrollToOffset: (offset: number, options?: ScrollToOptions) => void - }]> + initialRect?: { width: number; height: number } + getItemKey?: (index: number) => number | string | bigint + rangeExtractor?: (range: Range) => number[] + indexAttribute?: string + initialMeasurementsCache?: VirtualItem[] + anchorTo?: 'start' | 'end' + followOnAppend?: boolean | ScrollBehavior + scrollEndThreshold?: number + scrollMargin?: number + enabled?: boolean + isRtl?: boolean + isScrollingResetDelay?: number + useScrollendEvent?: boolean + useAnimationFrameWithResizeObserver?: boolean + laneAssignmentMode?: 'estimate' | 'measured' + useCachedMeasurements?: boolean + debug?: boolean + measureElement?: ( + element: Element, + entry: ResizeObserverEntry | undefined, + instance: Virtualizer, + ) => number } +// Render-time seed: derive the initial window as plain data via a transient virtual-core +// instance (see renderSlice in ./options). On the server this paints the initial slice into +// the HTML (when `initialRect` is given) or an empty container with the correct total height +// (when it is not) — no guard. The values serialize and recompute identically on +// resume. The live, observing instance is then built client-only in onMount and takes over. + + + + | null)/> void) | null)/> - - onMount() { @@ -36,11 +72,13 @@ export interface Input { if (!inst) return items = inst.getVirtualItems() size = inst.getTotalSize() + range = inst.range } v = new Virtualizer(buildOptions(input, notify)) cleanup = v!._didMount() v!._willUpdate() + notify() } onUpdate() { @@ -52,12 +90,10 @@ export interface Input { if (!inst) return items = inst.getVirtualItems() size = inst.getTotalSize() + range = inst.range } current.setOptions({ ...current.options, ...buildOptions(input, notify) }) - - // _willUpdate() is a no-op when the scroll element is unchanged, so - // notify() explicitly afterwards to recompute on count/option changes. current._willUpdate() notify() } @@ -69,10 +105,16 @@ export interface Input { } /> -<${input.content} - virtualItems=items - totalSize=size - measureElement=v?.measureElement - scrollToIndex=(index: number, options?: ScrollToOptions) => v?.scrollToIndex(index, options) - scrollToOffset=(offset: number, options?: ScrollToOptions) => v?.scrollToOffset(offset, options) -/> + v?.scrollToIndex(index, options), + scrollToOffset: (offset: number, options?: ScrollToOptions) => v?.scrollToOffset(offset, options), + measure: () => v?.measure(), + resizeItem: (index: number, itemSize: number) => v?.resizeItem(index, itemSize), + scrollToEnd: (options?: { behavior?: ScrollToOptions['behavior'] }) => v?.scrollToEnd(options), + isAtEnd: (threshold?: number) => v?.isAtEnd(threshold) ?? false, + getDistanceFromEnd: () => v?.getDistanceFromEnd() ?? Infinity, +}) as VirtualizerHandle)> diff --git a/packages/marko-virtual/src/tags/virtualizer/options.ts b/packages/marko-virtual/src/tags/virtualizer/options.ts index d401a758d..44a33c47f 100644 --- a/packages/marko-virtual/src/tags/virtualizer/options.ts +++ b/packages/marko-virtual/src/tags/virtualizer/options.ts @@ -1,9 +1,14 @@ import { + Virtualizer, elementScroll, observeElementOffset, observeElementRect, } from '@tanstack/virtual-core' -import type { VirtualizerOptions } from '@tanstack/virtual-core' +import type { + Range, + VirtualItem, + VirtualizerOptions, +} from '@tanstack/virtual-core' // The subset of tag input that maps onto virtual-core options. Kept here // (rather than imported from index.marko) so this helper has no dependency @@ -21,10 +26,65 @@ export interface VirtualizerInput { gap?: number lanes?: number initialOffset?: number | (() => number) + // Viewport size used for the render-time (server / pre-mount) slice. When omitted, + // virtual-core's default 0x0 rect yields an empty window (totalSize is still correct). + initialRect?: { width: number; height: number } + // Stable per-item identity so cached measurements survive reorder (defaults to the index). + getItemKey?: (index: number) => number | string | bigint + // Hook over the visible index range: force extra indexes (e.g. a pinned sticky header) + // into the rendered window. Compose with virtual-core's `defaultRangeExtractor`. + rangeExtractor?: (range: Range) => Array + // DOM attribute carrying the item index for `measureElement` (default 'data-index'). + // Two instances measuring the SAME element (a grid cell) need distinct attributes. + indexAttribute?: string + // Pre-measured items (plain data) to seed the measurement cache. + initialMeasurementsCache?: Array + // Anchor the window to the list 'start' (default) or 'end' (a chat pinned to newest). + anchorTo?: 'start' | 'end' + // With anchorTo 'end': stay pinned to the end as items append + // (true, or a ScrollBehavior for how to get there). + followOnAppend?: boolean | ScrollBehavior + // How close (px) to the end still counts as "at the end" (default 1). + scrollEndThreshold?: number + // The list's offset (px) from the top of its scroll element, when other content sits + // above it inside the same scroller. Shifts all position math; item.start values then + // INCLUDE this margin (subtract it when positioning items relative to the list). + scrollMargin?: number + // Disable switch (default true). false is NOT a freeze: core unobserves, clears + // its measurements, and renders an EMPTY window until re-enabled (re-enabling + // re-windows from the live scroll position). + enabled?: boolean + // Right-to-left horizontal lists (default false). + isRtl?: boolean + // ms after the last scroll event before "user is scrolling" ends (default 150). + isScrollingResetDelay?: number + // Use the native scrollend event instead of the isScrollingResetDelay timer. + useScrollendEvent?: boolean + // Batch ResizeObserver measurements into animation frames (avoids + // "ResizeObserver loop" console errors under heavy resize load). + useAnimationFrameWithResizeObserver?: boolean + // Masonry/multi-lane: how items are assigned to lanes — by 'estimate' (default) + // or by 'measured' sizes. + laneAssignmentMode?: 'estimate' | 'measured' + // Make the default measurer return the cached (or estimated) size instead of + // reading the DOM — freezes sizes when they are already known and DOM + // re-measures are unwanted. + useCachedMeasurements?: boolean + // Verbose engine logging. + debug?: boolean + // Replace HOW an item's size is read from its element (e.g. include margins, + // or measure a child). Defaults to core's border-box measurer. + measureElement?: ( + element: Element, + entry: ResizeObserverEntry | undefined, + instance: Virtualizer, + ) => number } // Single source of truth for the input -> virtual-core option mapping, -// shared by onMount (construction) and onUpdate (setOptions). +// shared by the render-time seed, onMount (construction) and onUpdate (setOptions). +// Optional inputs are forwarded possibly-undefined on purpose: virtual-core's +// setOptions() skips undefined keys, so its own defaults apply. export function buildOptions( input: VirtualizerInput, notify: () => void, @@ -42,9 +102,55 @@ export function buildOptions( gap: input.gap, lanes: input.lanes, initialOffset: input.initialOffset, + initialRect: input.initialRect, + getItemKey: input.getItemKey, + rangeExtractor: input.rangeExtractor, + indexAttribute: input.indexAttribute, + initialMeasurementsCache: input.initialMeasurementsCache, + anchorTo: input.anchorTo, + followOnAppend: input.followOnAppend, + scrollEndThreshold: input.scrollEndThreshold, + scrollMargin: input.scrollMargin, + enabled: input.enabled, + isRtl: input.isRtl, + isScrollingResetDelay: input.isScrollingResetDelay, + useScrollendEvent: input.useScrollendEvent, + useAnimationFrameWithResizeObserver: + input.useAnimationFrameWithResizeObserver, + laneAssignmentMode: input.laneAssignmentMode, + useCachedMeasurements: input.useCachedMeasurements, + debug: input.debug, + measureElement: input.measureElement, observeElementRect, observeElementOffset, scrollToFn: elementScroll, onChange: notify, } } + +// Render-time (server / pre-mount) slice. Constructs a transient virtual-core instance, +// reads the initial window as PLAIN DATA, and discards it — nothing live is retained, so +// nothing live is serialized, and the values recompute identically on resume. With +// `initialRect` this is a real slice of rows; without it renderSlice returns the trivial +// window (no items, size 0). The constructor and getVirtualItems()/getTotalSize() are +// SSR-safe (no DOM access); getScrollElement is forced to null so the probe never touches +// the scroll element, which does not exist on the server. +// `range` is the visible window ({ startIndex, endIndex }) the probe computed — plain data, +// null when there is no slice. +export function renderSlice(input: VirtualizerInput): { + items: VirtualItem[] + size: number + range: { startIndex: number; endIndex: number } | null +} { + // Opt-in: without an explicit viewport hint there is no server slice. Returning the + // trivial window keeps every example that does not pass `initialRect` byte-for-byte + // identical to a client-only build (empty container, filled on mount). + if (!input.initialRect) { + return { items: [], size: 0, range: null } + } + const probe = new Virtualizer( + buildOptions({ ...input, getScrollElement: () => null }, () => {}), + ) + const items = probe.getVirtualItems() + return { items, size: probe.getTotalSize(), range: probe.range } +} diff --git a/packages/marko-virtual/src/tags/window-virtualizer/index.marko b/packages/marko-virtual/src/tags/window-virtualizer/index.marko index 095452a04..8d662380f 100644 --- a/packages/marko-virtual/src/tags/window-virtualizer/index.marko +++ b/packages/marko-virtual/src/tags/window-virtualizer/index.marko @@ -1,30 +1,66 @@ import { Virtualizer } from "@tanstack/virtual-core" -import type { VirtualItem, ScrollToOptions } from "@tanstack/virtual-core" -import { buildOptions } from "./options" +import type { Range, VirtualItem, ScrollToOptions } from "@tanstack/virtual-core" +import { buildOptions, renderSlice } from "./options" + +export interface WindowVirtualizerHandle { + virtualItems: VirtualItem[] + totalSize: number + range: { startIndex: number; endIndex: number } | null + measureElement: ((el: Element | null) => void) | undefined + scrollToIndex: (index: number, options?: ScrollToOptions) => void + scrollToOffset: (offset: number, options?: ScrollToOptions) => void + measure: () => void + resizeItem: (index: number, size: number) => void + scrollToEnd: (options?: { behavior?: ScrollToOptions['behavior'] }) => void + isAtEnd: (threshold?: number) => boolean + getDistanceFromEnd: () => number +} export interface Input { count: number estimateSize?: (index: number) => number overscan?: number + horizontal?: boolean paddingStart?: number paddingEnd?: number scrollPaddingStart?: number scrollPaddingEnd?: number gap?: number lanes?: number - content: Marko.Body<[{ - virtualItems: VirtualItem[] - totalSize: number - measureElement: ((el: Element | null) => void) | undefined - scrollToIndex: (index: number, options?: ScrollToOptions) => void - scrollToOffset: (offset: number, options?: ScrollToOptions) => void - }]> + initialOffset?: number | (() => number) + initialRect?: { width: number; height: number } + getItemKey?: (index: number) => number | string | bigint + rangeExtractor?: (range: Range) => number[] + indexAttribute?: string + initialMeasurementsCache?: VirtualItem[] + anchorTo?: 'start' | 'end' + followOnAppend?: boolean | ScrollBehavior + scrollEndThreshold?: number + scrollMargin?: number + enabled?: boolean + isRtl?: boolean + isScrollingResetDelay?: number + useScrollendEvent?: boolean + useAnimationFrameWithResizeObserver?: boolean + laneAssignmentMode?: 'estimate' | 'measured' + useCachedMeasurements?: boolean + debug?: boolean + measureElement?: ( + element: Element, + entry: ResizeObserverEntry | undefined, + instance: Virtualizer, + ) => number } +// Render-time seed (window counterpart): paints the initial slice into the server HTML when +// `initialRect` is given (empty container with correct total height otherwise), no +// guard. The live, observing instance is built client-only in onMount and takes over. + + + + | null)/> void) | null)/> - - onMount() { @@ -33,11 +69,13 @@ export interface Input { if (!inst) return items = inst.getVirtualItems() size = inst.getTotalSize() + range = inst.range } v = new Virtualizer(buildOptions(input, notify)) cleanup = v!._didMount() v!._willUpdate() + notify() } onUpdate() { @@ -49,12 +87,10 @@ export interface Input { if (!inst) return items = inst.getVirtualItems() size = inst.getTotalSize() + range = inst.range } current.setOptions({ ...current.options, ...buildOptions(input, notify) }) - - // _willUpdate() is a no-op when the scroll element is unchanged, so - // notify() explicitly afterwards to recompute on count/option changes. current._willUpdate() notify() } @@ -66,10 +102,16 @@ export interface Input { } /> -<${input.content} - virtualItems=items - totalSize=size - measureElement=v?.measureElement - scrollToIndex=(index: number, options?: ScrollToOptions) => v?.scrollToIndex(index, options) - scrollToOffset=(offset: number, options?: ScrollToOptions) => v?.scrollToOffset(offset, options) -/> + v?.scrollToIndex(index, options), + scrollToOffset: (offset: number, options?: ScrollToOptions) => v?.scrollToOffset(offset, options), + measure: () => v?.measure(), + resizeItem: (index: number, itemSize: number) => v?.resizeItem(index, itemSize), + scrollToEnd: (options?: { behavior?: ScrollToOptions['behavior'] }) => v?.scrollToEnd(options), + isAtEnd: (threshold?: number) => v?.isAtEnd(threshold) ?? false, + getDistanceFromEnd: () => v?.getDistanceFromEnd() ?? Infinity, +}) as WindowVirtualizerHandle)> diff --git a/packages/marko-virtual/src/tags/window-virtualizer/options.ts b/packages/marko-virtual/src/tags/window-virtualizer/options.ts index ab0c81e04..bf9cb90db 100644 --- a/packages/marko-virtual/src/tags/window-virtualizer/options.ts +++ b/packages/marko-virtual/src/tags/window-virtualizer/options.ts @@ -1,9 +1,14 @@ import { + Virtualizer, observeWindowOffset, observeWindowRect, windowScroll, } from '@tanstack/virtual-core' -import type { VirtualizerOptions } from '@tanstack/virtual-core' +import type { + Range, + VirtualItem, + VirtualizerOptions, +} from '@tanstack/virtual-core' // The subset of tag input that maps onto virtual-core options. Kept here // (rather than imported from index.marko) so this helper has no dependency @@ -12,16 +17,77 @@ export interface WindowVirtualizerInput { count: number estimateSize?: (index: number) => number overscan?: number + // Horizontal window scrolling (the page scrolls sideways; default false). + horizontal?: boolean paddingStart?: number paddingEnd?: number scrollPaddingStart?: number scrollPaddingEnd?: number gap?: number lanes?: number + // Starting scroll offset. Defaults to reading the live window scroll position + // (window.scrollY, or window.scrollX when horizontal) on the client and 0 on the + // server. Pass a number to seed a server slice at a position (pairs with initialRect). + initialOffset?: number | (() => number) + // Window viewport size for the render-time (server / pre-mount) slice. When omitted, + // there is no server slice. + initialRect?: { width: number; height: number } + // Stable per-item identity so cached measurements survive reorder (defaults to the index). + getItemKey?: (index: number) => number | string | bigint + // Hook over the visible index range: force extra indexes (e.g. a pinned sticky header) + // into the rendered window. Compose with virtual-core's `defaultRangeExtractor`. + rangeExtractor?: (range: Range) => Array + // DOM attribute carrying the item index for `measureElement` (default 'data-index'). + // Two instances measuring the SAME element (a grid cell) need distinct attributes. + indexAttribute?: string + // Pre-measured items (plain data) to seed the measurement cache. + initialMeasurementsCache?: Array + // Anchor the window to the list 'start' (default) or 'end' (a chat pinned to newest). + anchorTo?: 'start' | 'end' + // With anchorTo 'end': stay pinned to the end as items append + // (true, or a ScrollBehavior for how to get there). + followOnAppend?: boolean | ScrollBehavior + // How close (px) to the end still counts as "at the end" (default 1). + scrollEndThreshold?: number + // The list's offset (px) from the top of the page, when other content sits above it. + // Shifts all position math; item.start values then INCLUDE this margin (subtract it + // when positioning items relative to the list). The textbook window-virtualizer knob. + scrollMargin?: number + // Disable switch (default true). false is NOT a freeze: core unobserves, clears + // its measurements, and renders an EMPTY window until re-enabled (re-enabling + // re-windows from the live scroll position). + enabled?: boolean + // Right-to-left horizontal lists (default false). + isRtl?: boolean + // ms after the last scroll event before "user is scrolling" ends (default 150). + isScrollingResetDelay?: number + // Use the native scrollend event instead of the isScrollingResetDelay timer. + useScrollendEvent?: boolean + // Batch ResizeObserver measurements into animation frames (avoids + // "ResizeObserver loop" console errors under heavy resize load). + useAnimationFrameWithResizeObserver?: boolean + // Masonry/multi-lane: how items are assigned to lanes — by 'estimate' (default) + // or by 'measured' sizes. + laneAssignmentMode?: 'estimate' | 'measured' + // Make the default measurer return the cached (or estimated) size instead of + // reading the DOM — freezes sizes when they are already known and DOM + // re-measures are unwanted. + useCachedMeasurements?: boolean + // Verbose engine logging. + debug?: boolean + // Replace HOW an item's size is read from its element (e.g. include margins, + // or measure a child). Defaults to core's border-box measurer. + measureElement?: ( + element: Element, + entry: ResizeObserverEntry | undefined, + instance: Virtualizer, + ) => number } // Single source of truth for the input -> virtual-core option mapping, -// shared by onMount (construction) and onUpdate (setOptions). +// shared by the render-time seed, onMount (construction) and onUpdate (setOptions). +// Optional inputs are forwarded possibly-undefined on purpose: virtual-core's +// setOptions() skips undefined keys, so its own defaults apply. export function buildOptions( input: WindowVirtualizerInput, notify: () => void, @@ -31,16 +97,67 @@ export function buildOptions( estimateSize: input.estimateSize ?? (() => 50), getScrollElement: () => (typeof document !== 'undefined' ? window : null), overscan: input.overscan ?? 5, + horizontal: input.horizontal, paddingStart: input.paddingStart, paddingEnd: input.paddingEnd, scrollPaddingStart: input.scrollPaddingStart, scrollPaddingEnd: input.scrollPaddingEnd, gap: input.gap, lanes: input.lanes, - initialOffset: () => (typeof document !== 'undefined' ? window.scrollY : 0), + // Consumer override first (mirrors react-virtual's spread-over-defaults), then the + // live window position on the client / 0 (top) on the server. + initialOffset: + input.initialOffset ?? + (() => + typeof document !== 'undefined' + ? input.horizontal + ? window.scrollX + : window.scrollY + : 0), + initialRect: input.initialRect, + getItemKey: input.getItemKey, + rangeExtractor: input.rangeExtractor, + indexAttribute: input.indexAttribute, + initialMeasurementsCache: input.initialMeasurementsCache, + anchorTo: input.anchorTo, + followOnAppend: input.followOnAppend, + scrollEndThreshold: input.scrollEndThreshold, + scrollMargin: input.scrollMargin, + enabled: input.enabled, + isRtl: input.isRtl, + isScrollingResetDelay: input.isScrollingResetDelay, + useScrollendEvent: input.useScrollendEvent, + useAnimationFrameWithResizeObserver: + input.useAnimationFrameWithResizeObserver, + laneAssignmentMode: input.laneAssignmentMode, + useCachedMeasurements: input.useCachedMeasurements, + debug: input.debug, + measureElement: input.measureElement, observeElementRect: observeWindowRect, observeElementOffset: observeWindowOffset, scrollToFn: windowScroll, onChange: notify, } } + +// Render-time (server / pre-mount) slice — the window counterpart of the element helper. +// Opt-in: without `initialRect` there is no server slice (trivial window), which keeps every +// example that does not pass it byte-for-byte identical to a client-only build. With +// `initialRect` a transient instance derives the initial window as plain data and is discarded; +// nothing live is retained or serialized, and the values recompute identically on resume. +// The probe never observes, so it reads `initialRect` directly (getScrollElement returns null on +// the server and window on the client, but neither is measured before getVirtualItems()). +// `range` is the visible window ({ startIndex, endIndex }) the probe computed — plain data, +// null when there is no slice. +export function renderSlice(input: WindowVirtualizerInput): { + items: VirtualItem[] + size: number + range: { startIndex: number; endIndex: number } | null +} { + if (!input.initialRect) { + return { items: [], size: 0, range: null } + } + const probe = new Virtualizer(buildOptions(input, () => {})) + const items = probe.getVirtualItems() + return { items, size: probe.getTotalSize(), range: probe.range } +} diff --git a/packages/marko-virtual/tests/fixtures/count-update-fixture.marko b/packages/marko-virtual/tests/fixtures/count-update-fixture.marko index c425bbdb8..ad5a2aef9 100644 --- a/packages/marko-virtual/tests/fixtures/count-update-fixture.marko +++ b/packages/marko-virtual/tests/fixtures/count-update-fixture.marko @@ -1,4 +1,4 @@ -// Fixture for testing reactive count changes via onUpdate. +// Fixture for testing reactive count changes via onUpdate (return-a-tag-variable shape). // The tag must recalculate items when count changes — // this requires the explicit notify() call after _willUpdate() in onUpdate. // Without it, count changes silently have no effect. @@ -18,24 +18,23 @@ export interface Input { data-testid="decrement-btn" onClick=() => { count = Math.max(0, count - 1) } /> - 50 getScrollElement=scrollEl + /> +
-
- -
- Row ${item.index} -
- -
- + +
+ Row ${item.index} +
+ +
diff --git a/packages/marko-virtual/tests/fixtures/surface-fixture.marko b/packages/marko-virtual/tests/fixtures/surface-fixture.marko new file mode 100644 index 000000000..8e9654d9e --- /dev/null +++ b/packages/marko-virtual/tests/fixtures/surface-fixture.marko @@ -0,0 +1,47 @@ +// Test fixture for the EXPANDED return surface of : +// range + measure/resizeItem/scrollToEnd/isAtEnd/getDistanceFromEnd. +// Renders the values into the DOM so jsdom tests can assert on them, and +// exposes buttons that invoke the methods so the wiring is exercised. + +export interface Input { + count?: number + itemHeight?: number + rangeExtractor?: (range: { + startIndex: number + endIndex: number + overscan: number + count: number + }) => number[] +} + +
+ input.itemHeight ?? 50 + getScrollElement=() => scrollEl() + getItemKey=(i: number) => `key-${i}` + rangeExtractor=input.rangeExtractor + /> +
${v.range ? v.range.startIndex : 'null'}
+
${v.range ? v.range.endIndex : 'null'}
+
${String(v.isAtEnd())}
+
${v.virtualItems[0] ? String(v.virtualItems[0].key) : 'none'}
+ + + +
+ +
+ Row ${item.index} +
+ +
+
diff --git a/packages/marko-virtual/tests/fixtures/virtualizer-fixture.marko b/packages/marko-virtual/tests/fixtures/virtualizer-fixture.marko index e6a2acc09..410d46a5e 100644 --- a/packages/marko-virtual/tests/fixtures/virtualizer-fixture.marko +++ b/packages/marko-virtual/tests/fixtures/virtualizer-fixture.marko @@ -1,6 +1,7 @@ -// Test fixture for tag. +// Test fixture for tag (return-a-tag-variable shape). // Not a route file — no needed. -// No guard needed since template.mount() runs client-side directly. +// No guard: the tag builds at render time and renders nothing itself; +// the consumer owns the markup below and reads v.virtualItems / v.totalSize. export interface Input { count?: number @@ -10,26 +11,25 @@ export interface Input { }
- input.itemHeight ?? 50 horizontal=input.horizontal ?? false lanes=input.lanes ?? 1 getScrollElement=scrollEl + /> +
-
- -
- Row ${item.index} -
- -
- + +
+ Row ${item.index} +
+ +
diff --git a/packages/marko-virtual/tests/fixtures/window-virtualizer-fixture.marko b/packages/marko-virtual/tests/fixtures/window-virtualizer-fixture.marko index d6647e96d..e79a4f78c 100644 --- a/packages/marko-virtual/tests/fixtures/window-virtualizer-fixture.marko +++ b/packages/marko-virtual/tests/fixtures/window-virtualizer-fixture.marko @@ -1,26 +1,27 @@ -// Test fixture for tag. +// Test fixture for tag (return-a-tag-variable shape). +// No guard: the tag builds at render time and renders nothing itself; +// the consumer owns the markup below and reads v.virtualItems / v.totalSize. export interface Input { count?: number itemHeight?: number } - input.itemHeight ?? 50 +/> +
-
- -
- Row ${item.index} -
- -
- + +
+ Row ${item.index} +
+ +
diff --git a/packages/marko-virtual/tests/marko.json b/packages/marko-virtual/tests/marko.json new file mode 100644 index 000000000..31e34666e --- /dev/null +++ b/packages/marko-virtual/tests/marko.json @@ -0,0 +1 @@ +{ "tags-dir": "../src/tags" } diff --git a/packages/marko-virtual/tests/options.test.ts b/packages/marko-virtual/tests/options.test.ts new file mode 100644 index 000000000..b67244ac7 --- /dev/null +++ b/packages/marko-virtual/tests/options.test.ts @@ -0,0 +1,349 @@ +// Unit tests for the input -> virtual-core option mapping (buildOptions). +// Verifies the SSR knobs (initialRect, initialOffset) are plumbed through. Combined with +// the Node-level proof that virtual-core turns initialRect/initialOffset into a correct +// pre-mount slice, this covers the render-time seed's inputs without needing a DOM. +// The full-parity batch (scrollMargin, enabled, isRtl, isScrollingResetDelay, +// useScrollendEvent, useAnimationFrameWithResizeObserver, laneAssignmentMode, +// useCachedMeasurements, debug, custom measureElement — plus horizontal and an +// initialOffset override on the window tag) is Tier-1 forwarding-tested here; the +// behaviorally-observable subset has real-browser gates (see the session record). +import { describe, expect, test } from 'vitest' +import { + Virtualizer, + observeWindowRect, + windowScroll, +} from '@tanstack/virtual-core' +import { buildOptions } from '../src/tags/virtualizer/options' +import { buildOptions as buildWindowOptions } from '../src/tags/window-virtualizer/options' + +describe('buildOptions — input to virtual-core option mapping', () => { + const noop = () => {} + + test('maps initialRect through (the SSR slice knob)', () => { + const opts = buildOptions( + { + count: 1000, + estimateSize: () => 40, + getScrollElement: () => null, + initialRect: { width: 800, height: 400 }, + }, + noop, + ) + expect(opts.initialRect).toEqual({ width: 800, height: 400 }) + expect(opts.count).toBe(1000) + expect(opts.onChange).toBe(noop) + }) + + test('maps initialOffset through (the SSR start-position knob)', () => { + const opts = buildOptions( + { count: 10, getScrollElement: () => null, initialOffset: 1200 }, + noop, + ) + expect(opts.initialOffset).toBe(1200) + }) + + test('initialRect is undefined when omitted (core applies its 0x0 default)', () => { + const opts = buildOptions({ count: 10, getScrollElement: () => null }, noop) + expect(opts.initialRect).toBeUndefined() + }) + + test('defaults: estimateSize 50, overscan 5, horizontal false', () => { + const opts = buildOptions({ count: 10, getScrollElement: () => null }, noop) + expect(opts.estimateSize(0)).toBe(50) + expect(opts.overscan).toBe(5) + expect(opts.horizontal).toBe(false) + }) + + test('maps every optional prop through when provided', () => { + const getItemKey = (i: number) => `k${i}` + const rangeExtractor = () => [0] + const cache = [{ index: 0, start: 0, size: 32, end: 32, key: 0, lane: 0 }] + const opts = buildOptions( + { + count: 500, + estimateSize: () => 32, + getScrollElement: () => null, + overscan: 10, + horizontal: true, + paddingStart: 8, + paddingEnd: 16, + scrollPaddingStart: 4, + scrollPaddingEnd: 12, + gap: 6, + lanes: 3, + initialOffset: 1200, + initialRect: { width: 640, height: 480 }, + getItemKey, + rangeExtractor, + indexAttribute: 'data-row-index', + initialMeasurementsCache: cache, + anchorTo: 'end', + followOnAppend: 'smooth', + scrollEndThreshold: 24, + }, + noop, + ) + expect(opts.estimateSize(0)).toBe(32) + expect(opts.overscan).toBe(10) + expect(opts.horizontal).toBe(true) + expect(opts.paddingStart).toBe(8) + expect(opts.paddingEnd).toBe(16) + expect(opts.scrollPaddingStart).toBe(4) + expect(opts.scrollPaddingEnd).toBe(12) + expect(opts.gap).toBe(6) + expect(opts.lanes).toBe(3) + expect(opts.initialOffset).toBe(1200) + expect(opts.initialRect).toEqual({ width: 640, height: 480 }) + expect(opts.getItemKey).toBe(getItemKey) + expect(opts.rangeExtractor).toBe(rangeExtractor) + expect(opts.indexAttribute).toBe('data-row-index') + expect(opts.initialMeasurementsCache).toBe(cache) + expect(opts.anchorTo).toBe('end') + expect(opts.followOnAppend).toBe('smooth') + expect(opts.scrollEndThreshold).toBe(24) + }) + + test('new optional props stay undefined when omitted (core applies its defaults)', () => { + const opts = buildOptions({ count: 10, getScrollElement: () => null }, noop) + expect(opts.getItemKey).toBeUndefined() + expect(opts.rangeExtractor).toBeUndefined() + expect(opts.indexAttribute).toBeUndefined() + expect(opts.initialMeasurementsCache).toBeUndefined() + expect(opts.anchorTo).toBeUndefined() + expect(opts.followOnAppend).toBeUndefined() + expect(opts.scrollEndThreshold).toBeUndefined() + }) + + test('maps the full-parity batch through when provided', () => { + const measurer = () => 99 + const opts = buildOptions( + { + count: 100, + getScrollElement: () => null, + scrollMargin: 40, + enabled: false, + isRtl: true, + isScrollingResetDelay: 300, + useScrollendEvent: true, + useAnimationFrameWithResizeObserver: true, + laneAssignmentMode: 'measured', + useCachedMeasurements: true, + debug: true, + measureElement: measurer, + }, + noop, + ) + expect(opts.scrollMargin).toBe(40) + expect(opts.enabled).toBe(false) + expect(opts.isRtl).toBe(true) + expect(opts.isScrollingResetDelay).toBe(300) + expect(opts.useScrollendEvent).toBe(true) + expect(opts.useAnimationFrameWithResizeObserver).toBe(true) + expect(opts.laneAssignmentMode).toBe('measured') + expect(opts.useCachedMeasurements).toBe(true) + expect(opts.debug).toBe(true) + expect(opts.measureElement).toBe(measurer) + }) + + test('full-parity batch stays undefined when omitted (core applies its defaults)', () => { + const opts = buildOptions({ count: 10, getScrollElement: () => null }, noop) + expect(opts.scrollMargin).toBeUndefined() + expect(opts.enabled).toBeUndefined() + expect(opts.isRtl).toBeUndefined() + expect(opts.isScrollingResetDelay).toBeUndefined() + expect(opts.useScrollendEvent).toBeUndefined() + expect(opts.useAnimationFrameWithResizeObserver).toBeUndefined() + expect(opts.laneAssignmentMode).toBeUndefined() + expect(opts.useCachedMeasurements).toBeUndefined() + expect(opts.debug).toBeUndefined() + expect(opts.measureElement).toBeUndefined() + }) + + test('core merge contract: undefined forwards land on core defaults; provided values stick', () => { + // The whole undefined-forwarding design leans on core's setOptions skipping + // undefined keys. Characterize that contract against a REAL core instance so a + // core-side change to the merge loop fails here, not in an example. + const bare = new Virtualizer( + buildOptions({ count: 10, getScrollElement: () => null }, noop), + ) + expect(bare.options.scrollMargin).toBe(0) + expect(bare.options.enabled).toBe(true) + expect(bare.options.isRtl).toBe(false) + expect(bare.options.isScrollingResetDelay).toBe(150) + expect(bare.options.useScrollendEvent).toBe(false) + expect(bare.options.useAnimationFrameWithResizeObserver).toBe(false) + expect(bare.options.laneAssignmentMode).toBe('estimate') + expect(bare.options.useCachedMeasurements).toBe(false) + expect(bare.options.debug).toBe(false) + expect(typeof bare.options.measureElement).toBe('function') // core's default measurer + + const measurer = () => 99 + const tuned = new Virtualizer( + buildOptions( + { + count: 10, + getScrollElement: () => null, + scrollMargin: 40, + enabled: false, + laneAssignmentMode: 'measured', + measureElement: measurer, + }, + noop, + ), + ) + expect(tuned.options.scrollMargin).toBe(40) + expect(tuned.options.enabled).toBe(false) + expect(tuned.options.laneAssignmentMode).toBe('measured') + expect(tuned.options.measureElement).toBe(measurer) + }) + + test('scrollMargin shifts the pre-mount slice positions (item.start includes the margin)', () => { + // Same transient-instance path renderSlice uses; proves the margin reaches the math. + const flat = new Virtualizer( + buildOptions( + { + count: 100, + estimateSize: () => 50, + getScrollElement: () => null, + initialRect: { width: 800, height: 400 }, + }, + noop, + ), + ) + const shifted = new Virtualizer( + buildOptions( + { + count: 100, + estimateSize: () => 50, + getScrollElement: () => null, + initialRect: { width: 800, height: 400 }, + scrollMargin: 200, + }, + noop, + ), + ) + expect(flat.getVirtualItems()[0]!.start).toBe(0) + expect(shifted.getVirtualItems()[0]!.start).toBe(200) + // getTotalSize subtracts scrollMargin (it is the LIST's own height, margin-free) + expect(shifted.getTotalSize()).toBe(flat.getTotalSize()) + }) +}) + +describe('buildOptions (window) — input to virtual-core option mapping', () => { + const noop = () => {} + + test('wires the window observers and scroll fn', () => { + const opts = buildWindowOptions({ count: 10 }, noop) + expect(opts.observeElementRect).toBe(observeWindowRect) + expect(opts.scrollToFn).toBe(windowScroll) + // window offset is derived internally (window.scrollY / 0), so it is a function, not a number + expect(typeof opts.initialOffset).toBe('function') + }) + + test('initialOffset override wins over the window.scrollY default', () => { + expect( + buildWindowOptions({ count: 10, initialOffset: 4800 }, noop) + .initialOffset, + ).toBe(4800) + const thunk = () => 1234 + expect( + buildWindowOptions({ count: 10, initialOffset: thunk }, noop) + .initialOffset, + ).toBe(thunk) + }) + + test('horizontal forwards; undefined when omitted (core defaults false)', () => { + expect( + buildWindowOptions({ count: 10, horizontal: true }, noop).horizontal, + ).toBe(true) + expect(buildWindowOptions({ count: 10 }, noop).horizontal).toBeUndefined() + }) + + test('maps every optional prop through when provided', () => { + const getItemKey = (i: number) => `k${i}` + const rangeExtractor = () => [0] + const cache = [{ index: 0, start: 0, size: 32, end: 32, key: 0, lane: 0 }] + const opts = buildWindowOptions( + { + count: 500, + estimateSize: () => 32, + overscan: 10, + paddingStart: 8, + paddingEnd: 16, + scrollPaddingStart: 4, + scrollPaddingEnd: 12, + gap: 6, + lanes: 3, + initialRect: { width: 1280, height: 800 }, + getItemKey, + rangeExtractor, + indexAttribute: 'data-col-index', + initialMeasurementsCache: cache, + anchorTo: 'end', + followOnAppend: true, + scrollEndThreshold: 24, + }, + noop, + ) + expect(opts.estimateSize(0)).toBe(32) + expect(opts.overscan).toBe(10) + expect(opts.paddingStart).toBe(8) + expect(opts.paddingEnd).toBe(16) + expect(opts.scrollPaddingStart).toBe(4) + expect(opts.scrollPaddingEnd).toBe(12) + expect(opts.gap).toBe(6) + expect(opts.lanes).toBe(3) + expect(opts.initialRect).toEqual({ width: 1280, height: 800 }) + expect(opts.getItemKey).toBe(getItemKey) + expect(opts.rangeExtractor).toBe(rangeExtractor) + expect(opts.indexAttribute).toBe('data-col-index') + expect(opts.initialMeasurementsCache).toBe(cache) + expect(opts.anchorTo).toBe('end') + expect(opts.followOnAppend).toBe(true) + expect(opts.scrollEndThreshold).toBe(24) + }) + + test('maps the full-parity batch through when provided', () => { + const measurer = () => 99 + const opts = buildWindowOptions( + { + count: 100, + scrollMargin: 40, + enabled: false, + isRtl: true, + isScrollingResetDelay: 300, + useScrollendEvent: true, + useAnimationFrameWithResizeObserver: true, + laneAssignmentMode: 'measured', + useCachedMeasurements: true, + debug: true, + measureElement: measurer, + }, + noop, + ) + expect(opts.scrollMargin).toBe(40) + expect(opts.enabled).toBe(false) + expect(opts.isRtl).toBe(true) + expect(opts.isScrollingResetDelay).toBe(300) + expect(opts.useScrollendEvent).toBe(true) + expect(opts.useAnimationFrameWithResizeObserver).toBe(true) + expect(opts.laneAssignmentMode).toBe('measured') + expect(opts.useCachedMeasurements).toBe(true) + expect(opts.debug).toBe(true) + expect(opts.measureElement).toBe(measurer) + }) + + test('full-parity batch stays undefined when omitted (core applies its defaults)', () => { + const opts = buildWindowOptions({ count: 10 }, noop) + expect(opts.scrollMargin).toBeUndefined() + expect(opts.enabled).toBeUndefined() + expect(opts.isRtl).toBeUndefined() + expect(opts.isScrollingResetDelay).toBeUndefined() + expect(opts.useScrollendEvent).toBeUndefined() + expect(opts.useAnimationFrameWithResizeObserver).toBeUndefined() + expect(opts.laneAssignmentMode).toBeUndefined() + expect(opts.useCachedMeasurements).toBeUndefined() + expect(opts.debug).toBeUndefined() + expect(opts.measureElement).toBeUndefined() + }) +}) diff --git a/packages/marko-virtual/tests/render-slice.test.ts b/packages/marko-virtual/tests/render-slice.test.ts new file mode 100644 index 000000000..1e64a4dbf --- /dev/null +++ b/packages/marko-virtual/tests/render-slice.test.ts @@ -0,0 +1,141 @@ +import { describe, expect, it } from 'vitest' +import { renderSlice as renderSliceElement } from '../src/tags/virtualizer/options' +import { renderSlice as renderSliceWindow } from '../src/tags/window-virtualizer/options' + +// renderSlice is the render-time (server / pre-mount) seed: it builds a transient virtual-core +// instance, reads the initial window as plain data, and discards it. These tests pin its two +// contracts — the opt-in gate (no initialRect => trivial window, so non-SSR examples are +// unaffected) and the slice it produces when a viewport hint is given. + +describe('renderSlice — element virtualizer', () => { + const base = { + count: 1000, + estimateSize: () => 48, + getScrollElement: () => null, + } + + it('without initialRect returns the trivial window (client-only build parity)', () => { + const { items, size } = renderSliceElement(base) + expect(items).toEqual([]) + expect(size).toBe(0) + }) + + it('with initialRect paints a contiguous slice from index 0 and the full total size', () => { + const { items, size } = renderSliceElement({ + ...base, + initialRect: { width: 800, height: 400 }, + }) + expect(items.length).toBeGreaterThan(0) + expect(items[0]?.index).toBe(0) + expect(items[items.length - 1]?.index).toBe(items.length - 1) + expect(size).toBe(1000 * 48) + }) + + it('initialOffset shifts the slice away from the top', () => { + const rect = { width: 800, height: 400 } + const top = renderSliceElement({ ...base, initialRect: rect }) + const scrolled = renderSliceElement({ + ...base, + initialRect: rect, + initialOffset: 4800, + }) + expect(top.items[0]?.index).toBe(0) + expect(scrolled.items[0]?.index).toBeGreaterThan(0) + expect(scrolled.size).toBe(top.size) + }) + + it('range is null without initialRect and spans the slice with it', () => { + expect(renderSliceElement(base).range).toBeNull() + const { items, range } = renderSliceElement({ + ...base, + initialRect: { width: 800, height: 400 }, + }) + expect(range).not.toBeNull() + // The slice includes overscan beyond the visible range, so the range sits inside it. + expect(range!.startIndex).toBeGreaterThanOrEqual(items[0]!.index) + expect(range!.endIndex).toBeLessThanOrEqual(items[items.length - 1]!.index) + expect(range!.endIndex).toBeGreaterThanOrEqual(range!.startIndex) + }) + + it('rangeExtractor in the seed forces extra indexes into the slice (sticky pattern)', () => { + const { items } = renderSliceElement({ + ...base, + initialRect: { width: 800, height: 400 }, + initialOffset: 4800, // window starts around index 100, far from 0 + rangeExtractor: (r) => { + const next = new Set([0]) // the pinned index + for ( + let i = r.startIndex - r.overscan; + i <= r.endIndex + r.overscan; + i++ + ) { + if (i >= 0 && i < r.count) next.add(i) + } + return [...next].sort((a, b) => a - b) + }, + }) + expect(items[0]?.index).toBe(0) // forced in even though scrolled away + expect(items[1]!.index).toBeGreaterThan(1) // the rest is the scrolled window + }) + + it('getItemKey flows into the seeded items', () => { + const { items } = renderSliceElement({ + ...base, + initialRect: { width: 800, height: 400 }, + getItemKey: (i) => `row-${i}`, + }) + expect(items[0]?.key).toBe('row-0') + }) + + it('anchorTo end alone does NOT move the seed; initialOffset paints the end (chat SSR)', () => { + // anchorTo is client-behavioral (follow-on-append, resize adjustment) and requires a live + // scroll element — it never positions the initial window. A chat page that wants the END + // painted into the server HTML passes initialOffset = totalSize - viewport. + const rect = { width: 800, height: 400 } + const anchoredOnly = renderSliceElement({ + ...base, + initialRect: rect, + anchorTo: 'end', + }) + expect(anchoredOnly.items[0]?.index).toBe(0) // still at the top + + const atEnd = renderSliceElement({ + ...base, + initialRect: rect, + anchorTo: 'end', + initialOffset: 1000 * 48 - 400, + }) + expect(atEnd.items[atEnd.items.length - 1]?.index).toBe(999) + expect(atEnd.size).toBe(1000 * 48) + }) +}) + +describe('renderSlice — window virtualizer', () => { + const base = { + count: 1000, + estimateSize: () => 48, + } + + it('without initialRect returns the trivial window', () => { + const { items, size } = renderSliceWindow(base) + expect(items).toEqual([]) + expect(size).toBe(0) + }) + + it('with initialRect paints a contiguous slice from index 0 and the full total size', () => { + const { items, size, range } = renderSliceWindow({ + ...base, + initialRect: { width: 1280, height: 800 }, + }) + expect(items.length).toBeGreaterThan(0) + expect(items[0]?.index).toBe(0) + expect(items[items.length - 1]?.index).toBe(items.length - 1) + expect(size).toBe(1000 * 48) + expect(range).not.toBeNull() + expect(range!.startIndex).toBe(0) + }) + + it('range is null without initialRect', () => { + expect(renderSliceWindow(base).range).toBeNull() + }) +}) diff --git a/packages/marko-virtual/tests/tags.test.ts b/packages/marko-virtual/tests/tags.test.ts index a53bcef2b..0a3a0a2b2 100644 --- a/packages/marko-virtual/tests/tags.test.ts +++ b/packages/marko-virtual/tests/tags.test.ts @@ -28,12 +28,14 @@ import { waitFor } from '@testing-library/dom' import VirtualizerFixture from './fixtures/virtualizer-fixture.marko' import WindowVirtualizerFixture from './fixtures/window-virtualizer-fixture.marko' import CountUpdateFixture from './fixtures/count-update-fixture.marko' +import SurfaceFixture from './fixtures/surface-fixture.marko' // Cast to any — @marko/vite compiles .marko files as ES modules whose default // export is the template object with mount(input, container): Instance. const Virtualizer = VirtualizerFixture as any const WindowVirtualizer = WindowVirtualizerFixture as any const CountUpdate = CountUpdateFixture as any +const Surface = SurfaceFixture as any // --------------------------------------------------------------------------- // Test helpers @@ -276,3 +278,133 @@ describe('', () => { ) }) }) + +// --------------------------------------------------------------------------- +// Expanded return surface (range + methods) — surface-fixture.marko +// --------------------------------------------------------------------------- + +describe(' expanded return surface', () => { + test('range is populated after mount and matches the rendered window', async () => { + const el = mountFixture(Surface, { count: 100 }) + await waitFor(() => { + const start = el.querySelector("[data-testid='range-start']")?.textContent + const end = el.querySelector("[data-testid='range-end']")?.textContent + expect(start).toBe('0') + expect(Number(end)).toBeGreaterThan(0) + }) + // range excludes overscan; rendered items include it, so items >= range span + const end = Number( + el.querySelector("[data-testid='range-end']")?.textContent, + ) + const items = el.querySelectorAll("[data-testid='virtual-item']") + expect(items.length).toBeGreaterThanOrEqual(end + 1) + }) + + test('getItemKey flows through to the live items', async () => { + const el = mountFixture(Surface, { count: 100 }) + await waitFor(() => + expect(el.querySelector("[data-testid='first-key']")?.textContent).toBe( + 'key-0', + ), + ) + }) + + test('isAtEnd() is false at the top of a long list', async () => { + const el = mountFixture(Surface, { count: 100 }) + await waitFor(() => + expect(el.querySelector("[data-testid='at-end']")?.textContent).toBe( + 'false', + ), + ) + }) + + test('resizeItem() resizes one row and the DOM reflects it', async () => { + const el = mountFixture(Surface, { count: 100 }) + await waitFor(() => + expect( + el.querySelectorAll("[data-testid='virtual-item']").length, + ).toBeGreaterThan(0), + ) + ;( + el.querySelector("[data-testid='do-resize']") as HTMLButtonElement + ).click() + await waitFor(() => { + const first = el.querySelectorAll("[data-testid='virtual-item']").item(0) + expect(first?.getAttribute('data-size')).toBe('150') + }) + }) + + test('measure() after resizeItem() drops the cache back to estimates', async () => { + const el = mountFixture(Surface, { count: 100 }) + await waitFor(() => + expect( + el.querySelectorAll("[data-testid='virtual-item']").length, + ).toBeGreaterThan(0), + ) + ;( + el.querySelector("[data-testid='do-resize']") as HTMLButtonElement + ).click() + await waitFor(() => + expect( + el + .querySelectorAll("[data-testid='virtual-item']") + .item(0) + ?.getAttribute('data-size'), + ).toBe('150'), + ) + ;( + el.querySelector("[data-testid='do-measure']") as HTMLButtonElement + ).click() + await waitFor(() => + expect( + el + .querySelectorAll("[data-testid='virtual-item']") + .item(0) + ?.getAttribute('data-size'), + ).toBe('50'), + ) + }) + + test('scrollToEnd() does not throw (scroll effects are e2e territory)', async () => { + const el = mountFixture(Surface, { count: 100 }) + await waitFor(() => + expect( + el.querySelectorAll("[data-testid='virtual-item']").length, + ).toBeGreaterThan(0), + ) + expect(() => + ( + el.querySelector("[data-testid='do-scroll-end']") as HTMLButtonElement + ).click(), + ).not.toThrow() + }) + + test('rangeExtractor forces an extra index into the rendered window', async () => { + const el = mountFixture(Surface, { + count: 100, + rangeExtractor: (r: { + startIndex: number + endIndex: number + overscan: number + count: number + }) => { + const next = new Set([99]) // force the LAST index in while at the top + for ( + let i = Math.max(0, r.startIndex - r.overscan); + i <= Math.min(r.count - 1, r.endIndex + r.overscan); + i++ + ) { + next.add(i) + } + return [...next].sort((a, b) => a - b) + }, + }) + await waitFor(() => { + const indexes = [ + ...el.querySelectorAll("[data-testid='virtual-item']"), + ].map((n) => n.getAttribute('data-index')) + expect(indexes).toContain('99') + expect(indexes).toContain('0') + }) + }) +}) diff --git a/packages/marko-virtual/tsconfig.tags.json b/packages/marko-virtual/tsconfig.tags.json new file mode 100644 index 000000000..5b9ec1cb3 --- /dev/null +++ b/packages/marko-virtual/tsconfig.tags.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "moduleResolution": "Bundler", + "types": ["node"], + "noEmit": false, + "declaration": true, + "outDir": "dist", + "rootDir": "src", + "tsBuildInfoFile": "./dist/tsconfig.tags.tsbuildinfo" + }, + "include": ["src/tags/**/*.marko", "src/tags/**/*.ts"] +} diff --git a/packages/marko-virtual/tsconfig.typecheck.json b/packages/marko-virtual/tsconfig.typecheck.json new file mode 100644 index 000000000..db12f4a80 --- /dev/null +++ b/packages/marko-virtual/tsconfig.typecheck.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "paths": { "@tanstack/virtual-core": ["../virtual-core/src/index.ts"] }, + "types": ["node"], + "noEmit": true + }, + "include": [ + "src/**/*.ts", + "src/**/*.marko", + "tests/**/*.ts", + "tests/**/*.marko", + "../virtual-core/src/**/*.ts" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69875bb10..3b64d2b36 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@marko/compiler': 5.40.0 + importers: .: @@ -19,10 +22,10 @@ importers: version: 1.56.1 '@tanstack/eslint-config': specifier: 0.3.4 - version: 0.3.4(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + version: 0.3.4(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) '@tanstack/vite-config': specifier: 0.4.3 - version: 0.4.3(@types/node@24.9.2)(rollup@4.59.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 0.4.3(@types/node@24.9.2)(rollup@4.59.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.9.1 @@ -31,10 +34,10 @@ importers: version: 24.9.2 eslint: specifier: ^9.36.0 - version: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + version: 9.39.0(jiti@2.6.1) jsdom: specifier: ^27.0.0 - version: 27.1.0(supports-color@10.2.2) + version: 27.1.0 knip: specifier: ^5.63.1 version: 5.66.4(@types/node@24.9.2)(typescript@5.9.3) @@ -67,10 +70,10 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vitest: specifier: ^4.1.4 - version: 4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) benchmarks: dependencies: @@ -107,13 +110,13 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(supports-color@10.2.2)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/angular/chat: dependencies: @@ -156,10 +159,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(supports-color@10.2.2)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -211,10 +214,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -263,10 +266,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -318,10 +321,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -370,10 +373,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -422,10 +425,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -477,10 +480,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -535,10 +538,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -587,10 +590,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -639,10 +642,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.2.0 version: 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -673,7 +676,7 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/lit/fixed: dependencies: @@ -698,140 +701,545 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/chat: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/chat-pretext: + dependencies: + '@chenglou/pretext': + specifier: ^0.0.7 + version: 0.0.7 + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/marko/dynamic: dependencies: '@marko/run': - specifier: ^0.7.0 - version: 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@tanstack/marko-virtual': - specifier: workspace:* + specifier: ^3.14.2 version: link:../../../packages/marko-virtual marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/marko/fixed: dependencies: '@marko/run': - specifier: ^0.7.0 - version: 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@tanstack/marko-virtual': - specifier: workspace:* + specifier: ^3.14.2 version: link:../../../packages/marko-virtual marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/marko/grid: dependencies: '@marko/run': - specifier: ^0.7.0 - version: 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@tanstack/marko-virtual': - specifier: workspace:* + specifier: ^3.14.2 version: link:../../../packages/marko-virtual marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/marko/infinite-scroll: dependencies: '@marko/run': - specifier: ^0.7.0 - version: 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@tanstack/marko-virtual': - specifier: workspace:* + specifier: ^3.14.2 version: link:../../../packages/marko-virtual marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/padding: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/pretext: + dependencies: + '@chenglou/pretext': + specifier: ^0.0.7 + version: 0.0.7 + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/scroll-padding: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/marko/smooth-scroll: dependencies: '@marko/run': - specifier: ^0.7.0 - version: 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@tanstack/marko-virtual': - specifier: workspace:* + specifier: ^3.14.2 version: link:../../../packages/marko-virtual marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/ssr: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/ssr-fetch: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/ssr-restore: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/ssr-slice: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/sticky: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/table: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/marko/variable: dependencies: '@marko/run': - specifier: ^0.7.0 - version: 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@tanstack/marko-virtual': - specifier: workspace:* + specifier: ^3.14.2 version: link:../../../packages/marko-virtual marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/marko/window: dependencies: '@marko/run': - specifier: ^0.7.0 - version: 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@tanstack/marko-virtual': - specifier: workspace:* + specifier: ^3.14.2 version: link:../../../packages/marko-virtual marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + + examples/marko/window-ssr-slice: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + '@tanstack/marko-virtual': + specifier: ^3.14.2 + version: link:../../../packages/marko-virtual + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/chat: dependencies: @@ -853,13 +1261,13 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/dynamic: dependencies: @@ -887,13 +1295,13 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/fixed: dependencies: @@ -918,13 +1326,13 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/infinite-scroll: dependencies: @@ -949,10 +1357,10 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/padding: dependencies: @@ -974,10 +1382,10 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/pretext: dependencies: @@ -1005,13 +1413,13 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/scroll-padding: dependencies: @@ -1036,10 +1444,10 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/smooth-scroll: dependencies: @@ -1061,10 +1469,10 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/sticky: dependencies: @@ -1095,10 +1503,10 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/table: dependencies: @@ -1126,10 +1534,10 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/variable: dependencies: @@ -1151,10 +1559,10 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/react/window: dependencies: @@ -1179,13 +1587,13 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/svelte/dynamic: dependencies: @@ -1198,7 +1606,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(supports-color@10.2.2)(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.5 @@ -1216,7 +1624,7 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/svelte/fixed: dependencies: @@ -1226,7 +1634,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.5 @@ -1235,7 +1643,7 @@ importers: version: 4.2.20 svelte-check: specifier: ^4.2.1 - version: 4.3.3(picomatch@4.0.4)(svelte@4.2.20)(typescript@5.9.3) + version: 4.3.3(picomatch@4.0.5)(svelte@4.2.20)(typescript@5.9.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1244,7 +1652,7 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/svelte/infinite-scroll: dependencies: @@ -1257,7 +1665,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.5 @@ -1266,7 +1674,7 @@ importers: version: 4.2.20 svelte-check: specifier: ^4.2.1 - version: 4.3.3(picomatch@4.0.4)(svelte@4.2.20)(typescript@5.9.3) + version: 4.3.3(picomatch@4.0.5)(svelte@4.2.20)(typescript@5.9.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1275,7 +1683,7 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/svelte/smooth-scroll: dependencies: @@ -1288,7 +1696,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.5 @@ -1297,7 +1705,7 @@ importers: version: 4.2.20 svelte-check: specifier: ^4.2.1 - version: 4.3.3(picomatch@4.0.4)(svelte@4.2.20)(typescript@5.9.3) + version: 4.3.3(picomatch@4.0.5)(svelte@4.2.20)(typescript@5.9.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1306,7 +1714,7 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/svelte/sticky: dependencies: @@ -1322,7 +1730,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.5 @@ -1331,7 +1739,7 @@ importers: version: 4.2.20 svelte-check: specifier: ^4.2.1 - version: 4.3.3(picomatch@4.0.4)(svelte@4.2.20)(typescript@5.9.3) + version: 4.3.3(picomatch@4.0.5)(svelte@4.2.20)(typescript@5.9.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1340,7 +1748,7 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/svelte/table: dependencies: @@ -1356,7 +1764,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.5 @@ -1365,7 +1773,7 @@ importers: version: 4.2.20 svelte-check: specifier: ^4.2.1 - version: 4.3.3(picomatch@4.0.4)(svelte@4.2.20)(typescript@5.9.3) + version: 4.3.3(picomatch@4.0.5)(svelte@4.2.20)(typescript@5.9.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1374,7 +1782,7 @@ importers: version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) examples/vue/dynamic: dependencies: @@ -1393,13 +1801,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1418,13 +1826,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1446,13 +1854,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1471,13 +1879,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1499,13 +1907,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1524,13 +1932,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1558,13 +1966,13 @@ importers: version: 4.17.20 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1589,13 +1997,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1614,13 +2022,13 @@ importers: version: 0.1.1-alpha.16 '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: ^6.4.2 - version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue-tsc: specifier: ^2.2.10 version: 2.2.12(typescript@5.9.3) @@ -1633,10 +2041,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^20.2.0 - version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + version: 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/cli': specifier: ^20.2.0 - version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2) + version: 20.3.32(@types/node@24.9.2)(chokidar@4.0.3) '@angular/common': specifier: ^20.2.0 version: 20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) @@ -1670,7 +2078,7 @@ importers: devDependencies: '@open-wc/testing': specifier: ^4.0.0 - version: 4.0.0(supports-color@10.2.2) + version: 4.0.0 lit: specifier: ^3.3.0 version: 3.3.1 @@ -1681,15 +2089,46 @@ importers: specifier: workspace:* version: link:../virtual-core devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 '@marko/vite': - specifier: ^3.0.0 - version: 3.1.6(@marko/compiler@5.39.65)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + specifier: ^6.1.0 + version: 6.1.6(@marko/compiler@5.40.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@testing-library/dom': specifier: ^10.0.0 version: 10.4.1 marko: - specifier: ^6.0.0 - version: 6.1.8 + specifier: ^6.2.2 + version: 6.3.15 + + packages/marko-virtual/e2e/option-gates: + dependencies: + '@marko/run': + specifier: ^0.10.0 + version: 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + marko: + specifier: ^6.2.2 + version: 6.3.15 + devDependencies: + '@marko/language-tools': + specifier: ^2.6.2 + version: 2.6.4 + '@marko/type-check': + specifier: 3.1.1 + version: 3.1.1 + '@playwright/test': + specifier: ^1.53.1 + version: 1.56.1 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) packages/react-virtual: dependencies: @@ -1708,7 +2147,7 @@ importers: version: 19.2.3(@types/react@19.2.16) '@vitejs/plugin-react': specifier: ^4.5.2 - version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) babel-plugin-react-compiler: specifier: ^1.0.0 version: 1.0.0 @@ -1733,7 +2172,7 @@ importers: version: 1.9.10 vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) packages/svelte-virtual: dependencies: @@ -1746,7 +2185,7 @@ importers: version: 2.5.4(svelte@4.2.20)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + version: 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) svelte: specifier: ^4.2.20 version: 4.2.20 @@ -1761,10 +2200,10 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@6.0.3)) vue: specifier: ^3.5.16 - version: 3.5.22(typescript@5.9.3) + version: 3.5.22(typescript@6.0.3) packages: @@ -2763,15 +3202,24 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/core@1.6.0': resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.6.0': resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -3327,10 +3775,6 @@ packages: resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} engines: {node: 20 || >=22} - '@isaacs/cliui@9.0.0': - resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} - engines: {node: '>=18'} - '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -3467,32 +3911,33 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@marko/compiler@5.39.65': - resolution: {integrity: sha512-m8RLnKj8OqYu8/wXCTw9ftSgsBJfHH/4VUdVDSq106ibXDiv5K+RXIi2BsIV4JVlEjClM64P0b34+S56d0Gb7Q==} + '@marko/compiler@5.40.0': + resolution: {integrity: sha512-8oSqjLeeE/Xdqcfagb3PNP/y9xZNQhFM0Ic+5DpU/EVsxxv2KJ8eipewOAe4+3FWr67fVszVEcTTPvatDZMwbA==} engines: {node: 18 || 20 || >=22} + '@marko/language-tools@2.6.4': + resolution: {integrity: sha512-nQoQixafywB/dyrdeKCVkxH8U4BzrVmHQ8V+N8hXazrFbiGCcfMq3aU7FljVE8XVdpPdVYo1zTLz21PbieS94Q==} + '@marko/run-explorer@2.0.3': resolution: {integrity: sha512-7y2+yAwptzuCpjbDaexVmTLi/XulB26zmqOsHwly//asclKJUobCvO3fpFPhl+jf1+NaWD7jVPtmdCbTeaQxKQ==} peerDependencies: '@marko/run': ^0.7||^0.8||^0.9||^0.10 - '@marko/run@0.7.7': - resolution: {integrity: sha512-8Yb2IZJEPlK3Ex3PFpuslO5oXxPSw6IJ1ZQbR2HM4V91bLksQemObUqniEcV6Q2EKpIEeesBjyVIhPlfRmm/aQ==} + '@marko/run@0.10.0': + resolution: {integrity: sha512-ehM+NBEuErVmFMJ85HpycpiWlgW49ZHdRkT3T8Dsj6tmgzGiZzMblcKBkds+ixV2M4JKvWZaM+Tu5YWMZTQOQQ==} hasBin: true peerDependencies: marko: 5 - 6 - '@marko/vite@3.1.6': - resolution: {integrity: sha512-Y5yUYnPRwS/qrJTdUHTpel3IAapSLN5BLhTpqnO1zlQSV8xKe2cE/AnUH+qKcrXTyR/iJp0NzrwtyXQPTEYThw==} - peerDependencies: - '@marko/compiler': ^5 - vite: ^2 || ^3 || ^4 || ^5 + '@marko/type-check@3.1.1': + resolution: {integrity: sha512-qReYFkpT0HRjDcoT4GTAsjiWA7d2XvHlSgWNNL4uSDVwYMOrr5DLIoNGriLN7phcOLiTNc/O8FtAtU1oLjPSSA==} + hasBin: true - '@marko/vite@5.4.10': - resolution: {integrity: sha512-4HAyrAJmmjVYkVIF72FRAjh4CdqYMEGGErQ8cCBtxDRpvgB24uaTE9uGSdz7BmU0Z8fwgfNcjuO4HXQrluJrQw==} + '@marko/vite@6.1.6': + resolution: {integrity: sha512-+GLXQDDs7xZzT50jQQZdsjcP2BgVZp3riL+6vVMndCA5hRi1fV6AzadT0PiPOTqRmLLKVFHLtg2s2jwHrraizQ==} peerDependencies: - '@marko/compiler': ^5 - vite: 4 - 8 + '@marko/compiler': 5.40.0 + vite: ^8 '@microsoft/api-extractor-model@7.29.6': resolution: {integrity: sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==} @@ -3751,6 +4196,12 @@ packages: '@napi-rs/wasm-runtime@1.0.7': resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + '@ngtools/webpack@20.3.32': resolution: {integrity: sha512-a3KWNfv3NEyNHdGusIP/+lfLtjH7L5rcqgouBm6v3t1vHQ4zg2sNgoYIQIJCAJnFI2b080YrP9jh2FqKTCJlug==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -3927,6 +4378,9 @@ packages: os: [win32] libc: [null] + '@oxc-project/types@0.139.0': + resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + '@oxc-resolver/binding-android-arm-eabi@11.12.0': resolution: {integrity: sha512-/IfGWLNdmS1kVYM2g+Xw4qXNWtCPZ/i5YMprflA8FC3vAjT4N0VucQcDxUPHxatQwre4qnhbFFWqRa1mz6Cgkw==} cpu: [arm] @@ -4184,9 +4638,107 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@rolldown/binding-android-arm64@1.1.5': + resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.1.5': + resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.1.5': + resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.1.5': + resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.1.5': + resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.1.5': + resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.1.5': + resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.1.5': + resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.1.5': + resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.1.5': + resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.1.5': + resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.1.5': + resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.1.5': + resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -4540,6 +5092,9 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -5224,6 +5779,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -5868,6 +6426,10 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} @@ -5983,12 +6545,12 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - esbuild-plugin-browserslist@0.16.0: - resolution: {integrity: sha512-vfwl1RmCa4D+wWoAxStz2g0O3wWGyUAv6mK9mfgF7X2UY3z/b/6ySTWoPu9nnKvBea6D3uk2zS1TOLt/b5qgLQ==} - engines: {node: '>=18'} + esbuild-plugin-browserslist@2.0.0: + resolution: {integrity: sha512-gm8EITyyfS3h5I+f/+6C+TFXI23PWi80vHtoccIA17GIoZDSSjHYZw+MINXrlQZ7DZ57myL0JAuDsKbUZlWQgw==} + engines: {node: ^20.19.0 || ^22.12.0 || >23.0.0} peerDependencies: - browserslist: ^4.21.8 - esbuild: ~0.25.0 + browserslist: ^4.28.0 + esbuild: ~0.27.0 esbuild-wasm@0.28.1: resolution: {integrity: sha512-p/GD4E8oYRjg3kjdKrnMb0s4PzXgJF42e0MF4H0+ACyK/kIlFRp3e0fzOleIG+wBBm6MM3XQrbpe7soEA+vJIA==} @@ -6258,10 +6820,6 @@ packages: debug: optional: true - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - form-data@4.0.4: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} @@ -6365,12 +6923,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@11.1.0: - resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} - engines: {node: 20 || >=22} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -6454,15 +7006,12 @@ packages: htmljs-parser@5.10.2: resolution: {integrity: sha512-Db/pHZehPxGD8Cy0NvACoMfnVQqfgEiK7z+7cuEDOeJdnzuomyaw3I31A+1uoZmS6IjvTD5iuFA+XL2LE+SieA==} - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmljs-parser@5.12.1: + resolution: {integrity: sha512-QnHLg5SWqoH5o8MD4iOWJFtdKSS2lXxtNgyznFXvEeeCK0CTi6URdYtFGkFGDANdq8RZzkuc91KaBgLx2WAhSA==} htmlparser2@10.1.0: resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - http-assert@1.5.0: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} engines: {node: '>= 0.8'} @@ -6800,10 +7349,6 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jackspeak@4.2.3: - resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} - engines: {node: 20 || >=22} - jest-diff@30.2.0: resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -6965,22 +7510,96 @@ packages: webpack: optional: true - less@4.4.0: - resolution: {integrity: sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==} - engines: {node: '>=14'} - hasBin: true + less@4.4.0: + resolution: {integrity: sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==} + engines: {node: '>=14'} + hasBin: true + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + license-webpack-plugin@4.0.2: + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] - license-webpack-plugin@4.0.2: - resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} - peerDependencies: - webpack: '*' - peerDependenciesMeta: - webpack: - optional: true + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -7106,8 +7725,8 @@ packages: engines: {node: '>= 18'} hasBin: true - marko@6.1.8: - resolution: {integrity: sha512-7OLNy2gdSyxlTwwOpsVeFlWypcATV/SM140pkW2YUNkTzTnSDR3ICf4uoKtmTD/fXVzr0Uo+lAcVrmEz/sI0vA==} + marko@6.3.15: + resolution: {integrity: sha512-wOa/bAnYbhgZe2ysDyvD9gC/kDpCssZ6IC+FL4twUIqNCrBMT4Pdc3bucn05wg4XpY+vgDOCBjk/zNy0mA58Pg==} engines: {node: '>=22'} math-intrinsics@1.1.0: @@ -7248,10 +7867,6 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} @@ -7308,6 +7923,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-postinstall@0.3.4: resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -7542,9 +8162,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} @@ -7649,6 +8266,10 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -7729,6 +8350,10 @@ packages: resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.19: + resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -7932,6 +8557,9 @@ packages: relative-import-path@1.0.0: resolution: {integrity: sha512-ZvbtoduKQmD4PZeJPfH6Ql21qUWhaMxiHkIsH+FUnZqKDwNIXBtGg5zRZyHWomiGYk8n5+KMBPK7Mi4D0XWfNg==} + relative-import-path@1.0.1: + resolution: {integrity: sha512-mLABwLdOB694B3BW3bNlLOJsWCDhFRBn4BW+gkhILZXJFaymkQWDZom+3qOGYFpbN9K8eeQx8lsy2N+SX/qncQ==} + remove-accents@0.5.0: resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} @@ -7964,6 +8592,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-sync@1.2.2: + resolution: {integrity: sha512-qq4M0+Gxgiohxw0MUYprQiNWzYKMqCvVgpZO0Imwd1TttPIWT9NxUco8UUtIiRpiJpHPWRhhYIaiuo7EYBcv5Q==} + resolve-url-loader@5.0.0: resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} engines: {node: '>=12'} @@ -8001,6 +8632,11 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rolldown@1.1.5: + resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-preserve-directives@0.4.0: resolution: {integrity: sha512-gx4nBxYm5BysmEQS+e2tAMrtFxrGvk+Pe5ppafRibQi0zlW7VYAbEGk6IKDw9sJGPdFWgVTE0o4BU4cdG0Fylg==} peerDependencies: @@ -8518,6 +9154,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -8642,6 +9282,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} @@ -8850,6 +9495,49 @@ packages: yaml: optional: true + vite@8.1.5: + resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.3.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitefu@0.2.5: resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: @@ -9174,9 +9862,6 @@ packages: peerDependencies: zod: ^3.25.28 || ^4 - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.12: resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} @@ -9288,98 +9973,13 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(supports-color@10.2.2)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.32(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.32(chokidar@4.0.3)(webpack-dev-server@5.2.5(webpack@5.105.0(esbuild@0.28.1)))(webpack@5.105.0(esbuild@0.28.1)) - '@angular-devkit/core': 20.3.32(chokidar@4.0.3) - '@angular/build': 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(less@4.4.0)(postcss@8.5.12)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) - '@angular/compiler-cli': 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) - '@babel/core': 7.29.7 - '@babel/generator': 7.28.3 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.29.7) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.29.7) - '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.29.7) - '@babel/preset-env': 7.28.3(@babel/core@7.29.7) - '@babel/runtime': 7.28.3 - '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.105.0(esbuild@0.28.1)) - ansi-colors: 4.1.3 - autoprefixer: 10.4.21(postcss@8.5.12) - babel-loader: 10.0.0(@babel/core@7.29.7)(webpack@5.105.0(esbuild@0.28.1)) - browserslist: 4.28.2 - copy-webpack-plugin: 14.0.0(webpack@5.105.0(esbuild@0.28.1)) - css-loader: 7.1.2(webpack@5.105.0(esbuild@0.28.1)) - esbuild-wasm: 0.28.1 - fast-glob: 3.3.3 - http-proxy-middleware: 3.0.7(supports-color@10.2.2) - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - karma-source-map-support: 1.4.0 - less: 4.4.0 - less-loader: 12.3.0(less@4.4.0)(webpack@5.105.0(esbuild@0.28.1)) - license-webpack-plugin: 4.0.2(webpack@5.105.0(esbuild@0.28.1)) - loader-utils: 3.3.1 - mini-css-extract-plugin: 2.9.4(webpack@5.105.0(esbuild@0.28.1)) - open: 10.2.0 - ora: 8.2.0 - picomatch: 4.0.4 - piscina: 5.2.0 - postcss: 8.5.12 - postcss-loader: 8.1.1(postcss@8.5.12)(typescript@5.9.3)(webpack@5.105.0(esbuild@0.28.1)) - resolve-url-loader: 5.0.0 - rxjs: 7.8.2 - sass: 1.90.0 - sass-loader: 16.0.5(sass@1.90.0)(webpack@5.105.0(esbuild@0.28.1)) - semver: 7.7.2 - source-map-loader: 5.0.0(webpack@5.105.0(esbuild@0.28.1)) - source-map-support: 0.5.21 - terser: 5.43.1 - tree-kill: 1.2.2 - tslib: 2.8.1 - typescript: 5.9.3 - webpack: 5.105.0(esbuild@0.28.1) - webpack-dev-middleware: 7.4.2(webpack@5.105.0(esbuild@0.28.1)) - webpack-dev-server: 5.2.5(supports-color@10.2.2)(webpack@5.105.0(esbuild@0.28.1)) - webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(webpack@5.105.0(esbuild@0.28.1)) - optionalDependencies: - '@angular/core': 20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)) - esbuild: 0.28.1 - transitivePeerDependencies: - - '@angular/compiler' - - '@rspack/core' - - '@swc/core' - - '@types/node' - - bufferutil - - chokidar - - debug - - html-webpack-plugin - - jiti - - lightningcss - - node-sass - - sass-embedded - - stylus - - sugarss - - supports-color - - tsx - - uglify-js - - utf-8-validate - - vitest - - webpack-cli - - yaml - - '@angular-devkit/build-angular@20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1)': + '@angular-devkit/build-angular@20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(lightningcss@1.33.0)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.32(chokidar@4.0.3) '@angular-devkit/build-webpack': 0.2003.32(chokidar@4.0.3)(webpack-dev-server@5.2.5(webpack@5.105.0(esbuild@0.28.1)))(webpack@5.105.0(esbuild@0.28.1)) '@angular-devkit/core': 20.3.32(chokidar@4.0.3) - '@angular/build': 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(less@4.4.0)(postcss@8.5.12)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) + '@angular/build': 20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(postcss@8.5.12)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1) '@angular/compiler-cli': 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) '@babel/core': 7.29.7 '@babel/generator': 7.28.3 @@ -9428,7 +10028,7 @@ snapshots: typescript: 5.9.3 webpack: 5.105.0(esbuild@0.28.1) webpack-dev-middleware: 7.4.2(webpack@5.105.0(esbuild@0.28.1)) - webpack-dev-server: 5.2.5(supports-color@10.2.2)(webpack@5.105.0(esbuild@0.28.1)) + webpack-dev-server: 5.2.5(webpack@5.105.0(esbuild@0.28.1)) webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.105.0(esbuild@0.28.1)) optionalDependencies: @@ -9463,7 +10063,7 @@ snapshots: '@angular-devkit/architect': 0.2003.32(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.105.0(esbuild@0.28.1) - webpack-dev-server: 5.2.5(supports-color@10.2.2)(webpack@5.105.0(esbuild@0.28.1)) + webpack-dev-server: 5.2.5(webpack@5.105.0(esbuild@0.28.1)) transitivePeerDependencies: - chokidar @@ -9493,7 +10093,7 @@ snapshots: '@angular/core': 20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/build@20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(less@4.4.0)(postcss@8.5.12)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1)': + '@angular/build@20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(@angular/compiler@20.3.26)(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.26(@angular/animations@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.26(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.9.2)(chokidar@4.0.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(postcss@8.5.12)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.32(chokidar@4.0.3) @@ -9503,11 +10103,11 @@ snapshots: '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 '@inquirer/confirm': 5.1.14(@types/node@24.9.2) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) beasties: 0.3.5 browserslist: 4.28.2 esbuild: 0.28.1 - https-proxy-agent: 7.0.6(supports-color@10.2.2) + https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 jsonc-parser: 3.3.1 listr2: 9.0.1 @@ -9523,7 +10123,7 @@ snapshots: tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.9.3 - vite: 7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: '@angular/core': 20.3.26(@angular/compiler@20.3.26)(rxjs@7.8.2)(zone.js@0.15.1) @@ -9531,7 +10131,7 @@ snapshots: less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.12 - vitest: 4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + vitest: 4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) transitivePeerDependencies: - '@types/node' - chokidar @@ -9545,14 +10145,14 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.32(@types/node@24.9.2)(chokidar@4.0.3)(supports-color@10.2.2)': + '@angular/cli@20.3.32(@types/node@24.9.2)(chokidar@4.0.3)': dependencies: '@angular-devkit/architect': 0.2003.32(chokidar@4.0.3) '@angular-devkit/core': 20.3.32(chokidar@4.0.3) '@angular-devkit/schematics': 20.3.32(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@24.9.2) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@24.9.2))(@types/node@24.9.2)(listr2@9.0.1) - '@modelcontextprotocol/sdk': 1.26.0(supports-color@10.2.2)(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.26.0(zod@4.1.13) '@schematics/angular': 20.3.32(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 @@ -9560,7 +10160,7 @@ snapshots: jsonc-parser: 3.3.1 listr2: 9.0.1 npm-package-arg: 13.0.0 - pacote: 21.5.1(supports-color@10.2.2) + pacote: 21.5.1 resolve: 1.22.10 semver: 7.7.2 yargs: 18.0.0 @@ -9680,27 +10280,7 @@ snapshots: '@babel/helpers': 7.28.4 '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5(supports-color@10.2.2) - '@babel/types': 7.28.5 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@10.2.2) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.28.5(supports-color@10.2.2)': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.7 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5(supports-color@10.2.2)) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5(supports-color@10.2.2) + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 @@ -9815,7 +10395,7 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.5(supports-color@10.2.2) + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -9827,21 +10407,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.28.5(supports-color@10.2.2) - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5(supports-color@10.2.2) - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5(supports-color@10.2.2) + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -10255,21 +10826,11 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.28.5(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.28.5(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -10453,7 +11014,7 @@ snapshots: '@babel/parser': 7.29.7 '@babel/types': 7.29.7 - '@babel/traverse@7.28.5(supports-color@10.2.2)': + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.7 @@ -10689,11 +11250,22 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.6.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.6.0': dependencies: tslib: 2.8.1 @@ -10702,6 +11274,11 @@ snapshots: dependencies: tslib: 2.8.1 + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.25.12': optional: true @@ -10858,14 +11435,14 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.0(jiti@2.6.1))': dependencies: - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1(supports-color@10.2.2)': + '@eslint/config-array@0.21.1': dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@10.2.2) @@ -10881,7 +11458,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1(supports-color@10.2.2)': + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 debug: 4.4.3(supports-color@10.2.2) @@ -11086,8 +11663,6 @@ snapshots: dependencies: '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@9.0.0': {} - '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.3 @@ -11217,94 +11792,61 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@marko/compiler@5.39.65': + '@marko/compiler@5.40.0': dependencies: '@luxass/strip-json-comments': 1.4.0 complain: 1.6.1 he: 1.2.0 - htmljs-parser: 5.10.2 - jsesc: 3.1.0 - kleur: 4.1.5 - lasso-package-root: 1.0.1 - raptor-regexp: 1.0.1 - raptor-util: 3.2.0 - relative-import-path: 1.0.0 - resolve-from: 5.0.0 - self-closing-tags: 1.0.1 - source-map-support: 0.5.21 - - '@marko/run-explorer@2.0.3(@marko/run@0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': - dependencies: - '@marko/run': 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - - '@marko/run-explorer@2.0.3(@marko/run@0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': - dependencies: - '@marko/run': 0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - - '@marko/run@0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)': - dependencies: - '@marko/run-explorer': 2.0.3(@marko/run@0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) - '@marko/vite': 5.4.10(@marko/compiler@5.39.65)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) - browserslist: 4.28.2 - cli-table3: 0.6.5 - compression: 1.8.1(supports-color@10.2.2) - debug: 4.4.3(supports-color@10.2.2) - dotenv: 16.6.1 - draftlog: 1.0.13 - esbuild-plugin-browserslist: 0.16.0(browserslist@4.28.2)(esbuild@0.25.12)(supports-color@10.2.2) - glob: 11.1.0 - human-format: 1.2.1 - kleur: 4.1.5 - marko: 6.1.8 - parse-node-args: 1.1.3 - sade: 1.8.1 - serve-static: 1.16.2(supports-color@10.2.2) - supports-color: 10.2.2 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - warp10: 2.1.0 - transitivePeerDependencies: - - '@marko/compiler' - - '@types/node' - - esbuild - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml + htmljs-parser: 5.10.2 + jsesc: 3.1.0 + kleur: 4.1.5 + lasso-package-root: 1.0.1 + raptor-regexp: 1.0.1 + raptor-util: 3.2.0 + relative-import-path: 1.0.0 + resolve-from: 5.0.0 + self-closing-tags: 1.0.1 + source-map-support: 0.5.21 + + '@marko/language-tools@2.6.4': + dependencies: + '@luxass/strip-json-comments': 1.4.0 + '@marko/compiler': 5.40.0 + htmljs-parser: 5.12.1 + relative-import-path: 1.0.1 + + '@marko/run-explorer@2.0.3(@marko/run@0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + dependencies: + '@marko/run': 0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - '@marko/run@0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)': + '@marko/run@0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)': dependencies: - '@marko/run-explorer': 2.0.3(@marko/run@0.7.7(@marko/compiler@5.39.65)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.1.8)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) - '@marko/vite': 5.4.10(@marko/compiler@5.39.65)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + '@marko/run-explorer': 2.0.3(@marko/run@0.10.0(@marko/compiler@5.40.0)(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(marko@6.3.15)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + '@marko/vite': 6.1.6(@marko/compiler@5.40.0)(vite@8.1.5(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) browserslist: 4.28.2 cli-table3: 0.6.5 compression: 1.8.1(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2) - dotenv: 16.6.1 + dotenv: 17.4.2 draftlog: 1.0.13 - esbuild-plugin-browserslist: 0.16.0(browserslist@4.28.2)(esbuild@0.28.1)(supports-color@10.2.2) - glob: 11.1.0 + esbuild-plugin-browserslist: 2.0.0(browserslist@4.28.2)(esbuild@0.28.1)(supports-color@10.2.2) + glob: 13.0.6 human-format: 1.2.1 kleur: 4.1.5 - marko: 6.1.8 + marko: 6.3.15 parse-node-args: 1.1.3 sade: 1.8.1 - serve-static: 1.16.2(supports-color@10.2.2) + serve-static: 2.2.1(supports-color@10.2.2) supports-color: 10.2.2 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 8.1.5(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) warp10: 2.1.0 transitivePeerDependencies: - '@marko/compiler' - '@types/node' + - '@vitejs/devtools' - esbuild - jiti - less - - lightningcss - sass - sass-embedded - stylus @@ -11313,30 +11855,44 @@ snapshots: - tsx - yaml - '@marko/vite@3.1.6(@marko/compiler@5.39.65)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@marko/type-check@3.1.1': + dependencies: + '@luxass/strip-json-comments': 1.4.0 + '@marko/compiler': 5.40.0 + '@marko/language-tools': 2.6.4 + arg: 5.0.2 + kleur: 4.1.5 + typescript: 6.0.3 + + '@marko/vite@6.1.6(@marko/compiler@5.40.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: - '@marko/compiler': 5.39.65 + '@chialab/estransform': 0.19.1 + '@marko/compiler': 5.40.0 anymatch: 3.1.3 domelementtype: 2.3.0 domhandler: 5.0.3 - htmlparser2: 9.1.0 - resolve: 1.22.11 + fast-glob: 3.3.3 + htmljs-parser: 5.10.2 + htmlparser2: 10.1.0 + relative-import-path: 1.0.0 + resolve-sync: 1.2.2 resolve.exports: 2.0.3 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - '@marko/vite@5.4.10(@marko/compiler@5.39.65)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@marko/vite@6.1.6(@marko/compiler@5.40.0)(vite@8.1.5(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: '@chialab/estransform': 0.19.1 - '@marko/compiler': 5.39.65 + '@marko/compiler': 5.40.0 anymatch: 3.1.3 domelementtype: 2.3.0 domhandler: 5.0.3 fast-glob: 3.3.3 + htmljs-parser: 5.10.2 htmlparser2: 10.1.0 relative-import-path: 1.0.0 - resolve: 1.22.11 + resolve-sync: 1.2.2 resolve.exports: 2.0.3 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 8.1.5(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@microsoft/api-extractor-model@7.29.6(@types/node@24.9.2)': dependencies: @@ -11373,7 +11929,7 @@ snapshots: '@microsoft/tsdoc@0.15.1': {} - '@modelcontextprotocol/sdk@1.26.0(supports-color@10.2.2)(zod@4.1.13)': + '@modelcontextprotocol/sdk@1.26.0(zod@4.1.13)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.30) ajv: 8.18.0 @@ -11383,7 +11939,7 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.1.0 - express: 5.2.1(supports-color@10.2.2) + express: 5.2.1 express-rate-limit: 8.5.2(express@5.2.1) hono: 4.12.30 jose: 6.2.3 @@ -11560,6 +12116,13 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 + optional: true + '@ngtools/webpack@20.3.32(@angular/compiler-cli@20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.105.0(esbuild@0.28.1))': dependencies: '@angular/compiler-cli': 20.3.26(@angular/compiler@20.3.26)(typescript@5.9.3) @@ -11583,8 +12146,8 @@ snapshots: '@npmcli/agent@4.0.2': dependencies: agent-base: 7.1.4 - http-proxy-agent: 7.0.2(supports-color@10.2.2) - https-proxy-agent: 7.0.6(supports-color@10.2.2) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 lru-cache: 11.2.2 socks-proxy-agent: 8.0.5 transitivePeerDependencies: @@ -11673,10 +12236,10 @@ snapshots: '@open-wc/dedupe-mixin': 2.0.1 lit: 3.3.1 - '@open-wc/semantic-dom-diff@0.20.1(supports-color@10.2.2)': + '@open-wc/semantic-dom-diff@0.20.1': dependencies: '@types/chai': 4.3.20 - '@web/test-runner-commands': 0.9.0(supports-color@10.2.2) + '@web/test-runner-commands': 0.9.0 transitivePeerDependencies: - bufferutil - supports-color @@ -11688,10 +12251,10 @@ snapshots: lit: 3.3.1 lit-html: 3.3.1 - '@open-wc/testing@4.0.0(supports-color@10.2.2)': + '@open-wc/testing@4.0.0': dependencies: '@esm-bundle/chai': 4.3.4-fix.0 - '@open-wc/semantic-dom-diff': 0.20.1(supports-color@10.2.2) + '@open-wc/semantic-dom-diff': 0.20.1 '@open-wc/testing-helpers': 3.0.1 '@types/chai-dom': 1.11.3 '@types/sinon-chai': 3.2.12 @@ -11725,6 +12288,8 @@ snapshots: '@oxc-parser/binding-win32-x64-msvc@0.8.0': optional: true + '@oxc-project/types@0.139.0': {} + '@oxc-resolver/binding-android-arm-eabi@11.12.0': optional: true @@ -11959,8 +12524,59 @@ snapshots: dependencies: react: 19.2.7 + '@rolldown/binding-android-arm64@1.1.5': + optional: true + + '@rolldown/binding-darwin-arm64@1.1.5': + optional: true + + '@rolldown/binding-darwin-x64@1.1.5': + optional: true + + '@rolldown/binding-freebsd-x64@1.1.5': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.1.5': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-x64-musl@1.1.5': + optional: true + + '@rolldown/binding-openharmony-arm64@1.1.5': + optional: true + + '@rolldown/binding-wasm32-wasi@1.1.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.1.5': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.1.5': + optional: true + '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/pluginutils@1.0.1': {} + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 @@ -12105,10 +12721,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@sigstore/tuf@4.0.2(supports-color@10.2.2)': + '@sigstore/tuf@4.0.2': dependencies: '@sigstore/protobuf-specs': 0.5.1 - tuf-js: 4.1.0(supports-color@10.2.2) + tuf-js: 4.1.0 transitivePeerDependencies: - supports-color @@ -12122,11 +12738,11 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.5.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))': + '@stylistic/eslint-plugin@5.5.0(eslint@9.39.0(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) '@typescript-eslint/types': 8.46.2 - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -12143,49 +12759,26 @@ snapshots: transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(supports-color@10.2.2)(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(supports-color@10.2.2)(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(supports-color@10.2.2)(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) - debug: 4.4.3(supports-color@10.2.2) - svelte: 4.2.20 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) - debug: 4.4.3(supports-color@10.2.2) - svelte: 4.2.20 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.1.2(supports-color@10.2.2)(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(supports-color@10.2.2)(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(supports-color@10.2.2)(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) debug: 4.4.3(supports-color@10.2.2) - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.21 svelte: 4.2.20 - svelte-hmr: 0.16.0(svelte@4.2.20) - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - vitefu: 0.2.5(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)))(svelte@4.2.20)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) debug: 4.4.3(supports-color@10.2.2) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.21 svelte: 4.2.20 svelte-hmr: 0.16.0(svelte@4.2.20) - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - vitefu: 0.2.5(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vitefu: 0.2.5(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) transitivePeerDependencies: - supports-color @@ -12206,16 +12799,16 @@ snapshots: '@tanstack/table-core': 8.21.3 tslib: 2.8.1 - '@tanstack/eslint-config@0.3.4(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@tanstack/eslint-config@0.3.4(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint/js': 9.39.0 - '@stylistic/eslint-plugin': 5.5.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2) - eslint-plugin-n: 17.23.1(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3) + '@stylistic/eslint-plugin': 5.5.0(eslint@9.39.0(jiti@2.6.1)) + eslint: 9.39.0(jiti@2.6.1) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-n: 17.23.1(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) globals: 16.5.0 - typescript-eslint: 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - vue-eslint-parser: 10.2.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2) + typescript-eslint: 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + vue-eslint-parser: 10.2.0(eslint@9.39.0(jiti@2.6.1)) transitivePeerDependencies: - '@typescript-eslint/utils' - eslint-import-resolver-node @@ -12257,13 +12850,13 @@ snapshots: '@tanstack/table-core@8.21.3': {} - '@tanstack/vite-config@0.4.3(@types/node@24.9.2)(rollup@4.59.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@tanstack/vite-config@0.4.3(@types/node@24.9.2)(rollup@4.59.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: rollup-plugin-preserve-directives: 0.4.0(rollup@4.59.0) - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - vite-plugin-dts: 4.2.3(@types/node@24.9.2)(rollup@4.59.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) - vite-plugin-externalize-deps: 0.10.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) - vite-tsconfig-paths: 5.1.4(supports-color@10.2.2)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite-plugin-dts: 4.2.3(@types/node@24.9.2)(rollup@4.59.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + vite-plugin-externalize-deps: 0.10.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + vite-tsconfig-paths: 5.1.4(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) transitivePeerDependencies: - '@types/node' - rollup @@ -12327,6 +12920,11 @@ snapshots: tslib: 2.8.1 optional: true + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 @@ -12559,15 +13157,15 @@ snapshots: dependencies: '@types/node': 24.9.2 - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12576,14 +13174,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12606,13 +13204,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -12636,13 +13234,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12713,23 +13311,11 @@ snapshots: '@ver0/deep-equal@1.0.0': {} - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': - dependencies: - vite: 7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - - '@vitejs/plugin-react@4.7.0(supports-color@10.2.2)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: - '@babel/core': 7.28.5(supports-color@10.2.2) - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5(supports-color@10.2.2)) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5(supports-color@10.2.2)) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color + vite: 7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -12737,15 +13323,20 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': dependencies: - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) vue: 3.5.22(typescript@5.9.3) + '@vitejs/plugin-vue@5.2.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))(vue@3.5.22(typescript@6.0.3))': + dependencies: + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vue: 3.5.22(typescript@6.0.3) + '@vitest/expect@4.1.4': dependencies: '@standard-schema/spec': 1.1.0 @@ -12755,13 +13346,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@vitest/mocker@4.1.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.1.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) '@vitest/pretty-format@4.1.4': dependencies: @@ -12896,6 +13487,12 @@ snapshots: '@vue/shared': 3.5.22 vue: 3.5.22(typescript@5.9.3) + '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@6.0.3))': + dependencies: + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 + vue: 3.5.22(typescript@6.0.3) + '@vue/shared@3.5.22': {} '@vueuse/core@12.8.2(typescript@5.9.3)': @@ -12919,7 +13516,7 @@ snapshots: dependencies: errorstacks: 2.4.1 - '@web/dev-server-core@0.7.5(supports-color@10.2.2)': + '@web/dev-server-core@0.7.5': dependencies: '@types/koa': 2.15.0 '@types/ws': 7.4.7 @@ -12930,9 +13527,9 @@ snapshots: get-stream: 6.0.1 is-stream: 2.0.1 isbinaryfile: 5.0.6 - koa: 2.16.3(supports-color@10.2.2) + koa: 2.16.3 koa-etag: 4.0.0 - koa-send: 5.0.1(supports-color@10.2.2) + koa-send: 5.0.1 koa-static: 5.0.0 lru-cache: 8.0.5 mime-types: 2.1.35 @@ -12949,16 +13546,16 @@ snapshots: '@types/parse5': 6.0.3 parse5: 6.0.1 - '@web/test-runner-commands@0.9.0(supports-color@10.2.2)': + '@web/test-runner-commands@0.9.0': dependencies: - '@web/test-runner-core': 0.13.4(supports-color@10.2.2) + '@web/test-runner-core': 0.13.4 mkdirp: 1.0.4 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@web/test-runner-core@0.13.4(supports-color@10.2.2)': + '@web/test-runner-core@0.13.4': dependencies: '@babel/code-frame': 7.29.7 '@types/babel__code-frame': 7.0.6 @@ -12968,7 +13565,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@web/browser-logs': 0.4.1 - '@web/dev-server-core': 0.7.5(supports-color@10.2.2) + '@web/dev-server-core': 0.7.5 chokidar: 4.0.3 cli-cursor: 3.1.0 co-body: 6.2.0 @@ -13208,6 +13805,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + arg@5.0.2: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -13351,7 +13950,7 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.6(supports-color@10.2.2): + body-parser@1.20.6: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -13368,7 +13967,7 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.3.0(supports-color@10.2.2): + body-parser@2.3.0: dependencies: bytes: 3.1.2 content-type: 2.0.0 @@ -13492,7 +14091,7 @@ snapshots: domhandler: 5.0.3 domutils: 3.2.2 encoding-sniffer: 0.2.1 - htmlparser2: 10.0.0 + htmlparser2: 10.1.0 parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 @@ -13829,8 +14428,7 @@ snapshots: detect-libc@1.0.3: {} - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} detect-node@2.1.0: {} @@ -13872,6 +14470,8 @@ snapshots: dotenv@16.6.1: {} + dotenv@17.4.2: {} + dotenv@8.6.0: {} draftlog@1.0.13: {} @@ -13973,21 +14573,12 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - esbuild-plugin-browserslist@0.16.0(browserslist@4.28.2)(esbuild@0.25.12)(supports-color@10.2.2): - dependencies: - browserslist: 4.28.2 - debug: 4.4.3(supports-color@10.2.2) - esbuild: 0.25.12 - zod: 3.25.76 - transitivePeerDependencies: - - supports-color - - esbuild-plugin-browserslist@0.16.0(browserslist@4.28.2)(esbuild@0.28.1)(supports-color@10.2.2): + esbuild-plugin-browserslist@2.0.0(browserslist@4.28.2)(esbuild@0.28.1)(supports-color@10.2.2): dependencies: browserslist: 4.28.2 debug: 4.4.3(supports-color@10.2.2) esbuild: 0.28.1 - zod: 3.25.76 + zod: 4.1.13 transitivePeerDependencies: - supports-color @@ -14059,9 +14650,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)): + eslint-compat-utils@0.5.1(eslint@9.39.0(jiti@2.6.1)): dependencies: - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) semver: 7.7.3 eslint-import-context@0.1.9(unrs-resolver@1.11.1): @@ -14071,19 +14662,19 @@ snapshots: optionalDependencies: unrs-resolver: 1.11.1 - eslint-plugin-es-x@7.8.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)): + eslint-plugin-es-x@7.8.0(eslint@9.39.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) - eslint-compat-utils: 0.5.1(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) + eslint: 9.39.0(jiti@2.6.1) + eslint-compat-utils: 0.5.1(eslint@9.39.0(jiti@2.6.1)) - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)): dependencies: '@typescript-eslint/types': 8.46.2 comment-parser: 1.4.1 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.1.1 @@ -14091,16 +14682,16 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color - eslint-plugin-n@17.23.1(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3): + eslint-plugin-n@17.23.1(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) enhanced-resolve: 5.18.3 - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) - eslint-plugin-es-x: 7.8.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) + eslint: 9.39.0(jiti@2.6.1) + eslint-plugin-es-x: 7.8.0(eslint@9.39.0(jiti@2.6.1)) get-tsconfig: 4.13.0 globals: 15.15.0 globrex: 0.1.2 @@ -14124,14 +14715,14 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2): + eslint@9.39.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1(supports-color@10.2.2) + '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.1(supports-color@10.2.2) + '@eslint/eslintrc': 3.3.1 '@eslint/js': 9.39.0 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 @@ -14225,14 +14816,14 @@ snapshots: express-rate-limit@8.5.2(express@5.2.1): dependencies: - express: 5.2.1(supports-color@10.2.2) + express: 5.2.1 ip-address: 10.2.0 - express@4.22.2(supports-color@10.2.2): + express@4.22.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.6(supports-color@10.2.2) + body-parser: 1.20.6 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.7.1 @@ -14242,7 +14833,7 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1(supports-color@10.2.2) + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.1 merge-descriptors: 1.0.3 @@ -14254,8 +14845,8 @@ snapshots: qs: 6.15.3 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.0(supports-color@10.2.2) - serve-static: 1.16.2(supports-color@10.2.2) + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.2 type-is: 1.6.18 @@ -14264,10 +14855,10 @@ snapshots: transitivePeerDependencies: - supports-color - express@5.2.1(supports-color@10.2.2): + express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.3.0(supports-color@10.2.2) + body-parser: 2.3.0 content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.1 @@ -14277,7 +14868,7 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.1(supports-color@10.2.2) + finalhandler: 2.1.1 fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -14288,9 +14879,9 @@ snapshots: proxy-addr: 2.0.7 qs: 6.15.3 range-parser: 1.2.1 - router: 2.2.0(supports-color@10.2.2) + router: 2.2.0 send: 1.2.1(supports-color@10.2.2) - serve-static: 2.2.1 + serve-static: 2.2.1(supports-color@10.2.2) statuses: 2.0.2 type-is: 2.1.0 vary: 1.1.2 @@ -14337,6 +14928,10 @@ snapshots: optionalDependencies: picomatch: 4.0.4 + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -14349,7 +14944,7 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1(supports-color@10.2.2): + finalhandler@1.3.1: dependencies: debug: 2.6.9(supports-color@10.2.2) encodeurl: 2.0.0 @@ -14361,7 +14956,7 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@2.1.1(supports-color@10.2.2): + finalhandler@2.1.1: dependencies: debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 @@ -14391,19 +14986,10 @@ snapshots: flatted@3.3.3: {} - follow-redirects@1.15.11(debug@4.4.3(supports-color@10.2.2)): - optionalDependencies: - debug: 4.4.3(supports-color@10.2.2) - follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: debug: 4.4.3(supports-color@10.2.2) - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data@4.0.4: dependencies: asynckit: 0.4.0 @@ -14500,15 +15086,6 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@11.1.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 4.2.3 - minimatch: 10.1.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.2 - glob@13.0.6: dependencies: minimatch: 10.2.5 @@ -14581,12 +15158,7 @@ snapshots: htmljs-parser@5.10.2: {} - htmlparser2@10.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 6.0.1 + htmljs-parser@5.12.1: {} htmlparser2@10.1.0: dependencies: @@ -14595,13 +15167,6 @@ snapshots: domutils: 3.2.2 entities: 7.0.1 - htmlparser2@9.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - http-assert@1.5.0: dependencies: deep-equal: 1.0.1 @@ -14644,7 +15209,7 @@ snapshots: http-parser-js@0.5.10: {} - http-proxy-agent@7.0.2(supports-color@10.2.2): + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 debug: 4.4.3(supports-color@10.2.2) @@ -14674,25 +15239,6 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@3.0.7(supports-color@10.2.2): - dependencies: - '@types/http-proxy': 1.17.17 - debug: 4.4.3(supports-color@10.2.2) - http-proxy: 1.18.1(debug@4.4.3(supports-color@10.2.2)) - is-glob: 4.0.3 - is-plain-object: 5.0.0 - micromatch: 4.0.8 - transitivePeerDependencies: - - supports-color - - http-proxy@1.18.1(debug@4.4.3(supports-color@10.2.2)): - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.11(debug@4.4.3(supports-color@10.2.2)) - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - http-proxy@1.18.1(debug@4.4.3): dependencies: eventemitter3: 4.0.7 @@ -14701,7 +15247,7 @@ snapshots: transitivePeerDependencies: - debug - https-proxy-agent@7.0.6(supports-color@10.2.2): + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 debug: 4.4.3(supports-color@10.2.2) @@ -14921,10 +15467,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@4.2.3: - dependencies: - '@isaacs/cliui': 9.0.0 - jest-diff@30.2.0: dependencies: '@jest/diff-sequences': 30.0.1 @@ -14957,7 +15499,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@27.1.0(supports-color@10.2.2): + jsdom@27.1.0: dependencies: '@acemir/cssom': 0.9.19 '@asamuzakjp/dom-selector': 6.7.4 @@ -14965,8 +15507,8 @@ snapshots: data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2(supports-color@10.2.2) - https-proxy-agent: 7.0.6(supports-color@10.2.2) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 parse5: 8.0.0 saxes: 6.0.0 @@ -15056,7 +15598,7 @@ snapshots: dependencies: etag: 1.8.1 - koa-send@5.0.1(supports-color@10.2.2): + koa-send@5.0.1: dependencies: debug: 4.4.3(supports-color@10.2.2) http-errors: 1.8.1 @@ -15067,11 +15609,11 @@ snapshots: koa-static@5.0.0: dependencies: debug: 3.2.7 - koa-send: 5.0.1(supports-color@10.2.2) + koa-send: 5.0.1 transitivePeerDependencies: - supports-color - koa@2.16.3(supports-color@10.2.2): + koa@2.16.3: dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 @@ -15145,6 +15687,55 @@ snapshots: optionalDependencies: webpack: 5.105.0(esbuild@0.28.1) + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + lines-and-columns@1.2.4: {} lines-and-columns@2.0.3: {} @@ -15305,9 +15896,9 @@ snapshots: marked@12.0.2: {} - marko@6.1.8: + marko@6.3.15: dependencies: - '@marko/compiler': 5.39.65 + '@marko/compiler': 5.40.0 csstype: 3.2.3 fastest-levenshtein: 1.0.16 magic-string: 0.30.21 @@ -15432,8 +16023,6 @@ snapshots: dependencies: yallist: 4.0.0 - minipass@7.1.2: {} - minipass@7.1.3: {} minizlib@3.1.0: @@ -15487,6 +16076,8 @@ snapshots: nanoid@3.3.11: {} + nanoid@3.3.16: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -15801,15 +16392,13 @@ snapshots: p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.11: dependencies: quansync: 0.2.11 package-manager-detector@1.5.0: {} - pacote@21.5.1(supports-color@10.2.2): + pacote@21.5.1: dependencies: '@gar/promise-retry': 1.0.3 '@npmcli/git': 7.0.2 @@ -15825,7 +16414,7 @@ snapshots: npm-pick-manifest: 11.0.3 npm-registry-fetch: 19.1.1 proc-log: 6.1.0 - sigstore: 4.1.1(supports-color@10.2.2) + sigstore: 4.1.1 ssri: 13.0.1 tar: 7.5.13 transitivePeerDependencies: @@ -15892,7 +16481,7 @@ snapshots: path-scurry@2.0.2: dependencies: lru-cache: 11.2.2 - minipass: 7.1.2 + minipass: 7.1.3 path-to-regexp@0.1.12: {} @@ -15916,6 +16505,8 @@ snapshots: picomatch@4.0.4: {} + picomatch@4.0.5: {} + pify@4.0.1: {} piscina@5.2.0: @@ -15994,6 +16585,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.19: + dependencies: + nanoid: 3.3.16 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -16206,6 +16803,8 @@ snapshots: relative-import-path@1.0.0: {} + relative-import-path@1.0.1: {} + remove-accents@0.5.0: {} require-directory@2.1.1: {} @@ -16227,6 +16826,10 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve-sync@1.2.2: + dependencies: + resolve.exports: 2.0.3 + resolve-url-loader@5.0.0: dependencies: adjust-sourcemap-loader: 4.0.0 @@ -16265,6 +16868,27 @@ snapshots: rfdc@1.4.1: {} + rolldown@1.1.5: + dependencies: + '@oxc-project/types': 0.139.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.1.5 + '@rolldown/binding-darwin-arm64': 1.1.5 + '@rolldown/binding-darwin-x64': 1.1.5 + '@rolldown/binding-freebsd-x64': 1.1.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 + '@rolldown/binding-linux-arm64-gnu': 1.1.5 + '@rolldown/binding-linux-arm64-musl': 1.1.5 + '@rolldown/binding-linux-ppc64-gnu': 1.1.5 + '@rolldown/binding-linux-s390x-gnu': 1.1.5 + '@rolldown/binding-linux-x64-gnu': 1.1.5 + '@rolldown/binding-linux-x64-musl': 1.1.5 + '@rolldown/binding-openharmony-arm64': 1.1.5 + '@rolldown/binding-wasm32-wasi': 1.1.5 + '@rolldown/binding-win32-arm64-msvc': 1.1.5 + '@rolldown/binding-win32-x64-msvc': 1.1.5 + rollup-plugin-preserve-directives@0.4.0(rollup@4.59.0): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.59.0) @@ -16302,7 +16926,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 - router@2.2.0(supports-color@10.2.2): + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) depd: 2.0.0 @@ -16393,7 +17017,7 @@ snapshots: semver@7.7.3: {} - send@0.19.0(supports-color@10.2.2): + send@0.19.0: dependencies: debug: 2.6.9(supports-color@10.2.2) depd: 2.0.0 @@ -16435,7 +17059,7 @@ snapshots: seroval@1.3.2: {} - serve-index@1.9.1(supports-color@10.2.2): + serve-index@1.9.1: dependencies: accepts: 1.3.8 batch: 0.6.1 @@ -16447,16 +17071,16 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.16.2(supports-color@10.2.2): + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0(supports-color@10.2.2) + send: 0.19.0 transitivePeerDependencies: - supports-color - serve-static@2.2.1: + serve-static@2.2.1(supports-color@10.2.2): dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 @@ -16550,13 +17174,13 @@ snapshots: signal-exit@4.1.0: {} - sigstore@4.1.1(supports-color@10.2.2): + sigstore@4.1.1: dependencies: '@sigstore/bundle': 4.0.0 '@sigstore/core': 3.2.1 '@sigstore/protobuf-specs': 0.5.1 '@sigstore/sign': 4.1.1 - '@sigstore/tuf': 4.0.2(supports-color@10.2.2) + '@sigstore/tuf': 4.0.2 '@sigstore/verify': 3.1.1 transitivePeerDependencies: - supports-color @@ -16648,7 +17272,7 @@ snapshots: spdx-license-ids@3.0.22: {} - spdy-transport@3.0.0(supports-color@10.2.2): + spdy-transport@3.0.0: dependencies: debug: 4.4.3(supports-color@10.2.2) detect-node: 2.1.0 @@ -16659,13 +17283,13 @@ snapshots: transitivePeerDependencies: - supports-color - spdy@4.0.2(supports-color@10.2.2): + spdy@4.0.2: dependencies: debug: 4.4.3(supports-color@10.2.2) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 - spdy-transport: 3.0.0(supports-color@10.2.2) + spdy-transport: 3.0.0 transitivePeerDependencies: - supports-color @@ -16757,6 +17381,18 @@ snapshots: transitivePeerDependencies: - picomatch + svelte-check@4.3.3(picomatch@4.0.5)(svelte@4.2.20)(typescript@5.9.3): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + chokidar: 4.0.3 + fdir: 6.5.0(picomatch@4.0.5) + picocolors: 1.1.1 + sade: 1.8.1 + svelte: 4.2.20 + typescript: 5.9.3 + transitivePeerDependencies: + - picomatch + svelte-hmr@0.16.0(svelte@4.2.20): dependencies: svelte: 4.2.20 @@ -16844,6 +17480,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinyrainbow@3.1.0: {} tldts-core@7.0.17: {} @@ -16905,7 +17546,7 @@ snapshots: dependencies: tslib: 1.14.1 - tuf-js@4.1.0(supports-color@10.2.2): + tuf-js@4.1.0: dependencies: '@tufjs/models': 4.1.0 debug: 4.4.3(supports-color@10.2.2) @@ -16932,13 +17573,13 @@ snapshots: typed-assert@1.0.9: {} - typescript-eslint@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3): + typescript-eslint@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(typescript@5.9.3) - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -16947,6 +17588,8 @@ snapshots: typescript@5.9.3: {} + typescript@6.0.3: {} + ufo@1.6.1: {} undici-types@7.16.0: {} @@ -17026,7 +17669,7 @@ snapshots: svelte: 4.2.20 vue: 3.5.22(typescript@5.9.3) - vite-plugin-dts@4.2.3(@types/node@24.9.2)(rollup@4.59.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): + vite-plugin-dts@4.2.3(@types/node@24.9.2)(rollup@4.59.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.47.7(@types/node@24.9.2) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) @@ -17039,17 +17682,17 @@ snapshots: magic-string: 0.30.21 typescript: 5.9.3 optionalDependencies: - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.10.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): + vite-plugin-externalize-deps@0.10.0(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): dependencies: - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): + vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): dependencies: '@babel/core': 7.28.5 '@types/babel__core': 7.20.5 @@ -17057,25 +17700,25 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.10 solid-refresh: 0.6.3(solid-js@1.9.10) - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - vitefu: 1.1.1(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vitefu: 1.1.1(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) optionalDependencies: '@testing-library/jest-dom': 6.9.1 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@5.1.4(supports-color@10.2.2)(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): dependencies: debug: 4.4.3(supports-color@10.2.2) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - typescript - vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1): + vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -17088,11 +17731,12 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.0 + lightningcss: 1.33.0 sass: 1.90.0 terser: 5.43.1 yaml: 2.8.1 - vite@7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1): + vite@7.3.6(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1): dependencies: esbuild: 0.28.1 fdir: 6.5.0(picomatch@4.0.4) @@ -17105,22 +17749,40 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.0 + lightningcss: 1.33.0 + sass: 1.90.0 + terser: 5.43.1 + yaml: 2.8.1 + + vite@8.1.5(@types/node@24.9.2)(esbuild@0.28.1)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.5 + postcss: 8.5.19 + rolldown: 1.1.5 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.9.2 + esbuild: 0.28.1 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.0 sass: 1.90.0 terser: 5.43.1 yaml: 2.8.1 - vitefu@0.2.5(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): + vitefu@0.2.5(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): optionalDependencies: - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - vitefu@1.1.1(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): + vitefu@1.1.1(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): optionalDependencies: - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) - vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0(supports-color@10.2.2))(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): + vitest@4.1.4(@types/node@24.9.2)(jsdom@27.1.0)(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)): dependencies: '@vitest/expect': 4.1.4 - '@vitest/mocker': 4.1.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + '@vitest/mocker': 4.1.4(vite@6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) '@vitest/pretty-format': 4.1.4 '@vitest/runner': 4.1.4 '@vitest/snapshot': 4.1.4 @@ -17137,11 +17799,11 @@ snapshots: tinyexec: 1.1.1 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 6.4.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.33.0)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.2 - jsdom: 27.1.0(supports-color@10.2.2) + jsdom: 27.1.0 transitivePeerDependencies: - msw @@ -17151,10 +17813,10 @@ snapshots: dependencies: vue: 3.5.22(typescript@5.9.3) - vue-eslint-parser@10.2.0(eslint@9.39.0(jiti@2.6.1)(supports-color@10.2.2))(supports-color@10.2.2): + vue-eslint-parser@10.2.0(eslint@9.39.0(jiti@2.6.1)): dependencies: debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.0(jiti@2.6.1)(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -17179,6 +17841,16 @@ snapshots: optionalDependencies: typescript: 5.9.3 + vue@3.5.22(typescript@6.0.3): + dependencies: + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-sfc': 3.5.22 + '@vue/runtime-dom': 3.5.22 + '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@6.0.3)) + '@vue/shared': 3.5.22 + optionalDependencies: + typescript: 6.0.3 + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -17223,7 +17895,7 @@ snapshots: optionalDependencies: webpack: 5.105.0(esbuild@0.28.1) - webpack-dev-server@5.2.5(supports-color@10.2.2)(webpack@5.105.0(esbuild@0.28.1)): + webpack-dev-server@5.2.5(webpack@5.105.0(esbuild@0.28.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -17239,7 +17911,7 @@ snapshots: colorette: 2.0.20 compression: 1.8.1(supports-color@10.2.2) connect-history-api-fallback: 2.0.0 - express: 4.22.2(supports-color@10.2.2) + express: 4.22.2 graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 @@ -17248,9 +17920,9 @@ snapshots: p-retry: 6.2.1 schema-utils: 4.3.3 selfsigned: 5.5.0 - serve-index: 1.9.1(supports-color@10.2.2) + serve-index: 1.9.1 sockjs: 0.3.24 - spdy: 4.0.2(supports-color@10.2.2) + spdy: 4.0.2 webpack-dev-middleware: 7.4.2(webpack@5.105.0(esbuild@0.28.1)) ws: 8.18.3 optionalDependencies: @@ -17422,8 +18094,6 @@ snapshots: dependencies: zod: 4.1.13 - zod@3.25.76: {} - zod@4.1.12: {} zod@4.1.13: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bf011f51c..de8ca9f66 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,6 +5,7 @@ preferWorkspacePackages: true packages: - 'packages/*' + - 'packages/marko-virtual/e2e/*' - 'examples/angular/*' - 'examples/react/*' - 'examples/svelte/*' @@ -26,3 +27,11 @@ allowBuilds: # @tanstack/vue-store vue-demi: false # only required for vue 2 support + +overrides: + # Exactly one @marko/compiler in the graph. marko, @marko/vite, and + # @marko/language-tools (via @marko/type-check) all accept ^5.39/^5.40 ranges; + # letting the lockfile resolve them independently can split versions across + # entries, and two compiler instances in one process fail every .marko compile + # with "Unable to access Marko File outside of a compilation". + '@marko/compiler': 5.40.0