From 3e94548b9195f8ae60e662d49105525f51bc72ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 30 Mar 2026 09:21:53 +0900 Subject: [PATCH 01/77] chore(preact): scaffold @scrolloop/preact package --- packages/preact/package.json | 38 ++++++++++++++++++++++++++++++++++ packages/preact/tsconfig.json | 11 ++++++++++ packages/preact/tsup.config.ts | 14 +++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 packages/preact/package.json create mode 100644 packages/preact/tsconfig.json create mode 100644 packages/preact/tsup.config.ts diff --git a/packages/preact/package.json b/packages/preact/package.json new file mode 100644 index 0000000..9127187 --- /dev/null +++ b/packages/preact/package.json @@ -0,0 +1,38 @@ +{ + "name": "@scrolloop/preact", + "version": "0.1.0", + "description": "Preact adapter for @scrolloop/core", + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + } + }, + "sideEffects": false, + "files": [ + "dist", + "src" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch" + }, + "peerDependencies": { + "preact": ">=10.0.0" + }, + "dependencies": { + "@scrolloop/core": "workspace:*", + "@scrolloop/shared": "workspace:*" + }, + "devDependencies": { + "preact": "^10.0.0", + "tsup": "^8.0.0", + "typescript": "^5.0.0" + }, + "license": "MIT" +} diff --git a/packages/preact/tsconfig.json b/packages/preact/tsconfig.json new file mode 100644 index 0000000..87c7c5e --- /dev/null +++ b/packages/preact/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "declaration": true, + "declarationMap": true, + "jsxImportSource": "preact" + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "tsup.config.ts"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/preact/tsup.config.ts b/packages/preact/tsup.config.ts new file mode 100644 index 0000000..ff03e03 --- /dev/null +++ b/packages/preact/tsup.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + format: ["esm", "cjs"], + dts: true, + sourcemap: true, + clean: true, + external: ["preact", "preact/hooks", "@scrolloop/core", "@scrolloop/shared"], + esbuildOptions(options) { + options.jsxImportSource = "preact"; + options.jsx = "automatic"; + }, +}); From 6218ff47d5d54409aba47d7c2a2918bb2033160b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 30 Mar 2026 09:22:41 +0900 Subject: [PATCH 02/77] feat(preact): add VirtualList component --- .../preact/src/components/VirtualList.tsx | 108 ++++++++++++++++++ packages/preact/src/types.ts | 36 ++++++ 2 files changed, 144 insertions(+) create mode 100644 packages/preact/src/components/VirtualList.tsx create mode 100644 packages/preact/src/types.ts diff --git a/packages/preact/src/components/VirtualList.tsx b/packages/preact/src/components/VirtualList.tsx new file mode 100644 index 0000000..fea0487 --- /dev/null +++ b/packages/preact/src/components/VirtualList.tsx @@ -0,0 +1,108 @@ +import { + useRef, + useState, + useEffect, + useCallback, + useMemo, +} from "preact/hooks"; +import type { CSSProperties } from "preact"; +import { calculateVirtualRange } from "@scrolloop/core"; +import type { VirtualListProps } from "../types"; + +export function VirtualList({ + count, + itemSize, + renderItem, + height = 400, + overscan = 4, + class: className, + style, + onRangeChange, +}: VirtualListProps) { + const containerRef = useRef(null); + const scrollTopRef = useRef(0); + const prevScrollTopRef = useRef(0); + const onRangeChangeRef = useRef(onRangeChange); + const [, forceUpdate] = useState(0); + const prevRangeRef = useRef({ start: -1, end: -1 }); + + useEffect(() => { + onRangeChangeRef.current = onRangeChange; + }, [onRangeChange]); + + const totalHeight = count * itemSize; + + const { renderStart, renderEnd } = calculateVirtualRange( + scrollTopRef.current, + height, + itemSize, + count, + overscan, + prevScrollTopRef.current + ); + + useEffect(() => { + const cb = onRangeChangeRef.current; + if ( + cb && + (prevRangeRef.current.start !== renderStart || + prevRangeRef.current.end !== renderEnd) + ) { + prevRangeRef.current = { start: renderStart, end: renderEnd }; + cb({ startIndex: renderStart, endIndex: renderEnd }); + } + }, [renderStart, renderEnd]); + + const handleScroll = useCallback(() => { + const el = containerRef.current; + if (!el) return; + prevScrollTopRef.current = scrollTopRef.current; + scrollTopRef.current = el.scrollTop; + forceUpdate((n) => n + 1); + }, []); + + useEffect(() => { + const el = containerRef.current; + if (!el) return; + el.addEventListener("scroll", handleScroll, { passive: true }); + return () => el.removeEventListener("scroll", handleScroll); + }, [handleScroll]); + + const items = useMemo(() => { + const result = []; + for (let i = renderStart; i <= renderEnd; i++) { + const itemStyle: CSSProperties = { + position: "absolute", + top: i * itemSize, + left: 0, + right: 0, + height: itemSize, + }; + result.push( +
+ {renderItem(i, itemStyle)} +
+ ); + } + return result; + }, [renderStart, renderEnd, itemSize, renderItem]); + + const containerStyle: CSSProperties = { + overflow: "auto", + height, + ...style, + }; + + return ( +
+
+ {items} +
+
+ ); +} diff --git a/packages/preact/src/types.ts b/packages/preact/src/types.ts new file mode 100644 index 0000000..0eaaf71 --- /dev/null +++ b/packages/preact/src/types.ts @@ -0,0 +1,36 @@ +import type { CSSProperties, VNode } from "preact"; +import type { PageResponse, Range } from "@scrolloop/shared"; + +export type { PageResponse, Range }; + +export interface VirtualListProps { + count: number; + itemSize: number; + renderItem: (index: number, style: CSSProperties) => VNode | null; + height?: number; + overscan?: number; + class?: string; + style?: CSSProperties; + onRangeChange?: (range: Range) => void; +} + +export interface InfiniteListProps { + fetchPage: (page: number, size: number) => Promise>; + renderItem: ( + item: T | undefined, + index: number, + style: CSSProperties + ) => VNode | null; + itemSize: number; + pageSize?: number; + initialPage?: number; + height?: number; + overscan?: number; + class?: string; + style?: CSSProperties; + renderLoading?: () => VNode | null; + renderError?: (error: Error, retry: () => void) => VNode | null; + renderEmpty?: () => VNode | null; + onPageLoad?: (page: number, items: T[]) => void; + onError?: (error: Error) => void; +} From ede66b8fa3f61a8efcf34266e8f7865a20f89aa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 30 Mar 2026 09:22:47 +0900 Subject: [PATCH 03/77] feat(preact): add useInfinitePages hook --- packages/preact/src/hooks/useInfinitePages.ts | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 packages/preact/src/hooks/useInfinitePages.ts diff --git a/packages/preact/src/hooks/useInfinitePages.ts b/packages/preact/src/hooks/useInfinitePages.ts new file mode 100644 index 0000000..b476bbd --- /dev/null +++ b/packages/preact/src/hooks/useInfinitePages.ts @@ -0,0 +1,46 @@ +import { useState, useCallback, useEffect } from "preact/hooks"; +import { InfiniteSource } from "@scrolloop/shared"; +import type { + InfiniteSourceState, + InfiniteSourceOptions, +} from "@scrolloop/shared"; + +export function useInfinitePages(options: InfiniteSourceOptions) { + const { fetchPage, pageSize, initialPage, onPageLoad, onError } = options; + + const [manager] = useState>( + () => + new InfiniteSource({ + fetchPage, + pageSize, + initialPage, + onPageLoad, + onError, + }) + ); + + const [state, setState] = useState>(() => + manager.getState() + ); + + useEffect(() => { + const unsubscribe = manager.subscribe(setState); + return () => { + unsubscribe(); + manager.destroy(); + }; + }, [manager]); + + useEffect(() => { + manager.updateCallbacks({ fetchPage, onPageLoad, onError }); + }, [manager, fetchPage, onPageLoad, onError]); + + const loadPage = useCallback( + (page: number) => manager.loadPage(page), + [manager] + ); + const retry = useCallback(() => manager.retry(), [manager]); + const reset = useCallback(() => manager.reset(), [manager]); + + return { ...state, loadPage, retry, reset }; +} From 3cae4e9a39dab7ca8caff116289e665f66f3a33b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 30 Mar 2026 09:22:51 +0900 Subject: [PATCH 04/77] feat(preact): add InfiniteList component --- .../preact/src/components/InfiniteList.tsx | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 packages/preact/src/components/InfiniteList.tsx diff --git a/packages/preact/src/components/InfiniteList.tsx b/packages/preact/src/components/InfiniteList.tsx new file mode 100644 index 0000000..fcced6a --- /dev/null +++ b/packages/preact/src/components/InfiniteList.tsx @@ -0,0 +1,110 @@ +import { useEffect, useCallback, useMemo } from "preact/hooks"; +import type { CSSProperties } from "preact"; +import type { InfiniteListProps } from "../types"; +import { VirtualList } from "./VirtualList"; +import { useInfinitePages } from "../hooks/useInfinitePages"; + +export function InfiniteList({ + fetchPage, + renderItem, + itemSize, + pageSize = 20, + initialPage = 0, + height = 400, + overscan: userOverscan, + class: className, + style, + renderLoading, + renderError, + renderEmpty, + onPageLoad, + onError, +}: InfiniteListProps) { + const overscan = useMemo( + () => userOverscan ?? Math.max(20, pageSize * 2), + [userOverscan, pageSize] + ); + + const { allItems, loadingPages, hasMore, error, loadPage, retry } = + useInfinitePages({ fetchPage, pageSize, initialPage, onPageLoad, onError }); + + useEffect(() => { + if (!allItems.length && !error) { + const needed = Math.ceil(height / itemSize) + overscan * 2; + const pagesToLoad = Math.ceil(needed / pageSize); + for (let p = 0; p < pagesToLoad; p++) loadPage(p); + } + }, [allItems.length, error, height, itemSize, pageSize, overscan, loadPage]); + + const handleRangeChange = useCallback( + (range: { startIndex: number; endIndex: number }) => { + const ps = (range.startIndex / pageSize) | 0; + const pe = ((range.endIndex / pageSize) | 0) + 1; + for (let p = ps; p <= pe; p++) loadPage(p); + }, + [pageSize, loadPage] + ); + + const virtualRenderItem = useCallback( + (index: number, itemStyle: CSSProperties) => + renderItem(allItems[index], index, itemStyle), + [allItems, renderItem] + ); + + const centerStyle: CSSProperties = { + height, + display: "flex", + alignItems: "center", + justifyContent: "center", + }; + + if (error && !allItems.length) { + if (renderError) + return
{renderError(error, retry)}
; + return ( +
+
+

Error.

+

{error.message}

+ +
+
+ ); + } + + if (!allItems.length && loadingPages.size > 0) { + if (renderLoading) return
{renderLoading()}
; + return ( +
+

Loading...

+
+ ); + } + + if (!allItems.length && !hasMore) { + if (renderEmpty) return
{renderEmpty()}
; + return ( +
+

No data.

+
+ ); + } + + return ( + + ); +} From 0611fb0d637e573402fa85219f255542fffc10e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 30 Mar 2026 09:22:55 +0900 Subject: [PATCH 05/77] feat(preact): export public API --- packages/preact/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/preact/src/index.ts diff --git a/packages/preact/src/index.ts b/packages/preact/src/index.ts new file mode 100644 index 0000000..8c2ed36 --- /dev/null +++ b/packages/preact/src/index.ts @@ -0,0 +1,4 @@ +export { VirtualList } from "./components/VirtualList"; +export { InfiniteList } from "./components/InfiniteList"; +export { useInfinitePages } from "./hooks/useInfinitePages"; +export type { VirtualListProps, InfiniteListProps } from "./types"; From e0369412071635c9c68dc4d4b6f2ebb5fa14934b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 30 Mar 2026 09:24:36 +0900 Subject: [PATCH 06/77] chore: update lockfile for @scrolloop/preact --- pnpm-lock.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7ad3f4..f799f7c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,6 +87,25 @@ importers: specifier: ^2.0.0 version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0) + packages/preact: + dependencies: + '@scrolloop/core': + specifier: workspace:* + version: link:../core + '@scrolloop/shared': + specifier: workspace:* + version: link:../shared + devDependencies: + preact: + specifier: ^10.0.0 + version: 10.28.0 + tsup: + specifier: ^8.0.0 + version: 8.5.0(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + typescript: + specifier: ^5.0.0 + version: 5.9.3 + packages/react: dependencies: '@scrolloop/core': From d0bdd3c7752d816ecb4f1cd8484978f28497b619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 30 Mar 2026 09:45:01 +0900 Subject: [PATCH 07/77] perf(preact): use total+pages instead of allItems in InfiniteList --- .../preact/src/components/InfiniteList.tsx | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/preact/src/components/InfiniteList.tsx b/packages/preact/src/components/InfiniteList.tsx index fcced6a..54606bd 100644 --- a/packages/preact/src/components/InfiniteList.tsx +++ b/packages/preact/src/components/InfiniteList.tsx @@ -25,16 +25,16 @@ export function InfiniteList({ [userOverscan, pageSize] ); - const { allItems, loadingPages, hasMore, error, loadPage, retry } = + const { pages, total, loadingPages, hasMore, error, loadPage, retry } = useInfinitePages({ fetchPage, pageSize, initialPage, onPageLoad, onError }); useEffect(() => { - if (!allItems.length && !error) { + if (total === 0 && !error) { const needed = Math.ceil(height / itemSize) + overscan * 2; const pagesToLoad = Math.ceil(needed / pageSize); for (let p = 0; p < pagesToLoad; p++) loadPage(p); } - }, [allItems.length, error, height, itemSize, pageSize, overscan, loadPage]); + }, [total, error, height, itemSize, pageSize, overscan, loadPage]); const handleRangeChange = useCallback( (range: { startIndex: number; endIndex: number }) => { @@ -47,8 +47,12 @@ export function InfiniteList({ const virtualRenderItem = useCallback( (index: number, itemStyle: CSSProperties) => - renderItem(allItems[index], index, itemStyle), - [allItems, renderItem] + renderItem( + pages.get(Math.floor(index / pageSize))?.[index % pageSize], + index, + itemStyle + ), + [pages, pageSize, renderItem] ); const centerStyle: CSSProperties = { @@ -58,7 +62,7 @@ export function InfiniteList({ justifyContent: "center", }; - if (error && !allItems.length) { + if (error && total === 0) { if (renderError) return
{renderError(error, retry)}
; return ( @@ -77,7 +81,7 @@ export function InfiniteList({ ); } - if (!allItems.length && loadingPages.size > 0) { + if (total === 0 && loadingPages.size > 0) { if (renderLoading) return
{renderLoading()}
; return (
@@ -86,7 +90,7 @@ export function InfiniteList({ ); } - if (!allItems.length && !hasMore) { + if (total === 0 && !hasMore) { if (renderEmpty) return
{renderEmpty()}
; return (
@@ -97,7 +101,7 @@ export function InfiniteList({ return ( Date: Mon, 30 Mar 2026 09:49:16 +0900 Subject: [PATCH 08/77] style(preact): extract inline styles to CSS classes in InfiniteList --- packages/preact/package.json | 4 ++- .../preact/src/components/InfiniteList.tsx | 29 +++++++------------ .../preact/src/components/infiniteList.css | 28 ++++++++++++++++++ 3 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 packages/preact/src/components/infiniteList.css diff --git a/packages/preact/package.json b/packages/preact/package.json index 9127187..4215aaf 100644 --- a/packages/preact/package.json +++ b/packages/preact/package.json @@ -13,7 +13,9 @@ "require": "./dist/index.cjs" } }, - "sideEffects": false, + "sideEffects": [ + "**/*.css" + ], "files": [ "dist", "src" diff --git a/packages/preact/src/components/InfiniteList.tsx b/packages/preact/src/components/InfiniteList.tsx index 54606bd..7aea297 100644 --- a/packages/preact/src/components/InfiniteList.tsx +++ b/packages/preact/src/components/InfiniteList.tsx @@ -3,6 +3,7 @@ import type { CSSProperties } from "preact"; import type { InfiniteListProps } from "../types"; import { VirtualList } from "./VirtualList"; import { useInfinitePages } from "../hooks/useInfinitePages"; +import "./infiniteList.css"; export function InfiniteList({ fetchPage, @@ -55,25 +56,15 @@ export function InfiniteList({ [pages, pageSize, renderItem] ); - const centerStyle: CSSProperties = { - height, - display: "flex", - alignItems: "center", - justifyContent: "center", - }; - if (error && total === 0) { if (renderError) return
{renderError(error, retry)}
; return ( -
-
-

Error.

-

{error.message}

-
@@ -84,8 +75,8 @@ export function InfiniteList({ if (total === 0 && loadingPages.size > 0) { if (renderLoading) return
{renderLoading()}
; return ( -
-

Loading...

+
+

Loading...

); } @@ -93,8 +84,8 @@ export function InfiniteList({ if (total === 0 && !hasMore) { if (renderEmpty) return
{renderEmpty()}
; return ( -
-

No data.

+
+

No data.

); } diff --git a/packages/preact/src/components/infiniteList.css b/packages/preact/src/components/infiniteList.css new file mode 100644 index 0000000..b002d93 --- /dev/null +++ b/packages/preact/src/components/infiniteList.css @@ -0,0 +1,28 @@ +.scrolloop-state-container { + display: flex; + align-items: center; + justify-content: center; +} + +.scrolloop-error-content { + text-align: center; +} + +.scrolloop-error-message { + margin: 0 0 4px; +} + +.scrolloop-error-detail { + margin: 0 0 8px; + color: #666; + font-size: 0.9em; +} + +.scrolloop-retry-button { + padding: 4px 12px; + cursor: pointer; +} + +.scrolloop-state-text { + margin: 0; +} From 30c82f79341281e21b9e30149559a3c294f77270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 13:49:30 +0900 Subject: [PATCH 09/77] feat(core): add getMaxElementSize runtime probe Detects the browser's per-element height ceiling by binary-searching an offscreen probe div. Result is cached after the first call, with an SSR fallback when document is unavailable. --- .../utils/__tests__/getMaxElementSize.test.ts | 78 +++++++++++++++++++ packages/core/src/utils/getMaxElementSize.ts | 38 +++++++++ 2 files changed, 116 insertions(+) create mode 100644 packages/core/src/utils/__tests__/getMaxElementSize.test.ts create mode 100644 packages/core/src/utils/getMaxElementSize.ts diff --git a/packages/core/src/utils/__tests__/getMaxElementSize.test.ts b/packages/core/src/utils/__tests__/getMaxElementSize.test.ts new file mode 100644 index 0000000..d3e559c --- /dev/null +++ b/packages/core/src/utils/__tests__/getMaxElementSize.test.ts @@ -0,0 +1,78 @@ +// @vitest-environment jsdom +import { describe, it, expect, beforeEach, vi } from "vitest"; +import { + getMaxElementSize, + resetMaxElementSizeCache, +} from "../getMaxElementSize"; + +describe("getMaxElementSize", () => { + beforeEach(() => { + resetMaxElementSizeCache(); + document.body.innerHTML = ""; + }); + + it("returns a positive number in jsdom environment", () => { + const size = getMaxElementSize(); + expect(size).toBeGreaterThan(0); + expect(Number.isFinite(size)).toBe(true); + }); + + it("caches the result across calls", () => { + const first = getMaxElementSize(); + const appendSpy = vi.spyOn(document.body, "appendChild"); + const second = getMaxElementSize(); + expect(second).toBe(first); + expect(appendSpy).not.toHaveBeenCalled(); + appendSpy.mockRestore(); + }); + + it("re-probes after the cache is reset", () => { + getMaxElementSize(); + resetMaxElementSizeCache(); + const appendSpy = vi.spyOn(document.body, "appendChild"); + getMaxElementSize(); + expect(appendSpy).toHaveBeenCalled(); + appendSpy.mockRestore(); + }); + + it("converges below a simulated browser ceiling", () => { + const SIMULATED_LIMIT = 17_000_000; + const originalGetRect = HTMLElement.prototype.getBoundingClientRect; + HTMLElement.prototype.getBoundingClientRect = function () { + const declared = parseFloat(this.style.height || "0"); + const clamped = Math.min(declared, SIMULATED_LIMIT); + return { + x: 0, + y: 0, + width: 1, + height: clamped, + top: 0, + left: 0, + right: 1, + bottom: clamped, + toJSON: () => ({}), + } as DOMRect; + }; + + try { + const size = getMaxElementSize(); + expect(size).toBeLessThanOrEqual(SIMULATED_LIMIT); + expect(size).toBeGreaterThan(SIMULATED_LIMIT * 0.9); + } finally { + HTMLElement.prototype.getBoundingClientRect = originalGetRect; + } + }); + + it("returns a finite fallback when document is unavailable", () => { + const originalDocument = globalThis.document; + // @ts-expect-error: intentional deletion for SSR simulation + delete globalThis.document; + try { + const size = getMaxElementSize(); + expect(size).toBeGreaterThan(0); + expect(Number.isFinite(size)).toBe(true); + } finally { + globalThis.document = originalDocument; + } + }); +}); diff --git a/packages/core/src/utils/getMaxElementSize.ts b/packages/core/src/utils/getMaxElementSize.ts new file mode 100644 index 0000000..e8a4c33 --- /dev/null +++ b/packages/core/src/utils/getMaxElementSize.ts @@ -0,0 +1,38 @@ +const SSR_FALLBACK = 6_000_000; +const PROBE_LOWER_BOUND = 1_000_000; +const PROBE_UPPER_BOUND = 40_000_000; +const PROBE_RESOLUTION = 100_000; +const SAFETY_FACTOR = 0.95; + +let cached: number | null = null; + +export function getMaxElementSize(): number { + if (cached !== null) return cached; + if (typeof document === "undefined") return SSR_FALLBACK; + + const probe = document.createElement("div"); + probe.style.cssText = + "position:absolute;visibility:hidden;width:1px;left:-9999px;top:0;pointer-events:none"; + document.body.appendChild(probe); + + let lo = PROBE_LOWER_BOUND; + let hi = PROBE_UPPER_BOUND; + try { + while (hi - lo > PROBE_RESOLUTION) { + const mid = ((lo + hi) / 2) | 0; + probe.style.height = `${mid}px`; + const actual = probe.getBoundingClientRect().height; + if (actual >= mid - 1) lo = mid; + else hi = mid; + } + } finally { + probe.remove(); + } + + cached = Math.floor(lo * SAFETY_FACTOR); + return cached; +} + +export function resetMaxElementSizeCache(): void { + cached = null; +} From 993766f660c450adcf3ecdc07594f70607e9f8f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 13:51:56 +0900 Subject: [PATCH 10/77] feat(core): clamp FixedLayoutStrategy size to browser max with virtual offset mapping When the virtual total (count * itemSize) exceeds the probed per-element height ceiling, the spacer is clamped and DOM scroll positions are linearly mapped onto the virtual range. Item offsets are translated to render relative to the current scroll so they remain visible inside the clamped spacer. --- .../strategies/layout/FixedLayoutStrategy.ts | 57 ++++++++- .../__tests__/FixedLayoutStrategy.test.ts | 118 ++++++++++++++++++ 2 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts diff --git a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts index 46a0f66..7a3638f 100644 --- a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts +++ b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts @@ -1,16 +1,33 @@ import type { Range } from "../../types"; import type { LayoutStrategy } from "./LayoutStrategy"; import { clamp } from "../../utils/clamp"; +import { getMaxElementSize } from "../../utils/getMaxElementSize"; export class FixedLayoutStrategy implements LayoutStrategy { readonly #itemSize: number; + #lastScrollOffset = 0; + #lastViewportSize = 0; + #lastCount = 0; constructor(itemSize: number) { this.#itemSize = itemSize; } getItemOffset(index: number): number { - return index * this.#itemSize; + const virtualTotal = this.#lastCount * this.#itemSize; + const clampedTotal = this.#clampedTotalSize(virtualTotal); + + if (virtualTotal <= clampedTotal) { + return index * this.#itemSize; + } + + const virtualOffset = this.#virtualOffset( + this.#lastScrollOffset, + this.#lastViewportSize, + virtualTotal, + clampedTotal + ); + return this.#lastScrollOffset + (index * this.#itemSize - virtualOffset); } getItemSize(_index: number): number { @@ -18,7 +35,7 @@ export class FixedLayoutStrategy implements LayoutStrategy { } getTotalSize(count: number): number { - return count * this.#itemSize; + return this.#clampedTotalSize(count * this.#itemSize); } getVisibleRange( @@ -26,11 +43,45 @@ export class FixedLayoutStrategy implements LayoutStrategy { viewportSize: number, count: number ): Range { - const startIndex = clamp(0, (scrollOffset / this.#itemSize) | 0, count - 1); + this.#lastScrollOffset = scrollOffset; + this.#lastViewportSize = viewportSize; + this.#lastCount = count; + + const virtualTotal = count * this.#itemSize; + const clampedTotal = this.#clampedTotalSize(virtualTotal); + const virtualOffset = this.#virtualOffset( + scrollOffset, + viewportSize, + virtualTotal, + clampedTotal + ); + const startIndex = clamp( + 0, + (virtualOffset / this.#itemSize) | 0, + count - 1 + ); const visibleCount = Math.ceil(viewportSize / this.#itemSize); const endIndex = Math.min(count - 1, startIndex + visibleCount); return { startIndex, endIndex }; } + + #clampedTotalSize(virtualTotal: number): number { + const max = getMaxElementSize(); + return virtualTotal > max ? max : virtualTotal; + } + + #virtualOffset( + scrollOffset: number, + viewportSize: number, + virtualTotal: number, + clampedTotal: number + ): number { + if (virtualTotal <= clampedTotal) return scrollOffset; + const scrollable = clampedTotal - viewportSize; + if (scrollable <= 0) return 0; + const ratio = scrollOffset / scrollable; + return ratio * (virtualTotal - viewportSize); + } } diff --git a/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts b/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts new file mode 100644 index 0000000..246fcad --- /dev/null +++ b/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts @@ -0,0 +1,118 @@ +// @vitest-environment jsdom +import { describe, it, expect, beforeEach } from "vitest"; +import { FixedLayoutStrategy } from "../FixedLayoutStrategy"; +import { resetMaxElementSizeCache } from "../../../utils/getMaxElementSize"; + +describe("FixedLayoutStrategy", () => { + beforeEach(() => { + resetMaxElementSizeCache(); + HTMLElement.prototype.getBoundingClientRect = function () { + const declared = parseFloat(this.style.height || "0"); + return { + x: 0, + y: 0, + width: 1, + height: declared, + top: 0, + left: 0, + right: 1, + bottom: declared, + toJSON: () => ({}), + } as DOMRect; + }; + }); + + describe("below the browser ceiling", () => { + const ITEM_SIZE = 50; + const COUNT = 1000; + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + + it("returns virtual total size unchanged", () => { + expect(strategy.getTotalSize(COUNT)).toBe(ITEM_SIZE * COUNT); + }); + + it("indexes items by raw division", () => { + const range = strategy.getVisibleRange(500, 400, COUNT); + expect(range.startIndex).toBe(10); + expect(range.endIndex).toBe(18); + }); + + it("returns item offsets in virtual coordinates", () => { + strategy.getVisibleRange(500, 400, COUNT); + expect(strategy.getItemOffset(10)).toBe(500); + expect(strategy.getItemOffset(11)).toBe(550); + }); + }); + + describe("above the browser ceiling", () => { + const ITEM_SIZE = 50; + const COUNT = 10_000_000; + const VIEWPORT = 800; + + function simulateBrowserCeiling(limit: number) { + HTMLElement.prototype.getBoundingClientRect = function () { + const declared = parseFloat(this.style.height || "0"); + const clamped = Math.min(declared, limit); + return { + x: 0, + y: 0, + width: 1, + height: clamped, + top: 0, + left: 0, + right: 1, + bottom: clamped, + toJSON: () => ({}), + } as DOMRect; + }; + } + + it("clamps total size to the probed browser maximum", () => { + simulateBrowserCeiling(17_000_000); + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + const total = strategy.getTotalSize(COUNT); + expect(total).toBeLessThan(ITEM_SIZE * COUNT); + expect(total).toBeLessThanOrEqual(17_000_000); + }); + + it("maps scroll positions to the full virtual range", () => { + simulateBrowserCeiling(17_000_000); + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + const clampedTotal = strategy.getTotalSize(COUNT); + + const startRange = strategy.getVisibleRange(0, VIEWPORT, COUNT); + expect(startRange.startIndex).toBe(0); + + const endRange = strategy.getVisibleRange( + clampedTotal - VIEWPORT, + VIEWPORT, + COUNT + ); + expect(endRange.endIndex).toBe(COUNT - 1); + }); + + it("positions items near the current scroll offset", () => { + simulateBrowserCeiling(17_000_000); + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + const clampedTotal = strategy.getTotalSize(COUNT); + const scrollOffset = clampedTotal / 2; + + const range = strategy.getVisibleRange(scrollOffset, VIEWPORT, COUNT); + const firstOffset = strategy.getItemOffset(range.startIndex); + + expect(firstOffset).toBeGreaterThanOrEqual(scrollOffset - ITEM_SIZE); + expect(firstOffset).toBeLessThan(scrollOffset + VIEWPORT); + }); + + it("keeps consecutive items spaced by itemSize", () => { + simulateBrowserCeiling(17_000_000); + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + const clampedTotal = strategy.getTotalSize(COUNT); + + const range = strategy.getVisibleRange(clampedTotal / 3, VIEWPORT, COUNT); + const a = strategy.getItemOffset(range.startIndex); + const b = strategy.getItemOffset(range.startIndex + 1); + expect(b - a).toBeCloseTo(ITEM_SIZE, 5); + }); + }); +}); From a147b0314399d221e705c88da5bdaaeda0af7e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 13:52:14 +0900 Subject: [PATCH 11/77] chore(core): export getMaxElementSize from package root --- packages/core/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c40244d..021a9cf 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -19,3 +19,7 @@ export type { export { clamp } from "./utils/clamp"; export { calculateVirtualRange } from "./utils/calculateVirtualRange"; +export { + getMaxElementSize, + resetMaxElementSizeCache, +} from "./utils/getMaxElementSize"; From a54d342dd046229b919a24a9bd7bb13ed2a8e6d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 14:03:30 +0900 Subject: [PATCH 12/77] fix: resync pnpm-lock to match installed tsup variant The lockfile referenced tsup 8.5.0 without the @microsoft/api-extractor peer, but the variant materialized on disk includes it. The mismatch left preact/svelte/vue/react-native node_modules/tsup symlinks pointing to a non-existent .pnpm directory, breaking 'tsup' invocation during build. --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3759921..89c0b51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,7 +101,7 @@ importers: version: 10.28.0 tsup: specifier: ^8.0.0 - version: 8.5.0(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) typescript: specifier: ^5.0.0 version: 5.9.3 From b5945381aad5eef36b507e67941b71bcaa71e243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 14:13:58 +0900 Subject: [PATCH 13/77] fix(core): use Math.floor instead of |0 for virtual offset truncation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit |0 coerces to int32 and overflows above 2^31, producing negative indices on lists where count * itemSize exceeds ~2.1B px — exactly the regime this strategy is meant to support. Math.floor is correct up to Number.MAX_SAFE_INTEGER. --- .../strategies/layout/FixedLayoutStrategy.ts | 2 +- .../__tests__/FixedLayoutStrategy.test.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts index 7a3638f..29b6515 100644 --- a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts +++ b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts @@ -58,7 +58,7 @@ export class FixedLayoutStrategy implements LayoutStrategy { const startIndex = clamp( 0, - (virtualOffset / this.#itemSize) | 0, + Math.floor(virtualOffset / this.#itemSize), count - 1 ); const visibleCount = Math.ceil(viewportSize / this.#itemSize); diff --git a/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts b/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts index 246fcad..cf49a71 100644 --- a/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts +++ b/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts @@ -114,5 +114,23 @@ describe("FixedLayoutStrategy", () => { const b = strategy.getItemOffset(range.startIndex + 1); expect(b - a).toBeCloseTo(ITEM_SIZE, 5); }); + + it("produces correct indices when virtual offset exceeds 2^31", () => { + simulateBrowserCeiling(17_000_000); + const HUGE_COUNT = 200_000_000; + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + const clampedTotal = strategy.getTotalSize(HUGE_COUNT); + + const range = strategy.getVisibleRange( + clampedTotal - VIEWPORT, + VIEWPORT, + HUGE_COUNT + ); + + const virtualOffset = ITEM_SIZE * (HUGE_COUNT - 1); + expect(virtualOffset).toBeGreaterThan(2 ** 31); + expect(range.startIndex).toBeGreaterThanOrEqual(0); + expect(range.endIndex).toBe(HUGE_COUNT - 1); + }); }); }); From 4a8d437b260892979d5321b8cb9411fe351d37fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 14:38:06 +0900 Subject: [PATCH 14/77] fix(core): guard probe against null document.body MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the library is imported by a script in , document exists but document.body has not been parsed yet — appendChild would throw. Fall back to the SSR constant in that case without caching, so a later call after the DOM is ready still performs the real probe. --- .../utils/__tests__/getMaxElementSize.test.ts | 36 +++++++++++++++++++ packages/core/src/utils/getMaxElementSize.ts | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/packages/core/src/utils/__tests__/getMaxElementSize.test.ts b/packages/core/src/utils/__tests__/getMaxElementSize.test.ts index d3e559c..7891473 100644 --- a/packages/core/src/utils/__tests__/getMaxElementSize.test.ts +++ b/packages/core/src/utils/__tests__/getMaxElementSize.test.ts @@ -75,4 +75,40 @@ describe("getMaxElementSize", () => { globalThis.document = originalDocument; } }); + + it("returns the fallback without throwing when document.body is null", () => { + const originalBody = document.body; + Object.defineProperty(document, "body", { + configurable: true, + get: () => null, + }); + try { + const size = getMaxElementSize(); + expect(size).toBeGreaterThan(0); + expect(Number.isFinite(size)).toBe(true); + } finally { + Object.defineProperty(document, "body", { + configurable: true, + value: originalBody, + writable: true, + }); + } + }); + + it("re-probes once document.body becomes available", () => { + const originalBody = document.body; + Object.defineProperty(document, "body", { + configurable: true, + get: () => null, + }); + const fallback = getMaxElementSize(); + Object.defineProperty(document, "body", { + configurable: true, + value: originalBody, + writable: true, + }); + const probed = getMaxElementSize(); + expect(probed).not.toBe(fallback); + expect(probed).toBeGreaterThan(0); + }); }); diff --git a/packages/core/src/utils/getMaxElementSize.ts b/packages/core/src/utils/getMaxElementSize.ts index e8a4c33..6f91c6d 100644 --- a/packages/core/src/utils/getMaxElementSize.ts +++ b/packages/core/src/utils/getMaxElementSize.ts @@ -8,7 +8,7 @@ let cached: number | null = null; export function getMaxElementSize(): number { if (cached !== null) return cached; - if (typeof document === "undefined") return SSR_FALLBACK; + if (typeof document === "undefined" || !document.body) return SSR_FALLBACK; const probe = document.createElement("div"); probe.style.cssText = From 139799a368566e080d84883b670eb78036725fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 14:55:12 +0900 Subject: [PATCH 15/77] refactor(core): keep FixedLayoutStrategy stateless, move render translation to Virtualizer Restores the original contract: - getItemOffset(index) returns absolute virtual coordinates (index * itemSize), stable across calls and safe to share a single strategy instance across multiple Virtualizers. - getTotalSize(count) returns the (possibly clamped) spacer size. - New optional getVirtualSize(count) on LayoutStrategy reports the unclamped virtual total when it differs. The Virtualizer compares the two and, when clamping is active, translates each item's virtual offset into render coordinates relative to the current scroll position. Clamped layouts skip the per-render-range memoization because item positions then depend on scrollOffset. Addresses three review notes: - statefulness blocking instance sharing - getItemOffset semantics changing with scroll - stale lastCount during data updates --- .../strategies/layout/FixedLayoutStrategy.ts | 52 +++------ .../src/strategies/layout/LayoutStrategy.ts | 5 +- .../__tests__/FixedLayoutStrategy.test.ts | 105 ++++++++++-------- packages/core/src/virtualizer/Virtualizer.ts | 17 ++- .../virtualizer/__test__/Virtualizer.test.ts | 78 +++++++++++++ 5 files changed, 172 insertions(+), 85 deletions(-) diff --git a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts index 29b6515..06b8393 100644 --- a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts +++ b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts @@ -5,35 +5,23 @@ import { getMaxElementSize } from "../../utils/getMaxElementSize"; export class FixedLayoutStrategy implements LayoutStrategy { readonly #itemSize: number; - #lastScrollOffset = 0; - #lastViewportSize = 0; - #lastCount = 0; constructor(itemSize: number) { this.#itemSize = itemSize; } getItemOffset(index: number): number { - const virtualTotal = this.#lastCount * this.#itemSize; - const clampedTotal = this.#clampedTotalSize(virtualTotal); - - if (virtualTotal <= clampedTotal) { - return index * this.#itemSize; - } - - const virtualOffset = this.#virtualOffset( - this.#lastScrollOffset, - this.#lastViewportSize, - virtualTotal, - clampedTotal - ); - return this.#lastScrollOffset + (index * this.#itemSize - virtualOffset); + return index * this.#itemSize; } getItemSize(_index: number): number { return this.#itemSize; } + getVirtualSize(count: number): number { + return count * this.#itemSize; + } + getTotalSize(count: number): number { return this.#clampedTotalSize(count * this.#itemSize); } @@ -43,13 +31,9 @@ export class FixedLayoutStrategy implements LayoutStrategy { viewportSize: number, count: number ): Range { - this.#lastScrollOffset = scrollOffset; - this.#lastViewportSize = viewportSize; - this.#lastCount = count; - const virtualTotal = count * this.#itemSize; const clampedTotal = this.#clampedTotalSize(virtualTotal); - const virtualOffset = this.#virtualOffset( + const virtualOffset = mapToVirtualOffset( scrollOffset, viewportSize, virtualTotal, @@ -71,17 +55,17 @@ export class FixedLayoutStrategy implements LayoutStrategy { const max = getMaxElementSize(); return virtualTotal > max ? max : virtualTotal; } +} - #virtualOffset( - scrollOffset: number, - viewportSize: number, - virtualTotal: number, - clampedTotal: number - ): number { - if (virtualTotal <= clampedTotal) return scrollOffset; - const scrollable = clampedTotal - viewportSize; - if (scrollable <= 0) return 0; - const ratio = scrollOffset / scrollable; - return ratio * (virtualTotal - viewportSize); - } +export function mapToVirtualOffset( + scrollOffset: number, + viewportSize: number, + virtualTotal: number, + clampedTotal: number +): number { + if (virtualTotal <= clampedTotal) return scrollOffset; + const scrollable = clampedTotal - viewportSize; + if (scrollable <= 0) return 0; + const ratio = scrollOffset / scrollable; + return ratio * (virtualTotal - viewportSize); } diff --git a/packages/core/src/strategies/layout/LayoutStrategy.ts b/packages/core/src/strategies/layout/LayoutStrategy.ts index d8079dd..ab4319f 100644 --- a/packages/core/src/strategies/layout/LayoutStrategy.ts +++ b/packages/core/src/strategies/layout/LayoutStrategy.ts @@ -1,4 +1,4 @@ -import type { Range } from '../../types'; +import type { Range } from "../../types"; export interface LayoutStrategy { getItemOffset(index: number): number; @@ -7,10 +7,11 @@ export interface LayoutStrategy { getTotalSize(count: number): number; + getVirtualSize?(count: number): number; + getVisibleRange( scrollOffset: number, viewportSize: number, count: number ): Range; } - diff --git a/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts b/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts index cf49a71..d7fbfba 100644 --- a/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts +++ b/packages/core/src/strategies/layout/__tests__/FixedLayoutStrategy.test.ts @@ -3,6 +3,24 @@ import { describe, it, expect, beforeEach } from "vitest"; import { FixedLayoutStrategy } from "../FixedLayoutStrategy"; import { resetMaxElementSizeCache } from "../../../utils/getMaxElementSize"; +function simulateBrowserCeiling(limit: number) { + HTMLElement.prototype.getBoundingClientRect = function () { + const declared = parseFloat(this.style.height || "0"); + const clamped = Math.min(declared, limit); + return { + x: 0, + y: 0, + width: 1, + height: clamped, + top: 0, + left: 0, + right: 1, + bottom: clamped, + toJSON: () => ({}), + } as DOMRect; + }; +} + describe("FixedLayoutStrategy", () => { beforeEach(() => { resetMaxElementSizeCache(); @@ -31,16 +49,43 @@ describe("FixedLayoutStrategy", () => { expect(strategy.getTotalSize(COUNT)).toBe(ITEM_SIZE * COUNT); }); + it("returns getVirtualSize equal to getTotalSize", () => { + expect(strategy.getVirtualSize(COUNT)).toBe(strategy.getTotalSize(COUNT)); + }); + it("indexes items by raw division", () => { const range = strategy.getVisibleRange(500, 400, COUNT); expect(range.startIndex).toBe(10); expect(range.endIndex).toBe(18); }); + }); - it("returns item offsets in virtual coordinates", () => { - strategy.getVisibleRange(500, 400, COUNT); + describe("getItemOffset is stateless and absolute", () => { + const ITEM_SIZE = 50; + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + + it("returns index * itemSize regardless of prior scroll calls", () => { + strategy.getVisibleRange(500, 400, 1000); + expect(strategy.getItemOffset(10)).toBe(500); + strategy.getVisibleRange(9999, 400, 1000); expect(strategy.getItemOffset(10)).toBe(500); - expect(strategy.getItemOffset(11)).toBe(550); + }); + + it("is unaffected by clamping", () => { + simulateBrowserCeiling(17_000_000); + const big = new FixedLayoutStrategy(ITEM_SIZE); + big.getVisibleRange(5_000_000, 800, 10_000_000); + expect(big.getItemOffset(123_456)).toBe(123_456 * ITEM_SIZE); + }); + + it("returns identical values when called by separate consumers", () => { + simulateBrowserCeiling(17_000_000); + const shared = new FixedLayoutStrategy(ITEM_SIZE); + shared.getVisibleRange(1_000_000, 800, 10_000_000); + const a = shared.getItemOffset(50_000); + shared.getVisibleRange(15_000_000, 800, 10_000_000); + const b = shared.getItemOffset(50_000); + expect(a).toBe(b); }); }); @@ -49,25 +94,7 @@ describe("FixedLayoutStrategy", () => { const COUNT = 10_000_000; const VIEWPORT = 800; - function simulateBrowserCeiling(limit: number) { - HTMLElement.prototype.getBoundingClientRect = function () { - const declared = parseFloat(this.style.height || "0"); - const clamped = Math.min(declared, limit); - return { - x: 0, - y: 0, - width: 1, - height: clamped, - top: 0, - left: 0, - right: 1, - bottom: clamped, - toJSON: () => ({}), - } as DOMRect; - }; - } - - it("clamps total size to the probed browser maximum", () => { + it("clamps getTotalSize to the probed browser maximum", () => { simulateBrowserCeiling(17_000_000); const strategy = new FixedLayoutStrategy(ITEM_SIZE); const total = strategy.getTotalSize(COUNT); @@ -75,6 +102,12 @@ describe("FixedLayoutStrategy", () => { expect(total).toBeLessThanOrEqual(17_000_000); }); + it("keeps getVirtualSize unclamped", () => { + simulateBrowserCeiling(17_000_000); + const strategy = new FixedLayoutStrategy(ITEM_SIZE); + expect(strategy.getVirtualSize(COUNT)).toBe(ITEM_SIZE * COUNT); + }); + it("maps scroll positions to the full virtual range", () => { simulateBrowserCeiling(17_000_000); const strategy = new FixedLayoutStrategy(ITEM_SIZE); @@ -91,30 +124,6 @@ describe("FixedLayoutStrategy", () => { expect(endRange.endIndex).toBe(COUNT - 1); }); - it("positions items near the current scroll offset", () => { - simulateBrowserCeiling(17_000_000); - const strategy = new FixedLayoutStrategy(ITEM_SIZE); - const clampedTotal = strategy.getTotalSize(COUNT); - const scrollOffset = clampedTotal / 2; - - const range = strategy.getVisibleRange(scrollOffset, VIEWPORT, COUNT); - const firstOffset = strategy.getItemOffset(range.startIndex); - - expect(firstOffset).toBeGreaterThanOrEqual(scrollOffset - ITEM_SIZE); - expect(firstOffset).toBeLessThan(scrollOffset + VIEWPORT); - }); - - it("keeps consecutive items spaced by itemSize", () => { - simulateBrowserCeiling(17_000_000); - const strategy = new FixedLayoutStrategy(ITEM_SIZE); - const clampedTotal = strategy.getTotalSize(COUNT); - - const range = strategy.getVisibleRange(clampedTotal / 3, VIEWPORT, COUNT); - const a = strategy.getItemOffset(range.startIndex); - const b = strategy.getItemOffset(range.startIndex + 1); - expect(b - a).toBeCloseTo(ITEM_SIZE, 5); - }); - it("produces correct indices when virtual offset exceeds 2^31", () => { simulateBrowserCeiling(17_000_000); const HUGE_COUNT = 200_000_000; @@ -127,8 +136,8 @@ describe("FixedLayoutStrategy", () => { HUGE_COUNT ); - const virtualOffset = ITEM_SIZE * (HUGE_COUNT - 1); - expect(virtualOffset).toBeGreaterThan(2 ** 31); + const lastVirtualOffset = ITEM_SIZE * (HUGE_COUNT - 1); + expect(lastVirtualOffset).toBeGreaterThan(2 ** 31); expect(range.startIndex).toBeGreaterThanOrEqual(0); expect(range.endIndex).toBe(HUGE_COUNT - 1); }); diff --git a/packages/core/src/virtualizer/Virtualizer.ts b/packages/core/src/virtualizer/Virtualizer.ts index 2daecaa..9f65fb9 100644 --- a/packages/core/src/virtualizer/Virtualizer.ts +++ b/packages/core/src/virtualizer/Virtualizer.ts @@ -83,6 +83,9 @@ export class Virtualizer { const scrollOffset = this.#scrollSource.getScrollOffset(); const viewportSize = this.#scrollSource.getViewportSize(); const totalSize = this.#layoutStrategy.getTotalSize(this.#count); + const virtualSize = + this.#layoutStrategy.getVirtualSize?.(this.#count) ?? totalSize; + const isClamped = virtualSize > totalSize; let visibleRange = this.#layoutStrategy.getVisibleRange( scrollOffset, @@ -104,8 +107,17 @@ export class Virtualizer { } } + let virtualOffset = scrollOffset; + if (isClamped) { + const scrollable = totalSize - viewportSize; + const virtualScrollable = virtualSize - viewportSize; + virtualOffset = + scrollable > 0 ? (scrollOffset * virtualScrollable) / scrollable : 0; + } + let virtualItems: VirtualItem[]; if ( + !isClamped && this.#prevRenderRange && this.#prevVirtualItems && this.#prevRenderRange.startIndex === renderRange.startIndex && @@ -118,8 +130,11 @@ export class Virtualizer { const endIdx = renderRange.endIndex; for (let i = startIdx; i <= endIdx; i++) { - const start = this.#layoutStrategy.getItemOffset(i); + const virtualStart = this.#layoutStrategy.getItemOffset(i); const size = this.#layoutStrategy.getItemSize(i); + const start = isClamped + ? scrollOffset + (virtualStart - virtualOffset) + : virtualStart; virtualItems.push({ index: i, start, diff --git a/packages/core/src/virtualizer/__test__/Virtualizer.test.ts b/packages/core/src/virtualizer/__test__/Virtualizer.test.ts index b9dce01..deb78af 100644 --- a/packages/core/src/virtualizer/__test__/Virtualizer.test.ts +++ b/packages/core/src/virtualizer/__test__/Virtualizer.test.ts @@ -131,6 +131,84 @@ describe("Virtualizer", () => { }); }); + describe("clamped layout (huge lists)", () => { + // @vitest-environment jsdom + it("translates item start to render coords when virtualSize exceeds totalSize", () => { + const ITEM_SIZE = 50; + const COUNT = 1_000_000; + const VIEWPORT = 800; + const stubStrategy: import("../../strategies/layout/LayoutStrategy").LayoutStrategy = + { + getItemOffset: (i: number) => i * ITEM_SIZE, + getItemSize: () => ITEM_SIZE, + getTotalSize: () => 10_000_000, + getVirtualSize: () => COUNT * ITEM_SIZE, + getVisibleRange: (scrollOffset, viewportSize, count) => { + const clampedTotal = 10_000_000; + const virtualTotal = count * ITEM_SIZE; + const scrollable = clampedTotal - viewportSize; + const virtualOffset = + scrollable > 0 + ? (scrollOffset / scrollable) * (virtualTotal - viewportSize) + : 0; + const startIndex = Math.max( + 0, + Math.min(count - 1, Math.floor(virtualOffset / ITEM_SIZE)) + ); + const endIndex = Math.min( + count - 1, + startIndex + Math.ceil(viewportSize / ITEM_SIZE) + ); + return { startIndex, endIndex }; + }, + }; + + const src = new VirtualScrollSource(); + src.setViewportSize(VIEWPORT); + src.setScrollOffset(5_000_000); + + const v = new Virtualizer(stubStrategy, src, { + count: COUNT, + overscan: 0, + }); + const state = v.getState(); + const firstItem = state.virtualItems[0]!; + + expect(firstItem.start).toBeGreaterThanOrEqual(5_000_000 - ITEM_SIZE); + expect(firstItem.start).toBeLessThan(5_000_000 + VIEWPORT); + }); + + it("passes through item start unchanged when not clamped", () => { + const state = virtualizer.getState(); + const first = state.virtualItems[0]!; + expect(first.start).toBe(first.index * 50); + }); + + it("does not reuse cached items when the strategy is clamped", () => { + let calls = 0; + const stubStrategy: import("../../strategies/layout/LayoutStrategy").LayoutStrategy = + { + getItemOffset: (i: number) => { + calls++; + return i * 50; + }, + getItemSize: () => 50, + getTotalSize: () => 1000, + getVirtualSize: () => 100_000, + getVisibleRange: () => ({ startIndex: 0, endIndex: 2 }), + }; + const src = new VirtualScrollSource(); + src.setViewportSize(200); + const v = new Virtualizer(stubStrategy, src, { + count: 1000, + overscan: 0, + }); + const before = calls; + v.update(); + expect(calls).toBeGreaterThan(before); + }); + }); + it("should unsubscribe from scroll source on destroy", () => { const originalSubscribe = scrollSource.subscribe.bind(scrollSource); const unsubscribeSpy = vi.fn(); From 3a6fec1e42cc676ef04cfbf2f66c2754cc6b4ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 15:01:25 +0900 Subject: [PATCH 16/77] refactor(core): extract mapToVirtualOffset and avoid intermediate overflow - Move mapToVirtualOffset out of FixedLayoutStrategy into src/utils so the Virtualizer and any future LayoutStrategy share one implementation. - Compute the ratio (scrollOffset / scrollable) before multiplying by the virtual scrollable range. The previous Virtualizer formula multiplied first and could overflow Number.MAX_SAFE_INTEGER on extreme lists. - Drop the if-isClamped branch in the item loop. When virtualOffset defaults to scrollOffset (non-clamped case), the formula scrollOffset + (virtualStart - virtualOffset) reduces to virtualStart, so a single expression covers both paths. --- .../strategies/layout/FixedLayoutStrategy.ts | 14 +------ .../__tests__/mapToVirtualOffset.test.ts | 39 +++++++++++++++++++ packages/core/src/utils/mapToVirtualOffset.ts | 12 ++++++ packages/core/src/virtualizer/Virtualizer.ts | 18 ++++----- 4 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 packages/core/src/utils/__tests__/mapToVirtualOffset.test.ts create mode 100644 packages/core/src/utils/mapToVirtualOffset.ts diff --git a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts index 06b8393..6d405fa 100644 --- a/packages/core/src/strategies/layout/FixedLayoutStrategy.ts +++ b/packages/core/src/strategies/layout/FixedLayoutStrategy.ts @@ -2,6 +2,7 @@ import type { Range } from "../../types"; import type { LayoutStrategy } from "./LayoutStrategy"; import { clamp } from "../../utils/clamp"; import { getMaxElementSize } from "../../utils/getMaxElementSize"; +import { mapToVirtualOffset } from "../../utils/mapToVirtualOffset"; export class FixedLayoutStrategy implements LayoutStrategy { readonly #itemSize: number; @@ -56,16 +57,3 @@ export class FixedLayoutStrategy implements LayoutStrategy { return virtualTotal > max ? max : virtualTotal; } } - -export function mapToVirtualOffset( - scrollOffset: number, - viewportSize: number, - virtualTotal: number, - clampedTotal: number -): number { - if (virtualTotal <= clampedTotal) return scrollOffset; - const scrollable = clampedTotal - viewportSize; - if (scrollable <= 0) return 0; - const ratio = scrollOffset / scrollable; - return ratio * (virtualTotal - viewportSize); -} diff --git a/packages/core/src/utils/__tests__/mapToVirtualOffset.test.ts b/packages/core/src/utils/__tests__/mapToVirtualOffset.test.ts new file mode 100644 index 0000000..6e4bc5f --- /dev/null +++ b/packages/core/src/utils/__tests__/mapToVirtualOffset.test.ts @@ -0,0 +1,39 @@ +import { describe, it, expect } from "vitest"; +import { mapToVirtualOffset } from "../mapToVirtualOffset"; + +describe("mapToVirtualOffset", () => { + it("returns scrollOffset unchanged when not clamped", () => { + expect(mapToVirtualOffset(123, 800, 5000, 5000)).toBe(123); + expect(mapToVirtualOffset(0, 800, 5000, 10_000)).toBe(0); + }); + + it("returns 0 when the rendered scrollable range is zero or negative", () => { + expect(mapToVirtualOffset(50, 1000, 100_000, 1000)).toBe(0); + expect(mapToVirtualOffset(50, 1000, 100_000, 500)).toBe(0); + }); + + it("maps endpoints correctly", () => { + const clamped = 17_000_000; + const virtual = 500_000_000; + const viewport = 800; + + expect(mapToVirtualOffset(0, viewport, virtual, clamped)).toBe(0); + expect( + mapToVirtualOffset(clamped - viewport, viewport, virtual, clamped) + ).toBeCloseTo(virtual - viewport, 5); + }); + + it("avoids intermediate overflow above Number.MAX_SAFE_INTEGER", () => { + const clamped = 17_000_000; + const virtual = 10_000_000_000_000; // 1e13 — multiplying by scrollOffset would overflow safe int + const viewport = 800; + const scrollOffset = clamped - viewport; + + const result = mapToVirtualOffset(scrollOffset, viewport, virtual, clamped); + + expect(Number.isFinite(result)).toBe(true); + expect(result).toBeGreaterThan(0); + expect(result).toBeLessThanOrEqual(virtual); + expect(result).toBeCloseTo(virtual - viewport, -3); + }); +}); diff --git a/packages/core/src/utils/mapToVirtualOffset.ts b/packages/core/src/utils/mapToVirtualOffset.ts new file mode 100644 index 0000000..e7c3816 --- /dev/null +++ b/packages/core/src/utils/mapToVirtualOffset.ts @@ -0,0 +1,12 @@ +export function mapToVirtualOffset( + scrollOffset: number, + viewportSize: number, + virtualTotal: number, + clampedTotal: number +): number { + if (virtualTotal <= clampedTotal) return scrollOffset; + const scrollable = clampedTotal - viewportSize; + if (scrollable <= 0) return 0; + const ratio = scrollOffset / scrollable; + return ratio * (virtualTotal - viewportSize); +} diff --git a/packages/core/src/virtualizer/Virtualizer.ts b/packages/core/src/virtualizer/Virtualizer.ts index 9f65fb9..15c93ad 100644 --- a/packages/core/src/virtualizer/Virtualizer.ts +++ b/packages/core/src/virtualizer/Virtualizer.ts @@ -6,6 +6,7 @@ import type { import type { LayoutStrategy } from "../strategies/layout/LayoutStrategy"; import type { ScrollSource } from "../strategies/scroll/ScrollSource"; import type { Plugin } from "../plugins/Plugin"; +import { mapToVirtualOffset } from "../utils/mapToVirtualOffset"; export class Virtualizer { #count: number; @@ -107,13 +108,12 @@ export class Virtualizer { } } - let virtualOffset = scrollOffset; - if (isClamped) { - const scrollable = totalSize - viewportSize; - const virtualScrollable = virtualSize - viewportSize; - virtualOffset = - scrollable > 0 ? (scrollOffset * virtualScrollable) / scrollable : 0; - } + const virtualOffset = mapToVirtualOffset( + scrollOffset, + viewportSize, + virtualSize, + totalSize + ); let virtualItems: VirtualItem[]; if ( @@ -132,9 +132,7 @@ export class Virtualizer { for (let i = startIdx; i <= endIdx; i++) { const virtualStart = this.#layoutStrategy.getItemOffset(i); const size = this.#layoutStrategy.getItemSize(i); - const start = isClamped - ? scrollOffset + (virtualStart - virtualOffset) - : virtualStart; + const start = scrollOffset + (virtualStart - virtualOffset); virtualItems.push({ index: i, start, From ae621dd97dba16eee05abf6a90f9651e54ea1d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 19 May 2026 19:42:02 +0900 Subject: [PATCH 17/77] docs: update README and documentation for multi-framework support and clarify API responses --- README.md | 36 +++++++++++- docs/.vitepress/config.ts | 3 +- docs/.vitepress/theme/Hero.vue | 3 +- docs/guide/concepts.md | 4 +- docs/guide/infinite-list.md | 103 +++++++++++++++++++++++++++++++-- docs/guide/introduction.md | 23 ++++++-- docs/guide/quick-start.md | 5 +- docs/guide/ssr.md | 23 +++++++- docs/guide/virtual-list.md | 71 +++++++++++++++++++++-- 9 files changed, 247 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index eecef9b..6c0e3a7 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # [scrolloop](https://976520.github.io/scrolloop/) -The modern scrolling component for React and React Native +Modern virtual and infinite scrolling components for React, React Native, Preact, Vue, and Svelte. ![NPM Downloads](https://img.shields.io/npm/dt/scrolloop) ![Repo size](https://img.shields.io/github/repo-size/976520/scrolloop) @@ -21,6 +21,36 @@ yarn add @scrolloop/react pnpm add @scrolloop/react ``` +### Preact + +```bash +npm install @scrolloop/preact +# or +yarn add @scrolloop/preact +# or +pnpm add @scrolloop/preact +``` + +### Vue + +```bash +npm install @scrolloop/vue +# or +yarn add @scrolloop/vue +# or +pnpm add @scrolloop/vue +``` + +### Svelte + +```bash +npm install @scrolloop/svelte +# or +yarn add @scrolloop/svelte +# or +pnpm add @scrolloop/svelte +``` + ### React Native ```bash @@ -82,7 +112,11 @@ function App() { ## Packages - **@scrolloop/core**: Platform-agnostic virtual scrolling logic +- **@scrolloop/shared**: Shared infinite loading state and utilities - **@scrolloop/react**: React implementation +- **@scrolloop/preact**: Preact implementation +- **@scrolloop/vue**: Vue 3 implementation +- **@scrolloop/svelte**: Svelte 5 implementation - **@scrolloop/react-native**: React Native implementation ## License diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 827f26e..88d210c 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -2,7 +2,8 @@ import { defineConfig } from "vitepress"; export default defineConfig({ title: "scrolloop", - description: "The modern scrolling component for React and React Native.", + description: + "Modern virtual and infinite scrolling components for React, React Native, Preact, Vue, and Svelte.", appearance: false, base: "/scrolloop/", diff --git a/docs/.vitepress/theme/Hero.vue b/docs/.vitepress/theme/Hero.vue index d1b8a44..ab32350 100644 --- a/docs/.vitepress/theme/Hero.vue +++ b/docs/.vitepress/theme/Hero.vue @@ -88,7 +88,8 @@ onUnmounted(() => {

- The modern scrolling component for React and React Native.
+ Modern virtual and infinite scrolling for React, React Native, Preact, + Vue, and Svelte.
Lightweight, Zero dependencies, and blazingly fast.

diff --git a/docs/guide/concepts.md b/docs/guide/concepts.md index 4bd168f..0f827b8 100644 --- a/docs/guide/concepts.md +++ b/docs/guide/concepts.md @@ -6,7 +6,7 @@ scrolloop이 어떻게 수만 개의 item을 성능 저하 없이 빠르게 렌 windowing이란 전체 리스트 아이템 중에서 현재 사용자에게 보이는(visible) 영역에 해당하는 item만 선택적으로 DOM에 렌더링하는 기법입니다. -사용자가 스크롤할 때마다 scrolloop은 현재 `scrollTop`을 계산하여 해당 위치에 있어야 할 아이템의 인덱스 범위를 찾아냅니다. 10만 개의 data가 있어도 실제 DOM에는 10~20개만 존재하게 됩니다. +사용자가 스크롤할 때마다 scrolloop은 현재 스크롤 offset을 계산하여 해당 위치에 있어야 할 아이템의 인덱스 범위를 찾아냅니다. 10만 개의 data가 있어도 실제 DOM 또는 native view에는 화면에 필요한 항목과 overscan 항목만 존재하게 됩니다. 직접 scroll해 보세요! @@ -16,7 +16,7 @@ windowing이란 전체 리스트 아이템 중에서 현재 사용자에게 보 ## 2. overscan -아주 빠르게 scroll할 때, 브라우저가 다음 item을 그리기 전에 잠깐 공백이 보이는 현상을 방지하기 위한 기법으로, viewport 바로 위와 아래에 지정된 개수(`overscan`)만큼의 item을 미리 렌더링해 둡니다. +아주 빠르게 scroll할 때, 다음 item을 그리기 전에 잠깐 공백이 보이는 현상을 방지하기 위한 기법으로, viewport 바로 위와 아래에 지정된 개수(`overscan`)만큼의 item을 미리 렌더링해 둡니다. scrolloop은 스크롤 방향에 따라 진행 방향의 overscan 범위를 조금 더 넓게 잡습니다. ## 3. 절대 좌표 배치 (Absolute Positioning) diff --git a/docs/guide/infinite-list.md b/docs/guide/infinite-list.md index 2820c4f..5b70c41 100644 --- a/docs/guide/infinite-list.md +++ b/docs/guide/infinite-list.md @@ -14,7 +14,7 @@ function App() { const response = await fetch( `https://api.example.com/items?page=${page}&size=${size}` ); - return await response.json(); // { items: T[], total: number } 반환 + return await response.json(); // { items: T[], total: number, hasMore: boolean } 반환 }; return ( @@ -32,13 +32,74 @@ function App() { } ``` +```tsx [Preact] +import { InfiniteList } from "@scrolloop/preact"; + +export function App() { + const fetchPage = async (page: number, size: number) => { + const response = await fetch(`/api/items?page=${page}&size=${size}`); + return response.json(); // { items, total, hasMore } + }; + + return ( + ( +
{item ? item.title : "Loading..."}
+ )} + /> + ); +} +``` + +```vue [Vue] + + + +``` + +```svelte [Svelte] + + + + {#snippet children(index, item, style)} +
+ {item?.title ?? "Loading..."} +
+ {/snippet} +
+``` + ```tsx [React Native] import { View, Text } from "react-native"; import { InfiniteList } from "@scrolloop/react-native"; function App() { const fetchPage = async (page: number, size: number) => { - return { items: data, total: 1000 }; + return { items: data, total: 1000, hasMore: page < 49 }; }; return ( @@ -71,15 +132,25 @@ InfiniteList는 가상화 설정 외에도 데이터 페칭 및 상태 관리를 | `itemSize` | `number` | **Yes** | 각 아이템의 고정된 높이(또는 너비)입니다. | | `pageSize` | `number` | No | 한 페이지당 아이템의 개수입니다. (기본값: `20`) | | `initialPage` | `number` | No | 처음 로드할 페이지 번호입니다. (기본값: `0`) | -| `prefetchThreshold` | `number` | No | 다음 페이지를 미리 불러올 기준이 되는 남은 페이지 수입니다. (기본값: `1`) | +| `prefetchThreshold` | `number` | No | 현재 범위 뒤로 추가로 미리 불러올 페이지 수입니다. (기본값: `1`, React/React Native/Vue/Svelte) | | `height` | `number` | No | 리스트 컨테이너의 높이입니다. (기본값: `400`) | -| `overscan` | `number` | No | 뷰포트 외부에서 미리 렌더링할 아이템의 수입니다. (기본값: `pageSize * 2`) | +| `overscan` | `number` | No | 뷰포트 외부에서 미리 렌더링할 아이템 수입니다. (기본값: `Math.max(20, pageSize * 2)`) | | `renderLoading` | `Function` | No | 최초 로딩 중에 표시할 UI를 렌더링하는 함수입니다. | | `renderError` | `Function` | No | 에러 발생 시 표시할 UI를 렌더링하는 함수입니다. `(error, retry) => ReactNode` 형태입니다. | | `renderEmpty` | `Function` | No | 데이터가 없을 때 표시할 UI를 렌더링하는 함수입니다. | | `onPageLoad` | `Function` | No | 페이지 로드가 성공했을 때 실행되는 콜백입니다. | | `onError` | `Function` | No | 에러가 발생했을 때 실행되는 콜백입니다. | +`PageResponse`는 다음 형태입니다. + +```ts +interface PageResponse { + items: T[]; + total: number; + hasMore: boolean; +} +``` + ### React 전용 (@scrolloop/react) React 환경에서는 SSR 및 성능 최적화를 위한 추가 옵션을 제공합니다. @@ -89,8 +160,30 @@ React 환경에서는 SSR 및 성능 최적화를 위한 추가 옵션을 제공 - **`initialTotal`** (`number`): 전체 아이템의 총 개수를 서버에서 미리 알고 있는 경우 전달합니다. - **`transitionStrategy`** (`object`): SSR에서 가상화 리스트로 전환될 때의 상세 전략을 설정합니다. +### Preact 전용 (@scrolloop/preact) + +- `class`: 컨테이너 요소에 적용할 CSS 클래스입니다. +- `style`: 컨테이너 요소에 적용할 인라인 스타일입니다. +- 현재 Preact adapter는 `prefetchThreshold` prop을 노출하지 않습니다. 필요한 페이지 범위와 다음 페이지를 자동으로 로드합니다. + +### Vue 전용 (@scrolloop/vue) + +- 기본 slot은 `{ item, index, style }`을 전달합니다. +- `loading`, `error`, `empty` named slot을 사용할 수 있습니다. +- `pageLoad`, `error` 이벤트로 로딩 결과를 받을 수 있습니다. + +### Svelte 전용 (@scrolloop/svelte) + +- `children` snippet은 `(index, item, style)`을 전달받습니다. +- `loading`, `error`, `empty` snippet을 사용할 수 있습니다. + +### React Native 전용 (@scrolloop/react-native) + +- React Native adapter는 `onScroll`을 제외한 `ScrollViewProps`를 전달할 수 있습니다. +- SSR 관련 props는 React DOM adapter에서만 지원합니다. + ## 작동 방식 1. **Lazy Loading**: `InfiniteList`는 사용자의 스크롤 위치를 감시하며, 화면에 노출될 것으로 예상되는 페이지가 아직 로드되지 않은 경우에만 `fetchPage`를 호출합니다. 2. **Skeleton 지원**: data가 로딩 중일 때 `renderItem`에 `undefined`를 넘겨주어, skeleton UI를 쉽게 구현할 수 있도록 합니다. -3. **자동 재시도**: 네트워크 오류 등으로 페칭에 실패한 경우, `renderError`에서 제공하는 `retry` 함수를 통해 실패한 페이지부터 다시 불러올 수 있습니다. +3. **자동 재시도**: 네트워크 오류 등으로 페칭에 실패한 경우, `renderError` 또는 error slot/snippet에서 제공하는 `retry` 함수를 통해 `initialPage`부터 다시 불러올 수 있습니다. diff --git a/docs/guide/introduction.md b/docs/guide/introduction.md index 6c8a278..a28c8e6 100644 --- a/docs/guide/introduction.md +++ b/docs/guide/introduction.md @@ -1,6 +1,6 @@ # scrolloop 소개 -scrolloop은 현대적인 웹 애플리케이션을 위한 고성능 가상 스크롤(Virtual Scrolling) 라이브러리입니다. +scrolloop은 여러 UI 런타임에서 사용할 수 있는 고성능 가상 스크롤(Virtual Scrolling) 라이브러리입니다. 고정 높이 아이템을 기준으로 화면에 필요한 범위만 렌더링하고, 무한 스크롤 데이터 로딩까지 같은 API 형태로 제공합니다. ## why virtual scrolling? @@ -9,17 +9,30 @@ scrolloop은 현대적인 웹 애플리케이션을 위한 고성능 가상 스 ## packages - `@scrolloop/core`: 플랫폼 독립적인 가상화 코어 로직 -- `@scrolloop/react`: React 최적화 컴포넌트 (`VirtualList`, `InfiniteList`) -- `@scrolloop/react-native`: 모바일 성능 최적화 컴포넌트 +- `@scrolloop/shared`: infinite loading 상태 관리와 공통 유틸리티 +- `@scrolloop/react`: React 컴포넌트 (`VirtualList`, `InfiniteList`) +- `@scrolloop/react-native`: React Native 컴포넌트 +- `@scrolloop/preact`: Preact 컴포넌트와 hook +- `@scrolloop/vue`: Vue 3 컴포넌트와 composable +- `@scrolloop/svelte`: Svelte 5 컴포넌트와 store ## install ```bash -# React 프로젝트 +# React npm install @scrolloop/react -# React Native 프로젝트 +# React Native npm install @scrolloop/react-native + +# Preact +npm install @scrolloop/preact + +# Vue 3 +npm install @scrolloop/vue + +# Svelte 5 +npm install @scrolloop/svelte ``` 다음 단계에서 [Quick start](./quick-start)를 통해 첫 번째 가상 리스트를 구현해 보세요. diff --git a/docs/guide/quick-start.md b/docs/guide/quick-start.md index dad8c92..262365d 100644 --- a/docs/guide/quick-start.md +++ b/docs/guide/quick-start.md @@ -1,6 +1,6 @@ # Quick start -scrolloop로 1분 안에 windowing 리스트를 구현해 보세요. +scrolloop로 1분 안에 windowing 리스트를 구현해 보세요. 가장 일반적인 React 예시는 다음과 같습니다. ```tsx import { VirtualList } from "@scrolloop/react"; @@ -28,4 +28,5 @@ function App() { ## Next step -- [VirtualList](./virtual-list)에서 더 다양한 기능을 확인하세요. +- [VirtualList](./virtual-list)에서 런타임별 사용법과 props를 확인하세요. +- [InfiniteList](./infinite-list)에서 페이지 기반 무한 스크롤을 확인하세요. diff --git a/docs/guide/ssr.md b/docs/guide/ssr.md index 2a07d88..05a05f9 100644 --- a/docs/guide/ssr.md +++ b/docs/guide/ssr.md @@ -1,6 +1,6 @@ # SSR (Server-Side Rendering) 가이드 -scrolloop은 Next.js와 같은 서버 사이드 렌더링 환경에서 초기 로딩 성능과 SEO를 최적화할 수 있는 강력한 SSR 기능을 제공합니다. +`@scrolloop/react`의 `InfiniteList`는 Next.js와 같은 서버 사이드 렌더링 환경에서 초기 로딩 성능과 SEO를 개선할 수 있는 SSR 전환 기능을 제공합니다. 이 기능은 React DOM adapter 전용입니다. ## SSR의 도전 과제 @@ -17,11 +17,11 @@ scrolloop은 `isServerSide` 옵션과 초기 데이터를 통해 이 문제를 ### 1. `isServerSide` 옵션 -이 옵션을 활성화하면 scrolloop은 클라이언트에서 가상화 엔진이 완전히 준비되기 전까지 **정적인 풀 리스트(Full List)** 모드로 동작합니다. +이 옵션을 활성화하면 scrolloop은 서버와 초기 클라이언트 렌더에서 **정적인 풀 리스트(Full List)** 모드로 동작합니다. 이후 설정한 전환 시점에 가상 리스트로 바뀝니다. ### 2. 하이드레이션 전략 -서버에서 렌더링된 HTML이 브라우저에 전달되면, scrolloop은 즉시 가상 리스트로 전환되지 않고 **사용자의 첫 상호작용(스크롤 등)**이 발생할 때까지 기다립니다. 이를 통해 하이드레이션 시 발생할 수 있는 시각적 튐(Jitter) 현상을 방지합니다. +서버에서 렌더링된 HTML이 브라우저에 전달되면, 기본 전략은 **사용자의 첫 상호작용(스크롤 등)**이 발생할 때까지 기다린 뒤 가상 리스트로 전환합니다. 이를 통해 하이드레이션 시 발생할 수 있는 시각적 튐(Jitter) 현상을 줄입니다. ## 사용 예시 (Next.js App Router) @@ -85,7 +85,24 @@ export function ClientItems({ initialData, initialTotal }) { | `initialTotal` | `number` | 전체 아이템의 총 개수(예상치)입니다. 스크롤바의 크기를 결정하는 데 사용됩니다. | | `transitionStrategy` | `object` | 가상화 모드로 전환되는 타이밍과 방식을 세밀하게 제어합니다. | +`transitionStrategy`는 다음 필드를 지원합니다. + +```ts +interface TransitionStrategy { + switchTrigger?: "immediate" | "first-interaction" | "idle"; + transitionStrategy?: "abort" | "replace-offscreen"; + pruneStrategy?: "idle" | "chunk"; + chunkSize?: number; +} +``` + +- `switchTrigger`: 가상화 전환을 시작하는 시점입니다. 기본값은 첫 상호작용 전략입니다. +- `transitionStrategy`: 전환 중 기존 DOM을 처리하는 방식입니다. +- `pruneStrategy`: 풀 리스트 DOM을 정리하는 방식입니다. +- `chunkSize`: chunk 정리 전략에서 한 번에 처리할 항목 수입니다. + ## 주의사항 - **Key 일치**: 서버에서 생성된 `key`와 클라이언트에서 생성된 `key`가 일치해야 하이드레이션 오류가 발생하지 않습니다. scrolloop 내부적으로 인덱스를 사용하지만, `renderItem` 내부의 컨텐츠에서도 일관된 키를 사용하세요. - **초기 로딩량**: `initialData`를 너무 크게 잡으면 SSR의 장점인 '빠른 초기 렌더링'이 무색해질 수 있습니다. 보통 첫 화면을 채울 정도(10~20개)가 적당합니다. +- **응답 형태**: 클라이언트의 `fetchPage`는 `{ items, total, hasMore }` 형태를 반환해야 합니다. diff --git a/docs/guide/virtual-list.md b/docs/guide/virtual-list.md index a89b88c..fbdcd03 100644 --- a/docs/guide/virtual-list.md +++ b/docs/guide/virtual-list.md @@ -27,6 +27,57 @@ function App() { } ``` +```tsx [Preact] +import { VirtualList } from "@scrolloop/preact"; + +export function App() { + const items = Array.from({ length: 1000 }, (_, i) => `Item #${i}`); + + return ( +
{items[index]}
} + /> + ); +} +``` + +```vue [Vue] + + + +``` + +```svelte [Svelte] + + + + {#snippet children(index, style)} +
+ {items[index]} +
+ {/snippet} +
+``` + ```tsx [React Native] import { View, Text } from "react-native"; import { VirtualList } from "@scrolloop/react-native"; @@ -53,7 +104,7 @@ function App() { ## Props -VirtualList는 사용 환경에 따라 약간 다른 설정을 지원합니다. +VirtualList는 모든 런타임에서 같은 핵심 설정을 사용합니다. 각 아이템은 고정된 `itemSize`를 가진다고 가정합니다. | Prop | Type | Required | Description | | :-------------- | :--------- | :------- | :---------------------------------------------------------------------- | @@ -64,16 +115,28 @@ VirtualList는 사용 환경에 따라 약간 다른 설정을 지원합니다. | `overscan` | `number` | No | 화면 밖 버퍼 영역에 미리 렌더링할 아이템의 수입니다. (기본값: 4) | | `onRangeChange` | `Function` | No | 렌더링되는 인덱스 범위가 변경될 때 호출되는 콜백입니다. | -### React 전용 (@scrolloop/react) +### React / Preact -- `className`: 컨테이너 요소에 적용할 CSS 클래스입니다. +- React는 `className`, Preact는 `class`를 컨테이너 요소에 적용할 수 있습니다. - `style`: 컨테이너 요소에 적용할 인라인 스타일입니다. +### Vue 전용 (@scrolloop/vue) + +- 기본 slot은 `{ index, style }`을 전달합니다. +- `rangeChange` 이벤트로 `{ startIndex, endIndex }`를 받을 수 있습니다. + +### Svelte 전용 (@scrolloop/svelte) + +- `children` snippet은 `(index, style)`을 전달받습니다. +- `onRangeChange` prop으로 `{ startIndex, endIndex }`를 받을 수 있습니다. + ### React Native 전용 (@scrolloop/react-native) - `VirtualList`는 React Native의 `ScrollView`를 상속받으므로, `onScroll`을 제외한 모든 `ScrollViewProps`를 지원합니다. +- `style`은 `ScrollView`에 적용됩니다. ## 주의사항 1. **Style 적용**: `renderItem`에서 제공하는 `style` 객체는 각 아이템의 위치를 결정하는 `absolute` 좌표 정보를 포함하고 있습니다. **반드시** 렌더링하는 최상위 element의 스타일에 적용해야 합니다. -2. **Key 관리**: `renderItem` 내부의 element에 `index`를 기반으로 한 고유한 `key`를 부여하는 것을 권장합니다. +2. **고정 크기 전제**: 현재 VirtualList는 모든 아이템이 동일한 `itemSize`를 가진다는 전제에서 범위를 계산합니다. +3. **Key 관리**: React와 React Native에서는 컴포넌트가 인덱스 기반 key를 주입합니다. 렌더링하는 하위 목록이 있다면 하위 요소의 key도 안정적으로 유지하세요. From 4da73fa4ed5afac79195be158f9cd8dbba7861f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Fri, 15 May 2026 19:02:56 +0900 Subject: [PATCH 18/77] fix: correct script tag formatting in InfiniteList.vue --- packages/vue/src/components/InfiniteList.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue/src/components/InfiniteList.vue b/packages/vue/src/components/InfiniteList.vue index f47f758..e5396c3 100644 --- a/packages/vue/src/components/InfiniteList.vue +++ b/packages/vue/src/components/InfiniteList.vue @@ -1,4 +1,4 @@ - + + +``` + +### Svelte + +```svelte + + + + {#snippet children(index, style)} +
+ {items[index]} +
+ {/snippet} +
+``` + ### React Native ```tsx @@ -99,6 +156,7 @@ function App() { ( {items[index]} From 2362d52be676afc8dece696ea60165067edc8d25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 20 Jun 2026 02:32:23 +0900 Subject: [PATCH 56/77] fix(vite.config): update external dependencies to use regex for Svelte --- packages/svelte/vite.config.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/svelte/vite.config.ts b/packages/svelte/vite.config.ts index cadbfa7..38d6de9 100644 --- a/packages/svelte/vite.config.ts +++ b/packages/svelte/vite.config.ts @@ -11,12 +11,7 @@ export default defineConfig({ fileName: (format) => `index.${format === "es" ? "mjs" : "cjs"}`, }, rollupOptions: { - external: [ - "svelte", - "svelte/store", - "@scrolloop/core", - "@scrolloop/shared", - ], + external: [/^svelte($|\/)/, "@scrolloop/core", "@scrolloop/shared"], }, }, }); From cdc268a96bc3018dc6309b2f64e5c75120d4f173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 20 Jun 2026 02:34:16 +0900 Subject: [PATCH 57/77] =?UTF-8?q?feat(InfiniteList):=20findMissingPages=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/svelte/src/InfiniteList.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/svelte/src/InfiniteList.svelte b/packages/svelte/src/InfiniteList.svelte index 7094abc..1c14583 100644 --- a/packages/svelte/src/InfiniteList.svelte +++ b/packages/svelte/src/InfiniteList.svelte @@ -3,6 +3,7 @@ import type { Snippet } from "svelte"; import { createInfinitePages } from "./stores/createInfinitePages"; import VirtualList from "./VirtualList.svelte"; + import { findMissingPages } from "@scrolloop/shared"; import type { InfiniteSourceOptions } from "@scrolloop/shared"; interface Props { From a903ec8d585c773437e3703ff6cc4a819270bfe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 20 Jun 2026 02:58:02 +0900 Subject: [PATCH 58/77] =?UTF-8?q?refactor(shared):=20React=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=20=EB=B6=84=EB=A6=AC,=20useInfinitePages=EB=A5=BC=20?= =?UTF-8?q?=EC=96=B4=EB=8C=91=ED=84=B0=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit shared는 platform-agnostic이어야 하는데 React 훅(useInfinitePages)과 react peerDependency를 담고 있어 Vue/Svelte/Preact 소비자에게 유령 React peer가 전파됐다. 이미 자체 훅을 가진 Preact/Vue 패턴을 따라 훅을 React / React Native 어댑터로 옮기고, shared는 InfiniteSource/findMissingPages/ canLoadPage 등 agnostic API만 export하도록 정리. --- .../src/components/InfiniteList.tsx | 3 +- .../src/hooks/useInfinitePages.ts | 4 +- .../react/src/components/InfiniteList.tsx | 3 +- packages/react/src/hooks/useInfinitePages.ts | 52 ++ packages/shared/src/hooks/index.ts | 1 - .../shared/src/hooks/useInfinitePages.test.ts | 454 ------------------ packages/shared/src/index.ts | 1 - 7 files changed, 58 insertions(+), 460 deletions(-) rename packages/{shared => react-native}/src/hooks/useInfinitePages.ts (94%) create mode 100644 packages/react/src/hooks/useInfinitePages.ts delete mode 100644 packages/shared/src/hooks/index.ts delete mode 100644 packages/shared/src/hooks/useInfinitePages.test.ts diff --git a/packages/react-native/src/components/InfiniteList.tsx b/packages/react-native/src/components/InfiniteList.tsx index 905f975..d28bfac 100644 --- a/packages/react-native/src/components/InfiniteList.tsx +++ b/packages/react-native/src/components/InfiniteList.tsx @@ -2,7 +2,8 @@ import { useEffect, memo } from "react"; import { View, Text, TouchableOpacity } from "react-native"; import type { InfiniteListProps, Range } from "../types"; import { VirtualList } from "./VirtualList"; -import { useInfinitePages, findMissingPages } from "@scrolloop/shared"; +import { findMissingPages } from "@scrolloop/shared"; +import { useInfinitePages } from "../hooks/useInfinitePages"; function InfiniteListInner(props: InfiniteListProps) { const { diff --git a/packages/shared/src/hooks/useInfinitePages.ts b/packages/react-native/src/hooks/useInfinitePages.ts similarity index 94% rename from packages/shared/src/hooks/useInfinitePages.ts rename to packages/react-native/src/hooks/useInfinitePages.ts index ae488c5..d192aba 100644 --- a/packages/shared/src/hooks/useInfinitePages.ts +++ b/packages/react-native/src/hooks/useInfinitePages.ts @@ -1,9 +1,9 @@ import { useState, useCallback, useEffect } from "react"; -import { InfiniteSource } from "../InfiniteSource"; +import { InfiniteSource } from "@scrolloop/shared"; import type { InfiniteSourceState, InfiniteSourceOptions, -} from "../InfiniteSource"; +} from "@scrolloop/shared"; export function useInfinitePages( options: InfiniteSourceOptions diff --git a/packages/react/src/components/InfiniteList.tsx b/packages/react/src/components/InfiniteList.tsx index f4c3beb..fec4a1e 100644 --- a/packages/react/src/components/InfiniteList.tsx +++ b/packages/react/src/components/InfiniteList.tsx @@ -2,7 +2,8 @@ import { useEffect, memo, useMemo, useCallback, useRef } from "react"; import type { InfiniteListProps } from "../types"; import { VirtualList } from "./VirtualList"; import { FullList } from "./FullList"; -import { useInfinitePages, findMissingPages } from "@scrolloop/shared"; +import { findMissingPages } from "@scrolloop/shared"; +import { useInfinitePages } from "../hooks/useInfinitePages"; import { useTransition } from "../hooks/useTransition"; import { calculateVirtualRange } from "@scrolloop/core"; import type { CSSProperties } from "react"; diff --git a/packages/react/src/hooks/useInfinitePages.ts b/packages/react/src/hooks/useInfinitePages.ts new file mode 100644 index 0000000..d192aba --- /dev/null +++ b/packages/react/src/hooks/useInfinitePages.ts @@ -0,0 +1,52 @@ +import { useState, useCallback, useEffect } from "react"; +import { InfiniteSource } from "@scrolloop/shared"; +import type { + InfiniteSourceState, + InfiniteSourceOptions, +} from "@scrolloop/shared"; + +export function useInfinitePages( + options: InfiniteSourceOptions +): InfiniteSourceState & { + loadPage: (page: number) => Promise; + retry: () => void; + reset: () => void; +} { + const { fetchPage, pageSize, initialPage, onPageLoad, onError } = options; + + const [manager] = useState>( + () => + new InfiniteSource({ + fetchPage, + pageSize, + initialPage, + onPageLoad, + onError, + }) + ); + + const [state, setState] = useState>(() => + manager.getState() + ); + + useEffect(() => { + const unsubscribe = manager.subscribe(setState); + return () => { + unsubscribe(); + manager.destroy(); + }; + }, [manager]); + + useEffect(() => { + manager.updateCallbacks({ fetchPage, onPageLoad, onError }); + }, [manager, fetchPage, onPageLoad, onError]); + + const loadPage = useCallback( + (page: number) => manager.loadPage(page), + [manager] + ); + const retry = useCallback(() => manager.retry(), [manager]); + const reset = useCallback(() => manager.reset(), [manager]); + + return { ...state, loadPage, retry, reset }; +} diff --git a/packages/shared/src/hooks/index.ts b/packages/shared/src/hooks/index.ts deleted file mode 100644 index 2109df8..0000000 --- a/packages/shared/src/hooks/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { useInfinitePages } from "./useInfinitePages"; diff --git a/packages/shared/src/hooks/useInfinitePages.test.ts b/packages/shared/src/hooks/useInfinitePages.test.ts deleted file mode 100644 index 3da0ee9..0000000 --- a/packages/shared/src/hooks/useInfinitePages.test.ts +++ /dev/null @@ -1,454 +0,0 @@ -import { describe, it, expect, vi, beforeEach } from "vitest"; -import { renderHook, waitFor, act } from "@testing-library/react"; -import { useInfinitePages } from "./useInfinitePages"; -import type { PageResponse } from "../types"; - -describe("useInfinitePages", () => { - const mockFetchPage = - vi.fn< - (page: number, size: number) => Promise> - >(); - - beforeEach(() => { - mockFetchPage.mockClear(); - }); - - it("initializes with empty state", () => { - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - expect(result.current.pages.size).toBe(0); - expect(result.current.loadingPages.size).toBe(0); - expect(result.current.total).toBe(0); - expect(result.current.hasMore).toBe(true); - expect(result.current.error).toBeNull(); - expect(result.current.allItems).toEqual([]); - }); - - it("loads page successfully", async () => { - const mockData = Array(20) - .fill(0) - .map((_, i) => ({ id: i })); - - mockFetchPage.mockResolvedValue({ - items: mockData, - total: 100, - hasMore: true, - }); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(1); - }); - - expect(mockFetchPage).toHaveBeenCalledWith(0, 20); - expect(result.current.pages.get(0)).toEqual(mockData); - expect(result.current.total).toBe(100); - expect(result.current.hasMore).toBe(true); - }); - - it("prevents duplicate page loads", async () => { - mockFetchPage.mockResolvedValue({ - items: Array(20).fill({ id: 0 }), - total: 100, - hasMore: true, - }); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(1); - }); - - mockFetchPage.mockClear(); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(mockFetchPage).not.toHaveBeenCalled(); - }); - }); - - it("handles fetch error", async () => { - const error = new Error("Failed to fetch"); - mockFetchPage.mockRejectedValue(error); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.error).toBeTruthy(); - }); - - expect(result.current.error?.message).toBe("Failed to fetch"); - expect(result.current.pages.size).toBe(0); - }); - - it("calls onPageLoad callback", async () => { - const onPageLoad = vi.fn(); - const mockData = Array(20) - .fill(0) - .map((_, i) => ({ id: i })); - - mockFetchPage.mockResolvedValue({ - items: mockData, - total: 100, - hasMore: true, - }); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - onPageLoad, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(onPageLoad).toHaveBeenCalledWith(0, mockData); - }); - }); - - it("calls onError callback", async () => { - const onError = vi.fn(); - const error = new Error("Failed"); - mockFetchPage.mockRejectedValue(error); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - onError, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(onError).toHaveBeenCalledWith(expect.any(Error)); - }); - }); - - it("merges multiple pages into allItems", async () => { - mockFetchPage.mockImplementation((page) => - Promise.resolve({ - items: Array(20) - .fill(0) - .map((_, i) => ({ id: page * 20 + i })), - total: 100, - hasMore: true, - }) - ); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(1); - }); - - await act(async () => { - result.current.loadPage(1); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(2); - }); - - expect(result.current.allItems.length).toBe(100); - expect(result.current.allItems[0]).toEqual({ id: 0 }); - expect(result.current.allItems[20]).toEqual({ id: 20 }); - }); - - it("retry reloads initial page", async () => { - const error = new Error("Failed"); - mockFetchPage.mockRejectedValueOnce(error).mockResolvedValueOnce({ - items: Array(20).fill({ id: 0 }), - total: 100, - hasMore: true, - }); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.error).toBeTruthy(); - }); - - await act(async () => { - result.current.retry(); - }); - - await waitFor(() => { - expect(result.current.error).toBeNull(); - expect(result.current.pages.size).toBe(1); - }); - }); - - it("reset clears all state", async () => { - mockFetchPage.mockResolvedValue({ - items: Array(20).fill({ id: 0 }), - total: 100, - hasMore: true, - }); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(1); - }); - - act(() => { - result.current.reset(); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(0); - }); - - expect(result.current.loadingPages.size).toBe(0); - expect(result.current.total).toBe(0); - expect(result.current.hasMore).toBe(true); - expect(result.current.error).toBeNull(); - }); - - it("does not load page beyond total", async () => { - mockFetchPage.mockResolvedValue({ - items: Array(20).fill({ id: 0 }), - total: 50, - hasMore: false, - }); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(1); - }); - - mockFetchPage.mockClear(); - - await act(async () => { - result.current.loadPage(3); - }); - - await waitFor(() => { - expect(mockFetchPage).not.toHaveBeenCalled(); - }); - }); - - it("tracks loading pages", async () => { - mockFetchPage.mockImplementation( - () => - new Promise(() => { - /* never resolves */ - }) - ); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.loadingPages.has(0)).toBe(true); - }); - }); - - it("handles non-Error exceptions", async () => { - mockFetchPage.mockRejectedValue("String error"); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - await act(async () => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.error).toBeTruthy(); - }); - - expect(result.current.error?.message).toBe("String error"); - }); - - it("does not update state when reset is called before fetch resolves", async () => { - let resolvePromise!: (value: PageResponse<{ id: number }>) => void; - mockFetchPage.mockImplementation( - () => - new Promise((resolve) => { - resolvePromise = resolve; - }) - ); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - act(() => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.loadingPages.has(0)).toBe(true); - }); - - act(() => { - result.current.reset(); - }); - - await waitFor(() => { - expect(result.current.loadingPages.size).toBe(0); - }); - - act(() => { - resolvePromise({ items: [{ id: 1 }], total: 100, hasMore: true }); - }); - - await waitFor(() => { - expect(result.current.pages.size).toBe(0); - expect(result.current.total).toBe(0); - }); - }); - - it("does not set error when reset is called before fetch rejects", async () => { - let rejectPromise!: (reason?: unknown) => void; - mockFetchPage.mockImplementation( - () => - new Promise((_, reject) => { - rejectPromise = reject; - }) - ); - - const { result } = renderHook(() => - useInfinitePages({ - fetchPage: mockFetchPage, - pageSize: 20, - initialPage: 0, - }) - ); - - act(() => { - result.current.loadPage(0); - }); - - await waitFor(() => { - expect(result.current.loadingPages.has(0)).toBe(true); - }); - - act(() => { - result.current.reset(); - }); - - await waitFor(() => { - expect(result.current.loadingPages.size).toBe(0); - }); - - act(() => { - rejectPromise(new Error("network error")); - }); - - await waitFor(() => { - expect(result.current.error).toBeNull(); - expect(result.current.pages.size).toBe(0); - }); - }); -}); diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index c4366ac..ac595f4 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -1,4 +1,3 @@ export * from "./types"; export * from "./utils"; -export * from "./hooks"; export * from "./InfiniteSource"; From 7b2c49db249480a917da56b17be7c949b9365663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 20 Jun 2026 02:58:23 +0900 Subject: [PATCH 59/77] =?UTF-8?q?build(deps):=20=ED=95=98=EB=84=A4?= =?UTF-8?q?=EC=8A=A4=20=EB=8F=84=EA=B5=AC=20=EC=B6=94=EA=B0=80=20+=20core/?= =?UTF-8?q?shared=20=EB=82=B4=EB=B6=80=20=EC=A0=84=EC=9A=A9=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 추가(devDep): tsdown, eslint+typescript-eslint+프레임워크 플러그인, oxlint, knip, publint, @arethetypeswrong/cli, size-limit - vue/svelte 빌드 플러그인: unplugin-vue, rollup-plugin-svelte - @scrolloop/core, @scrolloop/shared를 private 처리(react가 번들로 포함하므로 발행 불필요), shared의 react peer/devDep 제거 --- package.json | 21 +- packages/core/package.json | 1 + packages/shared/package.json | 10 +- packages/svelte/package.json | 1 + packages/vue/package.json | 1 + pnpm-lock.yaml | 4342 ++++++++++++++++++++++++++++++++-- 6 files changed, 4189 insertions(+), 187 deletions(-) diff --git a/package.json b/package.json index 5e50386..ca92094 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,9 @@ } }, "devDependencies": { + "@arethetypeswrong/cli": "0.18.3", + "@eslint/js": "10.0.1", + "@size-limit/preset-small-lib": "12.1.0", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.0.0", @@ -85,18 +88,34 @@ "@types/react-dom": "^18.2.0", "@vitest/coverage-v8": "^2.0.0", "bundlesize": "^0.18.2", + "eslint": "10.5.0", + "eslint-config-prettier": "10.1.8", + "eslint-plugin-oxlint": "1.70.0", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "7.1.1", + "eslint-plugin-svelte": "3.19.0", + "eslint-plugin-vue": "10.9.2", + "globals": "17.6.0", "husky": "^9.1.7", "jsdom": "^24.0.0", + "knip": "6.17.1", "lint-staged": "^16.2.6", + "oxlint": "1.70.0", "prettier": "^3.6.2", + "publint": "0.3.21", "react": "^18.2.0", "react-dom": "^18.2.0", + "size-limit": "12.1.0", + "svelte-eslint-parser": "1.8.0", "terser": "^5.44.0", + "tsdown": "0.22.3", "tsup": "^8.0.0", "turbo": "^2.0.0", "typescript": "^5.0.0", + "typescript-eslint": "8.61.1", "vitepress": "^1.6.4", "vitest": "^2.0.0", - "vue": "^3.5.26" + "vue": "^3.5.26", + "vue-eslint-parser": "10.4.1" } } diff --git a/packages/core/package.json b/packages/core/package.json index c87bb6c..8e5d316 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "description": "Headless virtual scrolling core - platform agnostic", "type": "module", + "private": true, "main": "./dist/index.cjs", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", diff --git a/packages/shared/package.json b/packages/shared/package.json index b9c21f5..982aad4 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,8 +1,9 @@ { "name": "@scrolloop/shared", "version": "0.1.0", - "description": "Shared utilities and hooks for scrolloop packages", + "description": "Shared platform-agnostic utilities for scrolloop packages", "type": "module", + "private": true, "main": "./dist/index.cjs", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", @@ -30,14 +31,7 @@ "utilities" ], "license": "MIT", - "peerDependencies": { - "react": ">=18.0.0" - }, "devDependencies": { - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^14.3.1", - "jsdom": "^24.1.3", - "react": "^18.2.0", "tsup": "^8.0.0", "typescript": "^5.0.0", "vitest": "^2.0.0" diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 739ba0c..e07a661 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -31,6 +31,7 @@ }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^4.0.0", + "rollup-plugin-svelte": "7.2.3", "svelte": "^5.0.0", "typescript": "^5.0.0", "vite": "^5.0.0", diff --git a/packages/vue/package.json b/packages/vue/package.json index d602d0a..0efb7a1 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -31,6 +31,7 @@ "devDependencies": { "@vitejs/plugin-vue": "^5.0.0", "typescript": "^5.0.0", + "unplugin-vue": "7.2.0", "vite": "^5.0.0", "vite-plugin-dts": "^4.0.0", "vue": "^3.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89c0b51..1c6da27 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,15 @@ importers: .: devDependencies: + '@arethetypeswrong/cli': + specifier: 0.18.3 + version: 0.18.3 + '@eslint/js': + specifier: 10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) + '@size-limit/preset-small-lib': + specifier: 12.1.0 + version: 12.1.0(size-limit@12.1.0(jiti@2.7.0)) '@testing-library/jest-dom': specifier: ^6.0.0 version: 6.9.1 @@ -28,64 +37,112 @@ importers: version: 18.3.7(@types/react@18.3.26) '@vitest/coverage-v8': specifier: ^2.0.0 - version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0)) + version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0)) bundlesize: specifier: ^0.18.2 version: 0.18.2 + eslint: + specifier: 10.5.0 + version: 10.5.0(jiti@2.7.0) + eslint-config-prettier: + specifier: 10.1.8 + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) + eslint-plugin-oxlint: + specifier: 1.70.0 + version: 1.70.0(oxlint@1.70.0) + eslint-plugin-react: + specifier: 7.37.5 + version: 7.37.5(eslint@10.5.0(jiti@2.7.0)) + eslint-plugin-react-hooks: + specifier: 7.1.1 + version: 7.1.1(eslint@10.5.0(jiti@2.7.0)) + eslint-plugin-svelte: + specifier: 3.19.0 + version: 3.19.0(eslint@10.5.0(jiti@2.7.0))(svelte@5.55.1) + eslint-plugin-vue: + specifier: 10.9.2 + version: 10.9.2(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.5.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.5.0(jiti@2.7.0))) + globals: + specifier: 17.6.0 + version: 17.6.0 husky: specifier: ^9.1.7 version: 9.1.7 jsdom: specifier: ^24.0.0 version: 24.1.3 + knip: + specifier: 6.17.1 + version: 6.17.1 lint-staged: specifier: ^16.2.6 version: 16.2.6 + oxlint: + specifier: 1.70.0 + version: 1.70.0 prettier: specifier: ^3.6.2 version: 3.6.2 + publint: + specifier: 0.3.21 + version: 0.3.21 react: specifier: ^18.2.0 version: 18.3.1 react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) + size-limit: + specifier: 12.1.0 + version: 12.1.0(jiti@2.7.0) + svelte-eslint-parser: + specifier: 1.8.0 + version: 1.8.0(svelte@5.55.1) terser: specifier: ^5.44.0 version: 5.44.0 + tsdown: + specifier: 0.22.3 + version: 0.22.3(@arethetypeswrong/core@0.18.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3) tsup: specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) turbo: specifier: ^2.0.0 version: 2.6.0 typescript: specifier: ^5.0.0 version: 5.9.3 + typescript-eslint: + specifier: 8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.46.1)(@types/node@24.10.0)(@types/react@18.3.26)(axios@1.13.2)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(terser@5.44.0)(typescript@5.9.3) + version: 1.6.4(@algolia/client-search@5.46.1)(@types/node@24.10.0)(@types/react@18.3.26)(axios@1.13.2)(lightningcss@1.32.0)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(terser@5.44.0)(typescript@5.9.3) vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0) + version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0) vue: specifier: ^3.5.26 version: 3.5.26(typescript@5.9.3) + vue-eslint-parser: + specifier: 10.4.1 + version: 10.4.1(eslint@10.5.0(jiti@2.7.0)) packages/core: devDependencies: '@vitest/coverage-v8': specifier: ^2.0.0 - version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0)) + version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0)) tsup: specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0) + version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0) packages/preact: dependencies: @@ -101,7 +158,7 @@ importers: version: 10.28.0 tsup: specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 @@ -138,7 +195,7 @@ importers: version: 18.3.7(@types/react@18.3.26) '@vitest/coverage-v8': specifier: ^2.0.0 - version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0)) + version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0)) esbuild: specifier: ^0.27.2 version: 0.27.2 @@ -156,7 +213,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) tsx: specifier: ^4.7.0 version: 4.20.6 @@ -165,7 +222,7 @@ importers: version: 5.9.3 vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0) + version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0) packages/react-native: dependencies: @@ -190,37 +247,25 @@ importers: version: 0.72.17(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(react@18.3.1) tsup: specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0) + version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0) packages/shared: devDependencies: - '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 - '@testing-library/react': - specifier: ^14.3.1 - version: 14.3.1(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - jsdom: - specifier: ^24.1.3 - version: 24.1.3 - react: - specifier: ^18.2.0 - version: 18.3.1 tsup: specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0) + version: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0) packages/svelte: dependencies: @@ -233,7 +278,10 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^4.0.0 - version: 4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)) + version: 4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) + rollup-plugin-svelte: + specifier: 7.2.3 + version: 7.2.3(rollup@4.52.5)(svelte@5.55.1) svelte: specifier: ^5.0.0 version: 5.55.1 @@ -242,10 +290,10 @@ importers: version: 5.9.3 vite: specifier: ^5.0.0 - version: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + version: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) vite-plugin-dts: specifier: ^4.0.0 - version: 4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)) + version: 4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) packages/vue: dependencies: @@ -258,16 +306,19 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.0.0 - version: 5.2.4(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))(vue@3.5.26(typescript@5.9.3)) typescript: specifier: ^5.0.0 version: 5.9.3 + unplugin-vue: + specifier: 7.2.0 + version: 7.2.0(@types/node@24.10.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.44.0)(tsx@4.20.6)(vue@3.5.26(typescript@5.9.3))(yaml@2.9.0) vite: specifier: ^5.0.0 - version: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + version: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) vite-plugin-dts: specifier: ^4.0.0 - version: 4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)) + version: 4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) vue: specifier: ^3.3.0 version: 3.5.26(typescript@5.9.3) @@ -360,6 +411,18 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@andrewbranch/untar.js@1.0.3': + resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} + + '@arethetypeswrong/cli@0.18.3': + resolution: {integrity: sha512-GeAlc+lUD4gKHD/LDQNvQY30FfQ+xAXg2inbQKUjFZgTOdI5ygEweaOnGHGBPSKXSLGQC7VLhpXu9zMnYk/4sQ==} + engines: {node: '>=20'} + hasBin: true + + '@arethetypeswrong/core@0.18.3': + resolution: {integrity: sha512-sWBB/tdIktaT5xMq0Dz6CJyqcf6oMNdmiKiuPU1lWoJLTL6gjRSsksBuSgqot21hylkklBQY1wiSu+PkZhW7sw==} + engines: {node: '>=20'} + '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} @@ -379,6 +442,10 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@8.0.0': + resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -454,10 +521,18 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@8.0.0': + resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.2': + resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -475,6 +550,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@8.0.0': + resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} engines: {node: '>=6.9.0'} @@ -1041,9 +1121,20 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@babel/types@8.0.0': + resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@braidai/lang@1.1.2': + resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} @@ -1095,6 +1186,30 @@ packages: search-insights: optional: true + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/core@1.11.0': + resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==} + + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/runtime@1.11.0': + resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==} + + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -1113,6 +1228,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -1131,6 +1252,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -1149,6 +1276,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -1167,6 +1300,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -1185,6 +1324,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -1203,6 +1348,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -1221,6 +1372,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -1239,6 +1396,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -1257,6 +1420,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -1275,6 +1444,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -1293,6 +1468,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -1311,6 +1492,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -1329,6 +1516,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -1347,6 +1540,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -1365,6 +1564,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -1383,6 +1588,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} @@ -1401,6 +1612,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -1413,6 +1630,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -1431,6 +1654,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -1443,6 +1672,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -1461,6 +1696,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -1473,6 +1714,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -1491,6 +1738,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -1509,6 +1762,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -1527,6 +1786,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -1545,12 +1810,77 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/config-helpers@0.6.0': + resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + '@iconify-json/simple-icons@1.2.63': resolution: {integrity: sha512-xZl2UWCwE58VlqZ+pDPmaUhE2tq8MVSTJRr4/9nzzHlDdjJ0Ud1VxNXPrwTSgESKY29iCQw3S0r2nJTSNNngHw==} @@ -1612,6 +1942,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@loaderkit/resolve@1.0.6': + resolution: {integrity: sha512-G8FdIoF5CypfwmD9rl8BXod5HDn8JqB0CCNBXDTaRZ+yRYhARrrSToX1zg1zy9jX3zLqigsELwhT4gNtkdQAUg==} + '@microsoft/api-extractor-model@7.33.4': resolution: {integrity: sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==} @@ -1625,137 +1958,672 @@ packages: '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@playwright/test@1.57.0': - resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} - engines: {node: '>=18'} - hasBin: true - - '@react-native-community/cli-clean@11.4.1': - resolution: {integrity: sha512-cwUbY3c70oBGv3FvQJWe2Qkq6m1+/dcEBonMDTYyH6i+6OrkzI4RkIGpWmbG1IS5JfE9ISUZkNL3946sxyWNkw==} - - '@react-native-community/cli-config@11.4.1': - resolution: {integrity: sha512-sLdv1HFVqu5xNpeaR1+std0t7FFZaobpmpR0lFCOzKV7H/l611qS2Vo8zssmMK+oQbCs5JsX3SFPciODeIlaWA==} - - '@react-native-community/cli-debugger-ui@11.4.1': - resolution: {integrity: sha512-+pgIjGNW5TrJF37XG3djIOzP+WNoPp67to/ggDhrshuYgpymfb9XpDVsURJugy0Sy3RViqb83kQNK765QzTIvw==} - - '@react-native-community/cli-doctor@11.4.1': - resolution: {integrity: sha512-O6oPiRsl8pdkcyNktpzvJAXUqdocoY4jh7Tt7wA69B1JKCJA7aPCecwJgpUZb63ZYoxOtRtYM3BYQKzRMLIuUw==} - - '@react-native-community/cli-hermes@11.4.1': - resolution: {integrity: sha512-1VAjwcmv+i9BJTMMVn5Grw7AcgURhTyfHVghJ1YgBE2euEJxPuqPKSxP54wBOQKnWUwsuDQAtQf+jPJoCxJSSA==} - - '@react-native-community/cli-platform-android@11.4.1': - resolution: {integrity: sha512-VMmXWIzk0Dq5RAd+HIEa3Oe7xl2jso7+gOr6E2HALF4A3fCKUjKZQ6iK2t6AfnY04zftvaiKw6zUXtrfl52AVQ==} - - '@react-native-community/cli-platform-ios@11.4.1': - resolution: {integrity: sha512-RPhwn+q3IY9MpWc9w/Qmzv03mo8sXdah2eSZcECgweqD5SHWtOoRCUt11zM8jASpAQ8Tm5Je7YE9bHvdwGl4hA==} - - '@react-native-community/cli-plugin-metro@11.4.1': - resolution: {integrity: sha512-JxbIqknYcQ5Z4rWROtu5LNakLfMiKoWcMoPqIrBLrV5ILm1XUJj1/8fATCcotZqV3yzB3SCJ3RrhKx7dQ3YELw==} - - '@react-native-community/cli-server-api@11.4.1': - resolution: {integrity: sha512-isxXE8X5x+C4kN90yilD08jaLWD34hfqTfn/Xbl1u/igtdTsCaQGvWe9eaFamrpWFWTpVtj6k+vYfy8AtYSiKA==} - - '@react-native-community/cli-tools@11.4.1': - resolution: {integrity: sha512-GuQIuY/kCPfLeXB1aiPZ5HvF+e/wdO42AYuNEmT7FpH/0nAhdTxA9qjL8m3vatDD2/YK7WNOSVNsl2UBZuOISg==} - - '@react-native-community/cli-types@11.4.1': - resolution: {integrity: sha512-B3q9A5BCneLDSoK/iSJ06MNyBn1qTxjdJeOgeS3MiCxgJpPcxyn/Yrc6+h0Cu9T9sgWj/dmectQPYWxtZeo5VA==} - - '@react-native-community/cli@11.4.1': - resolution: {integrity: sha512-NdAageVMtNhtvRsrq4NgJf5Ey2nA1CqmLvn7PhSawg+aIzMKmZuzWxGVwr9CoPGyjvNiqJlCWrLGR7NzOyi/sA==} - engines: {node: '>=16'} - hasBin: true - - '@react-native/assets-registry@0.72.0': - resolution: {integrity: sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==} - - '@react-native/codegen@0.72.8': - resolution: {integrity: sha512-jQCcBlXV7B7ap5VlHhwIPieYz89yiRgwd2FPUBu+unz+kcJ6pAiB2U8RdLDmyIs8fiWd+Vq1xxaWs4TR329/ng==} - peerDependencies: - '@babel/preset-env': ^7.1.6 - - '@react-native/gradle-plugin@0.72.11': - resolution: {integrity: sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==} - - '@react-native/js-polyfills@0.72.1': - resolution: {integrity: sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==} - - '@react-native/normalize-colors@0.72.0': - resolution: {integrity: sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==} - - '@react-native/virtualized-lists@0.72.8': - resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} - peerDependencies: - react-native: '*' - - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} + '@napi-rs/wasm-runtime@1.1.5': + resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + '@oxc-parser/binding-android-arm-eabi@0.135.0': + resolution: {integrity: sha512-sHeZItACNcA5WRAWqF6ixriR4GkZDyY10gVgnZU7pXku1DjHFATSqnwZM809jl0gXPHxb6fKzYQCK7bNK5cACQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + '@oxc-parser/binding-android-arm64@0.135.0': + resolution: {integrity: sha512-wPte+SzgzWWFgMSF8YZDNM+tBXtJg0AXBi7+tU3yS2z1f2Af9kRLZLKuJojADmuD/cZexmnMHHC3SDItTW77Iw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + '@oxc-parser/binding-darwin-arm64@0.135.0': + resolution: {integrity: sha512-BmKz3lHIsqVos+9aPcdYCT9MG3APoUyM43KlEFhJMWNVDOGG8FKyiFz81Bc+mGz2o0hpuQ3PfXLfVWJrKXjo2g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + '@oxc-parser/binding-darwin-x64@0.135.0': + resolution: {integrity: sha512-dM8BS+8+Br1fNvmh2QZbGiHaYttwLebRa6J4Uz9vuFzMNmvsdRYwf7993ptOaV0JTrR63AaoVLjX7nhWbijxjQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + '@oxc-parser/binding-freebsd-x64@0.135.0': + resolution: {integrity: sha512-xlZnvvJdR9bGu2pOhvR5hMuKPHCE6Sa9owK5A484mzjHdm75VRV5nCs5w/jkmGODMMTFc+KN7EnZqEieM813kw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.135.0': + resolution: {integrity: sha512-PSR8LmBK/H/PQRiN8g7RebQgZX/ntVCrdT/JBfNxE5ezdHG1s2i4rbazsRJYD83TTI1MmgTpC0MGL42PLtskQQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + '@oxc-parser/binding-linux-arm-musleabihf@0.135.0': + resolution: {integrity: sha512-I85GJXzfUsigkkk7Ngdz95C217M4FdUi1Z2HrX5UyPmURobwQZ7m2bbUvwFkz4VGZd+lymFGKHvDZ3RQC9qOzA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + '@oxc-parser/binding-linux-arm64-gnu@0.135.0': + resolution: {integrity: sha512-zqEY0npz0g0aGZj/8a5BclunjVDytsBQHYtIC10Gd26HcrLwbVF6YDbqRQjunMGYdSo97u6xOBl05aTDI2diDQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + '@oxc-parser/binding-linux-arm64-musl@0.135.0': + resolution: {integrity: sha512-mWAfprP819gQ2qYst1RxgTI8b/z0b29OpoKfRflIXLHde2dZLihQD4g47Onuvtpo5GPIkMYPRlX9QoeZfs/GnQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} - cpu: [loong64] + '@oxc-parser/binding-linux-ppc64-gnu@0.135.0': + resolution: {integrity: sha512-gri8c2AOmJKJwOux2KTHFBfUaXoJURuVMKhmKEi/2hTF55cQteTDV2XNfTiE5oCC+Tnem1Y4/MWzcyDadtsSag==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-gnu@0.135.0': + resolution: {integrity: sha512-Y2tkupCG5wo0SxH2rMLG4d4Kmv6DaM3sBp+GuM5lox0S8Za6VxKgQrY2Mut088QQxKkEE89n/4CCCgmw2o0e3Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-musl@0.135.0': + resolution: {integrity: sha512-xDRJq6i6WTynjeP+ISbDpyH4p9BaJ0wuQcL0lCSDkt9qOXC9dmwpOu1VG/TlwmPI3KpYntmO9nJCuc3TMTsNBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-s390x-gnu@0.135.0': + resolution: {integrity: sha512-V4MoUuiCRNvihxhIufRxvK+ka013V4joTSK0FAGA1KEjLuNprfH6N/Qw2uxQEVIFuNYMhD/hV6xJ/ptbzlKdHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxc-parser/binding-linux-x64-gnu@0.135.0': + resolution: {integrity: sha512-JCFZ7zM7KXOKoPAbK/ZB4wY0M1jxRECiem2UQuiXLjzGqS9+hno7mtX+qyK2F7HWK2xPhyJb+frpcOtk5DKOtg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-linux-x64-musl@0.135.0': + resolution: {integrity: sha512-9jSVS1b3hOV7sdKH4aA2DFfnTz0RgQd0v2BefR+LYbH8yIlmSM22JJZbAAjVeVXmFgUAk3zJQ1tpE/Nd+Vi2YQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-openharmony-arm64@0.135.0': + resolution: {integrity: sha512-M857ZLBSdn1Uy/SJJz5zh0qGu67B4P9omCgXGBU2LLqTzraX6ZjVNaKq5yW1PDw/LgJXDXR/dbZfgmB310f11Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.135.0': + resolution: {integrity: sha512-2w6DVcntQZX9U5RhXtgiWb3FLWFB5EcwI1U8yr3htOCJUJjagN4BFUHz/Y/d9ZsumndZ6ByxxWEtbUZNE1bfFw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.135.0': + resolution: {integrity: sha512-rX1U8+IH2Z37EJjDXKa1iifvUQAdba+vZ4Ewj1iaG5eA/QaSybzclCOwtWa0/5BuUQnnK/T2JHUEFrwhL6Ck2Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.135.0': + resolution: {integrity: sha512-9FAisBbH1QICGAjlJobiuKGd/jOuVmyqniWdQMwTa5SkCl6hhuotBCJf1n46B0flYbSOR5TzfV9HZCWSyb3c/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.135.0': + resolution: {integrity: sha512-wYF+A2AzJ2n7ul6q+Z2G/ia0S2+8cUp0AgWZzoFvF4WmUcl1P7p+o6se1Gdr5wGnWuF0iAMIkGddrjCarNr2yA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxc-project/types@0.133.0': + resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} + + '@oxc-project/types@0.135.0': + resolution: {integrity: sha512-wR+xRdFkUBMvcAjBJ2q2kcZM6d+DKu2NgoOyxZgYwZdLhmiv6+rnO8PZ/P68kMiZtIKm+pW7zyEJ4kSOs0vo+Q==} + + '@oxc-project/types@0.137.0': + resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + + '@oxc-resolver/binding-android-arm-eabi@11.21.3': + resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.21.3': + resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.21.3': + resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.21.3': + resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.21.3': + resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': + resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': + resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': + resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-musl@11.21.3': + resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': + resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==} + cpu: [ppc64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': + resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': + resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': + resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==} + cpu: [s390x] + os: [linux] + + '@oxc-resolver/binding-linux-x64-gnu@11.21.3': + resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-linux-x64-musl@11.21.3': + resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-openharmony-arm64@11.21.3': + resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.21.3': + resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': + resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.21.3': + resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.70.0': + resolution: {integrity: sha512-zFh0P4cswmRvw6nkyb89dr18rRanuaCPAsEXsFDoQY8WdaquI8Pt4NWFjaMJg6L23cy5NeN8J9cBnREbWzZhaw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.70.0': + resolution: {integrity: sha512-qI8o4HZjeGiBrWv+pJv4lH0Yi2Gl/JSp/EumBUApezJprIKa5PS4nU0lQsQngtky8k+SplQIOjv6hwu0SSxeyg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.70.0': + resolution: {integrity: sha512-8KjgVVHI5F9nVwHCRwwA78Ty7zNKP4Wd9OeN5PSv3iu/F/u1RVXoOCgLhWqust6HmwQG6xc8c+RCyaWENy24+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.70.0': + resolution: {integrity: sha512-WVydssv5PSUBXFJTdNBWlmGkbNmvPGaFt/2SUT/EZRB6bq6bEOHmMlbnupZD5jmlEvi9+mZJHi8TCw15lyfSfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.70.0': + resolution: {integrity: sha512-hJucmUf8OlinHNb1R7fI4Fw6WsAstOz7i8nmkWQfiHoZXtbufNm+MxiDTIMk1ggh2Ro4vLzgQ+bKvRY54MZoRA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.70.0': + resolution: {integrity: sha512-1BnS7wbCYDSXwWzJJ+mc3NURoha6m6m6RT5c6vgAY3oz7C3OVXP+S0awo2mRq97arrJkVvO3qRQfyAHL+76xtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.70.0': + resolution: {integrity: sha512-yKy/UdbR55+M2yEcuiV5DCNC/gdQAjr/GioUy50QwBzSrKm8ueWADqyRLS9Xk+qjNeCYGg6A8FvUBds56ttfqg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.70.0': + resolution: {integrity: sha512-0A5XJ4alvmqFUFP/4oYSyaO+qLto/HrKEWTSaegiVl+HOufFngK2BjYw9x4RbwBt/du5QG6l5q1zeWiJYYG5yg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-arm64-musl@1.70.0': + resolution: {integrity: sha512-JiylyurlB0CLSedNtx1gzv3FvfWPF1h/2Y3BJszPLNt5XQFlBsH5ke0Jle3iJb3uqu5m2e7A/DwzpuCAHdiU+A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-ppc64-gnu@1.70.0': + resolution: {integrity: sha512-J8VPG7I3/HmgaU4u8pNU2kFx2+0U+vPLS1dXFxXOaR/2TQ0f8AC7DRz0SRGRI1bfphnX2hVYTTtLuhL4nYKL+Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxlint/binding-linux-riscv64-gnu@1.70.0': + resolution: {integrity: sha512-N2+4lV2KLN+oXTIIIwmWDhwkrnvqf5oX7Hw0zPjk+RuIVgiBQSOlJWF7uQoFx2siEYX0ZQ5cfSbEAHm+J3t7Wg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-riscv64-musl@1.70.0': + resolution: {integrity: sha512-1e2L7cFCvx9QDzq6NPP+0tABKb5z6nWHyddWTNKprEsjO9xNrAtPowuCGpjNXxkTdsMiZ4jc8YQ5SstZd4XK6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-s390x-gnu@1.70.0': + resolution: {integrity: sha512-Kwu/l/8GcYibCWA9m9N5pRXMIKVSsL/YbgpLzYkqDhWTiqdRfnNJ/+nqIKRKQiFbHWsdlHEhzMwruJK+qcEruA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxlint/binding-linux-x64-gnu@1.70.0': + resolution: {integrity: sha512-tap04CsHYOl0nSAQJfPNIuBxqEPB2HnhQqwaOXLg1jnp2XfRo8Fa814dA4QC4zpvTWXCjAAaCY1W5LOORkEQuQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-linux-x64-musl@1.70.0': + resolution: {integrity: sha512-hzJa/WgvtJpbBD9rgfy0qe+MjbxOXNUT0bfR1S6EQQzfTtBFA9xg5q8KSwRrQ2QfSS+TaP4j+4mVPQrfNc6UNg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-openharmony-arm64@1.70.0': + resolution: {integrity: sha512-xbsaNSNzVSnaJACCUYr1HQMyY/Q/Q1LkePmHG3UvZPvGCYGNxrsZp9OmtA6ick8xH47ltRRbRrPCM1YXYcyC+A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.70.0': + resolution: {integrity: sha512-icAEsUI7JbW1TMRdEXV83mVAInhRVQYuuAlPpxdGwJ95chNdnCzjloRW8GglT0WvzOEZSio6fnYSk2DJ2Hv7LQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.70.0': + resolution: {integrity: sha512-FHMSWbVsPVs/f+Jcl04ws4JJ2wUnauyTzlpxWRG/lSO/8GpX08Fo2gQZqdA6CrRFI+zvkxl+N/KwJGWfUwYVZA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.70.0': + resolution: {integrity: sha512-ptOlKwCz7n4AKs5VweMqG6DAg677FmKOK+vBkkL9DMNgFATIQ+upqUYBTOEwRQyRAx1ncGlPlXleV2hIcm3z4g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@playwright/test@1.57.0': + resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} + engines: {node: '>=18'} + hasBin: true + + '@publint/pack@0.1.5': + resolution: {integrity: sha512-edgyN2pP07uXiP4tJs0s8KVmU8M8i60YPbbI0/WDeok1mIJHRXz+CgD8I0nelwDkoCh3EWL/G5kGfbuHjsdbvw==} + engines: {node: '>=18'} + + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@react-native-community/cli-clean@11.4.1': + resolution: {integrity: sha512-cwUbY3c70oBGv3FvQJWe2Qkq6m1+/dcEBonMDTYyH6i+6OrkzI4RkIGpWmbG1IS5JfE9ISUZkNL3946sxyWNkw==} + + '@react-native-community/cli-config@11.4.1': + resolution: {integrity: sha512-sLdv1HFVqu5xNpeaR1+std0t7FFZaobpmpR0lFCOzKV7H/l611qS2Vo8zssmMK+oQbCs5JsX3SFPciODeIlaWA==} + + '@react-native-community/cli-debugger-ui@11.4.1': + resolution: {integrity: sha512-+pgIjGNW5TrJF37XG3djIOzP+WNoPp67to/ggDhrshuYgpymfb9XpDVsURJugy0Sy3RViqb83kQNK765QzTIvw==} + + '@react-native-community/cli-doctor@11.4.1': + resolution: {integrity: sha512-O6oPiRsl8pdkcyNktpzvJAXUqdocoY4jh7Tt7wA69B1JKCJA7aPCecwJgpUZb63ZYoxOtRtYM3BYQKzRMLIuUw==} + + '@react-native-community/cli-hermes@11.4.1': + resolution: {integrity: sha512-1VAjwcmv+i9BJTMMVn5Grw7AcgURhTyfHVghJ1YgBE2euEJxPuqPKSxP54wBOQKnWUwsuDQAtQf+jPJoCxJSSA==} + + '@react-native-community/cli-platform-android@11.4.1': + resolution: {integrity: sha512-VMmXWIzk0Dq5RAd+HIEa3Oe7xl2jso7+gOr6E2HALF4A3fCKUjKZQ6iK2t6AfnY04zftvaiKw6zUXtrfl52AVQ==} + + '@react-native-community/cli-platform-ios@11.4.1': + resolution: {integrity: sha512-RPhwn+q3IY9MpWc9w/Qmzv03mo8sXdah2eSZcECgweqD5SHWtOoRCUt11zM8jASpAQ8Tm5Je7YE9bHvdwGl4hA==} + + '@react-native-community/cli-plugin-metro@11.4.1': + resolution: {integrity: sha512-JxbIqknYcQ5Z4rWROtu5LNakLfMiKoWcMoPqIrBLrV5ILm1XUJj1/8fATCcotZqV3yzB3SCJ3RrhKx7dQ3YELw==} + + '@react-native-community/cli-server-api@11.4.1': + resolution: {integrity: sha512-isxXE8X5x+C4kN90yilD08jaLWD34hfqTfn/Xbl1u/igtdTsCaQGvWe9eaFamrpWFWTpVtj6k+vYfy8AtYSiKA==} + + '@react-native-community/cli-tools@11.4.1': + resolution: {integrity: sha512-GuQIuY/kCPfLeXB1aiPZ5HvF+e/wdO42AYuNEmT7FpH/0nAhdTxA9qjL8m3vatDD2/YK7WNOSVNsl2UBZuOISg==} + + '@react-native-community/cli-types@11.4.1': + resolution: {integrity: sha512-B3q9A5BCneLDSoK/iSJ06MNyBn1qTxjdJeOgeS3MiCxgJpPcxyn/Yrc6+h0Cu9T9sgWj/dmectQPYWxtZeo5VA==} + + '@react-native-community/cli@11.4.1': + resolution: {integrity: sha512-NdAageVMtNhtvRsrq4NgJf5Ey2nA1CqmLvn7PhSawg+aIzMKmZuzWxGVwr9CoPGyjvNiqJlCWrLGR7NzOyi/sA==} + engines: {node: '>=16'} + hasBin: true + + '@react-native/assets-registry@0.72.0': + resolution: {integrity: sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==} + + '@react-native/codegen@0.72.8': + resolution: {integrity: sha512-jQCcBlXV7B7ap5VlHhwIPieYz89yiRgwd2FPUBu+unz+kcJ6pAiB2U8RdLDmyIs8fiWd+Vq1xxaWs4TR329/ng==} + peerDependencies: + '@babel/preset-env': ^7.1.6 + + '@react-native/gradle-plugin@0.72.11': + resolution: {integrity: sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==} + + '@react-native/js-polyfills@0.72.1': + resolution: {integrity: sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==} + + '@react-native/normalize-colors@0.72.0': + resolution: {integrity: sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==} + + '@react-native/virtualized-lists@0.72.8': + resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} + peerDependencies: + react-native: '*' + + '@rolldown/binding-android-arm64@1.0.3': + resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-android-arm64@1.1.2': + resolution: {integrity: sha512-2cZ+7xRS+DBcuJBJKnfzsbleumJhBqSlJVpuzHC0nTqfd3QQ7Vx2/x5YR/D7cBamKSeWplwo82Fn9lqYUDEMfA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.3': + resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-arm64@1.1.2': + resolution: {integrity: sha512-RkPMJnygxsgOYdkfqgpwY0/Fzm8d0VQe6HGU2/B00Xa9eqdLbrII+DOKAodbJAn3ZL1AJxGHkZRPYazgGY6Ljw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.3': + resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.1.2': + resolution: {integrity: sha512-Uiczh6vFhwyfd7WNe7Q7mCA4KxAiLdz7jPE/WGizfRpIieoyFuNVMmM8HqZ9HwudTkY6/AeMQwlNJ9NJijguWw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.3': + resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-freebsd-x64@1.1.2': + resolution: {integrity: sha512-+TpdtTRgHiJFjCVFbw311SuLk3KfytPOQQn+VlAEv+gBxYPtL7E6JS9e/tk+8CwxhIZvemJKo4rTKgfWNsKkkA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm-gnueabihf@1.1.2': + resolution: {integrity: sha512-4lv1/tkmi7ueIVHnyreaOeUpiZP26BH9rRy6hoYfR9310A2B9nUEVRDvBx69vx64Nr3eTPPRkyciqJJs+j9Jmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.3': + resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.1.2': + resolution: {integrity: sha512-gBSUVO0eaWgw1JMjK3gB8BMlX2Mk148s2lTiVT3e9vjVxbl7UDfMWWY8CfIaaqiXuM9fVTMxIpUz6CAo/B6Vlw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.3': + resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.1.2': + resolution: {integrity: sha512-LjQP/iZLBu8o8PjIfk4x3At0/mT6h282pvz8Z5LAyhGbu/kDezyO7ea62rF5uoqmgnIYqbN/MqJ3Si3Aymi7xQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.1.2': + resolution: {integrity: sha512-X/7bVLWelEsbyWDUSXt7zVsTniLLPIY2n1rH58qr78l9i7MNbbxBWD8gI2vRfBWf4NUXJCUuQnfZDsp32LqsfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.0.3': + resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.1.2': + resolution: {integrity: sha512-gb6dYKW/1KDorGXyy48glEBJs/sxVSC5pcVrox/pFGV4mvwSFeg2sK5L2tRkVsVlh7kueqOgg4GEcuipJcGuKg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.3': + resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.1.2': + resolution: {integrity: sha512-JY4w85pU3iAiJVMh5nuk4/Mh9GjMsupe8MrIN53rwxAZW64GKrWeJBuN6SxQg9QTU5uB1cxyhDzW8jqRn1EABw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.3': + resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.1.2': + resolution: {integrity: sha512-xvpA7o5KCYLB0Rwscmuylb1/zHHSUx4g4xilm4prC5jP76pEUlzBmMbgpbh7bVDbId4NcfT96gN5i6mE6UDaiw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.3': + resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-openharmony-arm64@1.1.2': + resolution: {integrity: sha512-p/ts6KBLjuk49Bp21XH77poQGt02iNz7ChgHep7tudPOaLinR/De/RHdxF8w8Yj4r/bF/bqXwH6PZrB2sA+Nvw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.3': + resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-wasm32-wasi@1.1.2': + resolution: {integrity: sha512-VMu/wmrZ9hJzYlRhbw7jK5PODlugyKZ5mOdX78+lS8OvuFkWNQdz1pFLrI2p3P0pjXOmUZ7B48o5VnMH9QOGtg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.3': + resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-arm64-msvc@1.1.2': + resolution: {integrity: sha512-xtUJqs8qEkuSviS0n1tsohaPuz3a1SPhZywOji4Oo+sgrJs8daEDMZ0QtqL0OS7dx8PoVpg2J/ZZycPY5I2+Zg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.3': + resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.1.2': + resolution: {integrity: sha512-85YiLQqjUKgSO/Zjnf9e0XIn5Ymrh1fLDWBeAkZqpuBR/3R8TpfoHXuyblqyQrftSSgWO9qpcHN8mkyKsLraoA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.52.5': + resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.5': + resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.5': + resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.5': + resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.5': + resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.5': + resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.52.5': + resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.52.5': + resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.52.5': + resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + cpu: [loong64] os: [linux] '@rollup/rollup-linux-ppc64-gnu@4.52.5': @@ -1879,12 +2747,33 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@size-limit/esbuild@12.1.0': + resolution: {integrity: sha512-Um6MVrX+05kIxI4+zk0ZByG9dA/Th1f+sfGc571D95BnCPc90/pl2+2OdsQuOyoWEbeAMqfcTKo0v07i+E65Vw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + size-limit: 12.1.0 + + '@size-limit/file@12.1.0': + resolution: {integrity: sha512-eGwDcIufnNnvJRzv3liDOn6MAOGgmOTUdpeGQ2KuRTlgIgO54AJH1ilvktlJc6PIjNfwpYY0dOGyap1QgM1swQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + size-limit: 12.1.0 + + '@size-limit/preset-small-lib@12.1.0': + resolution: {integrity: sha512-TVVQ/iuHbaGtHJrjur5s4XKYEyGk0nIwUAqhuzhKPbTyV9nYOH/laDelQ4vg3cGmm8sayRx998wxEdnwM/Yewg==} + peerDependencies: + size-limit: 12.1.0 + '@sveltejs/acorn-typescript@1.0.9': resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==} peerDependencies: @@ -1926,6 +2815,9 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1938,6 +2830,9 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1962,6 +2857,12 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/jsesc@2.5.1': + resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -2033,10 +2934,69 @@ packages: '@types/yargs@17.0.34': resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@typescript-eslint/eslint-plugin@8.61.1': + resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.61.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.61.1': + resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.61.1': + resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.61.1': + resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.61.1': + resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.61.1': + resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/types@8.57.2': resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.61.1': + resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.61.1': + resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.61.1': + resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.61.1': + resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -2146,6 +3106,9 @@ packages: '@vue/reactivity@3.5.26': resolution: {integrity: sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==} + '@vue/reactivity@3.5.38': + resolution: {integrity: sha512-pG6LV/NDNRbKizcUjFFLAfjaL8mcv4DmR9avNcUw2gDHBzZneuS2TWCmp633ynzxz9YYKNeEPK2I8Wraqy2HUQ==} + '@vue/runtime-core@3.5.26': resolution: {integrity: sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==} @@ -2160,6 +3123,9 @@ packages: '@vue/shared@3.5.26': resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==} + '@vue/shared@3.5.38': + resolution: {integrity: sha512-FTW0AFZNaK5/mOqvGBwVfUlNLU38TiQn4+DQgIFUnrBBJQ1crMJ82yeGQLV5jyKFsO8yRukpbuP7x+nRbH6aug==} + '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} @@ -2218,11 +3184,21 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -2243,6 +3219,9 @@ packages: ajv: optional: true + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} @@ -2298,6 +3277,10 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} + engines: {node: '>=14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -2336,6 +3319,30 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -2343,6 +3350,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-kit@3.0.0: + resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} + engines: {node: ^22.18.0 || >=24.11.0} + ast-types@0.15.2: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} @@ -2351,6 +3362,10 @@ packages: resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} engines: {node: '>=4'} + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} @@ -2422,6 +3437,9 @@ packages: birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2429,6 +3447,9 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -2471,6 +3492,10 @@ packages: resolution: {integrity: sha512-wthRURckcAbe0Qcr7xMH8evVE/kjID8gqY0M17XJI/FVgCljLx6Ag4lIDbV76KVb2Ey5iCA4n5Fur61TEhF1JQ==} hasBin: true + bytes-iec@3.1.1: + resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} + engines: {node: '>= 0.8'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -2479,6 +3504,10 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2487,6 +3516,10 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -2529,6 +3562,14 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2556,6 +3597,9 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -2564,10 +3608,19 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-truncate@5.1.1: resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} engines: {node: '>=20'} @@ -2575,6 +3628,9 @@ packages: cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2624,6 +3680,10 @@ packages: command-exists@1.2.9: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@14.0.2: resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} @@ -2715,6 +3775,11 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + cssstyle@4.6.0: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} @@ -2729,6 +3794,18 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + dayjs@1.11.19: resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} @@ -2775,6 +3852,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -2790,6 +3870,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -2820,6 +3903,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + devalue@5.6.4: resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} @@ -2830,12 +3917,25 @@ packages: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dts-resolver@3.0.0: + resolution: {integrity: sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==} + engines: {node: ^22.18.0 || >=24.0.0} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -2864,6 +3964,13 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -2902,6 +4009,14 @@ packages: resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} engines: {node: '>= 0.8'} + es-abstract-get@1.0.0: + resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} + engines: {node: '>= 0.4'} + + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -2913,6 +4028,10 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + es-iterator-helpers@1.3.3: + resolution: {integrity: sha512-0PuBxFi+4uPanB97iDxCLWuHeYud2FALrw5HFZGtAF38UpJDbDC8frwp2cnDyae692CQ0dou60UwWfhgsa4U/g==} + engines: {node: '>= 0.4'} + es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -2920,10 +4039,22 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.1: + resolution: {integrity: sha512-CxN9N56HYfd2m/acc/NOFrZQsN9kU4eh+2kk6A707Kz1krH8tKmfrs5RnftB8WNX80T0NS7vSQsDOlg23diR2g==} + engines: {node: '>= 0.4'} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -2939,6 +4070,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2954,17 +4090,118 @@ packages: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-oxlint@1.70.0: + resolution: {integrity: sha512-SmpX0KdQptEzGm98wEEUR2BFAQTCTyXVdxlMkTOetxRak4NWb6GsYtHvU+Xh9AvnOKBzmO0ikPjxEG30pkmNUg==} + peerDependencies: + oxlint: ~1.70.0 + + eslint-plugin-react-hooks@7.1.1: + resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-svelte@3.19.0: + resolution: {integrity: sha512-t3rNaZeXz4d2gG4uJyMEYfJCFKf22+SWbSizIIXIWKu4wM+XPLiMWuSSr/C5821JmFeN9ogK+eExbG+z+twyxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.1 || ^9.0.0 || ^10.0.0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + svelte: + optional: true + + eslint-plugin-vue@10.9.2: + resolution: {integrity: sha512-4g7ZP3pYcuqd7Zp0pzUKcos0W+RkjBz4EGdhJ92FcYk6v03Ti/GK5NwjgsjxHK+98eXDbHeK7VtX1az7/8doZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + vue-eslint-parser: ^10.3.0 + peerDependenciesMeta: + '@stylistic/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.5.0: + resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + esm-env@1.2.2: resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + esrap@2.2.4: resolution: {integrity: sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==} + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -3008,6 +4245,12 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -3018,6 +4261,9 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -3027,6 +4273,13 @@ packages: picomatch: optional: true + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -3058,6 +4311,13 @@ packages: fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + flow-enums-runtime@0.0.5: resolution: {integrity: sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==} @@ -3089,6 +4349,11 @@ packages: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} + formatly@0.3.0: + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} + engines: {node: '>=18.3.0'} + hasBin: true + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -3124,6 +4389,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function.prototype.name@1.2.0: + resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} + engines: {node: '>= 0.4'} + functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} @@ -3131,6 +4400,10 @@ packages: resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} deprecated: This package is no longer supported. + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -3155,15 +4428,30 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + get-tsconfig@5.0.0-beta.5: + resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} + engines: {node: '>=20.20.0'} + github-build@1.2.4: resolution: {integrity: sha512-1kdMmIrvYH18ITHGMVa5BXOxj/+i/VZzPR4PGMBpLW9h15woU+gpM/mlqOk+jmuD4mmib8Dgb6Xcbyy0v+RqqA==} github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 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 @@ -3173,6 +4461,18 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 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 + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} + + globals@17.6.0: + resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3199,6 +4499,10 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -3214,6 +4518,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} @@ -3227,16 +4535,28 @@ packages: hermes-estree@0.12.0: resolution: {integrity: sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==} + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + hermes-parser@0.12.0: resolution: {integrity: sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==} + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hermes-profile-transformer@0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} engines: {node: '>=8'} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hookable@6.1.1: + resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -3279,6 +4599,14 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + iltorb@2.4.5: resolution: {integrity: sha512-EMCMl3LnnNSZJS5QrxyZmMTaAC4+TJkM5woD+xbpm9RB+mFYCr7C05GFE3TEGCsVQSVHmjX+3sf5AiwsylNInQ==} deprecated: The zlib module provides APIs for brotli compression/decompression starting with Node.js v10.16.0, please use it over iltorb @@ -3296,6 +4624,10 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} + import-without-cache@0.4.0: + resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} + engines: {node: ^22.18.0 || >=24.0.0} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3336,6 +4668,10 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} @@ -3352,6 +4688,14 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + is-date-object@1.1.0: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} @@ -3360,6 +4704,18 @@ packages: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} engines: {node: '>=0.10.0'} + is-document.all@1.0.0: + resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@1.0.0: resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} engines: {node: '>=0.10.0'} @@ -3376,6 +4732,14 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -3384,6 +4748,10 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -3426,6 +4794,10 @@ packages: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -3434,6 +4806,10 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + is-weakset@2.0.4: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} @@ -3475,6 +4851,10 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -3514,6 +4894,10 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -3557,23 +4941,42 @@ packages: engines: {node: '>=6'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -3586,6 +4989,14 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + knip@6.17.1: + resolution: {integrity: sha512-HcQsZSQ4Ymhuay4BVzJtM5pFZNDSomYYqcNCZOSITPQh9g18a09DqziWAxSt2G+BH9wGlG+0ZjWpEnaFlnKseQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + known-css-properties@0.37.0: + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -3593,6 +5004,84 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -3666,6 +5155,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -3697,6 +5190,17 @@ packages: mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + marked-terminal@7.3.0: + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <16' + + marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -3858,6 +5362,10 @@ packages: resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} engines: {node: 18 || 20 || >=22} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3888,6 +5396,10 @@ packages: mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -3912,9 +5424,25 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.13: + resolution: {integrity: sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.1.14: + resolution: {integrity: sha512-5c8l8kVzqpnDPaicbEop/fV0Q1w16FmbWtVhMqugTozAwYdlIQojWH5a/M7UfziFmGdQRrUdV+EPzc9Xng3VAQ==} + engines: {node: ^18 || >=20} + hasBin: true + + nanospinner@1.2.2: + resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} + napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -3940,6 +5468,14 @@ packages: resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} engines: {node: '>= 0.10.5'} + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} + + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -3974,6 +5510,9 @@ packages: resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} deprecated: This package is no longer supported. + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} @@ -4008,6 +5547,22 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + engines: {node: '>=12.20.0'} + on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -4038,10 +5593,38 @@ packages: resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} engines: {node: '>=8'} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + oxc-parser@0.135.0: + resolution: {integrity: sha512-/DaPStu0s2zzNSRRniKyTPM6Z/o+DapOp2JYNKDL8AsgaBGPK2IdZyB87SQjVH+xeQPz+Qr9mrjglfkYgtbVRA==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-resolver@11.21.3: + resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==} + + oxlint@1.70.0: + resolution: {integrity: sha512-D6JgHtzkhRwvEC+A0Nw5AEc5bk8x5i1pHzvZIEf/a0C4hOzmAACNGtkDGPyFaxxX3ZVGxCPeig3P3rMM8XU3/g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.22.1' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -4069,10 +5652,22 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -4133,6 +5728,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -4174,6 +5773,18 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -4192,6 +5803,26 @@ packages: yaml: optional: true + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-selector-parser@7.1.4: + resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==} + engines: {node: '>=4'} + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -4204,6 +5835,10 @@ packages: engines: {node: '>=6'} hasBin: true + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + prettier@3.6.2: resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} @@ -4250,6 +5885,11 @@ packages: psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + publint@0.3.21: + resolution: {integrity: sha512-OqejcnMV6E9zel2oCrUOJEiiFkGiAAni0A6ibfQNh1k9Gu5z4F+Yso8lllam7AzmV6Do0vp7u3UpZNRBwuXaHQ==} + engines: {node: '>=18'} + hasBin: true + pump@3.0.3: resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} @@ -4264,6 +5904,9 @@ packages: quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -4341,6 +5984,10 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + regenerate-unicode-properties@10.2.2: resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} @@ -4400,11 +6047,20 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true + resolve@2.0.0-next.7: + resolution: {integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==} + engines: {node: '>= 0.4'} + hasBin: true + restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -4426,6 +6082,42 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rolldown-plugin-dts@0.26.0: + resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} + engines: {node: ^22.18.0 || >=24.11.0} + peerDependencies: + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20260325.1' + rolldown: ^1.0.0 + typescript: ^5.0.0 || ^6.0.0 + vue-tsc: ~3.2.0 || ~3.3.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.0.3: + resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rolldown@1.1.2: + resolution: {integrity: sha512-x0CrQQqCXWGeI8dTvFfN/Dnv3yMKT9hv5jFjlOreKAx9wqLq9wz7VvLLHyaAXC90/CpggTu9SisSbsJJTPSjNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rollup-plugin-svelte@7.2.3: + resolution: {integrity: sha512-LlniP+h00DfM+E4eav/Kk8uGjgPUjGIBfrAS/IxQvsuFdqSM0Y2sXf31AdxuIGSW9GsmocDqOfaxR5QNno/Tgw==} + engines: {node: '>=10'} + peerDependencies: + rollup: '>=2.0.0' + svelte: '>=3.5.0' + rollup@4.52.5: resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4437,12 +6129,24 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -4481,6 +6185,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -4504,6 +6213,10 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -4561,6 +6274,20 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + size-limit@12.1.0: + resolution: {integrity: sha512-VnDS2fycANrJFVPQwjaD+h+hkISY7EB3LsPsYWje4lBCjQwwsZLxjwwRwVJKHrcj2ZqyG+DdXykWm9mbZklZrw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + jiti: ^2.0.0 + peerDependenciesMeta: + jiti: + optional: true + + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4573,6 +6300,10 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + engines: {node: '>= 18'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -4660,6 +6391,25 @@ packages: resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} engines: {node: '>=20'} + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.11: + resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.10: + resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -4701,6 +6451,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + strnum@1.1.2: resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} @@ -4729,10 +6483,23 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svelte-eslint-parser@1.8.0: + resolution: {integrity: sha512-mikR1qwIVy3t5WthUoAXkMwxkXvabZP9FJgdx35Ei7EbGWmctva1Pih16Koeor/bdNNq8NXHlwKGS6NkYTawLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.34.1} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + svelte: + optional: true + svelte@5.55.1: resolution: {integrity: sha512-QjvU7EFemf6mRzdMGlAFttMWtAAVXrax61SZYHdkD6yoVGQ89VeyKfZD4H1JrV1WLmJBxWhFch9H6ig/87VGjw==} engines: {node: '>=18'} @@ -4782,10 +6549,18 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tinypool@1.1.1: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -4830,9 +6605,49 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tsdown@0.22.3: + resolution: {integrity: sha512-louqbfA8Qf//B9jTTL0FPtXTNpjCWv1VPkbcmQMph2pTpzs+LnB1tbe4tDDRVpo2BjF5SgUXaTZe45SxB8pWHg==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@tsdown/css': 0.22.3 + '@tsdown/exe': 0.22.3 + '@vitejs/devtools': '*' + publint: ^0.3.8 + tsx: '*' + typescript: ^5.0.0 || ^6.0.0 + unplugin-unused: ^0.5.0 + unrun: '*' + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@tsdown/css': + optional: true + '@tsdown/exe': + optional: true + '@vitejs/devtools': + optional: true + publint: + optional: true + tsx: + optional: true + typescript: + optional: true + unplugin-unused: + optional: true + unrun: + optional: true + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -4897,6 +6712,10 @@ packages: resolution: {integrity: sha512-kC5VJqOXo50k0/0jnJDDjibLAXalqT9j7PQ56so0pN+81VR4Fwb2QgIE9dTzT3phqOTQuEXkPh3sCpnv5Isz2g==} hasBin: true + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -4909,6 +6728,34 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.8: + resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.61.1: + resolution: {integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.8.2: resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} @@ -4928,6 +6775,17 @@ packages: deprecated: support for ECMAScript is superseded by `uglify-js` as of v3.13.0 hasBin: true + unbash@4.0.1: + resolution: {integrity: sha512-1ajSo3813sDoVIHx4inJdUS4l5L2ic5cFiddemPiyjb/PZEoBAhFwHtbaEdRDFxbAKy7FCG7s5ww3/uCFawuIA==} + engines: {node: '>=14'} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -4935,6 +6793,10 @@ packages: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -4978,12 +6840,25 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unplugin-vue@7.2.0: + resolution: {integrity: sha512-6JHWcRbLO3bySOsipQSW9n2VRoPqsx9GLSWBfp7QLPCvpUr/edeAXR7pSl44EEJ+FIp9bG8Zm+xm5dnM/yir4Q==} + engines: {node: '>=20.19.0'} + peerDependencies: + vue: ^3.2.25 + + unplugin@3.0.0: + resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} + engines: {node: ^20.19.0 || >=22.12.0} + update-browserslist-db@1.1.4: resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -4999,6 +6874,10 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -5054,6 +6933,49 @@ packages: terser: optional: true + vite@8.0.16: + resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + 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@1.1.2: resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} peerDependencies: @@ -5105,6 +7027,12 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vue-eslint-parser@10.4.1: + resolution: {integrity: sha512-Gk6gRDj0n/fkRa3C3l0bBheoBckUq/Rs0F/TvMWIS6nzzx67amAViMe9CkNgsP2tXyQONvGiHQESHwFtZ3aYDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + vue-tsc@2.2.12: resolution: {integrity: sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==} hasBin: true @@ -5123,6 +7051,10 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -5139,6 +7071,9 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -5165,6 +7100,10 @@ packages: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + which-collection@1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} @@ -5193,6 +7132,10 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -5250,6 +7193,10 @@ packages: utf-8-validate: optional: true + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -5274,15 +7221,28 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} hasBin: true + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -5291,6 +7251,10 @@ packages: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} + yargs@16.2.2: + resolution: {integrity: sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -5302,6 +7266,15 @@ packages: zimmerframe@1.1.4: resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -5426,6 +7399,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 + '@andrewbranch/untar.js@1.0.3': {} + + '@arethetypeswrong/cli@0.18.3': + dependencies: + '@arethetypeswrong/core': 0.18.3 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 10.0.1 + marked: 9.1.6 + marked-terminal: 7.3.0(marked@9.1.6) + semver: 7.7.3 + + '@arethetypeswrong/core@0.18.3': + dependencies: + '@andrewbranch/untar.js': 1.0.3 + '@loaderkit/resolve': 1.0.6 + cjs-module-lexer: 1.4.3 + fflate: 0.8.3 + lru-cache: 11.5.1 + semver: 7.7.3 + typescript: 5.6.1-rc + validate-npm-package-name: 5.0.1 + '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -5470,6 +7466,15 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@8.0.0': + dependencies: + '@babel/parser': 8.0.0 + '@babel/types': 8.0.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.28.5 @@ -5575,8 +7580,12 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@8.0.0': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@8.0.2': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.28.3': @@ -5596,6 +7605,10 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@babel/parser@8.0.0': + dependencies: + '@babel/types': 8.0.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -6293,8 +8306,18 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@8.0.0': + dependencies: + '@babel/helper-string-parser': 8.0.0 + '@babel/helper-validator-identifier': 8.0.2 + '@bcoe/v8-coverage@0.2.3': {} + '@braidai/lang@1.1.2': {} + + '@colors/colors@1.5.0': + optional: true + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -6342,6 +8365,49 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/core@1.11.0': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -6351,6 +8417,9 @@ snapshots: '@esbuild/aix-ppc64@0.27.2': optional: true + '@esbuild/aix-ppc64@0.28.1': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true @@ -6360,6 +8429,9 @@ snapshots: '@esbuild/android-arm64@0.27.2': optional: true + '@esbuild/android-arm64@0.28.1': + optional: true + '@esbuild/android-arm@0.21.5': optional: true @@ -6369,6 +8441,9 @@ snapshots: '@esbuild/android-arm@0.27.2': optional: true + '@esbuild/android-arm@0.28.1': + optional: true + '@esbuild/android-x64@0.21.5': optional: true @@ -6378,6 +8453,9 @@ snapshots: '@esbuild/android-x64@0.27.2': optional: true + '@esbuild/android-x64@0.28.1': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true @@ -6387,6 +8465,9 @@ snapshots: '@esbuild/darwin-arm64@0.27.2': optional: true + '@esbuild/darwin-arm64@0.28.1': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true @@ -6396,6 +8477,9 @@ snapshots: '@esbuild/darwin-x64@0.27.2': optional: true + '@esbuild/darwin-x64@0.28.1': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true @@ -6405,6 +8489,9 @@ snapshots: '@esbuild/freebsd-arm64@0.27.2': optional: true + '@esbuild/freebsd-arm64@0.28.1': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true @@ -6414,6 +8501,9 @@ snapshots: '@esbuild/freebsd-x64@0.27.2': optional: true + '@esbuild/freebsd-x64@0.28.1': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true @@ -6423,6 +8513,9 @@ snapshots: '@esbuild/linux-arm64@0.27.2': optional: true + '@esbuild/linux-arm64@0.28.1': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true @@ -6432,13 +8525,19 @@ snapshots: '@esbuild/linux-arm@0.27.2': optional: true + '@esbuild/linux-arm@0.28.1': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.2': + '@esbuild/linux-ia32@0.27.2': + optional: true + + '@esbuild/linux-ia32@0.28.1': optional: true '@esbuild/linux-loong64@0.21.5': @@ -6450,6 +8549,9 @@ snapshots: '@esbuild/linux-loong64@0.27.2': optional: true + '@esbuild/linux-loong64@0.28.1': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true @@ -6459,6 +8561,9 @@ snapshots: '@esbuild/linux-mips64el@0.27.2': optional: true + '@esbuild/linux-mips64el@0.28.1': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true @@ -6468,6 +8573,9 @@ snapshots: '@esbuild/linux-ppc64@0.27.2': optional: true + '@esbuild/linux-ppc64@0.28.1': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true @@ -6477,6 +8585,9 @@ snapshots: '@esbuild/linux-riscv64@0.27.2': optional: true + '@esbuild/linux-riscv64@0.28.1': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true @@ -6486,6 +8597,9 @@ snapshots: '@esbuild/linux-s390x@0.27.2': optional: true + '@esbuild/linux-s390x@0.28.1': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true @@ -6495,12 +8609,18 @@ snapshots: '@esbuild/linux-x64@0.27.2': optional: true + '@esbuild/linux-x64@0.28.1': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true '@esbuild/netbsd-arm64@0.27.2': optional: true + '@esbuild/netbsd-arm64@0.28.1': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true @@ -6510,12 +8630,18 @@ snapshots: '@esbuild/netbsd-x64@0.27.2': optional: true + '@esbuild/netbsd-x64@0.28.1': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true '@esbuild/openbsd-arm64@0.27.2': optional: true + '@esbuild/openbsd-arm64@0.28.1': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true @@ -6525,12 +8651,18 @@ snapshots: '@esbuild/openbsd-x64@0.27.2': optional: true + '@esbuild/openbsd-x64@0.28.1': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.27.2': optional: true + '@esbuild/openharmony-arm64@0.28.1': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true @@ -6540,6 +8672,9 @@ snapshots: '@esbuild/sunos-x64@0.27.2': optional: true + '@esbuild/sunos-x64@0.28.1': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true @@ -6549,6 +8684,9 @@ snapshots: '@esbuild/win32-arm64@0.27.2': optional: true + '@esbuild/win32-arm64@0.28.1': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true @@ -6558,6 +8696,9 @@ snapshots: '@esbuild/win32-ia32@0.27.2': optional: true + '@esbuild/win32-ia32@0.28.1': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true @@ -6567,12 +8708,65 @@ snapshots: '@esbuild/win32-x64@0.27.2': optional: true + '@esbuild/win32-x64@0.28.1': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(jiti@2.7.0))': + dependencies: + eslint: 10.5.0(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.23.5': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3 + minimatch: 10.2.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.6.0': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/js@10.0.1(eslint@10.5.0(jiti@2.7.0))': + optionalDependencies: + eslint: 10.5.0(jiti@2.7.0) + + '@eslint/object-schema@3.0.5': {} + + '@eslint/plugin-kit@0.7.2': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + '@iconify-json/simple-icons@1.2.63': dependencies: '@iconify/types': 2.0.0 @@ -6663,6 +8857,10 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@loaderkit/resolve@1.0.6': + dependencies: + '@braidai/lang': 1.1.2 + '@microsoft/api-extractor-model@7.33.4(@types/node@24.10.0)': dependencies: '@microsoft/tsdoc': 0.16.0 @@ -6699,6 +8897,215 @@ snapshots: '@microsoft/tsdoc@0.16.0': {} + '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': + dependencies: + '@emnapi/core': 1.11.0 + '@emnapi/runtime': 1.11.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@napi-rs/wasm-runtime@1.1.5(@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.2 + optional: true + + '@oxc-parser/binding-android-arm-eabi@0.135.0': + optional: true + + '@oxc-parser/binding-android-arm64@0.135.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.135.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.135.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.135.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.135.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.135.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.135.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.135.0': + optional: true + + '@oxc-parser/binding-linux-ppc64-gnu@0.135.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.135.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-musl@0.135.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.135.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.135.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.135.0': + optional: true + + '@oxc-parser/binding-openharmony-arm64@0.135.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.135.0': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.135.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.135.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.135.0': + optional: true + + '@oxc-project/types@0.133.0': {} + + '@oxc-project/types@0.135.0': {} + + '@oxc-project/types@0.137.0': {} + + '@oxc-resolver/binding-android-arm-eabi@11.21.3': + optional: true + + '@oxc-resolver/binding-android-arm64@11.21.3': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.21.3': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.21.3': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.21.3': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.21.3': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.21.3': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.21.3': + dependencies: + '@emnapi/core': 1.11.0 + '@emnapi/runtime': 1.11.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0) + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.21.3': + optional: true + + '@oxlint/binding-android-arm-eabi@1.70.0': + optional: true + + '@oxlint/binding-android-arm64@1.70.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.70.0': + optional: true + + '@oxlint/binding-darwin-x64@1.70.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.70.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.70.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.70.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.70.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.70.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.70.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.70.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.70.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.70.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.70.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.70.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.70.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.70.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.70.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.70.0': + optional: true + '@pkgjs/parseargs@0.11.0': optional: true @@ -6706,6 +9113,14 @@ snapshots: dependencies: playwright: 1.57.0 + '@publint/pack@0.1.5': + dependencies: + tinyexec: 1.2.4 + + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + '@react-native-community/cli-clean@11.4.1': dependencies: '@react-native-community/cli-tools': 11.4.1 @@ -6880,17 +9295,122 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/gradle-plugin@0.72.11': {} + '@react-native/gradle-plugin@0.72.11': {} + + '@react-native/js-polyfills@0.72.1': {} + + '@react-native/normalize-colors@0.72.0': {} + + '@react-native/virtualized-lists@0.72.8(react-native@0.72.17(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(react@18.3.1))': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react-native: 0.72.17(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(react@18.3.1) + + '@rolldown/binding-android-arm64@1.0.3': + optional: true + + '@rolldown/binding-android-arm64@1.1.2': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.3': + optional: true + + '@rolldown/binding-darwin-arm64@1.1.2': + optional: true + + '@rolldown/binding-darwin-x64@1.0.3': + optional: true + + '@rolldown/binding-darwin-x64@1.1.2': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.3': + optional: true + + '@rolldown/binding-freebsd-x64@1.1.2': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.1.2': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.1.2': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.1.2': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.1.2': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.1.2': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.1.2': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-musl@1.1.2': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.3': + optional: true + + '@rolldown/binding-openharmony-arm64@1.1.2': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.3': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-wasm32-wasi@1.1.2': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.3': + optional: true - '@react-native/js-polyfills@0.72.1': {} + '@rolldown/binding-win32-arm64-msvc@1.1.2': + optional: true - '@react-native/normalize-colors@0.72.0': {} + '@rolldown/binding-win32-x64-msvc@1.0.3': + optional: true - '@react-native/virtualized-lists@0.72.8(react-native@0.72.17(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(react@18.3.1))': + '@rolldown/binding-win32-x64-msvc@1.1.2': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/pluginutils@4.2.1': dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react-native: 0.72.17(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(react@18.3.1) + estree-walker: 2.0.2 + picomatch: 2.3.1 '@rollup/pluginutils@5.3.0(rollup@4.52.5)': dependencies: @@ -7055,6 +9575,8 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@sindresorhus/is@4.6.0': {} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 @@ -7063,29 +9585,45 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@size-limit/esbuild@12.1.0(size-limit@12.1.0(jiti@2.7.0))': + dependencies: + esbuild: 0.28.1 + nanoid: 5.1.14 + size-limit: 12.1.0(jiti@2.7.0) + + '@size-limit/file@12.1.0(size-limit@12.1.0(jiti@2.7.0))': + dependencies: + size-limit: 12.1.0(jiti@2.7.0) + + '@size-limit/preset-small-lib@12.1.0(size-limit@12.1.0(jiti@2.7.0))': + dependencies: + '@size-limit/esbuild': 12.1.0(size-limit@12.1.0(jiti@2.7.0)) + '@size-limit/file': 12.1.0(size-limit@12.1.0(jiti@2.7.0)) + size-limit: 12.1.0(jiti@2.7.0) + '@sveltejs/acorn-typescript@1.0.9(acorn@8.15.0)': dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)))(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0))': + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)))(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)) + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) debug: 4.4.3 svelte: 5.55.1 - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0))': + '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)))(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)) + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)))(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.21 svelte: 5.55.1 - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) - vitefu: 1.1.2(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) + vitefu: 1.1.2(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) transitivePeerDependencies: - supports-color @@ -7123,6 +9661,11 @@ snapshots: dependencies: '@testing-library/dom': 9.3.4 + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + '@types/argparse@1.0.38': {} '@types/aria-query@5.0.4': {} @@ -7136,6 +9679,8 @@ snapshots: dependencies: '@types/node': 24.10.0 + '@types/esrecurse@4.3.1': {} + '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.7': @@ -7168,6 +9713,10 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/jsesc@2.5.1': {} + + '@types/json-schema@7.0.15': {} + '@types/linkify-it@5.0.0': {} '@types/markdown-it@14.1.2': @@ -7246,16 +9795,107 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.61.1 + eslint: 10.5.0(jiti@2.7.0) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.61.1 + debug: 4.4.3 + eslint: 10.5.0(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.61.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@5.9.3) + '@typescript-eslint/types': 8.61.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 + + '@typescript-eslint/tsconfig-utils@8.61.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + debug: 4.4.3 + eslint: 10.5.0(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.57.2': {} + '@typescript-eslint/types@8.61.1': {} + + '@typescript-eslint/typescript-estree@8.61.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.61.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@5.9.3) + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 + debug: 4.4.3 + minimatch: 10.2.3 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) + eslint: 10.5.0(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + eslint-visitor-keys: 5.0.1 + '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) vue: 3.5.26(typescript@5.9.3) - '@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0))': + '@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -7269,7 +9909,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0) + vitest: 2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0) transitivePeerDependencies: - supports-color @@ -7280,13 +9920,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) '@vitest/pretty-format@2.1.9': dependencies: @@ -7420,6 +10060,10 @@ snapshots: dependencies: '@vue/shared': 3.5.26 + '@vue/reactivity@3.5.38': + dependencies: + '@vue/shared': 3.5.38 + '@vue/runtime-core@3.5.26': dependencies: '@vue/reactivity': 3.5.26 @@ -7440,6 +10084,8 @@ snapshots: '@vue/shared@3.5.26': {} + '@vue/shared@3.5.38': {} + '@vueuse/core@12.8.2(typescript@5.9.3)': dependencies: '@types/web-bluetooth': 0.0.21 @@ -7477,8 +10123,18 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + acorn@8.15.0: {} + acorn@8.17.0: {} + agent-base@7.1.4: {} ajv-draft-04@1.0.0(ajv@8.18.0): @@ -7489,6 +10145,13 @@ snapshots: optionalDependencies: ajv: 8.18.0 + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 @@ -7549,6 +10212,8 @@ snapshots: ansi-styles@6.2.3: {} + ansis@4.3.1: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -7584,16 +10249,76 @@ snapshots: array-flatten@1.1.1: {} + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + asap@2.0.6: {} assertion-error@2.0.1: {} + ast-kit@3.0.0: + dependencies: + '@babel/parser': 8.0.0 + estree-walker: 3.0.3 + pathe: 2.0.3 + ast-types@0.15.2: dependencies: tslib: 2.8.1 astral-regex@1.0.0: {} + async-function@1.0.0: {} + async-limiter@1.0.1: {} async@3.2.6: {} @@ -7701,6 +10426,8 @@ snapshots: birpc@2.9.0: {} + birpc@4.0.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -7724,6 +10451,8 @@ snapshots: transitivePeerDependencies: - supports-color + boolbase@1.0.0: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -7785,10 +10514,14 @@ snapshots: transitivePeerDependencies: - debug + bytes-iec@3.1.1: {} + bytes@3.1.2: {} cac@6.7.14: {} + cac@7.0.0: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -7801,6 +10534,13 @@ snapshots: get-intrinsic: 1.3.0 set-function-length: 1.2.2 + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -7843,6 +10583,10 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + + char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -7861,6 +10605,8 @@ snapshots: ci-info@3.9.0: {} + cjs-module-lexer@1.4.3: {} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -7869,8 +10615,23 @@ snapshots: dependencies: restore-cursor: 5.1.0 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.2 + cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-truncate@5.1.1: dependencies: slice-ansi: 7.1.2 @@ -7882,6 +10643,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -7924,6 +10691,8 @@ snapshots: command-exists@1.2.9: {} + commander@10.0.1: {} + commander@14.0.2: {} commander@2.13.0: {} @@ -8010,6 +10779,8 @@ snapshots: css.escape@1.5.1: {} + cssesc@3.0.0: {} + cssstyle@4.6.0: dependencies: '@asamuzakjp/css-color': 3.2.0 @@ -8024,6 +10795,24 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + dayjs@1.11.19: {} de-indent@1.0.2: {} @@ -8069,6 +10858,8 @@ snapshots: deep-extend@0.6.0: {} + deep-is@0.1.4: {} + deepmerge@4.3.1: {} defaults@1.0.4: @@ -8087,6 +10878,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.7: {} + delayed-stream@1.0.0: {} delegates@1.0.0: {} @@ -8107,6 +10900,8 @@ snapshots: detect-libc@1.0.3: {} + detect-libc@2.1.2: {} + devalue@5.6.4: {} devlop@1.1.0: @@ -8115,10 +10910,18 @@ snapshots: diff@8.0.4: {} + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} + dts-resolver@3.0.0(oxc-resolver@11.21.3): + optionalDependencies: + oxc-resolver: 11.21.3 + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -8141,6 +10944,10 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + + empathic@2.0.1: {} + encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -8170,6 +10977,70 @@ snapshots: accepts: 1.3.8 escape-html: 1.0.3 + es-abstract-get@1.0.0: + dependencies: + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + is-callable: 1.2.7 + object-inspect: 1.13.4 + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.1 + function.prototype.name: 1.2.0 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.11 + string.prototype.trimend: 1.0.10 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.8 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -8186,12 +11057,35 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.1.0 + es-iterator-helpers@1.3.3: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + math-intrinsics: 1.1.0 + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 @@ -8199,6 +11093,18 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.1: + dependencies: + es-abstract-get: 1.0.0 + es-errors: 1.3.0 + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -8283,23 +11189,204 @@ snapshots: '@esbuild/win32-ia32': 0.27.2 '@esbuild/win32-x64': 0.27.2 - escalade@3.2.0: {} + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)): + dependencies: + eslint: 10.5.0(jiti@2.7.0) + + eslint-plugin-oxlint@1.70.0(oxlint@1.70.0): + dependencies: + jsonc-parser: 3.3.1 + oxlint: 1.70.0 + + eslint-plugin-react-hooks@7.1.1(eslint@10.5.0(jiti@2.7.0)): + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + eslint: 10.5.0(jiti@2.7.0) + hermes-parser: 0.25.1 + zod: 4.4.3 + zod-validation-error: 4.0.2(zod@4.4.3) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react@7.37.5(eslint@10.5.0(jiti@2.7.0)): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.3.3 + eslint: 10.5.0(jiti@2.7.0) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.7 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 - escape-html@1.0.3: {} + eslint-plugin-svelte@3.19.0(eslint@10.5.0(jiti@2.7.0))(svelte@5.55.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@jridgewell/sourcemap-codec': 1.5.5 + eslint: 10.5.0(jiti@2.7.0) + esutils: 2.0.3 + globals: 16.5.0 + known-css-properties: 0.37.0 + postcss: 8.5.6 + postcss-load-config: 3.1.4(postcss@8.5.6) + postcss-safe-parser: 7.0.1(postcss@8.5.6) + semver: 7.7.3 + svelte-eslint-parser: 1.8.0(svelte@5.55.1) + optionalDependencies: + svelte: 5.55.1 + transitivePeerDependencies: + - ts-node - escape-string-regexp@1.0.5: {} + eslint-plugin-vue@10.9.2(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.5.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.5.0(jiti@2.7.0))): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + eslint: 10.5.0(jiti@2.7.0) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 7.1.4 + semver: 7.7.3 + vue-eslint-parser: 10.4.1(eslint@10.5.0(jiti@2.7.0)) + xml-name-validator: 4.0.0 + optionalDependencies: + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) - escape-string-regexp@2.0.0: {} + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@10.5.0(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.6.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.15.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color esm-env@1.2.2: {} + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + espree@11.2.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 5.0.1 + esprima@4.0.1: {} + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + esrap@2.2.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@typescript-eslint/types': 8.57.2 + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -8370,6 +11457,10 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + fast-uri@3.1.0: {} fast-xml-parser@4.5.3: @@ -8380,10 +11471,24 @@ snapshots: dependencies: bser: 2.1.1 + fd-package-json@2.0.0: + dependencies: + walk-up-path: 4.0.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fflate@0.8.3: {} + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -8438,6 +11543,13 @@ snapshots: mlly: 1.8.0 rollup: 4.52.5 + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + flow-enums-runtime@0.0.5: {} flow-parser@0.206.0: {} @@ -8465,6 +11577,10 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + formatly@0.3.0: + dependencies: + fd-package-json: 2.0.0 + forwarded@0.2.0: {} fresh@0.5.2: {} @@ -8493,6 +11609,18 @@ snapshots: function-bind@1.1.2: {} + function.prototype.name@1.2.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + es-define-property: 1.0.1 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + hasown: 2.0.4 + is-callable: 1.2.7 + is-document.all: 1.0.0 + functions-have-names@1.2.3: {} gauge@2.7.4: @@ -8506,6 +11634,8 @@ snapshots: strip-ansi: 3.0.1 wide-align: 1.1.5 + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -8532,10 +11662,24 @@ snapshots: get-stream@6.0.1: {} + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-tsconfig@5.0.0-beta.5: + dependencies: + resolve-pkg-maps: 1.0.0 + github-build@1.2.4: dependencies: axios: 1.6.0 @@ -8544,6 +11688,10 @@ snapshots: github-from-package@0.0.0: {} + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + glob@10.4.5: dependencies: foreground-child: 3.3.1 @@ -8562,6 +11710,15 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + globals@16.5.0: {} + + globals@17.6.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -8581,6 +11738,10 @@ snapshots: dependencies: es-define-property: 1.0.1 + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -8593,6 +11754,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 @@ -8615,16 +11780,26 @@ snapshots: hermes-estree@0.12.0: {} + hermes-estree@0.25.1: {} + hermes-parser@0.12.0: dependencies: hermes-estree: 0.12.0 + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + hermes-profile-transformer@0.0.6: dependencies: source-map: 0.7.6 + highlight.js@10.7.3: {} + hookable@5.5.3: {} + hookable@6.1.1: {} + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -8669,6 +11844,10 @@ snapshots: ieee754@1.2.1: {} + ignore@5.3.2: {} + + ignore@7.0.5: {} + iltorb@2.4.5: dependencies: detect-libc: 1.0.3 @@ -8688,6 +11867,8 @@ snapshots: import-lazy@4.0.0: {} + import-without-cache@0.4.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -8726,6 +11907,14 @@ snapshots: is-arrayish@0.2.1: {} + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-bigint@1.1.0: dependencies: has-bigints: 1.1.0 @@ -8741,6 +11930,16 @@ snapshots: dependencies: hasown: 2.0.2 + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + is-date-object@1.1.0: dependencies: call-bound: 1.0.4 @@ -8748,6 +11947,16 @@ snapshots: is-directory@0.3.1: {} + is-document.all@1.0.0: + dependencies: + call-bound: 1.0.4 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + is-fullwidth-code-point@1.0.0: dependencies: number-is-nan: 1.0.1 @@ -8760,10 +11969,24 @@ snapshots: dependencies: get-east-asian-width: 1.4.0 + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + is-interactive@1.0.0: {} is-map@2.0.3: {} + is-negative-zero@2.0.3: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -8807,10 +12030,18 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + is-unicode-supported@0.1.0: {} is-weakmap@2.0.2: {} + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + is-weakset@2.0.4: dependencies: call-bound: 1.0.4 @@ -8849,6 +12080,15 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -8919,6 +12159,8 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jiti@2.7.0: {} + jju@1.4.0: {} joi@17.13.3: @@ -8997,12 +12239,20 @@ snapshots: jsesc@3.1.0: {} + json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json5@2.2.3: {} + jsonc-parser@3.3.1: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -9013,16 +12263,101 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + kind-of@6.0.3: {} kleur@3.0.3: {} kleur@4.1.5: {} + knip@6.17.1: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + formatly: 0.3.0 + get-tsconfig: 4.14.0 + jiti: 2.7.0 + oxc-parser: 0.135.0 + oxc-resolver: 11.21.3 + picomatch: 4.0.4 + smol-toml: 1.6.1 + strip-json-comments: 5.0.3 + tinyglobby: 0.2.17 + unbash: 4.0.1 + yaml: 2.9.0 + zod: 4.4.3 + + known-css-properties@0.37.0: {} + kolorist@1.8.0: {} leven@3.1.0: {} + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lilconfig@2.1.0: {} + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -9104,6 +12439,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.5.1: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -9139,6 +12476,19 @@ snapshots: mark.js@8.11.1: {} + marked-terminal@7.3.0(marked@9.1.6): + dependencies: + ansi-escapes: 7.2.0 + ansi-regex: 6.2.2 + chalk: 5.6.2 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 9.1.6 + node-emoji: 2.2.0 + supports-hyperlinks: 3.2.0 + + marked@9.1.6: {} + math-intrinsics@1.1.0: {} mdast-util-to-hast@13.2.1: @@ -9453,6 +12803,10 @@ snapshots: dependencies: brace-expansion: 5.0.5 + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -9482,6 +12836,8 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 + mri@1.2.0: {} + ms@2.0.0: {} ms@2.1.3: {} @@ -9500,8 +12856,18 @@ snapshots: nanoid@3.3.11: {} + nanoid@3.3.13: {} + + nanoid@5.1.14: {} + + nanospinner@1.2.2: + dependencies: + picocolors: 1.1.1 + napi-build-utils@1.0.2: {} + natural-compare@1.4.0: {} + negotiator@0.6.3: {} negotiator@0.6.4: {} @@ -9520,6 +12886,20 @@ snapshots: dependencies: minimatch: 3.1.2 + node-emoji@2.2.0: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -9545,6 +12925,10 @@ snapshots: gauge: 2.7.4 set-blocking: 2.0.0 + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + nullthrows@1.1.1: {} number-is-nan@1.0.1: {} @@ -9573,6 +12957,29 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obug@2.1.3: {} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 @@ -9605,6 +13012,15 @@ snapshots: dependencies: is-wsl: 1.1.0 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + ora@5.4.1: dependencies: bl: 4.1.0 @@ -9617,6 +13033,81 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + oxc-parser@0.135.0: + dependencies: + '@oxc-project/types': 0.135.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.135.0 + '@oxc-parser/binding-android-arm64': 0.135.0 + '@oxc-parser/binding-darwin-arm64': 0.135.0 + '@oxc-parser/binding-darwin-x64': 0.135.0 + '@oxc-parser/binding-freebsd-x64': 0.135.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.135.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.135.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.135.0 + '@oxc-parser/binding-linux-arm64-musl': 0.135.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.135.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.135.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.135.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.135.0 + '@oxc-parser/binding-linux-x64-gnu': 0.135.0 + '@oxc-parser/binding-linux-x64-musl': 0.135.0 + '@oxc-parser/binding-openharmony-arm64': 0.135.0 + '@oxc-parser/binding-wasm32-wasi': 0.135.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.135.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.135.0 + '@oxc-parser/binding-win32-x64-msvc': 0.135.0 + + oxc-resolver@11.21.3: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.21.3 + '@oxc-resolver/binding-android-arm64': 11.21.3 + '@oxc-resolver/binding-darwin-arm64': 11.21.3 + '@oxc-resolver/binding-darwin-x64': 11.21.3 + '@oxc-resolver/binding-freebsd-x64': 11.21.3 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.21.3 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.21.3 + '@oxc-resolver/binding-linux-arm64-gnu': 11.21.3 + '@oxc-resolver/binding-linux-arm64-musl': 11.21.3 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.21.3 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.21.3 + '@oxc-resolver/binding-linux-riscv64-musl': 11.21.3 + '@oxc-resolver/binding-linux-s390x-gnu': 11.21.3 + '@oxc-resolver/binding-linux-x64-gnu': 11.21.3 + '@oxc-resolver/binding-linux-x64-musl': 11.21.3 + '@oxc-resolver/binding-openharmony-arm64': 11.21.3 + '@oxc-resolver/binding-wasm32-wasi': 11.21.3 + '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3 + '@oxc-resolver/binding-win32-x64-msvc': 11.21.3 + + oxlint@1.70.0: + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.70.0 + '@oxlint/binding-android-arm64': 1.70.0 + '@oxlint/binding-darwin-arm64': 1.70.0 + '@oxlint/binding-darwin-x64': 1.70.0 + '@oxlint/binding-freebsd-x64': 1.70.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.70.0 + '@oxlint/binding-linux-arm-musleabihf': 1.70.0 + '@oxlint/binding-linux-arm64-gnu': 1.70.0 + '@oxlint/binding-linux-arm64-musl': 1.70.0 + '@oxlint/binding-linux-ppc64-gnu': 1.70.0 + '@oxlint/binding-linux-riscv64-gnu': 1.70.0 + '@oxlint/binding-linux-riscv64-musl': 1.70.0 + '@oxlint/binding-linux-s390x-gnu': 1.70.0 + '@oxlint/binding-linux-x64-gnu': 1.70.0 + '@oxlint/binding-linux-x64-musl': 1.70.0 + '@oxlint/binding-openharmony-arm64': 1.70.0 + '@oxlint/binding-win32-arm64-msvc': 1.70.0 + '@oxlint/binding-win32-ia32-msvc': 1.70.0 + '@oxlint/binding-win32-x64-msvc': 1.70.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -9641,11 +13132,21 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.6.0: {} + parse-json@4.0.0: dependencies: error-ex: 1.3.4 json-parse-better-errors: 1.0.2 + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + parse5@7.3.0: dependencies: entities: 6.0.1 @@ -9685,6 +13186,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.4: {} + pidtree@0.6.0: {} pify@3.0.0: {} @@ -9719,13 +13222,49 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-load-config@6.0.1(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1): + postcss-load-config@3.1.4(postcss@8.5.6): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.3 + optionalDependencies: + postcss: 8.5.6 + + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(yaml@2.9.0): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 2.7.0 + postcss: 8.5.15 + tsx: 4.20.6 + yaml: 2.9.0 + + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: + jiti: 2.7.0 postcss: 8.5.6 tsx: 4.20.6 - yaml: 2.8.1 + yaml: 2.9.0 + + postcss-safe-parser@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-scss@4.0.9(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-selector-parser@7.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.13 + picocolors: 1.1.1 + source-map-js: 1.2.1 postcss@8.5.6: dependencies: @@ -9753,6 +13292,8 @@ snapshots: tunnel-agent: 0.6.0 which-pm-runs: 1.1.0 + prelude-ls@1.2.1: {} + prettier@3.6.2: {} pretty-format@26.6.2: @@ -9808,6 +13349,13 @@ snapshots: dependencies: punycode: 2.3.1 + publint@0.3.21: + dependencies: + '@publint/pack': 0.1.5 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 + sade: 1.8.1 + pump@3.0.3: dependencies: end-of-stream: 1.4.5 @@ -9821,6 +13369,8 @@ snapshots: quansync@0.2.11: {} + quansync@1.0.0: {} + querystringify@2.2.0: {} queue@6.0.2: @@ -9955,6 +13505,17 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -10011,12 +13572,23 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve.exports@2.0.3: {} + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.7: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + node-exports-info: 1.6.0 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -10037,6 +13609,71 @@ snapshots: dependencies: glob: 7.2.3 + rolldown-plugin-dts@0.26.0(oxc-resolver@11.21.3)(rolldown@1.1.2)(typescript@5.9.3): + dependencies: + '@babel/generator': 8.0.0 + '@babel/helper-validator-identifier': 8.0.2 + '@babel/parser': 8.0.0 + ast-kit: 3.0.0 + birpc: 4.0.0 + dts-resolver: 3.0.0(oxc-resolver@11.21.3) + get-tsconfig: 5.0.0-beta.5 + obug: 2.1.3 + rolldown: 1.1.2 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - oxc-resolver + + rolldown@1.0.3: + dependencies: + '@oxc-project/types': 0.133.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.3 + '@rolldown/binding-darwin-arm64': 1.0.3 + '@rolldown/binding-darwin-x64': 1.0.3 + '@rolldown/binding-freebsd-x64': 1.0.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.3 + '@rolldown/binding-linux-arm64-gnu': 1.0.3 + '@rolldown/binding-linux-arm64-musl': 1.0.3 + '@rolldown/binding-linux-ppc64-gnu': 1.0.3 + '@rolldown/binding-linux-s390x-gnu': 1.0.3 + '@rolldown/binding-linux-x64-gnu': 1.0.3 + '@rolldown/binding-linux-x64-musl': 1.0.3 + '@rolldown/binding-openharmony-arm64': 1.0.3 + '@rolldown/binding-wasm32-wasi': 1.0.3 + '@rolldown/binding-win32-arm64-msvc': 1.0.3 + '@rolldown/binding-win32-x64-msvc': 1.0.3 + + rolldown@1.1.2: + dependencies: + '@oxc-project/types': 0.137.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.1.2 + '@rolldown/binding-darwin-arm64': 1.1.2 + '@rolldown/binding-darwin-x64': 1.1.2 + '@rolldown/binding-freebsd-x64': 1.1.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.2 + '@rolldown/binding-linux-arm64-gnu': 1.1.2 + '@rolldown/binding-linux-arm64-musl': 1.1.2 + '@rolldown/binding-linux-ppc64-gnu': 1.1.2 + '@rolldown/binding-linux-s390x-gnu': 1.1.2 + '@rolldown/binding-linux-x64-gnu': 1.1.2 + '@rolldown/binding-linux-x64-musl': 1.1.2 + '@rolldown/binding-openharmony-arm64': 1.1.2 + '@rolldown/binding-wasm32-wasi': 1.1.2 + '@rolldown/binding-win32-arm64-msvc': 1.1.2 + '@rolldown/binding-win32-x64-msvc': 1.1.2 + + rollup-plugin-svelte@7.2.3(rollup@4.52.5)(svelte@5.55.1): + dependencies: + '@rollup/pluginutils': 4.2.1 + resolve.exports: 2.0.3 + rollup: 4.52.5 + svelte: 5.55.1 + rollup@4.52.5: dependencies: '@types/estree': 1.0.8 @@ -10069,10 +13706,27 @@ snapshots: rrweb-cssom@0.8.0: {} + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.4: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 @@ -10105,6 +13759,8 @@ snapshots: semver@7.7.3: {} + semver@7.8.4: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -10152,6 +13808,12 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + setprototypeof@1.2.0: {} shallow-clone@3.0.1: @@ -10221,6 +13883,20 @@ snapshots: sisteransi@1.0.5: {} + size-limit@12.1.0(jiti@2.7.0): + dependencies: + bytes-iec: 3.1.1 + lilconfig: 3.1.3 + nanospinner: 1.2.2 + picocolors: 1.1.1 + tinyglobby: 0.2.17 + optionalDependencies: + jiti: 2.7.0 + + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + slash@3.0.0: {} slice-ansi@2.1.0: @@ -10234,6 +13910,8 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 + smol-toml@1.6.1: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -10311,6 +13989,51 @@ snapshots: get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.trim@1.2.11: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + has-property-descriptors: 1.0.2 + safe-regex-test: 1.1.0 + + string.prototype.trimend@1.0.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -10350,6 +14073,8 @@ snapshots: strip-json-comments@3.1.1: {} + strip-json-comments@5.0.3: {} + strnum@1.1.2: {} sucrase@3.35.0: @@ -10380,8 +14105,25 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} + svelte-eslint-parser@1.8.0(svelte@5.55.1): + dependencies: + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + postcss: 8.5.6 + postcss-scss: 4.0.9(postcss@8.5.6) + postcss-selector-parser: 7.1.4 + semver: 7.7.3 + optionalDependencies: + svelte: 5.55.1 + svelte@5.55.1: dependencies: '@jridgewell/remapping': 2.3.5 @@ -10456,11 +14198,18 @@ snapshots: tinyexec@0.3.2: {} + tinyexec@1.2.4: {} + tinyglobby@0.2.15: dependencies: 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 + tinypool@1.1.1: {} tinyrainbow@1.2.0: {} @@ -10496,11 +14245,72 @@ snapshots: trim-lines@3.0.1: {} + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + ts-interface-checker@0.1.13: {} + tsdown@0.22.3(@arethetypeswrong/core@0.18.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3): + dependencies: + ansis: 4.3.1 + cac: 7.0.0 + defu: 6.1.7 + empathic: 2.0.1 + hookable: 6.1.1 + import-without-cache: 0.4.0 + obug: 2.1.3 + picomatch: 4.0.4 + rolldown: 1.1.2 + rolldown-plugin-dts: 0.26.0(oxc-resolver@11.21.3)(rolldown@1.1.2)(typescript@5.9.3) + semver: 7.8.4 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tree-kill: 1.2.2 + unconfig-core: 7.5.0 + optionalDependencies: + '@arethetypeswrong/core': 0.18.3 + publint: 0.3.21 + tsx: 4.20.6 + typescript: 5.9.3 + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@typescript/native-preview' + - oxc-resolver + - vue-tsc + tslib@2.8.1: {} - tsup@8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): + tsup@8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0): + dependencies: + bundle-require: 5.1.0(esbuild@0.25.12) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.25.12 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(yaml@2.9.0) + resolve-from: 5.0.0 + rollup: 4.52.5 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.57.7(@types/node@24.10.0) + postcss: 8.5.15 + typescript: 5.9.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0): dependencies: bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 @@ -10511,7 +14321,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.9.0) resolve-from: 5.0.0 rollup: 4.52.5 source-map: 0.8.0-beta.0 @@ -10567,6 +14377,10 @@ snapshots: turbo-windows-64: 2.6.0 turbo-windows-arm64: 2.6.0 + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + type-detect@4.0.8: {} type-fest@0.7.1: {} @@ -10576,6 +14390,52 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.8: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + eslint: 10.5.0(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.6.1-rc: {} + typescript@5.8.2: {} typescript@5.9.3: {} @@ -10587,10 +14447,26 @@ snapshots: commander: 2.13.0 source-map: 0.6.1 + unbash@4.0.1: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unconfig-core@7.5.0: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + undici-types@7.16.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} + unicode-emoji-modifier-base@1.0.0: {} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 @@ -10631,12 +14507,45 @@ snapshots: unpipe@1.0.0: {} + unplugin-vue@7.2.0(@types/node@24.10.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.44.0)(tsx@4.20.6)(vue@3.5.26(typescript@5.9.3))(yaml@2.9.0): + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@vue/reactivity': 3.5.38 + obug: 2.1.3 + unplugin: 3.0.0 + vite: 8.0.16(@types/node@24.10.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.9.0) + vue: 3.5.26(typescript@5.9.3) + transitivePeerDependencies: + - '@types/node' + - '@vitejs/devtools' + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + unplugin@3.0.0: + dependencies: + '@jridgewell/remapping': 2.3.5 + picomatch: 4.0.4 + webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.1.4(browserslist@4.27.0): dependencies: browserslist: 4.27.0 escalade: 3.2.0 picocolors: 1.1.1 + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + url-parse@1.5.10: dependencies: querystringify: 2.2.0 @@ -10650,6 +14559,8 @@ snapshots: utils-merge@1.0.1: {} + validate-npm-package-name@5.0.1: {} + vary@1.1.2: {} vfile-message@4.0.3: @@ -10662,13 +14573,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@2.1.9(@types/node@24.10.0)(terser@5.44.0): + vite-node@2.1.9(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - less @@ -10680,7 +14591,7 @@ snapshots: - supports-color - terser - vite-plugin-dts@4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)): + vite-plugin-dts@4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)): dependencies: '@microsoft/api-extractor': 7.57.7(@types/node@24.10.0) '@rollup/pluginutils': 5.3.0(rollup@4.52.5) @@ -10693,13 +14604,13 @@ snapshots: magic-string: 0.30.21 typescript: 5.9.3 optionalDependencies: - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@5.4.21(@types/node@24.10.0)(terser@5.44.0): + vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 @@ -10707,13 +14618,30 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 fsevents: 2.3.3 + lightningcss: 1.32.0 terser: 5.44.0 - vitefu@1.1.2(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)): + vite@8.0.16(@types/node@24.10.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.9.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.15 + rolldown: 1.0.3 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.10.0 + esbuild: 0.28.1 + fsevents: 2.3.3 + jiti: 2.7.0 + terser: 5.44.0 + tsx: 4.20.6 + yaml: 2.9.0 + + vitefu@1.1.2(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)): optionalDependencies: - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) - vitepress@1.6.4(@algolia/client-search@5.46.1)(@types/node@24.10.0)(@types/react@18.3.26)(axios@1.13.2)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(terser@5.44.0)(typescript@5.9.3): + vitepress@1.6.4(@algolia/client-search@5.46.1)(@types/node@24.10.0)(@types/react@18.3.26)(axios@1.13.2)(lightningcss@1.32.0)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(terser@5.44.0)(typescript@5.9.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.46.1)(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) @@ -10722,7 +14650,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0))(vue@3.5.26(typescript@5.9.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))(vue@3.5.26(typescript@5.9.3)) '@vue/devtools-api': 7.7.9 '@vue/shared': 3.5.26 '@vueuse/core': 12.8.2(typescript@5.9.3) @@ -10731,7 +14659,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) vue: 3.5.26(typescript@5.9.3) optionalDependencies: postcss: 8.5.6 @@ -10762,10 +14690,10 @@ snapshots: - typescript - universal-cookie - vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(terser@5.44.0): + vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@24.10.0)(terser@5.44.0)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -10781,8 +14709,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.21(@types/node@24.10.0)(terser@5.44.0) - vite-node: 2.1.9(@types/node@24.10.0)(terser@5.44.0) + vite: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) + vite-node: 2.1.9(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.0 @@ -10802,6 +14730,18 @@ snapshots: vscode-uri@3.1.0: {} + vue-eslint-parser@10.4.1(eslint@10.5.0(jiti@2.7.0)): + dependencies: + debug: 4.4.3 + eslint: 10.5.0(jiti@2.7.0) + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + semver: 7.7.3 + transitivePeerDependencies: + - supports-color + vue-tsc@2.2.12(typescript@5.9.3): dependencies: '@volar/typescript': 2.4.15 @@ -10822,6 +14762,8 @@ snapshots: dependencies: xml-name-validator: 5.0.0 + walk-up-path@4.0.0: {} + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -10836,6 +14778,8 @@ snapshots: webidl-conversions@7.0.0: {} + webpack-virtual-modules@0.6.2: {} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -10868,6 +14812,22 @@ snapshots: is-string: 1.1.1 is-symbol: 1.1.1 + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.2.0 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + which-collection@1.0.2: dependencies: is-map: 2.0.3 @@ -10902,6 +14862,8 @@ snapshots: dependencies: string-width: 4.2.3 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -10942,6 +14904,8 @@ snapshots: ws@8.18.3: {} + xml-name-validator@4.0.0: {} + xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} @@ -10956,13 +14920,19 @@ snapshots: yallist@4.0.0: {} + yaml@1.10.3: {} + yaml@2.8.1: {} + yaml@2.9.0: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} yargs@15.4.1: @@ -10979,6 +14949,16 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 + yargs@16.2.2: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -10993,4 +14973,10 @@ snapshots: zimmerframe@1.1.4: {} + zod-validation-error@4.0.2(zod@4.4.3): + dependencies: + zod: 4.4.3 + + zod@4.4.3: {} + zwitch@2.0.4: {} From c9397e2ea964a4e5253c3ef623ebcad4c4be7225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 20 Jun 2026 03:15:53 +0900 Subject: [PATCH 60/77] =?UTF-8?q?build:=20tsup/vite=20=E2=86=92=20tsdown?= =?UTF-8?q?=20=EC=A0=84=ED=99=98=20(svelte=20=EC=A0=9C=EC=99=B8=206?= =?UTF-8?q?=EA=B0=9C=20=ED=8C=A8=ED=82=A4=EC=A7=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - core/shared/react/react-native/preact/vue를 tsdown(Rolldown)으로 통일. vue는 unplugin-vue + dts:{vue:true}, preact는 @tsdown/css로 CSS 추출. - ESM/CJS 듀얼 출력 + 포맷별 .d.mts/.d.cts 방출(fixedExtension), minify(oxc), 소스맵/선언맵 제거로 경량 dist. - exports를 condition-specific(import/require별 types) 형태로 교정 → attw-clean. preact는 exports가 가리키던 index.mjs와 실제 index.js 불일치 버그도 해소. - svelte는 vite 유지: 이미 최적(2.15KB)이고 .svelte dts(얇은 re-export+src 동봉)가 svelte 고유 패턴이라 rolldown-plugin-dts로 대체 부적합. - 루트 tsconfig sourceMap/declarationMap off, legacy tsup 스크립트/설정 제거. --- package.json | 3 +- packages/core/package.json | 17 ++++--- packages/core/tsconfig.json | 4 +- packages/core/tsdown.config.ts | 12 +++++ packages/core/tsup.config.ts | 39 ---------------- packages/preact/package.json | 21 +++++---- packages/preact/tsconfig.json | 4 +- packages/preact/tsdown.config.ts | 13 ++++++ packages/preact/tsup.config.ts | 14 ------ packages/react-native/package.json | 17 ++++--- packages/react-native/tsconfig.json | 2 +- packages/react-native/tsdown.config.ts | 14 ++++++ packages/react-native/tsup.config.ts | 41 ----------------- packages/react/package.json | 17 ++++--- packages/react/tsconfig.json | 2 +- packages/react/tsdown.config.ts | 14 ++++++ packages/react/tsup.config.ts | 41 ----------------- packages/shared/package.json | 17 ++++--- packages/shared/tsconfig.json | 2 +- packages/shared/tsdown.config.ts | 12 +++++ packages/shared/tsup.config.ts | 40 ----------------- packages/vue/package.json | 17 ++++--- packages/vue/tsconfig.json | 4 +- packages/vue/tsdown.config.ts | 15 +++++++ packages/vue/vite.config.ts | 17 ------- pnpm-lock.yaml | 61 +++++++++++++++++++++++++- tsconfig.json | 4 +- tsup.config.ts | 19 -------- tsup.dev.ts | 18 -------- 29 files changed, 219 insertions(+), 282 deletions(-) create mode 100644 packages/core/tsdown.config.ts delete mode 100644 packages/core/tsup.config.ts create mode 100644 packages/preact/tsdown.config.ts delete mode 100644 packages/preact/tsup.config.ts create mode 100644 packages/react-native/tsdown.config.ts delete mode 100644 packages/react-native/tsup.config.ts create mode 100644 packages/react/tsdown.config.ts delete mode 100644 packages/react/tsup.config.ts create mode 100644 packages/shared/tsdown.config.ts delete mode 100644 packages/shared/tsup.config.ts create mode 100644 packages/vue/tsdown.config.ts delete mode 100644 packages/vue/vite.config.ts delete mode 100644 tsup.config.ts delete mode 100644 tsup.dev.ts diff --git a/package.json b/package.json index ca92094..b98ba66 100644 --- a/package.json +++ b/package.json @@ -47,8 +47,6 @@ "test:e2e": "pnpm --filter @scrolloop/react test:e2e", "typecheck": "turbo run typecheck", "lint": "turbo run lint", - "build:legacy": "tsup", - "dev:legacy": "tsup --config tsup.dev.ts --watch", "docs:dev": "vitepress dev docs", "docs:build": "vitepress build docs", "docs:preview": "vitepress preview docs", @@ -113,6 +111,7 @@ "turbo": "^2.0.0", "typescript": "^5.0.0", "typescript-eslint": "8.61.1", + "unrun": "^0.3.1", "vitepress": "^1.6.4", "vitest": "^2.0.0", "vue": "^3.5.26", diff --git a/packages/core/package.json b/packages/core/package.json index 8e5d316..228fac4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -6,12 +6,17 @@ "private": true, "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.cts", "exports": { ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } } }, "sideEffects": false, @@ -19,8 +24,8 @@ "dist" ], "scripts": { - "build": "tsup", - "dev": "tsup --watch", + "build": "tsdown", + "dev": "tsdown --watch", "test": "vitest run --passWithNoTests", "test:watch": "vitest", "typecheck": "tsc --noEmit" diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 04870e0..22941a2 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -3,12 +3,12 @@ "compilerOptions": { "outDir": "./dist", "declaration": true, - "declarationMap": true, + "declarationMap": false, "types": ["vitest/globals"], "noUncheckedIndexedAccess": true, "exactOptionalPropertyTypes": true, "noImplicitOverride": true }, - "include": ["src/**/*", "tsup.config.ts"], + "include": ["src/**/*", "tsdown.config.ts"], "exclude": ["node_modules", "dist", "**/*.test.ts"] } diff --git a/packages/core/tsdown.config.ts b/packages/core/tsdown.config.ts new file mode 100644 index 0000000..0c56ae8 --- /dev/null +++ b/packages/core/tsdown.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: ["./src/index.ts"], + format: ["esm", "cjs"], + dts: true, + platform: "neutral", + treeshake: true, + minify: true, + sourcemap: false, + fixedExtension: true, +}); diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts deleted file mode 100644 index 5b3cb55..0000000 --- a/packages/core/tsup.config.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["cjs", "esm"], - dts: true, - clean: true, - sourcemap: process.env.NODE_ENV === "development", - treeshake: true, - minify: "terser", - terserOptions: { - compress: { - passes: 3, - drop_console: true, - drop_debugger: true, - pure_funcs: ["console.log", "console.debug"], - unsafe: false, - unsafe_arrows: false, - unsafe_methods: true, - booleans_as_integers: false, - ecma: 2020, - }, - mangle: { - safari10: false, - }, - format: { - comments: false, - }, - }, - target: "es2022", - outExtension({ format }) { - return { - js: format === "esm" ? ".mjs" : ".cjs", - }; - }, - esbuildOptions(options) { - options.legalComments = "none"; - }, -}); diff --git a/packages/preact/package.json b/packages/preact/package.json index 4215aaf..46ab795 100644 --- a/packages/preact/package.json +++ b/packages/preact/package.json @@ -5,24 +5,28 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.cts", "exports": { ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } } }, "sideEffects": [ "**/*.css" ], "files": [ - "dist", - "src" + "dist" ], "scripts": { - "build": "tsup", - "dev": "tsup --watch" + "build": "tsdown", + "dev": "tsdown --watch" }, "peerDependencies": { "preact": ">=10.0.0" @@ -32,6 +36,7 @@ "@scrolloop/shared": "workspace:*" }, "devDependencies": { + "@tsdown/css": "^0.22.3", "preact": "^10.0.0", "tsup": "^8.0.0", "typescript": "^5.0.0" diff --git a/packages/preact/tsconfig.json b/packages/preact/tsconfig.json index 87c7c5e..cc65383 100644 --- a/packages/preact/tsconfig.json +++ b/packages/preact/tsconfig.json @@ -3,9 +3,9 @@ "compilerOptions": { "outDir": "./dist", "declaration": true, - "declarationMap": true, + "declarationMap": false, "jsxImportSource": "preact" }, - "include": ["src/**/*.ts", "src/**/*.tsx", "tsup.config.ts"], + "include": ["src/**/*.ts", "src/**/*.tsx", "tsdown.config.ts"], "exclude": ["node_modules", "dist"] } diff --git a/packages/preact/tsdown.config.ts b/packages/preact/tsdown.config.ts new file mode 100644 index 0000000..a863375 --- /dev/null +++ b/packages/preact/tsdown.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: ["./src/index.ts"], + format: ["esm", "cjs"], + dts: true, + platform: "neutral", + treeshake: true, + minify: true, + sourcemap: false, + fixedExtension: true, + external: ["preact", "preact/hooks", "@scrolloop/core", "@scrolloop/shared"], +}); diff --git a/packages/preact/tsup.config.ts b/packages/preact/tsup.config.ts deleted file mode 100644 index ff03e03..0000000 --- a/packages/preact/tsup.config.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm", "cjs"], - dts: true, - sourcemap: true, - clean: true, - external: ["preact", "preact/hooks", "@scrolloop/core", "@scrolloop/shared"], - esbuildOptions(options) { - options.jsxImportSource = "preact"; - options.jsx = "automatic"; - }, -}); diff --git a/packages/react-native/package.json b/packages/react-native/package.json index f5e1c3b..9fc2b39 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -5,12 +5,17 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.cts", "exports": { ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } } }, "sideEffects": false, @@ -18,8 +23,8 @@ "dist" ], "scripts": { - "build": "tsup", - "dev": "tsup --watch", + "build": "tsdown", + "dev": "tsdown --watch", "test": "vitest run --passWithNoTests", "test:watch": "vitest", "typecheck": "tsc --noEmit" diff --git a/packages/react-native/tsconfig.json b/packages/react-native/tsconfig.json index c272b6b..1d163de 100644 --- a/packages/react-native/tsconfig.json +++ b/packages/react-native/tsconfig.json @@ -5,6 +5,6 @@ "outDir": "./dist", "types": ["vitest/globals"] }, - "include": ["src/**/*", "tsup.config.ts"], + "include": ["src/**/*", "tsdown.config.ts"], "exclude": ["node_modules", "dist"] } diff --git a/packages/react-native/tsdown.config.ts b/packages/react-native/tsdown.config.ts new file mode 100644 index 0000000..b508ede --- /dev/null +++ b/packages/react-native/tsdown.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: ["./src/index.ts"], + format: ["esm", "cjs"], + dts: true, + platform: "neutral", + treeshake: true, + minify: true, + sourcemap: false, + fixedExtension: true, + external: ["react", "react-native"], + noExternal: ["@scrolloop/core", "@scrolloop/shared"], +}); diff --git a/packages/react-native/tsup.config.ts b/packages/react-native/tsup.config.ts deleted file mode 100644 index 9ed709c..0000000 --- a/packages/react-native/tsup.config.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["cjs", "esm"], - dts: true, - clean: true, - sourcemap: process.env.NODE_ENV === "development", - treeshake: true, - minify: "terser", - terserOptions: { - compress: { - passes: 3, - drop_console: true, - drop_debugger: true, - pure_funcs: ["console.log", "console.debug"], - unsafe: false, - unsafe_arrows: false, - unsafe_methods: true, - booleans_as_integers: false, - ecma: 2020, - }, - mangle: { - safari10: false, - }, - format: { - comments: false, - }, - }, - target: "es2020", - external: ["react", "react-native"], - noExternal: ["@scrolloop/core", "@scrolloop/shared"], - outExtension({ format }) { - return { - js: format === "esm" ? ".mjs" : ".cjs", - }; - }, - esbuildOptions(options) { - options.legalComments = "none"; - }, -}); diff --git a/packages/react/package.json b/packages/react/package.json index 5290ad6..c220477 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -5,12 +5,17 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.cts", "exports": { ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } } }, "sideEffects": false, @@ -18,8 +23,8 @@ "dist" ], "scripts": { - "build": "tsup", - "dev": "tsup --watch", + "build": "tsdown", + "dev": "tsdown --watch", "test": "vitest run", "test:watch": "vitest", "test:ssr": "vitest run src/__tests__/ssr/ssr.test.ts", diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index 3ad5522..5b74da1 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -5,6 +5,6 @@ "outDir": "./dist", "types": ["vitest/globals"] }, - "include": ["src/**/*", "tsup.config.ts", "vitest.setup.ts"], + "include": ["src/**/*", "tsdown.config.ts", "vitest.setup.ts"], "exclude": ["node_modules", "dist"] } diff --git a/packages/react/tsdown.config.ts b/packages/react/tsdown.config.ts new file mode 100644 index 0000000..3815973 --- /dev/null +++ b/packages/react/tsdown.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: ["./src/index.ts"], + format: ["esm", "cjs"], + dts: true, + platform: "neutral", + treeshake: true, + minify: true, + sourcemap: false, + fixedExtension: true, + external: ["react", "react-dom"], + noExternal: ["@scrolloop/core", "@scrolloop/shared"], +}); diff --git a/packages/react/tsup.config.ts b/packages/react/tsup.config.ts deleted file mode 100644 index ec3bc07..0000000 --- a/packages/react/tsup.config.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["cjs", "esm"], - dts: true, - clean: true, - sourcemap: process.env.NODE_ENV === "development", - treeshake: true, - minify: "terser", - terserOptions: { - compress: { - passes: 3, - drop_console: true, - drop_debugger: true, - pure_funcs: ["console.log", "console.debug"], - unsafe: false, - unsafe_arrows: false, - unsafe_methods: true, - booleans_as_integers: false, - ecma: 2020, - }, - mangle: { - safari10: false, - }, - format: { - comments: false, - }, - }, - target: "es2020", - external: ["react", "react-dom"], - noExternal: ["@scrolloop/core", "@scrolloop/shared"], - outExtension({ format }) { - return { - js: format === "esm" ? ".mjs" : ".cjs", - }; - }, - esbuildOptions(options) { - options.legalComments = "none"; - }, -}); diff --git a/packages/shared/package.json b/packages/shared/package.json index 982aad4..2384a81 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -6,12 +6,17 @@ "private": true, "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.cts", "exports": { ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } } }, "sideEffects": false, @@ -19,8 +24,8 @@ "dist" ], "scripts": { - "build": "tsup", - "dev": "tsup --watch", + "build": "tsdown", + "dev": "tsdown --watch", "test": "vitest run --passWithNoTests", "test:watch": "vitest", "typecheck": "tsc --noEmit" diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json index c272b6b..1d163de 100644 --- a/packages/shared/tsconfig.json +++ b/packages/shared/tsconfig.json @@ -5,6 +5,6 @@ "outDir": "./dist", "types": ["vitest/globals"] }, - "include": ["src/**/*", "tsup.config.ts"], + "include": ["src/**/*", "tsdown.config.ts"], "exclude": ["node_modules", "dist"] } diff --git a/packages/shared/tsdown.config.ts b/packages/shared/tsdown.config.ts new file mode 100644 index 0000000..0c56ae8 --- /dev/null +++ b/packages/shared/tsdown.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: ["./src/index.ts"], + format: ["esm", "cjs"], + dts: true, + platform: "neutral", + treeshake: true, + minify: true, + sourcemap: false, + fixedExtension: true, +}); diff --git a/packages/shared/tsup.config.ts b/packages/shared/tsup.config.ts deleted file mode 100644 index eb77cd7..0000000 --- a/packages/shared/tsup.config.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["cjs", "esm"], - dts: true, - clean: true, - sourcemap: process.env.NODE_ENV === "development", - treeshake: true, - minify: "terser", - terserOptions: { - compress: { - passes: 3, - drop_console: true, - drop_debugger: true, - pure_funcs: ["console.log", "console.debug"], - unsafe: false, - unsafe_arrows: false, - unsafe_methods: true, - booleans_as_integers: false, - ecma: 2020, - }, - mangle: { - safari10: false, - }, - format: { - comments: false, - }, - }, - target: "es2020", - external: ["react"], - outExtension({ format }) { - return { - js: format === "esm" ? ".mjs" : ".cjs", - }; - }, - esbuildOptions(options) { - options.legalComments = "none"; - }, -}); diff --git a/packages/vue/package.json b/packages/vue/package.json index 0efb7a1..1df19c0 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -5,12 +5,17 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.cts", "exports": { ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } } }, "sideEffects": false, @@ -18,8 +23,8 @@ "dist" ], "scripts": { - "build": "vite build", - "dev": "vite build --watch" + "build": "tsdown", + "dev": "tsdown --watch" }, "peerDependencies": { "vue": ">=3.3.0" diff --git a/packages/vue/tsconfig.json b/packages/vue/tsconfig.json index 91503bb..f6dfb64 100644 --- a/packages/vue/tsconfig.json +++ b/packages/vue/tsconfig.json @@ -3,9 +3,9 @@ "compilerOptions": { "outDir": "./dist", "declaration": true, - "declarationMap": true, + "declarationMap": false, "jsx": "preserve" }, - "include": ["src/**/*", "vite.config.ts"], + "include": ["src/**/*", "tsdown.config.ts"], "exclude": ["node_modules", "dist"] } diff --git a/packages/vue/tsdown.config.ts b/packages/vue/tsdown.config.ts new file mode 100644 index 0000000..f7fc4b6 --- /dev/null +++ b/packages/vue/tsdown.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from "tsdown"; +import Vue from "unplugin-vue/rolldown"; + +export default defineConfig({ + entry: ["./src/index.ts"], + format: ["esm", "cjs"], + dts: { vue: true }, + platform: "neutral", + treeshake: true, + minify: true, + sourcemap: false, + fixedExtension: true, + external: ["vue", "@scrolloop/core", "@scrolloop/shared"], + plugins: [Vue({ isProduction: true })], +}); diff --git a/packages/vue/vite.config.ts b/packages/vue/vite.config.ts deleted file mode 100644 index db44058..0000000 --- a/packages/vue/vite.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineConfig } from "vite"; -import vue from "@vitejs/plugin-vue"; -import dts from "vite-plugin-dts"; - -export default defineConfig({ - plugins: [vue(), dts({ include: ["src/**/*"] })], - build: { - lib: { - entry: "src/index.ts", - formats: ["es", "cjs"], - fileName: (format) => `index.${format === "es" ? "mjs" : "cjs"}`, - }, - rollupOptions: { - external: ["vue", "@scrolloop/core", "@scrolloop/shared"], - }, - }, -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1c6da27..ba5682c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -103,7 +103,7 @@ importers: version: 5.44.0 tsdown: specifier: 0.22.3 - version: 0.22.3(@arethetypeswrong/core@0.18.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3) + version: 0.22.3(@arethetypeswrong/core@0.18.3)(@tsdown/css@0.22.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3)(unrun@0.3.1) tsup: specifier: ^8.0.0 version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) @@ -116,6 +116,9 @@ importers: typescript-eslint: specifier: 8.61.1 version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@5.9.3) + unrun: + specifier: ^0.3.1 + version: 0.3.1 vitepress: specifier: ^1.6.4 version: 1.6.4(@algolia/client-search@5.46.1)(@types/node@24.10.0)(@types/react@18.3.26)(axios@1.13.2)(lightningcss@1.32.0)(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(terser@5.44.0)(typescript@5.9.3) @@ -153,6 +156,9 @@ importers: specifier: workspace:* version: link:../shared devDependencies: + '@tsdown/css': + specifier: ^0.22.3 + version: 0.22.3(jiti@2.7.0)(postcss@8.5.15)(tsdown@0.22.3)(tsx@4.20.6)(yaml@2.9.0) preact: specifier: ^10.0.0 version: 10.28.0 @@ -2815,6 +2821,28 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@tsdown/css@0.22.3': + resolution: {integrity: sha512-kmb/31lcI/Pk26WeWJxQDLy8qkvoyfBkw3n9aN6bflKkoeLqnV2BRbndzfPRJY+Ziahi796gfgDVc+ftLIgWVw==} + engines: {node: ^22.18.0 || >=24.11.0} + peerDependencies: + postcss: ^8.4.0 + postcss-import: ^16.0.0 + postcss-modules: ^6.0.0 + sass: '*' + sass-embedded: '*' + tsdown: 0.22.3 + peerDependenciesMeta: + postcss: + optional: true + postcss-import: + optional: true + postcss-modules: + optional: true + sass: + optional: true + sass-embedded: + optional: true + '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} @@ -6850,6 +6878,16 @@ packages: resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} engines: {node: ^20.19.0 || >=22.12.0} + unrun@0.3.1: + resolution: {integrity: sha512-onIck/oNnCaytwths1ZVp1LK2Gq2hPoyFhiHebObuUXqR3S0uHuLLaBK8K6mRRgV7Ptip8AnNvaUsgzwWwBZuA==} + engines: {node: ^22.13.0 || >=24.0.0} + hasBin: true + peerDependencies: + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true + update-browserslist-db@1.1.4: resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true @@ -9661,6 +9699,19 @@ snapshots: dependencies: '@testing-library/dom': 9.3.4 + '@tsdown/css@0.22.3(jiti@2.7.0)(postcss@8.5.15)(tsdown@0.22.3)(tsx@4.20.6)(yaml@2.9.0)': + dependencies: + lightningcss: 1.32.0 + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(yaml@2.9.0) + rolldown: 1.1.2 + tsdown: 0.22.3(@arethetypeswrong/core@0.18.3)(@tsdown/css@0.22.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3)(unrun@0.3.1) + optionalDependencies: + postcss: 8.5.15 + transitivePeerDependencies: + - jiti + - tsx + - yaml + '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 @@ -14251,7 +14302,7 @@ snapshots: ts-interface-checker@0.1.13: {} - tsdown@0.22.3(@arethetypeswrong/core@0.18.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3): + tsdown@0.22.3(@arethetypeswrong/core@0.18.3)(@tsdown/css@0.22.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3)(unrun@0.3.1): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -14270,9 +14321,11 @@ snapshots: unconfig-core: 7.5.0 optionalDependencies: '@arethetypeswrong/core': 0.18.3 + '@tsdown/css': 0.22.3(jiti@2.7.0)(postcss@8.5.15)(tsdown@0.22.3)(tsx@4.20.6)(yaml@2.9.0) publint: 0.3.21 tsx: 4.20.6 typescript: 5.9.3 + unrun: 0.3.1 transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' @@ -14536,6 +14589,10 @@ snapshots: picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 + unrun@0.3.1: + dependencies: + rolldown: 1.1.2 + update-browserslist-db@1.1.4(browserslist@4.27.0): dependencies: browserslist: 4.27.0 diff --git a/tsconfig.json b/tsconfig.json index 3ede291..fe6709b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,8 +6,8 @@ "moduleResolution": "bundler", "jsx": "react-jsx", "declaration": true, - "declarationMap": true, - "sourceMap": true, + "declarationMap": false, + "sourceMap": false, "outDir": "./dist", "strict": true, "esModuleInterop": true, diff --git a/tsup.config.ts b/tsup.config.ts deleted file mode 100644 index be60412..0000000 --- a/tsup.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm", "cjs"], - dts: true, - treeshake: true, - splitting: false, - sourcemap: true, - clean: true, - minify: true, - external: ["react", "react-dom"], - noExternal: ["@scrolloop/core", "@scrolloop/shared"], - outExtension({ format }) { - return { - js: format === "esm" ? ".mjs" : ".cjs", - }; - }, -}); diff --git a/tsup.dev.ts b/tsup.dev.ts deleted file mode 100644 index 3be1e39..0000000 --- a/tsup.dev.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm", "cjs"], - dts: true, - splitting: false, - sourcemap: true, - clean: true, - minify: false, - external: ["react", "react-dom"], - outExtension({ format }) { - return { - js: format === "esm" ? ".mjs" : ".cjs", - }; - }, -}); - From 8f3bc23969ad0bf40775aa5c4cc709aff64a7ad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 20 Jun 2026 03:17:33 +0900 Subject: [PATCH 61/77] =?UTF-8?q?build(deps):=20tsup/terser/bundlesize=20?= =?UTF-8?q?=EB=B0=8F=20vue/svelte=20vite=20=EB=8F=84=EA=B5=AC=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tsdown 전환으로 불필요해진 의존성 정리: - 루트 + 각 패키지의 tsup, 루트 terser(oxc-minify 내장)·bundlesize(죽음) - vue: @vitejs/plugin-vue, vite, vite-plugin-dts (tsdown으로 대체) - svelte: 미사용 rollup-plugin-svelte (vite 유지 결정) --- package.json | 3 - packages/core/package.json | 1 - packages/preact/package.json | 1 - packages/react-native/package.json | 1 - packages/react/package.json | 1 - packages/shared/package.json | 1 - packages/svelte/package.json | 1 - packages/vue/package.json | 3 - pnpm-lock.yaml | 727 ++--------------------------- 9 files changed, 27 insertions(+), 712 deletions(-) diff --git a/package.json b/package.json index b98ba66..f19eb2f 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,6 @@ "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", "@vitest/coverage-v8": "^2.0.0", - "bundlesize": "^0.18.2", "eslint": "10.5.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-oxlint": "1.70.0", @@ -105,9 +104,7 @@ "react-dom": "^18.2.0", "size-limit": "12.1.0", "svelte-eslint-parser": "1.8.0", - "terser": "^5.44.0", "tsdown": "0.22.3", - "tsup": "^8.0.0", "turbo": "^2.0.0", "typescript": "^5.0.0", "typescript-eslint": "8.61.1", diff --git a/packages/core/package.json b/packages/core/package.json index 228fac4..46daa40 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -39,7 +39,6 @@ "license": "MIT", "devDependencies": { "@vitest/coverage-v8": "^2.0.0", - "tsup": "^8.0.0", "typescript": "^5.0.0", "vitest": "^2.0.0" } diff --git a/packages/preact/package.json b/packages/preact/package.json index 46ab795..3ca5e99 100644 --- a/packages/preact/package.json +++ b/packages/preact/package.json @@ -38,7 +38,6 @@ "devDependencies": { "@tsdown/css": "^0.22.3", "preact": "^10.0.0", - "tsup": "^8.0.0", "typescript": "^5.0.0" }, "license": "MIT" diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 9fc2b39..fb67edf 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -42,7 +42,6 @@ "@types/react-native": "^0.72.0", "react": "^18.2.0", "react-native": "^0.72.0", - "tsup": "^8.0.0", "typescript": "^5.0.0", "vitest": "^2.0.0" }, diff --git a/packages/react/package.json b/packages/react/package.json index c220477..fa78ab8 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -53,7 +53,6 @@ "jsdom": "^24.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "tsup": "^8.0.0", "tsx": "^4.7.0", "typescript": "^5.0.0", "vitest": "^2.0.0" diff --git a/packages/shared/package.json b/packages/shared/package.json index 2384a81..aa8e68d 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -37,7 +37,6 @@ ], "license": "MIT", "devDependencies": { - "tsup": "^8.0.0", "typescript": "^5.0.0", "vitest": "^2.0.0" } diff --git a/packages/svelte/package.json b/packages/svelte/package.json index e07a661..739ba0c 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -31,7 +31,6 @@ }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^4.0.0", - "rollup-plugin-svelte": "7.2.3", "svelte": "^5.0.0", "typescript": "^5.0.0", "vite": "^5.0.0", diff --git a/packages/vue/package.json b/packages/vue/package.json index 1df19c0..9d17227 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -34,11 +34,8 @@ "@scrolloop/shared": "workspace:*" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.0.0", "typescript": "^5.0.0", "unplugin-vue": "7.2.0", - "vite": "^5.0.0", - "vite-plugin-dts": "^4.0.0", "vue": "^3.3.0", "vue-tsc": "^2.0.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba5682c..9672f7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,9 +38,6 @@ importers: '@vitest/coverage-v8': specifier: ^2.0.0 version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0)) - bundlesize: - specifier: ^0.18.2 - version: 0.18.2 eslint: specifier: 10.5.0 version: 10.5.0(jiti@2.7.0) @@ -98,15 +95,9 @@ importers: svelte-eslint-parser: specifier: 1.8.0 version: 1.8.0(svelte@5.55.1) - terser: - specifier: ^5.44.0 - version: 5.44.0 tsdown: specifier: 0.22.3 version: 0.22.3(@arethetypeswrong/core@0.18.3)(@tsdown/css@0.22.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3)(unrun@0.3.1) - tsup: - specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) turbo: specifier: ^2.0.0 version: 2.6.0 @@ -137,9 +128,6 @@ importers: '@vitest/coverage-v8': specifier: ^2.0.0 version: 2.1.9(vitest@2.1.9(@types/node@24.10.0)(jsdom@24.1.3)(lightningcss@1.32.0)(terser@5.44.0)) - tsup: - specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 @@ -162,9 +150,6 @@ importers: preact: specifier: ^10.0.0 version: 10.28.0 - tsup: - specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 @@ -217,9 +202,6 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) - tsup: - specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) tsx: specifier: ^4.7.0 version: 4.20.6 @@ -251,9 +233,6 @@ importers: react-native: specifier: ^0.72.0 version: 0.72.17(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(react@18.3.1) - tsup: - specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 @@ -263,9 +242,6 @@ importers: packages/shared: devDependencies: - tsup: - specifier: ^8.0.0 - version: 8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.0.0 version: 5.9.3 @@ -285,9 +261,6 @@ importers: '@sveltejs/vite-plugin-svelte': specifier: ^4.0.0 version: 4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) - rollup-plugin-svelte: - specifier: 7.2.3 - version: 7.2.3(rollup@4.52.5)(svelte@5.55.1) svelte: specifier: ^5.0.0 version: 5.55.1 @@ -310,21 +283,12 @@ importers: specifier: workspace:* version: link:../shared devDependencies: - '@vitejs/plugin-vue': - specifier: ^5.0.0 - version: 5.2.4(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))(vue@3.5.26(typescript@5.9.3)) typescript: specifier: ^5.0.0 version: 5.9.3 unplugin-vue: specifier: 7.2.0 version: 7.2.0(@types/node@24.10.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.44.0)(tsx@4.20.6)(vue@3.5.26(typescript@5.9.3))(yaml@2.9.0) - vite: - specifier: ^5.0.0 - version: 5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0) - vite-plugin-dts: - specifier: ^4.0.0 - version: 4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)) vue: specifier: ^3.3.0 version: 3.5.26(typescript@5.9.3) @@ -2564,10 +2528,6 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -3000,10 +2960,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.57.2': - resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.61.1': resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3273,10 +3229,6 @@ packages: ansi-fragments@0.2.1: resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -3319,13 +3271,6 @@ packages: appdirsjs@1.2.7: resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - aproba@1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - - are-we-there-yet@1.1.7: - resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} - deprecated: This package is no longer supported. - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -3410,9 +3355,6 @@ packages: axios@1.13.2: resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} - axios@1.6.0: - resolution: {integrity: sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -3492,10 +3434,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - brotli-size@0.1.0: - resolution: {integrity: sha512-5ny7BNvpe2TSmdafF1T9dnFYp3AIrJ8qJt29K0DQJzORlK38LBim/CmlY26JtreV6SWmXza7Oa+9m61SzvxR0Q==} - engines: {node: '>=0.12.0'} - browserslist@4.27.0: resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3510,16 +3448,6 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bundle-require@5.1.0: - resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - - bundlesize@0.18.2: - resolution: {integrity: sha512-wthRURckcAbe0Qcr7xMH8evVE/kjID8gqY0M17XJI/FVgCljLx6Ag4lIDbV76KVb2Ey5iCA4n5Fur61TEhF1JQ==} - hasBin: true - bytes-iec@3.1.1: resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} engines: {node: '>= 0.8'} @@ -3582,10 +3510,6 @@ packages: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} - chalk@2.1.0: - resolution: {integrity: sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==} - engines: {node: '>=4'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -3608,16 +3532,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - ci-env@1.17.0: - resolution: {integrity: sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==} - ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -3675,10 +3589,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3722,10 +3632,6 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} @@ -3757,13 +3663,6 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -3864,10 +3763,6 @@ packages: decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - decompress-response@4.2.1: - resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} - engines: {node: '>=8'} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -3876,10 +3771,6 @@ packages: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -3905,9 +3796,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - denodeify@1.2.1: resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} @@ -3926,11 +3814,6 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -3968,9 +3851,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -4007,9 +3887,6 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} @@ -4110,10 +3987,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} @@ -4255,10 +4128,6 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - expect-type@1.2.2: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} @@ -4336,9 +4205,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - fix-dts-default-cjs-exports@1.0.1: - resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -4390,9 +4256,6 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@11.3.4: resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} @@ -4424,10 +4287,6 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gauge@2.7.4: - resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} - deprecated: This package is no longer supported. - generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -4460,9 +4319,6 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} - get-tsconfig@4.14.0: resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} @@ -4470,12 +4326,6 @@ packages: resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} engines: {node: '>=20.20.0'} - github-build@1.2.4: - resolution: {integrity: sha512-1kdMmIrvYH18ITHGMVa5BXOxj/+i/VZzPR4PGMBpLW9h15woU+gpM/mlqOk+jmuD4mmib8Dgb6Xcbyy0v+RqqA==} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -4508,18 +4358,10 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gzip-size@4.1.0: - resolution: {integrity: sha512-1g6EPVvIHuPmpAdBBpsIVYLgjzGV/QqcFRJXpMyrqEWG10JhOaTjQeCcjMDyX0Iqfm/Q5M9twR/mbDk5f5MqkA==} - engines: {node: '>=4'} - has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} - has-flag@2.0.0: - resolution: {integrity: sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==} - engines: {node: '>=0.10.0'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -4539,9 +4381,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -4635,10 +4474,6 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - iltorb@2.4.5: - resolution: {integrity: sha512-EMCMl3LnnNSZJS5QrxyZmMTaAC4+TJkM5woD+xbpm9RB+mFYCr7C05GFE3TEGCsVQSVHmjX+3sf5AiwsylNInQ==} - deprecated: The zlib module provides APIs for brotli compression/decompression starting with Node.js v10.16.0, please use it over iltorb - image-size@1.2.1: resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} engines: {node: '>=16.x'} @@ -4671,9 +4506,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -4744,10 +4576,6 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} - is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} @@ -4932,10 +4760,6 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5114,9 +4938,6 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@16.2.6: resolution: {integrity: sha512-s1gphtDbV4bmW1eylXpVMk2u7is7YsrLl8hzrtvC70h4ByhcMLZFY01Fx05ZUDNuv1H8HO4E+e2zgejV1jVwNw==} engines: {node: '>=20.17'} @@ -5126,10 +4947,6 @@ packages: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -5152,9 +4969,6 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} @@ -5378,10 +5192,6 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - mimic-response@2.1.0: - resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} - engines: {node: '>=8'} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -5414,9 +5224,6 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -5440,9 +5247,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.23.0: - resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==} - nano-spawn@2.0.0: resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==} engines: {node: '>=20.17'} @@ -5465,9 +5269,6 @@ packages: nanospinner@1.2.2: resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -5486,9 +5287,6 @@ packages: resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} engines: {node: '>=12.0.0'} - node-abi@2.30.1: - resolution: {integrity: sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==} - node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} @@ -5523,9 +5321,6 @@ packages: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} - noop-logger@0.1.1: - resolution: {integrity: sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -5534,20 +5329,12 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npmlog@4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - deprecated: This package is no longer supported. - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - nwsapi@2.2.22: resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} @@ -5765,10 +5552,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -5858,11 +5641,6 @@ packages: preact@10.28.0: resolution: {integrity: sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==} - prebuild-install@5.3.6: - resolution: {integrity: sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==} - engines: {node: '>=6'} - hasBin: true - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5884,9 +5662,6 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - prettycli@1.4.3: - resolution: {integrity: sha512-KLiwAXXfSWXZqGmZlnKPuGMTFp+0QbcySplL1ft9gfteT/BNsG64Xo8u2Qr9r+qnsIZWBQ66Zs8tg+8s2fmzvw==} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -5918,9 +5693,6 @@ packages: engines: {node: '>=18'} hasBin: true - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -5949,10 +5721,6 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - react-devtools-core@4.28.5: resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} @@ -5997,10 +5765,6 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} @@ -6068,17 +5832,9 @@ packages: resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} @@ -6139,13 +5895,6 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup-plugin-svelte@7.2.3: - resolution: {integrity: sha512-LlniP+h00DfM+E4eav/Kk8uGjgPUjGIBfrAS/IxQvsuFdqSM0Y2sXf31AdxuIGSW9GsmocDqOfaxR5QNno/Tgw==} - engines: {node: '>=10'} - peerDependencies: - rollup: '>=2.0.0' - svelte: '>=3.5.0' - rollup@4.52.5: resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -6293,12 +6042,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@3.1.1: - resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -6351,11 +6094,6 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - deprecated: The work that was done in this beta branch won't be included in future versions - space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -6399,10 +6137,6 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -6447,10 +6181,6 @@ packages: stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} @@ -6471,10 +6201,6 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -6486,11 +6212,6 @@ packages: strnum@1.1.2: resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - sudo-prompt@9.2.1: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -6499,10 +6220,6 @@ packages: resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} engines: {node: '>=16'} - supports-color@4.5.0: - resolution: {integrity: sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==} - engines: {node: '>=4'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -6538,13 +6255,6 @@ packages: tabbable@6.3.0: resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} - tar-fs@2.1.4: - resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - temp@0.8.4: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} @@ -6619,9 +6329,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -6639,9 +6346,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsdown@0.22.3: resolution: {integrity: sha512-louqbfA8Qf//B9jTTL0FPtXTNpjCWv1VPkbcmQMph2pTpzs+LnB1tbe4tDDRVpo2BjF5SgUXaTZe45SxB8pWHg==} engines: {node: ^22.18.0 || >=24.11.0} @@ -6679,33 +6383,11 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsup@8.5.0: - resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - tsx@4.20.6: resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} engines: {node: '>=18.0.0'} hasBin: true - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.6.0: resolution: {integrity: sha512-6vHnLAubHj8Ib45Knu+oY0ZVCLO7WcibzAvt5b1E72YHqAs4y8meMAGMZM0jLqWPh/9maHDc16/qBCMxtW4pXg==} cpu: [x64] @@ -7102,9 +6784,6 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -7131,9 +6810,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -7149,10 +6825,6 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-pm-runs@1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} - which-typed-array@1.1.19: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} @@ -7167,9 +6839,6 @@ packages: engines: {node: '>=8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -9445,11 +9114,6 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': dependencies: '@types/estree': 1.0.8 @@ -9639,9 +9303,9 @@ snapshots: '@size-limit/file': 12.1.0(size-limit@12.1.0(jiti@2.7.0)) size-limit: 12.1.0(jiti@2.7.0) - '@sveltejs/acorn-typescript@1.0.9(acorn@8.15.0)': + '@sveltejs/acorn-typescript@1.0.9(acorn@8.17.0)': dependencies: - acorn: 8.15.0 + acorn: 8.17.0 '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0)))(svelte@5.55.1)(vite@5.4.21(@types/node@24.10.0)(lightningcss@1.32.0)(terser@5.44.0))': dependencies: @@ -9712,6 +9376,20 @@ snapshots: - tsx - yaml + '@tsdown/css@0.22.3(jiti@2.7.0)(postcss@8.5.6)(tsdown@0.22.3)(tsx@4.20.6)(yaml@2.9.0)': + dependencies: + lightningcss: 1.32.0 + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.9.0) + rolldown: 1.1.2 + tsdown: 0.22.3(@arethetypeswrong/core@0.18.3)(@tsdown/css@0.22.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3)(unrun@0.3.1) + optionalDependencies: + postcss: 8.5.6 + transitivePeerDependencies: + - jiti + - tsx + - yaml + optional: true + '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 @@ -9904,8 +9582,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.2': {} - '@typescript-eslint/types@8.61.1': {} '@typescript-eslint/typescript-estree@8.61.1(typescript@5.9.3)': @@ -10243,8 +9919,6 @@ snapshots: slice-ansi: 2.1.0 strip-ansi: 5.2.0 - ansi-regex@2.1.1: {} - ansi-regex@4.1.1: {} ansi-regex@5.0.1: {} @@ -10274,13 +9948,6 @@ snapshots: appdirsjs@1.2.7: {} - aproba@1.2.0: {} - - are-we-there-yet@1.1.7: - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.8 - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -10387,14 +10054,7 @@ snapshots: proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - - axios@1.6.0: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.4 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug + optional: true axobject-query@4.1.0: {} @@ -10521,11 +10181,6 @@ snapshots: dependencies: fill-range: 7.1.1 - brotli-size@0.1.0: - dependencies: - duplexer: 0.1.2 - iltorb: 2.4.5 - browserslist@4.27.0: dependencies: baseline-browser-mapping: 2.8.24 @@ -10545,26 +10200,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-require@5.1.0(esbuild@0.25.12): - dependencies: - esbuild: 0.25.12 - load-tsconfig: 0.2.5 - - bundlesize@0.18.2: - dependencies: - axios: 1.13.2 - brotli-size: 0.1.0 - bytes: 3.1.2 - ci-env: 1.17.0 - commander: 2.20.3 - cosmiconfig: 5.2.1 - github-build: 1.2.4 - glob: 7.2.3 - gzip-size: 4.1.0 - prettycli: 1.4.3 - transitivePeerDependencies: - - debug - bytes-iec@3.1.1: {} bytes@3.1.2: {} @@ -10623,12 +10258,6 @@ snapshots: loupe: 3.2.1 pathval: 2.0.1 - chalk@2.1.0: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 4.5.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -10644,14 +10273,6 @@ snapshots: check-error@2.1.1: {} - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - chownr@1.1.4: {} - - ci-env@1.17.0: {} - ci-info@2.0.0: {} ci-info@3.9.0: {} @@ -10716,8 +10337,6 @@ snapshots: clsx@2.1.1: {} - code-point-at@1.1.0: {} - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -10750,8 +10369,6 @@ snapshots: commander@2.20.3: {} - commander@4.1.1: {} - commander@9.5.0: {} commondir@1.0.1: {} @@ -10789,10 +10406,6 @@ snapshots: transitivePeerDependencies: - supports-color - consola@3.4.2: {} - - console-control-strings@1.1.0: {} - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -10880,10 +10493,6 @@ snapshots: decimal.js@10.6.0: {} - decompress-response@4.2.1: - dependencies: - mimic-response: 2.1.0 - deep-eql@5.0.2: {} deep-equal@2.2.3: @@ -10907,8 +10516,6 @@ snapshots: which-collection: 1.0.2 which-typed-array: 1.1.19 - deep-extend@0.6.0: {} - deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -10933,8 +10540,6 @@ snapshots: delayed-stream@1.0.0: {} - delegates@1.0.0: {} - denodeify@1.2.1: {} depd@2.0.0: {} @@ -10949,8 +10554,6 @@ snapshots: destroy@1.2.0: {} - detect-libc@1.0.3: {} - detect-libc@2.1.2: {} devalue@5.6.4: {} @@ -10979,8 +10582,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - duplexer@0.1.2: {} - eastasianwidth@0.2.0: {} ee-first@1.1.1: {} @@ -11003,10 +10604,6 @@ snapshots: encodeurl@2.0.0: {} - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - entities@6.0.1: {} entities@7.0.0: {} @@ -11273,8 +10870,6 @@ snapshots: escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} @@ -11430,7 +11025,7 @@ snapshots: esrap@2.2.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/types': 8.61.1 esrecurse@4.3.0: dependencies: @@ -11464,8 +11059,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expand-template@2.0.3: {} - expect-type@1.2.2: {} express@4.21.2: @@ -11588,12 +11181,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - fix-dts-default-cjs-exports@1.0.1: - dependencies: - magic-string: 0.30.21 - mlly: 1.8.0 - rollup: 4.52.5 - flat-cache@4.0.1: dependencies: flatted: 3.4.2 @@ -11609,7 +11196,8 @@ snapshots: dependencies: tabbable: 6.3.0 - follow-redirects@1.15.11: {} + follow-redirects@1.15.11: + optional: true for-each@0.3.5: dependencies: @@ -11636,8 +11224,6 @@ snapshots: fresh@0.5.2: {} - fs-constants@1.0.0: {} - fs-extra@11.3.4: dependencies: graceful-fs: 4.2.11 @@ -11674,17 +11260,6 @@ snapshots: functions-have-names@1.2.3: {} - gauge@2.7.4: - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.5 - generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -11719,10 +11294,6 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.13.0: - dependencies: - resolve-pkg-maps: 1.0.0 - get-tsconfig@4.14.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -11731,14 +11302,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - github-build@1.2.4: - dependencies: - axios: 1.6.0 - transitivePeerDependencies: - - debug - - github-from-package@0.0.0: {} - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 @@ -11774,15 +11337,8 @@ snapshots: graceful-fs@4.2.11: {} - gzip-size@4.1.0: - dependencies: - duplexer: 0.1.2 - pify: 3.0.0 - has-bigints@1.1.0: {} - has-flag@2.0.0: {} - has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -11799,8 +11355,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - has-unicode@2.0.1: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -11899,14 +11453,6 @@ snapshots: ignore@7.0.5: {} - iltorb@2.4.5: - dependencies: - detect-libc: 1.0.3 - nan: 2.23.0 - npmlog: 4.1.2 - prebuild-install: 5.3.6 - which-pm-runs: 1.1.0 - image-size@1.2.1: dependencies: queue: 6.0.2 @@ -11931,8 +11477,6 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -12008,10 +11552,6 @@ snapshots: dependencies: call-bound: 1.0.4 - is-fullwidth-code-point@1.0.0: - dependencies: - number-is-nan: 1.0.1 - is-fullwidth-code-point@2.0.0: {} is-fullwidth-code-point@3.0.0: {} @@ -12222,8 +11762,6 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - joycon@3.1.1: {} - js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -12411,8 +11949,6 @@ snapshots: lilconfig@3.1.3: {} - lines-and-columns@1.2.4: {} - lint-staged@16.2.6: dependencies: commander: 14.0.2 @@ -12432,8 +11968,6 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - load-tsconfig@0.2.5: {} - local-pkg@1.1.2: dependencies: mlly: 1.8.0 @@ -12457,8 +11991,6 @@ snapshots: lodash.debounce@4.0.8: {} - lodash.sortby@4.7.0: {} - lodash.throttle@4.1.1: {} lodash@4.17.23: {} @@ -12846,8 +12378,6 @@ snapshots: mimic-function@5.0.1: {} - mimic-response@2.1.0: {} - min-indent@1.0.1: {} minimatch@10.2.3: @@ -12874,8 +12404,6 @@ snapshots: mitt@3.0.1: {} - mkdirp-classic@0.5.3: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -12901,8 +12429,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.23.0: {} - nano-spawn@2.0.0: {} nanoid@3.3.11: {} @@ -12915,8 +12441,6 @@ snapshots: dependencies: picocolors: 1.1.1 - napi-build-utils@1.0.2: {} - natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -12927,10 +12451,6 @@ snapshots: nocache@3.0.4: {} - node-abi@2.30.1: - dependencies: - semver: 5.7.2 - node-abort-controller@3.1.1: {} node-dir@0.1.17: @@ -12961,29 +12481,18 @@ snapshots: node-stream-zip@1.15.0: {} - noop-logger@0.1.1: {} - normalize-path@3.0.0: {} npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - npmlog@4.1.2: - dependencies: - are-we-there-yet: 1.1.7 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 nullthrows@1.1.1: {} - number-is-nan@1.0.1: {} - nwsapi@2.2.22: {} ob1@0.76.9: {} @@ -13241,8 +12750,6 @@ snapshots: pidtree@0.6.0: {} - pify@3.0.0: {} - pify@4.0.1: {} pirates@4.0.7: {} @@ -13297,6 +12804,7 @@ snapshots: postcss: 8.5.6 tsx: 4.20.6 yaml: 2.9.0 + optional: true postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: @@ -13325,24 +12833,6 @@ snapshots: preact@10.28.0: {} - prebuild-install@5.3.6: - dependencies: - detect-libc: 1.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 2.30.1 - noop-logger: 0.1.1 - npmlog: 4.1.2 - pump: 3.0.3 - rc: 1.2.8 - simple-get: 3.1.1 - tar-fs: 2.1.4 - tunnel-agent: 0.6.0 - which-pm-runs: 1.1.0 - prelude-ls@1.2.1: {} prettier@3.6.2: {} @@ -13366,10 +12856,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - prettycli@1.4.3: - dependencies: - chalk: 2.1.0 - process-nextick-args@2.0.1: {} promise@8.3.0: @@ -13394,7 +12880,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-from-env@1.1.0: {} + proxy-from-env@1.1.0: + optional: true psl@1.15.0: dependencies: @@ -13407,11 +12894,6 @@ snapshots: picocolors: 1.1.1 sade: 1.8.1 - pump@3.0.3: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - punycode@2.3.1: {} qs@6.13.0: @@ -13437,13 +12919,6 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - react-devtools-core@4.28.5: dependencies: shell-quote: 1.8.3 @@ -13540,8 +13015,6 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@4.1.2: {} - readline@1.3.0: {} recast@0.21.5: @@ -13619,12 +13092,8 @@ snapshots: resolve-from@3.0.0: {} - resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - resolve.exports@2.0.3: {} - resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -13718,13 +13187,6 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.2 '@rolldown/binding-win32-x64-msvc': 1.1.2 - rollup-plugin-svelte@7.2.3(rollup@4.52.5)(svelte@5.55.1): - dependencies: - '@rollup/pluginutils': 4.2.1 - resolve.exports: 2.0.3 - rollup: 4.52.5 - svelte: 5.55.1 - rollup@4.52.5: dependencies: '@types/estree': 1.0.8 @@ -13924,14 +13386,6 @@ snapshots: signal-exit@4.1.0: {} - simple-concat@1.0.1: {} - - simple-get@3.1.1: - dependencies: - decompress-response: 4.2.1 - once: 1.4.0 - simple-concat: 1.0.1 - sisteransi@1.0.5: {} size-limit@12.1.0(jiti@2.7.0): @@ -13976,10 +13430,6 @@ snapshots: source-map@0.7.6: {} - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 - space-separated-tokens@2.0.2: {} speakingurl@14.0.1: {} @@ -14011,12 +13461,6 @@ snapshots: string-argv@0.3.2: {} - string-width@1.0.2: - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -14098,10 +13542,6 @@ snapshots: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 @@ -14120,34 +13560,18 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} strip-json-comments@5.0.3: {} strnum@1.1.2: {} - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.7 - ts-interface-checker: 0.1.13 - sudo-prompt@9.2.1: {} superjson@2.2.6: dependencies: copy-anything: 4.0.5 - supports-color@4.5.0: - dependencies: - has-flag: 2.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -14179,10 +13603,10 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 - '@sveltejs/acorn-typescript': 1.0.9(acorn@8.15.0) + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.17.0) '@types/estree': 1.0.8 '@types/trusted-types': 2.0.7 - acorn: 8.15.0 + acorn: 8.17.0 aria-query: 5.3.1 axobject-query: 4.1.0 clsx: 2.1.1 @@ -14198,21 +13622,6 @@ snapshots: tabbable@6.3.0: {} - tar-fs@2.1.4: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.3 - tar-stream: 2.2.0 - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - temp@0.8.4: dependencies: rimraf: 2.6.3 @@ -14284,10 +13693,6 @@ snapshots: tr46@0.0.3: {} - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -14300,8 +13705,6 @@ snapshots: dependencies: typescript: 5.9.3 - ts-interface-checker@0.1.13: {} - tsdown@0.22.3(@arethetypeswrong/core@0.18.3)(@tsdown/css@0.22.3)(oxc-resolver@11.21.3)(publint@0.3.21)(tsx@4.20.6)(typescript@5.9.3)(unrun@0.3.1): dependencies: ansis: 4.3.1 @@ -14321,7 +13724,7 @@ snapshots: unconfig-core: 7.5.0 optionalDependencies: '@arethetypeswrong/core': 0.18.3 - '@tsdown/css': 0.22.3(jiti@2.7.0)(postcss@8.5.15)(tsdown@0.22.3)(tsx@4.20.6)(yaml@2.9.0) + '@tsdown/css': 0.22.3(jiti@2.7.0)(postcss@8.5.6)(tsdown@0.22.3)(tsx@4.20.6)(yaml@2.9.0) publint: 0.3.21 tsx: 4.20.6 typescript: 5.9.3 @@ -14334,75 +13737,13 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0): - dependencies: - bundle-require: 5.1.0(esbuild@0.25.12) - cac: 6.7.14 - chokidar: 4.0.3 - consola: 3.4.2 - debug: 4.4.3 - esbuild: 0.25.12 - fix-dts-default-cjs-exports: 1.0.1 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.20.6)(yaml@2.9.0) - resolve-from: 5.0.0 - rollup: 4.52.5 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.15 - tree-kill: 1.2.2 - optionalDependencies: - '@microsoft/api-extractor': 7.57.7(@types/node@24.10.0) - postcss: 8.5.15 - typescript: 5.9.3 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - - tsup@8.5.0(@microsoft/api-extractor@7.57.7(@types/node@24.10.0))(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0): - dependencies: - bundle-require: 5.1.0(esbuild@0.25.12) - cac: 6.7.14 - chokidar: 4.0.3 - consola: 3.4.2 - debug: 4.4.3 - esbuild: 0.25.12 - fix-dts-default-cjs-exports: 1.0.1 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.9.0) - resolve-from: 5.0.0 - rollup: 4.52.5 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.15 - tree-kill: 1.2.2 - optionalDependencies: - '@microsoft/api-extractor': 7.57.7(@types/node@24.10.0) - postcss: 8.5.6 - typescript: 5.9.3 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - tsx@4.20.6: dependencies: esbuild: 0.25.12 - get-tsconfig: 4.13.0 + get-tsconfig: 4.14.0 optionalDependencies: fsevents: 2.3.3 - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - turbo-darwin-64@2.6.0: optional: true @@ -14831,8 +14172,6 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@4.0.2: {} - webidl-conversions@7.0.0: {} webpack-virtual-modules@0.6.2: {} @@ -14855,12 +14194,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -14894,8 +14227,6 @@ snapshots: which-module@2.0.1: {} - which-pm-runs@1.1.0: {} - which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 @@ -14915,10 +14246,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - word-wrap@1.2.5: {} wrap-ansi@6.2.0: From a2e3655b3113fa5e46995fc0bea4d2a6fd620919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 20 Jun 2026 03:30:39 +0900 Subject: [PATCH 62/77] =?UTF-8?q?feat(lint):=20ESLint=2010=20flat=20config?= =?UTF-8?q?=20+=20oxlint=20=EB=8F=84=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - eslint.config.mjs: typescript-eslint + react-hooks(react/rn/preact) + eslint-plugin-vue(.vue) + eslint-plugin-svelte(.svelte), oxlint 중복 룰 비활성, prettier 마지막. 루트 1패스 `eslint .`. - eslint-plugin-react는 ESLint 10 비호환(getFilename 제거)이라 제외 — 핵심인 react-hooks(rules-of-hooks/exhaustive-deps)는 유지. - Svelte 5 runes($props는 let 필수)·vue optional prop·react-compiler용 react-hooks/refs는 false positive라 완화. - 린트가 잡은 실버그 수정: Virtualizer let→const, playwright.config 중복 testMatch 키 제거. domPruner의 any는 isomorphic 타이머 핸들이라 주석과 함께 국소 disable. - lint/lint:fix/lint:fast/format 스크립트 + lint-staged에 eslint 추가. --- eslint.config.mjs | 82 +++ package.json | 11 +- packages/core/src/virtualizer/Virtualizer.ts | 2 +- packages/react/playwright.config.ts | 1 - packages/react/src/utils/domPruner.ts | 5 + pnpm-lock.yaml | 706 +------------------ 6 files changed, 98 insertions(+), 709 deletions(-) create mode 100644 eslint.config.mjs diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..aca49e4 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,82 @@ +// @ts-check +import js from "@eslint/js"; +import tseslint from "typescript-eslint"; +import reactHooks from "eslint-plugin-react-hooks"; +import vue from "eslint-plugin-vue"; +import svelte from "eslint-plugin-svelte"; +import oxlint from "eslint-plugin-oxlint"; +import prettier from "eslint-config-prettier"; +import globals from "globals"; + +export default tseslint.config( + { + ignores: [ + "**/dist/**", + "**/coverage/**", + "**/*.d.ts", + "**/node_modules/**", + "docs/.vitepress/cache/**", + "docs/.vitepress/dist/**", + ], + }, + + // Base JS + TS for all package source + { + files: ["packages/**/*.{js,mjs,cjs,ts,tsx,vue,svelte}"], + extends: [js.configs.recommended, ...tseslint.configs.recommended], + languageOptions: { + globals: { ...globals.browser, ...globals.node }, + }, + }, + + // React / React Native / Preact adapters → rules-of-hooks + exhaustive-deps + // (eslint-plugin-react itself is omitted: 7.37 is incompatible with ESLint 10 + // and its prop-types/stylistic rules add little for a TS codebase.) + { + files: ["packages/{react,react-native,preact}/**/*.{ts,tsx}"], + extends: [reactHooks.configs.flat.recommended], + rules: { + // Advisory React-Compiler readiness rule; keep rules-of-hooks + exhaustive-deps. + "react-hooks/refs": "off", + }, + }, + + // Vue SFCs (vue-eslint-parser owns .vue; TS parser for @@ -99,7 +105,11 @@ function handleRangeChange(range: Range) { >