diff --git a/.changeset/active-element-solid2-migration.md b/.changeset/active-element-solid2-migration.md
new file mode 100644
index 000000000..5f8139a51
--- /dev/null
+++ b/.changeset/active-element-solid2-migration.md
@@ -0,0 +1,18 @@
+---
+"@solid-primitives/active-element": major
+---
+
+Migrate to Solid.js v2.0 (beta.12)
+
+## Breaking Changes
+
+**Peer dependencies**: `solid-js@^2.0.0-beta.12` and `@solidjs/web@^2.0.0-beta.12` are now required.
+
+- `makeFocusListener` and `createFocusSignal` have moved to `@solid-primitives/focus`. Import them from there instead:
+ ```ts
+ // Before
+ import { makeFocusListener, createFocusSignal } from "@solid-primitives/active-element";
+ // After
+ import { makeFocusListener, createFocusSignal } from "@solid-primitives/focus";
+ ```
+- `isServer` is now sourced from `@solidjs/web` internally (no user-facing API change)
diff --git a/.changeset/autofocus-solid2-migration.md b/.changeset/autofocus-solid2-migration.md
deleted file mode 100644
index a9c43b560..000000000
--- a/.changeset/autofocus-solid2-migration.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-"@solid-primitives/autofocus": major
----
-
-Migrate to Solid.js v2.0 (beta.10)
-
-## Breaking Changes
-
-**Peer dependencies**: `solid-js@^2.0.0-beta.10` and `@solidjs/web@^2.0.0-beta.10` are now required.
-
-- `autofocus` is now a **ref callback factory** (`use:autofocus` directive removed; Solid 2.0 no longer supports `use:` directives):
- ```tsx
- // Before
- ...
- // After
- ...
-
- // Before
- ...
- // After
- ...
- ```
-- `JSX` type is now imported from `@solidjs/web` (was `solid-js`)
-- `onMount` replaced by `onSettled` from `solid-js`
-- `createAutofocus` uses split `createEffect(compute, apply)` form with proper timeout cleanup on re-focus
diff --git a/.changeset/focus-solid2-migration.md b/.changeset/focus-solid2-migration.md
new file mode 100644
index 000000000..fb95c2c84
--- /dev/null
+++ b/.changeset/focus-solid2-migration.md
@@ -0,0 +1,40 @@
+---
+"@solid-primitives/focus": major
+---
+
+Migrate to Solid.js v2.0 (beta.12)
+
+## Breaking Changes
+
+**Peer dependencies**: `solid-js@^2.0.0-beta.12` and `@solidjs/web@^2.0.0-beta.12` are now required.
+
+- `autofocus` is now a **ref callback factory** (`use:autofocus` directive removed; Solid 2.0 no longer supports `use:` directives):
+ ```tsx
+ // Before
+ ...
+ // After
+ ...
+
+ // Before
+ ...
+ // After
+ ...
+ ```
+- `JSX` type is now imported from `@solidjs/web` (was `solid-js`)
+- `onMount` replaced by `onSettled` from `solid-js`
+- `createAutofocus` uses split `createEffect(compute, apply)` form with proper timeout cleanup on re-focus
+
+## New Primitives
+
+`makeFocusListener` and `createFocusSignal` have moved here from `@solid-primitives/active-element`:
+
+- **`makeFocusListener(target, callback, useCapture?)`** — attaches `focus`/`blur` listeners to an element, calling `callback` with the new boolean focus state. Returns a cleanup function.
+ ```ts
+ const clear = makeFocusListener(el, isFocused => console.log(isFocused));
+ clear(); // remove listeners
+ ```
+- **`createFocusSignal(target)`** — reactive signal that tracks whether `target` is focused.
+ ```ts
+ const isFocused = createFocusSignal(() => el);
+ isFocused(); // boolean
+ ```
diff --git a/.changeset/pre.json b/.changeset/pre.json
index ae0287918..c41689783 100644
--- a/.changeset/pre.json
+++ b/.changeset/pre.json
@@ -5,7 +5,7 @@
"@solid-primitives/active-element": "2.1.5",
"@solid-primitives/analytics": "0.2.1",
"@solid-primitives/audio": "1.4.4",
- "@solid-primitives/autofocus": "0.1.4",
+ "@solid-primitives/focus": "0.1.4",
"@solid-primitives/bounds": "0.1.5",
"@solid-primitives/broadcast-channel": "0.1.1",
"@solid-primitives/clipboard": "1.6.4",
diff --git a/README.md b/README.md
index 1ddd4dda8..6b4a25686 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ The goal of Solid Primitives is to wrap client and server side functionality to
|----|----|----|----|----|----|
|
*Inputs* |
|[active-element](https://github.com/solidjs-community/solid-primitives/tree/main/packages/active-element#readme)|[](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createActiveElement](https://github.com/solidjs-community/solid-primitives/tree/main/packages/active-element#createactiveelement) [createFocusSignal](https://github.com/solidjs-community/solid-primitives/tree/main/packages/active-element#createfocussignal)|[](https://bundlephobia.com/package/@solid-primitives/active-element)|[](https://www.npmjs.com/package/@solid-primitives/active-element)||
-|[autofocus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/autofocus#readme)|[](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[autofocus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/autofocus#autofocus) [createAutofocus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/autofocus#createautofocus)|[](https://bundlephobia.com/package/@solid-primitives/autofocus)|[](https://www.npmjs.com/package/@solid-primitives/autofocus)|✓|
+|[focus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#readme)|[](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[autofocus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#autofocus) [createAutofocus](https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#createautofocus) [makeFocusListener](https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#makefocuslistener) [createFocusSignal](https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#createfocussignal) [createFocusTrap](https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#createfocustrap)|[](https://bundlephobia.com/package/@solid-primitives/focus)|[](https://www.npmjs.com/package/@solid-primitives/focus)|✓|
|[input-mask](https://github.com/solidjs-community/solid-primitives/tree/main/packages/input-mask#readme)|[](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createInputMask](https://github.com/solidjs-community/solid-primitives/tree/main/packages/input-mask#createinputmask) [createMaskPattern](https://github.com/solidjs-community/solid-primitives/tree/main/packages/input-mask#createmaskpattern)|[](https://bundlephobia.com/package/@solid-primitives/input-mask)|[](https://www.npmjs.com/package/@solid-primitives/input-mask)|✓|
|[keyboard](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyboard#readme)|[](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[useKeyDownList](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyboard#usekeydownlist) [useCurrentlyHeldKey](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyboard#usecurrentlyheldkey) [useKeyDownSequence](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyboard#usekeydownsequence) [createKeyHold](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyboard#createkeyhold) [createShortcut](https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyboard#createshortcut)|[](https://bundlephobia.com/package/@solid-primitives/keyboard)|[](https://www.npmjs.com/package/@solid-primitives/keyboard)||
|[mouse](https://github.com/solidjs-community/solid-primitives/tree/main/packages/mouse#readme)|[](https://github.com/solidjs-community/solid-primitives/blob/main/CONTRIBUTING.md#contribution-process)|[createMousePosition](https://github.com/solidjs-community/solid-primitives/tree/main/packages/mouse#createmouseposition) [createPositionToElement](https://github.com/solidjs-community/solid-primitives/tree/main/packages/mouse#createpositiontoelement)|[](https://bundlephobia.com/package/@solid-primitives/mouse)|[](https://www.npmjs.com/package/@solid-primitives/mouse)||
diff --git a/packages/active-element/package.json b/packages/active-element/package.json
index 0c43a6a2a..2230c4aa4 100644
--- a/packages/active-element/package.json
+++ b/packages/active-element/package.json
@@ -16,8 +16,7 @@
"name": "active-element",
"stage": 3,
"list": [
- "createActiveElement",
- "createFocusSignal"
+ "createActiveElement"
],
"category": "Inputs"
},
@@ -55,10 +54,12 @@
"@solid-primitives/utils": "workspace:^"
},
"peerDependencies": {
- "solid-js": "^1.6.12"
+ "@solidjs/web": "^2.0.0-beta.12",
+ "solid-js": "^2.0.0-beta.12"
},
"typesVersions": {},
"devDependencies": {
- "solid-js": "^1.9.7"
+ "@solidjs/web": "2.0.0-beta.12",
+ "solid-js": "2.0.0-beta.12"
}
}
diff --git a/packages/active-element/src/index.ts b/packages/active-element/src/index.ts
index 307bcb7c3..4afc9b0d2 100644
--- a/packages/active-element/src/index.ts
+++ b/packages/active-element/src/index.ts
@@ -1,11 +1,7 @@
import { type Accessor, type JSX } from "solid-js";
-import { isServer } from "solid-js/web";
-import {
- type MaybeAccessor,
- type Directive,
- createHydratableSignal,
-} from "@solid-primitives/utils";
-import { makeEventListener, createEventListener } from "@solid-primitives/event-listener";
+import { isServer } from "@solidjs/web";
+import { type Directive, createHydratableSignal } from "@solid-primitives/utils";
+import { makeEventListener } from "@solid-primitives/event-listener";
declare module "solid-js" {
namespace JSX {
@@ -15,7 +11,7 @@ declare module "solid-js" {
}
}
// This ensures the `JSX` import won't fall victim to tree shaking
-export type E = JSX.Element;
+export type E = JSX.Directives;
const getActiveElement = () =>
document.activeElement === document.body ? null : document.activeElement;
@@ -60,54 +56,6 @@ export function createActiveElement(): Accessor {
return active;
}
-/**
- * Attaches "blur" and "focus" event listeners to the element.
- * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/active-element#makeFocusListener
- * @param target element
- * @param callback handle focus change
- * @param useCapture activates capturing, which allows to listen on events at the root that don't support bubbling.
- * @returns function for clearing event listeners
- * @example
- * const [isFocused, setIsFocused] = createSignal(false)
- * const clear = makeFocusListener(focused => setIsFocused(focused));
- * // remove listeners (happens also on cleanup)
- * clear();
- */
-export function makeFocusListener(
- target: Element,
- callback: (isActive: boolean) => void,
- useCapture = true,
-): VoidFunction {
- if (isServer) {
- return () => void 0;
- }
- const clear1 = makeEventListener(target, "blur", callback.bind(void 0, false), useCapture);
- const clear2 = makeEventListener(target, "focus", callback.bind(void 0, true), useCapture);
- return () => (clear1(), clear2());
-}
-
-/**
- * Provides a signal representing element's focus state.
- * @param target element or a reactive function returning one
- * @returns boolean signal representing element's focus state
- * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/active-element#createFocusSignal
- * @example
- * const isFocused = createFocusSignal(() => el)
- * isFocused() // T: boolean
- */
-export function createFocusSignal(target: MaybeAccessor): Accessor {
- if (isServer) {
- return () => false;
- }
- const [isActive, setIsActive] = createHydratableSignal(
- false,
- () => document.activeElement === target,
- );
- createEventListener(target, "blur", () => setIsActive(false), true);
- createEventListener(target, "focus", () => setIsActive(true), true);
- return isActive;
-}
-
/**
* A directive that notifies you when the element becomes active or inactive.
*
@@ -123,5 +71,6 @@ export const focus: Directive<(isActive: boolean) => void> = (target, props) =>
}
const callback = props();
callback(document.activeElement === target);
- makeFocusListener(target, callback);
+ makeEventListener(target, "blur", callback.bind(void 0, false), true);
+ makeEventListener(target, "focus", callback.bind(void 0, true), true);
};
diff --git a/packages/active-element/test/index.test.ts b/packages/active-element/test/index.test.ts
index 25d67e2eb..591fc886d 100644
--- a/packages/active-element/test/index.test.ts
+++ b/packages/active-element/test/index.test.ts
@@ -1,12 +1,6 @@
import { createRoot } from "solid-js";
import { describe, test, expect } from "vitest";
-import {
- makeActiveElementListener,
- createActiveElement,
- makeFocusListener,
- createFocusSignal,
- focus,
-} from "../src/index.js";
+import { makeActiveElementListener, createActiveElement, focus } from "../src/index.js";
const dispatchFocusEvent = (
target: Element | Window = window,
@@ -40,29 +34,6 @@ describe("makeActiveElementListener", () => {
}));
});
-describe("makeFocusListener", () => {
- test("works properly", () =>
- createRoot(dispose => {
- const el = document.createElement("div");
- const captured: any[] = [];
- const clear = makeFocusListener(el, e => captured.push(e));
- expect(captured).toEqual([]);
- dispatchFocusEvent(el, "focus");
- expect(captured).toEqual([true]);
- dispatchFocusEvent(el, "blur");
- expect(captured).toEqual([true, false]);
- clear();
- dispatchFocusEvent(el, "focus");
- expect(captured).toEqual([true, false]);
- makeFocusListener(el, e => captured.push(e));
- dispatchFocusEvent(el, "blur");
- expect(captured).toEqual([true, false, false]);
- dispose();
- dispatchFocusEvent(el, "focus");
- expect(captured).toEqual([true, false, false]);
- }));
-});
-
describe("createActiveElement", () => {
test("works properly", () =>
createRoot(dispose => {
@@ -72,22 +43,6 @@ describe("createActiveElement", () => {
}));
});
-describe("createFocusSignal", () => {
- test("works properly", () =>
- createRoot(dispose => {
- const el = document.createElement("div");
- const activeEl = createFocusSignal(el);
- expect(activeEl()).toBe(false);
- dispatchFocusEvent(el, "focus");
- expect(activeEl()).toBe(true);
- dispatchFocusEvent(el, "blur");
- expect(activeEl()).toBe(false);
- dispose();
- dispatchFocusEvent(el, "focus");
- expect(activeEl()).toBe(false);
- }));
-});
-
describe("use:focus", () => {
test("works properly", () =>
createRoot(dispose => {
diff --git a/packages/active-element/test/server.test.ts b/packages/active-element/test/server.test.ts
index 830c9fb3d..558d9566d 100644
--- a/packages/active-element/test/server.test.ts
+++ b/packages/active-element/test/server.test.ts
@@ -1,8 +1,7 @@
import { describe, test, expect, vi } from "vitest";
-import { makeActiveElementListener, createActiveElement, createFocusSignal } from "../src/index.js";
+import { makeActiveElementListener, createActiveElement } from "../src/index.js";
describe("API doesn't break in SSR", () => {
- // check if the API doesn't throw when calling it in SSR
test("makeActiveElementListener() - SSR", () => {
const cb = vi.fn();
expect(() => makeActiveElementListener(cb)).not.toThrow();
@@ -12,10 +11,4 @@ describe("API doesn't break in SSR", () => {
test("createActiveElement() - SSR", () => {
expect(() => createActiveElement()).not.toThrow();
});
-
- test("createFocusSignal() - SSR", () => {
- const el = vi.fn();
- expect(() => createFocusSignal(el)).not.toThrow();
- expect(el).not.toBeCalled();
- });
});
diff --git a/packages/autofocus/README.md b/packages/autofocus/README.md
deleted file mode 100644
index d07bdfa56..000000000
--- a/packages/autofocus/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-# @solid-primitives/autofocus
-
-[](https://bundlephobia.com/package/@solid-primitives/autofocus)
-[](https://www.npmjs.com/package/@solid-primitives/autofocus)
-[](https://github.com/solidjs-community/solid-primitives#contribution-process)
-
-Primitives for autofocusing HTML elements.
-
-The native autofocus attribute only works on page load, which makes it incompatible with SolidJS. These primitives run on render, allowing autofocus on initial render as well as dynamically added components.
-
-- [`autofocus`](#autofocus) - Directive to autofocus an element on render.
-- [`createAutofocus`](#createautofocus) - Reactive primitive to autofocus an element on render.
-
-## Installation
-
-```bash
-npm install @solid-primitives/autofocus
-# or
-yarn add @solid-primitives/autofocus
-# or
-pnpm add @solid-primitives/autofocus
-```
-
-## `autofocus`
-
-### How to use it
-
-`autofocus` is a ref callback factory. It uses the native `autofocus` attribute to determine whether to focus the element.
-
-```tsx
-import { autofocus } from "@solid-primitives/autofocus";
-
-
- Autofocused
- ;
-```
-
-To conditionally enable autofocus, control the `autofocus` attribute directly — the `autofocus()` ref only focuses when the attribute is present, so removing it is sufficient to opt out:
-
-```tsx
-// Conditionally autofocus by toggling the attribute
-
- Maybe Autofocused
- ;
-```
-
-> **Note:** The `enabled` parameter was removed because it was redundant — the same effect is achieved by omitting the `autofocus` attribute. Previously, Solid directives always received an accessor argument whether you used it or not, which gave the impression an explicit toggle was necessary.
-
-### `createAutofocus`
-
-`createAutofocus` reactively autofocuses an element passed in as a signal.
-
-```tsx
-import { createAutofocus } from "@solid-primitives/autofocus";
-
-// Using ref
-let ref!: HTMLButtonElement;
-createAutofocus(() => ref);
-
-Autofocused ;
-
-// Using ref signal
-const [ref, setRef] = createSignal();
-createAutofocus(ref);
-
-Autofocused ;
-```
-
-## Demo
-
-You may see the working example here: https://primitives.solidjs.community/playground/autofocus/
-
-Source code: https://github.com/solidjs-community/solid-primitives/blob/main/packages/autofocus/dev/index.tsx
-
-## Changelog
-
-See [CHANGELOG.md](./CHANGELOG.md)
diff --git a/packages/autofocus/test/index.test.tsx b/packages/autofocus/test/index.test.tsx
deleted file mode 100644
index d7bc0b901..000000000
--- a/packages/autofocus/test/index.test.tsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import { describe, test, expect, vi, beforeEach, afterAll, beforeAll } from "vitest";
-import { createRoot, createSignal, flush } from "solid-js";
-import { autofocus, createAutofocus } from "../src/index.js";
-
-let focused: HTMLElement | null = null;
-
-const original_focus = HTMLElement.prototype.focus;
-HTMLElement.prototype.focus = function (this) {
- focused = this;
-};
-
-beforeAll(() => {
- vi.useFakeTimers();
-});
-
-beforeEach(() => {
- vi.clearAllTimers();
- focused = null;
-});
-
-afterAll(() => {
- vi.useRealTimers();
- HTMLElement.prototype.focus = original_focus;
-});
-
-describe("autofocus", () => {
- test("focuses the element with autofocus attribute", () => {
- const el = document.createElement("button");
- el.setAttribute("autofocus", "");
-
- const dispose = createRoot(dispose => {
- // Phase 1: factory registers onSettled
- const ref = autofocus();
- // Phase 2: ref callback receives the element
- ref(el);
- return dispose;
- });
-
- flush();
- expect(focused).toBe(null);
- vi.runAllTimers();
- expect(focused).toBe(el);
-
- dispose();
- });
-
- test("doesn't focus when autofocus HTML attribute is absent", () => {
- const el = document.createElement("button");
-
- const dispose = createRoot(dispose => {
- const ref = autofocus();
- ref(el);
- return dispose;
- });
-
- flush();
- expect(focused).toBe(null);
- vi.runAllTimers();
- expect(focused).toBe(null);
-
- dispose();
- });
-
-});
-
-describe("createAutofocus", () => {
- const el = document.createElement("button"),
- el2 = document.createElement("button");
-
- test("createAutofocus focuses the element", () => {
- const dispose = createRoot(dispose => {
- createAutofocus(() => el);
- return dispose;
- });
-
- flush();
- expect(focused).toBe(null);
- vi.runAllTimers();
- expect(focused).toBe(el);
-
- dispose();
- });
-
- test("createAutofocus works with signal", () => {
- const [ref, setRef] = createSignal();
-
- const dispose = createRoot(dispose => {
- createAutofocus(ref);
- return dispose;
- });
-
- flush();
- expect(focused).toBe(null);
- vi.runAllTimers();
- expect(focused).toBe(null);
-
- setRef(el);
- flush();
- expect(focused).toBe(null);
- vi.runAllTimers();
- expect(focused).toBe(el);
-
- setRef(el2);
- flush();
- expect(focused).toBe(el);
- vi.runAllTimers();
- expect(focused).toBe(el2);
-
- dispose();
-
- setRef(el);
- expect(focused).toBe(el2);
- vi.runAllTimers();
- expect(focused).toBe(el2);
- });
-});
diff --git a/packages/autofocus/CHANGELOG.md b/packages/focus/CHANGELOG.md
similarity index 98%
rename from packages/autofocus/CHANGELOG.md
rename to packages/focus/CHANGELOG.md
index 976ecae9d..ac009a623 100644
--- a/packages/autofocus/CHANGELOG.md
+++ b/packages/focus/CHANGELOG.md
@@ -1,4 +1,4 @@
-# @solid-primitives/autofocus
+# @solid-primitives/focus
## 0.1.4
diff --git a/packages/autofocus/LICENSE b/packages/focus/LICENSE
similarity index 84%
rename from packages/autofocus/LICENSE
rename to packages/focus/LICENSE
index 38b41d975..7a35c2e14 100644
--- a/packages/autofocus/LICENSE
+++ b/packages/focus/LICENSE
@@ -2,6 +2,10 @@ MIT License
Copyright (c) 2021 Solid Primitives Working Group
+The `createFocusTrap` primitive is ported from solid-focus-trap:
+ Copyright (c) 2023 Jasmin Noetzli (GiyoMoon)
+ https://github.com/corvudev/corvu/tree/main/packages/solid-focus-trap
+
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
@@ -18,4 +22,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/packages/focus/README.md b/packages/focus/README.md
new file mode 100644
index 000000000..92772a3e6
--- /dev/null
+++ b/packages/focus/README.md
@@ -0,0 +1,165 @@
+
+
+
+
+# @solid-primitives/focus
+
+[](https://bundlephobia.com/package/@solid-primitives/focus)
+[](https://www.npmjs.com/package/@solid-primitives/focus)
+[](https://github.com/solidjs-community/solid-primitives#contribution-process)
+
+Primitives for autofocusing HTML elements and trapping focus within a container.
+
+The native `autofocus` attribute only works on page load, which makes it incompatible with SolidJS. These primitives run on render, allowing autofocus on initial render as well as dynamically added components.
+
+- [`autofocus`](#autofocus) - Ref callback factory to autofocus an element on render.
+- [`createAutofocus`](#createautofocus) - Reactive primitive to autofocus an element on render.
+- [`createFocusTrap`](#createfocustrap) - Traps focus inside a given DOM element.
+
+## Installation
+
+```bash
+npm install @solid-primitives/focus
+# or
+yarn add @solid-primitives/focus
+# or
+pnpm add @solid-primitives/focus
+```
+
+## `autofocus`
+
+### How to use it
+
+`autofocus` is a ref callback factory. It uses the native `autofocus` attribute to determine whether to focus the element.
+
+```tsx
+import { autofocus } from "@solid-primitives/focus";
+
+
+ Autofocused
+ ;
+```
+
+To conditionally enable autofocus, control the `autofocus` attribute directly — the `autofocus()` ref only focuses when the attribute is present, so removing it is sufficient to opt out:
+
+```tsx
+// Conditionally autofocus by toggling the attribute
+
+ Maybe Autofocused
+ ;
+```
+
+> **Note:** The `enabled` parameter was removed because it was redundant — the same effect is achieved by omitting the `autofocus` attribute. Previously, Solid directives always received an accessor argument whether you used it or not, which gave the impression an explicit toggle was necessary.
+
+## `createAutofocus`
+
+`createAutofocus` reactively autofocuses an element passed in as a signal.
+
+```tsx
+import { createAutofocus } from "@solid-primitives/focus";
+
+// Using ref
+let ref!: HTMLButtonElement;
+createAutofocus(() => ref);
+
+Autofocused ;
+
+// Using ref signal
+const [ref, setRef] = createSignal();
+createAutofocus(ref);
+
+Autofocused ;
+```
+
+## `createFocusTrap`
+
+`createFocusTrap` traps keyboard focus inside a given DOM element, cycling through focusable children on Tab / Shift+Tab. It uses a `MutationObserver` to stay up to date with DOM changes and restores focus to the previously focused element when deactivated.
+
+> Ported from [solid-focus-trap](https://github.com/corvudev/corvu/tree/main/packages/solid-focus-trap) by [Jasmin Noetzli (GiyoMoon)](https://github.com/GiyoMoon), adapted for Solid.js 2.0.
+
+### How to use it
+
+```tsx
+import { createFocusTrap } from "@solid-primitives/focus";
+
+const DialogContent: Component<{ open: boolean }> = props => {
+ const [contentRef, setContentRef] = createSignal(null);
+
+ createFocusTrap({
+ element: contentRef,
+ enabled: () => props.open,
+ });
+
+ return (
+
+
+ Close
+
+
+
+ );
+};
+```
+
+### Props
+
+| Prop | Type | Default | Description |
+| -------------------- | --------------------------------- | -------------------------------- | --------------------------------------------------------------------------------- |
+| `element` | `MaybeAccessor` | — | Element to trap focus within. |
+| `enabled` | `MaybeAccessor` | `true` | Whether the trap is active. |
+| `observeChanges` | `MaybeAccessor` | `true` | Watch for DOM mutations inside the container and refresh focusable elements. |
+| `initialFocusElement`| `MaybeAccessor` | First focusable element | Element to focus when the trap activates. |
+| `restoreFocus` | `MaybeAccessor` | `true` | Restore focus to the previously focused element when the trap deactivates. |
+| `finalFocusElement` | `MaybeAccessor` | Previously focused element | Element to focus when the trap deactivates. |
+| `onInitialFocus` | `(event: Event) => void` | — | Callback when focus moves into the trap. Call `event.preventDefault()` to cancel.|
+| `onFinalFocus` | `(event: Event) => void` | — | Callback when focus restores. Call `event.preventDefault()` to cancel. |
+
+### Custom initial focus
+
+```tsx
+const [contentRef, setContentRef] = createSignal(null);
+const [inputRef, setInputRef] = createSignal(null);
+
+createFocusTrap({
+ element: contentRef,
+ enabled: () => props.open,
+ initialFocusElement: inputRef,
+});
+
+return (
+
+
+ Close
+
+
+
+);
+```
+
+### Preventing focus moves
+
+```tsx
+createFocusTrap({
+ element: contentRef,
+ onInitialFocus: event => {
+ event.preventDefault(); // focus won't move on activation
+ },
+ onFinalFocus: event => {
+ event.preventDefault(); // focus won't restore on deactivation
+ },
+});
+```
+
+## Demo
+
+You may see the working example here: https://primitives.solidjs.community/playground/focus/
+
+Source code: https://github.com/solidjs-community/solid-primitives/blob/main/packages/focus/dev/index.tsx
+
+## Credits
+
+`createFocusTrap` is ported from [solid-focus-trap](https://github.com/corvudev/corvu/tree/main/packages/solid-focus-trap), part of the [corvu](https://corvu.dev) UI toolkit by [Jasmin Noetzli (GiyoMoon)](https://github.com/GiyoMoon). Licensed under the MIT License.
+
+## Changelog
+
+See [CHANGELOG.md](./CHANGELOG.md)
diff --git a/packages/autofocus/dev/index.tsx b/packages/focus/dev/index.tsx
similarity index 100%
rename from packages/autofocus/dev/index.tsx
rename to packages/focus/dev/index.tsx
diff --git a/packages/autofocus/package.json b/packages/focus/package.json
similarity index 68%
rename from packages/autofocus/package.json
rename to packages/focus/package.json
index 3900eab73..189cca07d 100644
--- a/packages/autofocus/package.json
+++ b/packages/focus/package.json
@@ -1,11 +1,20 @@
{
- "name": "@solid-primitives/autofocus",
+ "name": "@solid-primitives/focus",
"version": "0.2.0",
- "description": "Primitives for autofocusing HTML elements",
+ "description": "Primitives for autofocusing HTML elements and trapping focus within a container",
"author": "jer3m01 ",
- "contributors": [],
+ "contributors": [
+ {
+ "name": "Jasmin Noetzli",
+ "url": "https://github.com/GiyoMoon"
+ },
+ {
+ "name": "David Di Biase",
+ "url": "https://github.com/davedbase"
+ }
+ ],
"license": "MIT",
- "homepage": "https://primitives.solidjs.community/package/autofocus",
+ "homepage": "https://primitives.solidjs.community/package/focus",
"repository": {
"type": "git",
"url": "git+https://github.com/solidjs-community/solid-primitives.git"
@@ -14,11 +23,14 @@
"url": "https://github.com/solidjs-community/solid-primitives/issues"
},
"primitive": {
- "name": "autofocus",
+ "name": "focus",
"stage": 1,
"list": [
"autofocus",
- "createAutofocus"
+ "createAutofocus",
+ "createFocusTrap",
+ "makeFocusListener",
+ "createFocusSignal"
],
"category": "Inputs"
},
@@ -26,7 +38,11 @@
"solid",
"primitives",
"focus",
- "autofocus"
+ "autofocus",
+ "focus-trap",
+ "trap",
+ "accessibility",
+ "a11y"
],
"private": false,
"sideEffects": false,
@@ -56,6 +72,7 @@
"solid-js": "^2.0.0-beta.14"
},
"dependencies": {
+ "@solid-primitives/event-listener": "workspace:^",
"@solid-primitives/utils": "workspace:^"
},
"typesVersions": {},
diff --git a/packages/autofocus/src/index.ts b/packages/focus/src/autofocus.ts
similarity index 100%
rename from packages/autofocus/src/index.ts
rename to packages/focus/src/autofocus.ts
diff --git a/packages/focus/src/focusSignal.ts b/packages/focus/src/focusSignal.ts
new file mode 100644
index 000000000..c24e09e6c
--- /dev/null
+++ b/packages/focus/src/focusSignal.ts
@@ -0,0 +1,52 @@
+import { type Accessor } from "solid-js";
+import { isServer } from "@solidjs/web";
+import { type MaybeAccessor, createHydratableSignal } from "@solid-primitives/utils";
+import { makeEventListener, createEventListener } from "@solid-primitives/event-listener";
+
+/**
+ * Attaches "blur" and "focus" event listeners to the element.
+ * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#makeFocusListener
+ * @param target element
+ * @param callback handle focus change
+ * @param useCapture activates capturing, which allows to listen on events at the root that don't support bubbling.
+ * @returns function for clearing event listeners
+ * @example
+ * const [isFocused, setIsFocused] = createSignal(false)
+ * const clear = makeFocusListener(el, focused => setIsFocused(focused));
+ * // remove listeners (happens also on cleanup)
+ * clear();
+ */
+export function makeFocusListener(
+ target: Element,
+ callback: (isActive: boolean) => void,
+ useCapture = true,
+): VoidFunction {
+ if (isServer) {
+ return () => {};
+ }
+ const clear1 = makeEventListener(target, "blur", callback.bind(undefined, false), useCapture);
+ const clear2 = makeEventListener(target, "focus", callback.bind(undefined, true), useCapture);
+ return () => (clear1(), clear2());
+}
+
+/**
+ * Provides a signal representing element's focus state.
+ * @param target element or a reactive function returning one
+ * @returns boolean signal representing element's focus state
+ * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/focus#createFocusSignal
+ * @example
+ * const isFocused = createFocusSignal(() => el)
+ * isFocused() // T: boolean
+ */
+export function createFocusSignal(target: MaybeAccessor): Accessor {
+ if (isServer) {
+ return () => false;
+ }
+ const [isActive, setIsActive] = createHydratableSignal(
+ false,
+ () => document.activeElement === target,
+ );
+ createEventListener(target, "blur", () => setIsActive(false), true);
+ createEventListener(target, "focus", () => setIsActive(true), true);
+ return isActive;
+}
diff --git a/packages/focus/src/focusTrap.ts b/packages/focus/src/focusTrap.ts
new file mode 100644
index 000000000..06391279e
--- /dev/null
+++ b/packages/focus/src/focusTrap.ts
@@ -0,0 +1,214 @@
+/*
+ * Ported from solid-focus-trap by Jasmin Noetzli (GiyoMoon)
+ * MIT License — https://github.com/corvudev/corvu/tree/main/packages/solid-focus-trap
+ * Adapted for Solid.js 2.0 and @solid-primitives/focus by the Solid Primitives Working Group.
+ */
+
+import { access, afterPaint, INTERNAL_OPTIONS, type MaybeAccessor } from "@solid-primitives/utils";
+import { createEffect, createMemo, createSignal } from "solid-js";
+
+const FOCUSABLE_SELECTOR =
+ 'a[href]:not([tabindex="-1"]), button:not([tabindex="-1"]), input:not([tabindex="-1"]), textarea:not([tabindex="-1"]), select:not([tabindex="-1"]), details:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])';
+
+const EVENT_INITIAL_FOCUS = "focusTrap.initialFocus";
+const EVENT_FINAL_FOCUS = "focusTrap.finalFocus";
+const EVENT_OPTIONS = { bubbles: false, cancelable: true } as const;
+
+export type CreateFocusTrapProps = {
+ /** Element to trap focus within. */
+ element: MaybeAccessor;
+ /** Whether the focus trap is active. Default: `true` */
+ enabled?: MaybeAccessor;
+ /**
+ * Watch for DOM mutations inside the container and reload the list of
+ * focusable elements accordingly. Default: `true`
+ */
+ observeChanges?: MaybeAccessor;
+ /**
+ * Element to focus when the trap activates.
+ * Default: the first focusable element inside `element`.
+ */
+ initialFocusElement?: MaybeAccessor;
+ /**
+ * Restore focus to the element that was focused before the trap activated
+ * when the trap is deactivated. Default: `true`
+ */
+ restoreFocus?: MaybeAccessor;
+ /**
+ * Element to focus when the trap deactivates.
+ * Default: the element that was focused before the trap activated.
+ */
+ finalFocusElement?: MaybeAccessor;
+ /**
+ * Callback fired when focus moves into the trap.
+ * Call `event.preventDefault()` to suppress the focus move.
+ */
+ onInitialFocus?: (event: Event) => void;
+ /**
+ * Callback fired when focus is restored after deactivation.
+ * Call `event.preventDefault()` to suppress the focus move.
+ */
+ onFinalFocus?: (event: Event) => void;
+};
+
+/**
+ * Traps focus inside the given element. Aware of DOM changes inside the trap
+ * via a MutationObserver. Properly restores focus when deactivated.
+ *
+ * Ported from [solid-focus-trap](https://github.com/corvudev/corvu/tree/main/packages/solid-focus-trap)
+ * by Jasmin Noetzli (GiyoMoon), adapted for Solid.js 2.0.
+ *
+ * @example
+ * ```tsx
+ * const [ref, setRef] = createSignal(null);
+ * createFocusTrap({ element: ref, enabled: () => isOpen() });
+ * ...
+ * ```
+ */
+export const createFocusTrap = (props: CreateFocusTrapProps): void => {
+ const [focusableElements, setFocusableElements] = createSignal(
+ undefined,
+ INTERNAL_OPTIONS,
+ );
+
+ const firstFocusElement = createMemo(() => {
+ const els = focusableElements();
+ return els ? (els[0] ?? null) : null;
+ });
+
+ const lastFocusElement = createMemo(() => {
+ const els = focusableElements();
+ return els ? (els[els.length - 1] ?? null) : null;
+ });
+
+ let originalFocusedElement: HTMLElement | null = null;
+
+ const loadFocusableElements = (container: HTMLElement) => {
+ const sorted = Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR))
+ .map((element, domIndex) => ({ element, domIndex, tabIndex: element.tabIndex }))
+ .sort((a, b) =>
+ a.tabIndex === b.tabIndex ? a.domIndex - b.domIndex : a.tabIndex - b.tabIndex,
+ );
+ setFocusableElements(sorted.map(({ element }) => element));
+ };
+
+ const triggerInitialFocus = (container: HTMLElement) => {
+ afterPaint(() => {
+ const target = access(props.initialFocusElement ?? null) ?? firstFocusElement() ?? container;
+ const { onInitialFocus } = props;
+ if (onInitialFocus) {
+ const event = new CustomEvent(EVENT_INITIAL_FOCUS, EVENT_OPTIONS);
+ container.addEventListener(EVENT_INITIAL_FOCUS, onInitialFocus);
+ container.dispatchEvent(event);
+ container.removeEventListener(EVENT_INITIAL_FOCUS, onInitialFocus);
+ if (event.defaultPrevented) return;
+ }
+ target.focus();
+ });
+ };
+
+ const triggerRestoreFocus = (container: HTMLElement) => {
+ afterPaint(() => {
+ if (!access(props.restoreFocus ?? true)) return;
+ const target = access(props.finalFocusElement ?? null) ?? originalFocusedElement;
+ if (!target) return;
+ const { onFinalFocus } = props;
+ if (onFinalFocus) {
+ const event = new CustomEvent(EVENT_FINAL_FOCUS, EVENT_OPTIONS);
+ container.addEventListener(EVENT_FINAL_FOCUS, onFinalFocus);
+ container.dispatchEvent(event);
+ container.removeEventListener(EVENT_FINAL_FOCUS, onFinalFocus);
+ if (event.defaultPrevented) return;
+ }
+ target.focus();
+ });
+ };
+
+ const onFirstElementKeyDown = (event: KeyboardEvent) => {
+ if (event.key === "Tab" && event.shiftKey) {
+ event.preventDefault();
+ lastFocusElement()!.focus();
+ }
+ };
+
+ const onLastElementKeyDown = (event: KeyboardEvent) => {
+ if (event.key === "Tab" && !event.shiftKey) {
+ event.preventDefault();
+ firstFocusElement()!.focus();
+ }
+ };
+
+ const preventTab = (event: KeyboardEvent) => {
+ if (event.key === "Tab") event.preventDefault();
+ };
+
+ // Activate / deactivate the trap when element or enabled changes.
+ createEffect(
+ () => ({
+ container: access(props.element),
+ enabled: access(props.enabled ?? true),
+ observeChanges: access(props.observeChanges ?? true),
+ }),
+ ({ container, enabled, observeChanges }) => {
+ if (!container || !enabled) return;
+
+ originalFocusedElement = document.activeElement as HTMLElement | null;
+ loadFocusableElements(container);
+ triggerInitialFocus(container);
+
+ const observer = new MutationObserver(() => {
+ afterPaint(() => {
+ loadFocusableElements(container);
+ if (!document.activeElement || document.activeElement === document.body) {
+ triggerInitialFocus(container);
+ }
+ });
+ });
+
+ if (observeChanges) {
+ observer.observe(container, {
+ subtree: true,
+ childList: true,
+ attributes: true,
+ attributeFilter: ["tabindex"],
+ });
+ }
+
+ return () => {
+ if (observeChanges) observer.disconnect();
+ setFocusableElements(undefined);
+ triggerRestoreFocus(container);
+ };
+ },
+ );
+
+ // When there are no focusable elements, block all Tab key presses.
+ createEffect(
+ () => focusableElements(),
+ elements => {
+ if (!elements || elements.length !== 0) return;
+ document.addEventListener("keydown", preventTab);
+ return () => document.removeEventListener("keydown", preventTab);
+ },
+ );
+
+ // Shift+Tab on the first element → wrap to last.
+ createEffect(
+ () => firstFocusElement(),
+ el => {
+ if (!el) return;
+ el.addEventListener("keydown", onFirstElementKeyDown);
+ return () => el.removeEventListener("keydown", onFirstElementKeyDown);
+ },
+ );
+
+ // Tab on the last element → wrap to first.
+ createEffect(
+ () => lastFocusElement(),
+ el => {
+ if (!el) return;
+ el.addEventListener("keydown", onLastElementKeyDown);
+ return () => el.removeEventListener("keydown", onLastElementKeyDown);
+ },
+ );
+};
diff --git a/packages/focus/src/index.ts b/packages/focus/src/index.ts
new file mode 100644
index 000000000..678243b0b
--- /dev/null
+++ b/packages/focus/src/index.ts
@@ -0,0 +1,5 @@
+export { autofocus, createAutofocus } from "./autofocus.js";
+export type { E } from "./autofocus.js";
+export { createFocusTrap } from "./focusTrap.js";
+export type { CreateFocusTrapProps } from "./focusTrap.js";
+export { makeFocusListener, createFocusSignal } from "./focusSignal.js";
diff --git a/packages/focus/test/index.test.tsx b/packages/focus/test/index.test.tsx
new file mode 100644
index 000000000..d1c8aa578
--- /dev/null
+++ b/packages/focus/test/index.test.tsx
@@ -0,0 +1,438 @@
+import { describe, test, expect, vi, beforeEach, afterAll, beforeAll } from "vitest";
+import { createRoot, createSignal, flush } from "solid-js";
+import { autofocus, createAutofocus, createFocusTrap } from "../src/index.js";
+
+// ─── Shared focus tracking ────────────────────────────────────────────────────
+
+let focused: HTMLElement | null = null;
+
+const original_focus = HTMLElement.prototype.focus;
+HTMLElement.prototype.focus = function (this: HTMLElement) {
+ focused = this;
+};
+
+// ─── Fake timers + rAF stub ───────────────────────────────────────────────────
+
+beforeAll(() => {
+ vi.useFakeTimers();
+ // afterPaint uses double rAF; stub it as setTimeout so vi.runAllTimers() drives it.
+ vi.stubGlobal("requestAnimationFrame", (fn: FrameRequestCallback) =>
+ setTimeout(() => fn(performance.now()), 0),
+ );
+ vi.stubGlobal("cancelAnimationFrame", (id: number) => clearTimeout(id));
+});
+
+beforeEach(() => {
+ vi.clearAllTimers();
+ focused = null;
+});
+
+afterAll(() => {
+ vi.useRealTimers();
+ vi.unstubAllGlobals();
+ HTMLElement.prototype.focus = original_focus;
+});
+
+// ─── Helper ───────────────────────────────────────────────────────────────────
+
+/** Run all pending effects then drain all timers (including nested rAFs). */
+const settle = () => {
+ flush();
+ vi.runAllTimers();
+};
+
+// ─── autofocus ────────────────────────────────────────────────────────────────
+
+describe("autofocus", () => {
+ test("focuses the element with autofocus attribute", () => {
+ const el = document.createElement("button");
+ el.setAttribute("autofocus", "");
+
+ const dispose = createRoot(dispose => {
+ const ref = autofocus();
+ ref(el);
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(el);
+ dispose();
+ });
+
+ test("doesn't focus when autofocus attribute is absent", () => {
+ const el = document.createElement("button");
+
+ const dispose = createRoot(dispose => {
+ const ref = autofocus();
+ ref(el);
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(null);
+ dispose();
+ });
+});
+
+// ─── createAutofocus ──────────────────────────────────────────────────────────
+
+describe("createAutofocus", () => {
+ const el = document.createElement("button"),
+ el2 = document.createElement("button");
+
+ test("focuses the element", () => {
+ const dispose = createRoot(dispose => {
+ createAutofocus(() => el);
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(el);
+ dispose();
+ });
+
+ test("works with signal — focuses when signal is set", () => {
+ const [ref, setRef] = createSignal();
+
+ const dispose = createRoot(dispose => {
+ createAutofocus(ref);
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(null);
+
+ setRef(el);
+ settle();
+ expect(focused).toBe(el);
+
+ setRef(el2);
+ settle();
+ expect(focused).toBe(el2);
+
+ dispose();
+
+ setRef(el);
+ vi.runAllTimers();
+ expect(focused).toBe(el2); // no focus after dispose
+ });
+});
+
+// ─── createFocusTrap ──────────────────────────────────────────────────────────
+
+/** Build a container with `n` focusable buttons and return them. */
+function makeContainer(n: number): { container: HTMLElement; buttons: HTMLButtonElement[] } {
+ const container = document.createElement("div");
+ const buttons: HTMLButtonElement[] = [];
+ for (let i = 0; i < n; i++) {
+ const btn = document.createElement("button");
+ btn.textContent = `btn${i}`;
+ container.appendChild(btn);
+ buttons.push(btn);
+ }
+ return { container, buttons };
+}
+
+function tabKey(shiftKey = false) {
+ return new KeyboardEvent("keydown", { key: "Tab", shiftKey, bubbles: true, cancelable: true });
+}
+
+describe("createFocusTrap", () => {
+ test("focuses the first focusable element on activation", () => {
+ const { container, buttons } = makeContainer(3);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(buttons[0]);
+ dispose();
+ });
+
+ test("Tab on last element wraps to first", () => {
+ const { container, buttons } = makeContainer(3);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container });
+ return dispose;
+ });
+
+ settle();
+ buttons[2]!.dispatchEvent(tabKey(false));
+ expect(focused).toBe(buttons[0]);
+ dispose();
+ });
+
+ test("Shift+Tab on first element wraps to last", () => {
+ const { container, buttons } = makeContainer(3);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container });
+ return dispose;
+ });
+
+ settle();
+ buttons[0]!.dispatchEvent(tabKey(true));
+ expect(focused).toBe(buttons[2]);
+ dispose();
+ });
+
+ test("blocks Tab when there are no focusable elements", () => {
+ const container = document.createElement("div"); // no children
+
+ let tabPrevented = false;
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container });
+ return dispose;
+ });
+
+ flush(); // run effects so preventTab listener is added
+
+ const event = tabKey();
+ Object.defineProperty(event, "defaultPrevented", { get: () => tabPrevented });
+ const originalPreventDefault = event.preventDefault.bind(event);
+ event.preventDefault = () => {
+ tabPrevented = true;
+ originalPreventDefault();
+ };
+
+ document.dispatchEvent(event);
+ expect(tabPrevented).toBe(true);
+ dispose();
+ });
+
+ test("does not activate when enabled is false", () => {
+ const { container } = makeContainer(2);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, enabled: false });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(null);
+ dispose();
+ });
+
+ test("activates and deactivates reactively via enabled signal", () => {
+ const { container, buttons } = makeContainer(2);
+ const [enabled, setEnabled] = createSignal(false);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, enabled });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(null); // not yet enabled
+
+ setEnabled(true);
+ settle();
+ expect(focused).toBe(buttons[0]); // initial focus
+
+ dispose();
+ });
+
+ test("restores focus to the previously focused element on deactivation", () => {
+ const { container, buttons } = makeContainer(2);
+ const trigger = document.createElement("button");
+ const [enabled, setEnabled] = createSignal(true);
+
+ // Pretend `trigger` is the element that was focused before the trap.
+ const origActiveElement = Object.getOwnPropertyDescriptor(Document.prototype, "activeElement")!;
+ Object.defineProperty(document, "activeElement", {
+ get: () => trigger,
+ configurable: true,
+ });
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, enabled });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(buttons[0]); // initial focus inside trap
+
+ // Restore the real activeElement descriptor before deactivating
+ Object.defineProperty(document, "activeElement", origActiveElement);
+
+ setEnabled(false);
+ settle();
+ expect(focused).toBe(trigger); // focus restored
+ dispose();
+ });
+
+ test("uses initialFocusElement when provided", () => {
+ const { container, buttons } = makeContainer(3);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, initialFocusElement: buttons[2] });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(buttons[2]);
+ dispose();
+ });
+
+ test("uses finalFocusElement when provided on deactivation", () => {
+ const { container } = makeContainer(2);
+ const customFinal = document.createElement("button");
+ const [enabled, setEnabled] = createSignal(true);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, enabled, finalFocusElement: customFinal });
+ return dispose;
+ });
+
+ settle();
+
+ setEnabled(false);
+ settle();
+ expect(focused).toBe(customFinal);
+ dispose();
+ });
+
+ test("onInitialFocus callback is called when trap activates", () => {
+ const { container } = makeContainer(1);
+ const onInitialFocus = vi.fn();
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, onInitialFocus });
+ return dispose;
+ });
+
+ settle();
+ expect(onInitialFocus).toHaveBeenCalledOnce();
+ dispose();
+ });
+
+ test("onInitialFocus preventDefault suppresses initial focus", () => {
+ const { container } = makeContainer(1);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({
+ element: container,
+ onInitialFocus: e => e.preventDefault(),
+ });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(null);
+ dispose();
+ });
+
+ test("onFinalFocus callback is called on deactivation", () => {
+ const { container } = makeContainer(1);
+ const [enabled, setEnabled] = createSignal(true);
+ const onFinalFocus = vi.fn();
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, enabled, onFinalFocus });
+ return dispose;
+ });
+
+ settle();
+ setEnabled(false);
+ settle();
+ expect(onFinalFocus).toHaveBeenCalledOnce();
+ dispose();
+ });
+
+ test("onFinalFocus preventDefault suppresses focus restore", () => {
+ const { container } = makeContainer(1);
+ const trigger = document.createElement("button");
+ const [enabled, setEnabled] = createSignal(true);
+
+ const origActiveElement = Object.getOwnPropertyDescriptor(Document.prototype, "activeElement")!;
+ Object.defineProperty(document, "activeElement", {
+ get: () => trigger,
+ configurable: true,
+ });
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({
+ element: container,
+ enabled,
+ onFinalFocus: e => e.preventDefault(),
+ });
+ return dispose;
+ });
+
+ settle();
+ Object.defineProperty(document, "activeElement", origActiveElement);
+
+ focused = null;
+ setEnabled(false);
+ settle();
+ expect(focused).toBe(null); // prevented
+ dispose();
+ });
+
+ test("does not restore focus when restoreFocus is false", () => {
+ const { container } = makeContainer(1);
+ const [enabled, setEnabled] = createSignal(true);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container, enabled, restoreFocus: false });
+ return dispose;
+ });
+
+ settle();
+ focused = null;
+ setEnabled(false);
+ settle();
+ expect(focused).toBe(null);
+ dispose();
+ });
+
+ test("respects tabIndex ordering for focusable elements", () => {
+ const container = document.createElement("div");
+ const a = document.createElement("button"); // tabIndex 0
+ const b = document.createElement("button");
+ b.tabIndex = 2;
+ const c = document.createElement("button");
+ c.tabIndex = 1;
+ // DOM order: a(0), b(2), c(1) → sorted: a(0), c(1), b(2)
+ container.append(a, b, c);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: container });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(a); // first by tabIndex order
+
+ // Tab on last (b, tabIndex=2) wraps to first (a, tabIndex=0)
+ b.dispatchEvent(tabKey(false));
+ expect(focused).toBe(a);
+
+ // Shift+Tab on first (a) wraps to last (b)
+ a.dispatchEvent(tabKey(true));
+ expect(focused).toBe(b);
+
+ dispose();
+ });
+
+ test("element as reactive signal — activates when signal becomes non-null", () => {
+ const { container, buttons } = makeContainer(2);
+ const [el, setEl] = createSignal(null);
+
+ const dispose = createRoot(dispose => {
+ createFocusTrap({ element: el });
+ return dispose;
+ });
+
+ settle();
+ expect(focused).toBe(null);
+
+ setEl(container);
+ settle();
+ expect(focused).toBe(buttons[0]);
+ dispose();
+ });
+});
diff --git a/packages/autofocus/test/server.test.ts b/packages/focus/test/server.test.ts
similarity index 55%
rename from packages/autofocus/test/server.test.ts
rename to packages/focus/test/server.test.ts
index d8c2b5f8b..9b4ae4800 100644
--- a/packages/autofocus/test/server.test.ts
+++ b/packages/focus/test/server.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, it } from "vitest";
import { createRoot } from "solid-js";
-import { createAutofocus } from "../src/index.js";
+import { createAutofocus, createFocusTrap } from "../src/index.js";
describe("API doesn't break in SSR", () => {
it("createAutofocus() - SSR", () => {
@@ -9,4 +9,11 @@ describe("API doesn't break in SSR", () => {
dispose();
});
});
+
+ it("createFocusTrap() - SSR", () => {
+ createRoot(dispose => {
+ expect(() => createFocusTrap({ element: null })).not.toThrow();
+ dispose();
+ });
+ });
});
diff --git a/packages/autofocus/tsconfig.json b/packages/focus/tsconfig.json
similarity index 82%
rename from packages/autofocus/tsconfig.json
rename to packages/focus/tsconfig.json
index dc1970e16..b9b2b6782 100644
--- a/packages/autofocus/tsconfig.json
+++ b/packages/focus/tsconfig.json
@@ -6,6 +6,9 @@
"rootDir": "src"
},
"references": [
+ {
+ "path": "../event-listener"
+ },
{
"path": "../utils"
}
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
index c13ddf0ca..3d00f01d9 100644
--- a/packages/utils/src/index.ts
+++ b/packages/utils/src/index.ts
@@ -321,6 +321,16 @@ export function handleDiffArray(
}
}
+/**
+ * Schedules `fn` to run after the browser has painted by nesting two
+ * requestAnimationFrame calls. No-op in non-browser environments.
+ */
+export const afterPaint = (fn: () => void): void => {
+ if (typeof requestAnimationFrame === "function") {
+ requestAnimationFrame(() => requestAnimationFrame(fn));
+ }
+};
+
// ─── String transforms ────────────────────────────────────────────────────────
/**
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ee1923c5f..e9335f9cc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,7 +10,7 @@ importers:
devDependencies:
'@babel/core':
specifier: ^7.27.0
- version: 7.27.4
+ version: 7.29.0
'@changesets/cli':
specifier: ^2.29.4
version: 2.29.4
@@ -34,7 +34,7 @@ importers:
version: 8.34.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)
babel-preset-solid:
specifier: 2.0.0-beta.14
- version: 2.0.0-beta.14(@babel/core@7.27.4)(solid-js@2.0.0-beta.14)
+ version: 2.0.0-beta.14(@babel/core@7.29.0)(solid-js@2.0.0-beta.14)
esbuild:
specifier: ^0.25.5
version: 0.25.5
@@ -82,10 +82,10 @@ importers:
version: 5.8.3
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
+ version: 6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
vite-plugin-solid:
specifier: 3.0.0-next.5
- version: 3.0.0-next.5(@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ version: 3.0.0-next.5(@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
vitest:
specifier: ^2.1.9
version: 2.1.9(@types/node@22.15.31)(jsdom@25.0.1)(lightningcss@1.32.0)(sass@1.77.8)
@@ -99,9 +99,12 @@ importers:
specifier: workspace:^
version: link:../utils
devDependencies:
+ '@solidjs/web':
+ specifier: 2.0.0-beta.12
+ version: 2.0.0-beta.12(solid-js@2.0.0-beta.12)
solid-js:
- specifier: ^1.9.7
- version: 1.9.7
+ specifier: 2.0.0-beta.12
+ version: 2.0.0-beta.12
packages/analytics:
devDependencies:
@@ -125,19 +128,6 @@ importers:
specifier: 2.0.0-beta.14
version: 2.0.0-beta.14
- packages/autofocus:
- dependencies:
- '@solid-primitives/utils':
- specifier: workspace:^
- version: link:../utils
- devDependencies:
- '@solidjs/web':
- specifier: 2.0.0-beta.14
- version: 2.0.0-beta.14(solid-js@2.0.0-beta.14)
- solid-js:
- specifier: 2.0.0-beta.14
- version: 2.0.0-beta.14
-
packages/bounds:
dependencies:
'@solid-primitives/event-listener':
@@ -364,6 +354,22 @@ importers:
specifier: ^1.9.7
version: 1.9.7
+ packages/focus:
+ dependencies:
+ '@solid-primitives/event-listener':
+ specifier: workspace:^
+ version: link:../event-listener
+ '@solid-primitives/utils':
+ specifier: workspace:^
+ version: link:../utils
+ devDependencies:
+ '@solidjs/web':
+ specifier: 2.0.0-beta.14
+ version: 2.0.0-beta.14(solid-js@2.0.0-beta.14)
+ solid-js:
+ specifier: 2.0.0-beta.14
+ version: 2.0.0-beta.14
+
packages/fullscreen:
dependencies:
'@solid-primitives/utils':
@@ -1110,13 +1116,13 @@ importers:
devDependencies:
'@babel/core':
specifier: ^7.27.0
- version: 7.27.4
+ version: 7.29.0
'@solidjs/web':
specifier: 2.0.0-beta.14
version: 2.0.0-beta.14(solid-js@2.0.0-beta.14)
babel-preset-solid:
specifier: 2.0.0-beta.14
- version: 2.0.0-beta.14(@babel/core@7.27.4)(solid-js@2.0.0-beta.14)
+ version: 2.0.0-beta.14(@babel/core@7.29.0)(solid-js@2.0.0-beta.14)
solid-js:
specifier: 2.0.0-beta.14
version: 2.0.0-beta.14
@@ -1194,7 +1200,7 @@ importers:
version: 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)
'@tanstack/solid-start':
specifier: ^2.0.0-beta.17
- version: 2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ version: 2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)))(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
clsx:
specifier: ^2.0.0
version: 2.1.1
@@ -1243,7 +1249,7 @@ importers:
version: 8.5.5
react:
specifier: ^19.2.5
- version: 19.2.6
+ version: 19.2.5
tailwindcss:
specifier: 3.3.3
version: 3.3.3
@@ -1252,10 +1258,10 @@ importers:
version: 4.0.0
vite:
specifier: ^8.0.8
- version: 8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
+ version: 8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
vite-plugin-solid:
specifier: 3.0.0-next.5
- version: 3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ version: 3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
packages:
@@ -1263,10 +1269,6 @@ packages:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
'@ardatan/relay-compiler@12.0.0':
resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==}
hasBin: true
@@ -1288,18 +1290,10 @@ packages:
resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
engines: {node: '>=6.9.0'}
- '@babel/compat-data@7.27.5':
- resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==}
- engines: {node: '>=6.9.0'}
-
'@babel/compat-data@7.29.3':
resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==}
engines: {node: '>=6.9.0'}
- '@babel/core@7.27.4':
- resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==}
- engines: {node: '>=6.9.0'}
-
'@babel/core@7.29.0':
resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
engines: {node: '>=6.9.0'}
@@ -1316,10 +1310,6 @@ packages:
resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
engines: {node: '>=6.9.0'}
- '@babel/helper-compilation-targets@7.27.2':
- resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-compilation-targets@7.28.6':
resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
engines: {node: '>=6.9.0'}
@@ -1342,20 +1332,10 @@ packages:
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-module-imports@7.27.1':
- resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-module-imports@7.28.6':
resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-module-transforms@7.27.3':
- resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
'@babel/helper-module-transforms@7.28.6':
resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
engines: {node: '>=6.9.0'}
@@ -1370,10 +1350,6 @@ packages:
resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-plugin-utils@7.28.6':
- resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-replace-supers@7.27.1':
resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==}
engines: {node: '>=6.9.0'}
@@ -1400,10 +1376,6 @@ packages:
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'}
- '@babel/helpers@7.27.6':
- resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==}
- engines: {node: '>=6.9.0'}
-
'@babel/helpers@7.29.2':
resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==}
engines: {node: '>=6.9.0'}
@@ -1455,12 +1427,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-jsx@7.28.6':
- resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/plugin-syntax-object-rest-spread@7.8.3':
resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
peerDependencies:
@@ -1616,10 +1582,6 @@ packages:
resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.27.4':
- resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==}
- engines: {node: '>=6.9.0'}
-
'@babel/traverse@7.29.0':
resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
engines: {node: '>=6.9.0'}
@@ -1736,6 +1698,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.28.0':
+ resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==}
+ 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'}
@@ -1748,6 +1716,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.28.0':
+ resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.21.5':
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
@@ -1760,6 +1734,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.28.0':
+ resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.21.5':
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
@@ -1772,6 +1752,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.28.0':
+ resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.21.5':
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
@@ -1784,6 +1770,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.28.0':
+ resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.21.5':
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
@@ -1796,6 +1788,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.28.0':
+ resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.21.5':
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
@@ -1808,6 +1806,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.28.0':
+ resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==}
+ 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'}
@@ -1820,6 +1824,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.28.0':
+ resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.21.5':
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
@@ -1832,6 +1842,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.28.0':
+ resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.21.5':
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
@@ -1844,6 +1860,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.28.0':
+ resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.21.5':
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
@@ -1856,6 +1878,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.28.0':
+ resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.21.5':
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
@@ -1868,6 +1896,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.28.0':
+ resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.21.5':
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
@@ -1880,6 +1914,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.28.0':
+ resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==}
+ 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'}
@@ -1892,6 +1932,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.28.0':
+ resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.21.5':
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
@@ -1904,6 +1950,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.28.0':
+ resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.21.5':
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
@@ -1916,6 +1968,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.28.0':
+ resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.21.5':
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
@@ -1928,12 +1986,24 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.28.0':
+ resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-arm64@0.25.5':
resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.21.5':
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
@@ -1946,12 +2016,24 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.28.0':
+ resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-arm64@0.25.5':
resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.21.5':
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
@@ -1964,6 +2046,18 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.28.0':
+ resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/sunos-x64@0.21.5':
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
@@ -1976,6 +2070,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.28.0':
+ resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.21.5':
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
engines: {node: '>=12'}
@@ -1988,6 +2088,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.28.0':
+ resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.21.5':
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
@@ -2000,6 +2106,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.28.0':
+ resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.21.5':
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
@@ -2012,6 +2124,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.28.0':
+ resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@eslint-community/eslint-utils@4.7.0':
resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2325,6 +2443,9 @@ packages:
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
@@ -2381,8 +2502,8 @@ packages:
resolution: {integrity: sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==}
engines: {node: '>=20.0'}
- '@oxc-project/types@0.130.0':
- resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==}
+ '@oxc-project/types@0.127.0':
+ resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==}
'@peculiar/asn1-schema@2.3.13':
resolution: {integrity: sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==}
@@ -2413,97 +2534,97 @@ packages:
'@repeaterjs/repeater@3.0.6':
resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==}
- '@rolldown/binding-android-arm64@1.0.1':
- resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==}
+ '@rolldown/binding-android-arm64@1.0.0-rc.17':
+ resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@rolldown/binding-darwin-arm64@1.0.1':
- resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==}
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.17':
+ resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.0.1':
- resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==}
+ '@rolldown/binding-darwin-x64@1.0.0-rc.17':
+ resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@rolldown/binding-freebsd-x64@1.0.1':
- resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==}
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.17':
+ resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-linux-arm-gnueabihf@1.0.1':
- resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17':
+ resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm64-gnu@1.0.1':
- resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==}
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17':
+ resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-musl@1.0.1':
- resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==}
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17':
+ resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-ppc64-gnu@1.0.1':
- resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==}
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17':
+ resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-s390x-gnu@1.0.1':
- resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==}
+ '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17':
+ resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.0.1':
- resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==}
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17':
+ resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-musl@1.0.1':
- resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==}
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.17':
+ resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rolldown/binding-openharmony-arm64@1.0.1':
- resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==}
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.17':
+ resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-wasm32-wasi@1.0.1':
- resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==}
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.17':
+ resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@rolldown/binding-win32-arm64-msvc@1.0.1':
- resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==}
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17':
+ resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.0.1':
- resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==}
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17':
+ resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -2511,8 +2632,8 @@ packages:
'@rolldown/pluginutils@1.0.0-beta.40':
resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==}
- '@rolldown/pluginutils@1.0.1':
- resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
+ '@rolldown/pluginutils@1.0.0-rc.17':
+ resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==}
'@rollup/rollup-android-arm-eabi@4.43.0':
resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==}
@@ -2719,9 +2840,17 @@ packages:
peerDependencies:
solid-js: '>=1.8.4'
+ '@solidjs/signals@2.0.0-beta.13':
+ resolution: {integrity: sha512-jc+wLRK+eyUFerH8Mjed4HikdJwz3z95TT7tqyG+K00IV9jfgZWvR1nZDUEZc6kXffmtW/z+w6PNn62ea5KjIw==}
+
'@solidjs/signals@2.0.0-beta.14':
resolution: {integrity: sha512-y72nYtD7ogwX/UR5g2Y+meyeO6Q/xbQGtmvVTQX6USkMwEGOMnytqDnHj5amUzD7Fzqg32svwtCSx/q8hsOXAA==}
+ '@solidjs/web@2.0.0-beta.12':
+ resolution: {integrity: sha512-Wc+/LctUqfNQs98VnijoEu4gWFOSu/kUcZiBIjQ+S9ZUuT6Z77CRkmiZ0C8dyOhNPbTgpU2JYH6B5wqY2eqS0A==}
+ peerDependencies:
+ solid-js: ^2.0.0-beta.12
+
'@solidjs/web@2.0.0-beta.13':
resolution: {integrity: sha512-ugSnWcNc18osJZ24+op7mQpm6LlyHSgTnvSaYqEwL9PVmLxXpmAS7/dt5nc7MLLZtwgf1J1rmRfZb7mT8fTL2w==}
peerDependencies:
@@ -2873,8 +3002,8 @@ packages:
'@tauri-apps/plugin-store@2.0.0':
resolution: {integrity: sha512-l4xsbxAXrKGdBdYNNswrLfcRv3v1kOatdycOcVPYW+jKwkznCr1HEOrPXkPhXsZLSLyYmNXpgfOmdSZNmcykDg==}
- '@tybys/wasm-util@0.10.2':
- resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
+ '@tybys/wasm-util@0.10.1':
+ resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -3184,8 +3313,8 @@ packages:
babel-dead-code-elimination@1.0.12:
resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==}
- babel-plugin-jsx-dom-expressions@0.40.7:
- resolution: {integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==}
+ babel-plugin-jsx-dom-expressions@0.39.8:
+ resolution: {integrity: sha512-/MVOIIjonylDXnrWmG23ZX82m9mtKATsVHB7zYlPfDR9Vdd/NBE48if+wv27bSkBtyO7EPMUlcUc4J63QwuACQ==}
peerDependencies:
'@babel/core': ^7.20.12
@@ -3207,14 +3336,10 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
- babel-preset-solid@1.9.12:
- resolution: {integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==}
+ babel-preset-solid@1.9.6:
+ resolution: {integrity: sha512-HXTK9f93QxoH8dYn1M2mJdOlWgMsR88Lg/ul6QCZGkNTktjTE5HAf93YxQumHoCudLEtZrU1cFCMFOVho6GqFg==}
peerDependencies:
'@babel/core': ^7.0.0
- solid-js: ^1.9.12
- peerDependenciesMeta:
- solid-js:
- optional: true
babel-preset-solid@2.0.0-beta.13:
resolution: {integrity: sha512-VX5fa4b6Sn92v+vFw3ITEvDv0f5vZZZhGgGcqYaAzjP7RF45+VZcZBoG0pHwCGA7UfXdYLUQuqXb4tG1uV3cQA==}
@@ -3696,6 +3821,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.28.0:
+ resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
@@ -3929,9 +4059,6 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
- get-tsconfig@4.10.1:
- resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==}
-
github-slugger@2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
@@ -4226,8 +4353,8 @@ packages:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
- isbot@5.1.40:
- resolution: {integrity: sha512-yNeeynhhtIVRBk12tBV4eHNxwB42HzR4Q3Ea7vCOiJhImGaAIdIMrbJtacQlBizGLjUPw+akkFI5Dn9T70XoVQ==}
+ isbot@5.1.39:
+ resolution: {integrity: sha512-obH0yYahGXdzNxo+djmHhBYThUKDkz565cxkIlt2L9hXfv1NlaLKoDBHo6KxXsYrIXx2RK3x5vY36CfZcobxEw==}
engines: {node: '>=18'}
isexe@2.0.0:
@@ -4972,8 +5099,8 @@ packages:
resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==}
engines: {node: '>=6.0.0'}
- postcss@8.5.14:
- resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
+ postcss@8.5.13:
+ resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==}
engines: {node: ^10 || ^12 || >=14}
postcss@8.5.5:
@@ -5083,8 +5210,8 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- react@19.2.6:
- resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==}
+ react@19.2.5:
+ resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -5178,9 +5305,6 @@ packages:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
resolve@1.22.10:
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
engines: {node: '>= 0.4'}
@@ -5197,8 +5321,8 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
- rolldown@1.0.1:
- resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==}
+ rolldown@1.0.0-rc.17:
+ resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -5268,12 +5392,6 @@ packages:
peerDependencies:
seroval: ^1.0
- seroval-plugins@1.5.4:
- resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==}
- engines: {node: '>=10'}
- peerDependencies:
- seroval: ^1.0
-
seroval@1.3.2:
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
engines: {node: '>=10'}
@@ -5282,10 +5400,6 @@ packages:
resolution: {integrity: sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==}
engines: {node: '>=10'}
- seroval@1.5.4:
- resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==}
- engines: {node: '>=10'}
-
set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
@@ -5341,6 +5455,9 @@ packages:
solid-js@1.9.7:
resolution: {integrity: sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw==}
+ solid-js@2.0.0-beta.12:
+ resolution: {integrity: sha512-UJC4gc0Dgbm6BTBFhUdrfIEXiQ/jaQuUGxYfZnEkywwD5FX16MhlM/e6bq2+94mhXUExYI9VJoGBh7CpOZ/1XA==}
+
solid-js@2.0.0-beta.14:
resolution: {integrity: sha512-gbbvlxhs1GgL1IsnwHNtkTCRBBQcIDMwznBw3T05iYvP+fuUKMyIPku+ZLjeALyX4RaSLR99JSL6NttyHsYb8Q==}
@@ -5563,8 +5680,8 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsx@4.20.2:
- resolution: {integrity: sha512-He0ZWr41gLa4vD30Au3yuwpe0HXaCZbclvl8RBieUiJ9aFnPMWUPIyvw3RU8+1Crjfcrauvitae2a4tUzRAGsw==}
+ tsx@4.22.3:
+ resolution: {integrity: sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -5663,8 +5780,8 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- validate-html-nesting@1.2.4:
- resolution: {integrity: sha512-doQi7e8EJ2OWneSG1aZpJluS6A49aZM0+EICXWKm1i6WvqTLmq0tpUcImc4KTWG50mORO0C4YDBtOCSYvElftw==}
+ validate-html-nesting@1.2.2:
+ resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
value-or-promise@1.0.12:
resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==}
@@ -5763,13 +5880,13 @@ packages:
yaml:
optional: true
- vite@8.0.13:
- resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==}
+ vite@8.0.10:
+ resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
- '@vitejs/devtools': ^0.1.18
+ '@vitejs/devtools': ^0.1.0
esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
@@ -5986,11 +6103,6 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.8
- '@jridgewell/trace-mapping': 0.3.25
-
'@ardatan/relay-compiler@12.0.0(graphql@16.9.0)':
dependencies:
'@babel/core': 7.29.0
@@ -6041,30 +6153,8 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
- '@babel/compat-data@7.27.5': {}
-
'@babel/compat-data@7.29.3': {}
- '@babel/core@7.27.4':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.27.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)
- '@babel/helpers': 7.27.6
- '@babel/parser': 7.27.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.27.4
- '@babel/types': 7.27.6
- convert-source-map: 2.0.0
- debug: 4.4.1
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
'@babel/core@7.29.0':
dependencies:
'@babel/code-frame': 7.29.0
@@ -6105,14 +6195,6 @@ snapshots:
dependencies:
'@babel/types': 7.29.0
- '@babel/helper-compilation-targets@7.27.2':
- dependencies:
- '@babel/compat-data': 7.27.5
- '@babel/helper-validator-option': 7.27.1
- browserslist: 4.25.0
- lru-cache: 5.1.1
- semver: 6.3.1
-
'@babel/helper-compilation-targets@7.28.6':
dependencies:
'@babel/compat-data': 7.29.3
@@ -6121,19 +6203,6 @@ snapshots:
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)':
- dependencies:
- '@babel/core': 7.27.4
- '@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-member-expression-to-functions': 7.27.1
- '@babel/helper-optimise-call-expression': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4)
- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.29.0
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
@@ -6160,13 +6229,6 @@ snapshots:
dependencies:
'@babel/types': 7.29.0
- '@babel/helper-module-imports@7.27.1':
- dependencies:
- '@babel/traverse': 7.27.4
- '@babel/types': 7.27.6
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-module-imports@7.28.6':
dependencies:
'@babel/traverse': 7.29.0
@@ -6174,24 +6236,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)':
- dependencies:
- '@babel/core': 7.27.4
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.27.4
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.27.3(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.27.4
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
@@ -6207,17 +6251,6 @@ snapshots:
'@babel/helper-plugin-utils@7.27.1': {}
- '@babel/helper-plugin-utils@7.28.6': {}
-
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)':
- dependencies:
- '@babel/core': 7.27.4
- '@babel/helper-member-expression-to-functions': 7.27.1
- '@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.29.0
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-replace-supers@7.27.1(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
@@ -6242,11 +6275,6 @@ snapshots:
'@babel/helper-validator-option@7.27.1': {}
- '@babel/helpers@7.27.6':
- dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.27.6
-
'@babel/helpers@7.29.2':
dependencies:
'@babel/template': 7.28.6
@@ -6254,7 +6282,7 @@ snapshots:
'@babel/parser@7.27.5':
dependencies:
- '@babel/types': 7.27.6
+ '@babel/types': 7.29.0
'@babel/parser@7.29.3':
dependencies:
@@ -6264,7 +6292,7 @@ snapshots:
dependencies:
'@babel/core': 7.29.0
'@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.29.0)
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
@@ -6273,48 +6301,33 @@ snapshots:
'@babel/compat-data': 7.29.3
'@babel/core': 7.29.0
'@babel/helper-compilation-targets': 7.28.6
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0)
'@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.29.0)
'@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-flow@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)':
- dependencies:
- '@babel/core': 7.27.4
- '@babel/helper-plugin-utils': 7.27.1
-
- '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.27.4)':
- dependencies:
- '@babel/core': 7.27.4
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)':
+ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)':
- dependencies:
- '@babel/core': 7.27.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)':
@@ -6325,24 +6338,24 @@ snapshots:
'@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-classes@7.25.0(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-compilation-targets': 7.28.6
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0)
'@babel/traverse': 7.29.0
globals: 11.12.0
@@ -6352,24 +6365,24 @@ snapshots:
'@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/template': 7.28.6
'@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.29.0)
'@babel/plugin-transform-for-of@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
@@ -6378,7 +6391,7 @@ snapshots:
dependencies:
'@babel/core': 7.29.0
'@babel/helper-compilation-targets': 7.28.6
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
@@ -6386,25 +6399,17 @@ snapshots:
'@babel/plugin-transform-literals@7.25.2(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)':
- dependencies:
- '@babel/core': 7.27.4
- '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4)
'@babel/helper-plugin-utils': 7.27.1
- transitivePeerDependencies:
- - supports-color
'@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-module-transforms': 7.27.3(@babel/core@7.29.0)
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.27.1
transitivePeerDependencies:
- supports-color
@@ -6412,7 +6417,7 @@ snapshots:
'@babel/plugin-transform-object-super@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
@@ -6420,25 +6425,25 @@ snapshots:
'@babel/plugin-transform-parameters@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-module-imports': 7.28.6
- '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
'@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
@@ -6446,12 +6451,12 @@ snapshots:
'@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-spread@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
@@ -6459,27 +6464,27 @@ snapshots:
'@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)':
+ '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.27.4
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4)
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)':
+ '@babel/preset-typescript@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.27.4
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-validator-option': 7.27.1
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4)
- '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4)
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
@@ -6497,18 +6502,6 @@ snapshots:
'@babel/parser': 7.29.3
'@babel/types': 7.29.0
- '@babel/traverse@7.27.4':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.27.5
- '@babel/parser': 7.27.5
- '@babel/template': 7.27.2
- '@babel/types': 7.27.6
- debug: 4.4.1
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
'@babel/traverse@7.29.0':
dependencies:
'@babel/code-frame': 7.29.0
@@ -6715,144 +6708,222 @@ snapshots:
'@esbuild/aix-ppc64@0.25.5':
optional: true
+ '@esbuild/aix-ppc64@0.28.0':
+ optional: true
+
'@esbuild/android-arm64@0.21.5':
optional: true
'@esbuild/android-arm64@0.25.5':
optional: true
+ '@esbuild/android-arm64@0.28.0':
+ optional: true
+
'@esbuild/android-arm@0.21.5':
optional: true
'@esbuild/android-arm@0.25.5':
optional: true
+ '@esbuild/android-arm@0.28.0':
+ optional: true
+
'@esbuild/android-x64@0.21.5':
optional: true
'@esbuild/android-x64@0.25.5':
optional: true
+ '@esbuild/android-x64@0.28.0':
+ optional: true
+
'@esbuild/darwin-arm64@0.21.5':
optional: true
'@esbuild/darwin-arm64@0.25.5':
optional: true
+ '@esbuild/darwin-arm64@0.28.0':
+ optional: true
+
'@esbuild/darwin-x64@0.21.5':
optional: true
'@esbuild/darwin-x64@0.25.5':
optional: true
+ '@esbuild/darwin-x64@0.28.0':
+ optional: true
+
'@esbuild/freebsd-arm64@0.21.5':
optional: true
'@esbuild/freebsd-arm64@0.25.5':
optional: true
+ '@esbuild/freebsd-arm64@0.28.0':
+ optional: true
+
'@esbuild/freebsd-x64@0.21.5':
optional: true
'@esbuild/freebsd-x64@0.25.5':
optional: true
+ '@esbuild/freebsd-x64@0.28.0':
+ optional: true
+
'@esbuild/linux-arm64@0.21.5':
optional: true
'@esbuild/linux-arm64@0.25.5':
optional: true
+ '@esbuild/linux-arm64@0.28.0':
+ optional: true
+
'@esbuild/linux-arm@0.21.5':
optional: true
'@esbuild/linux-arm@0.25.5':
optional: true
+ '@esbuild/linux-arm@0.28.0':
+ optional: true
+
'@esbuild/linux-ia32@0.21.5':
optional: true
'@esbuild/linux-ia32@0.25.5':
optional: true
+ '@esbuild/linux-ia32@0.28.0':
+ optional: true
+
'@esbuild/linux-loong64@0.21.5':
optional: true
'@esbuild/linux-loong64@0.25.5':
optional: true
+ '@esbuild/linux-loong64@0.28.0':
+ optional: true
+
'@esbuild/linux-mips64el@0.21.5':
optional: true
'@esbuild/linux-mips64el@0.25.5':
optional: true
+ '@esbuild/linux-mips64el@0.28.0':
+ optional: true
+
'@esbuild/linux-ppc64@0.21.5':
optional: true
'@esbuild/linux-ppc64@0.25.5':
optional: true
+ '@esbuild/linux-ppc64@0.28.0':
+ optional: true
+
'@esbuild/linux-riscv64@0.21.5':
optional: true
'@esbuild/linux-riscv64@0.25.5':
optional: true
+ '@esbuild/linux-riscv64@0.28.0':
+ optional: true
+
'@esbuild/linux-s390x@0.21.5':
optional: true
'@esbuild/linux-s390x@0.25.5':
optional: true
+ '@esbuild/linux-s390x@0.28.0':
+ optional: true
+
'@esbuild/linux-x64@0.21.5':
optional: true
'@esbuild/linux-x64@0.25.5':
optional: true
+ '@esbuild/linux-x64@0.28.0':
+ optional: true
+
'@esbuild/netbsd-arm64@0.25.5':
optional: true
+ '@esbuild/netbsd-arm64@0.28.0':
+ optional: true
+
'@esbuild/netbsd-x64@0.21.5':
optional: true
'@esbuild/netbsd-x64@0.25.5':
optional: true
+ '@esbuild/netbsd-x64@0.28.0':
+ optional: true
+
'@esbuild/openbsd-arm64@0.25.5':
optional: true
+ '@esbuild/openbsd-arm64@0.28.0':
+ optional: true
+
'@esbuild/openbsd-x64@0.21.5':
optional: true
'@esbuild/openbsd-x64@0.25.5':
optional: true
+ '@esbuild/openbsd-x64@0.28.0':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ optional: true
+
'@esbuild/sunos-x64@0.21.5':
optional: true
'@esbuild/sunos-x64@0.25.5':
optional: true
+ '@esbuild/sunos-x64@0.28.0':
+ optional: true
+
'@esbuild/win32-arm64@0.21.5':
optional: true
'@esbuild/win32-arm64@0.25.5':
optional: true
+ '@esbuild/win32-arm64@0.28.0':
+ optional: true
+
'@esbuild/win32-ia32@0.21.5':
optional: true
'@esbuild/win32-ia32@0.25.5':
optional: true
+ '@esbuild/win32-ia32@0.28.0':
+ optional: true
+
'@esbuild/win32-x64@0.21.5':
optional: true
'@esbuild/win32-x64@0.25.5':
optional: true
+ '@esbuild/win32-x64@0.28.0':
+ optional: true
+
'@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@1.21.7))':
dependencies:
eslint: 9.28.0(jiti@1.21.7)
@@ -7370,7 +7441,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.13':
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/gen-mapping@0.3.8':
@@ -7390,6 +7461,8 @@ snapshots:
'@jridgewell/sourcemap-codec@1.5.0': {}
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
@@ -7398,7 +7471,7 @@ snapshots:
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@kamilkisiela/fast-url-parser@1.1.4': {}
@@ -7422,7 +7495,7 @@ snapshots:
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
- '@tybys/wasm-util': 0.10.2
+ '@tybys/wasm-util': 0.10.1
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -7458,7 +7531,7 @@ snapshots:
'@oozcitak/util@10.0.0': {}
- '@oxc-project/types@0.130.0': {}
+ '@oxc-project/types@0.127.0': {}
'@peculiar/asn1-schema@2.3.13':
dependencies:
@@ -7490,58 +7563,58 @@ snapshots:
'@repeaterjs/repeater@3.0.6': {}
- '@rolldown/binding-android-arm64@1.0.1':
+ '@rolldown/binding-android-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-darwin-arm64@1.0.1':
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-darwin-x64@1.0.1':
+ '@rolldown/binding-darwin-x64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-freebsd-x64@1.0.1':
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.1':
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.1':
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.0.1':
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.0.1':
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.0.1':
+ '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.1':
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-x64-musl@1.0.1':
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.17':
optional: true
- '@rolldown/binding-openharmony-arm64@1.0.1':
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-wasm32-wasi@1.0.1':
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.17':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.1':
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.1':
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17':
optional: true
'@rolldown/pluginutils@1.0.0-beta.40': {}
- '@rolldown/pluginutils@1.0.1': {}
+ '@rolldown/pluginutils@1.0.0-rc.17': {}
'@rollup/rollup-android-arm-eabi@4.43.0':
optional: true
@@ -7734,8 +7807,16 @@ snapshots:
dependencies:
solid-js: 2.0.0-beta.14
+ '@solidjs/signals@2.0.0-beta.13': {}
+
'@solidjs/signals@2.0.0-beta.14': {}
+ '@solidjs/web@2.0.0-beta.12(solid-js@2.0.0-beta.12)':
+ dependencies:
+ seroval: 1.5.2
+ seroval-plugins: 1.5.2(seroval@1.5.2)
+ solid-js: 2.0.0-beta.12
+
'@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14)':
dependencies:
seroval: 1.5.2
@@ -7744,8 +7825,8 @@ snapshots:
'@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14)':
dependencies:
- seroval: 1.5.4
- seroval-plugins: 1.5.4(seroval@1.5.4)
+ seroval: 1.5.2
+ seroval-plugins: 1.5.2(seroval@1.5.2)
solid-js: 2.0.0-beta.14
'@supabase/auth-js@2.67.3':
@@ -7808,8 +7889,8 @@ snapshots:
dependencies:
'@tanstack/history': 1.161.6
cookie-es: 2.0.0
- seroval: 1.5.4
- seroval-plugins: 1.5.4(seroval@1.5.4)
+ seroval: 1.5.2
+ seroval-plugins: 1.5.2(seroval@1.5.2)
'@tanstack/router-generator@1.166.24':
dependencies:
@@ -7819,15 +7900,15 @@ snapshots:
prettier: 3.5.3
recast: 0.23.11
source-map: 0.7.6
- tsx: 4.20.2
+ tsx: 4.22.3
zod: 3.25.63
transitivePeerDependencies:
- supports-color
- '@tanstack/router-plugin@1.167.12(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))':
+ '@tanstack/router-plugin@1.167.12(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)))(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))':
dependencies:
'@babel/core': 7.29.0
- '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
'@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0)
'@babel/template': 7.28.6
'@babel/traverse': 7.29.0
@@ -7840,8 +7921,8 @@ snapshots:
unplugin: 2.3.5
zod: 3.25.63
optionalDependencies:
- vite: 8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
- vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ vite: 8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
+ vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
transitivePeerDependencies:
- supports-color
@@ -7866,7 +7947,7 @@ snapshots:
'@solidjs/web': 2.0.0-beta.13(solid-js@2.0.0-beta.14)
'@tanstack/history': 1.161.6
'@tanstack/router-core': 1.168.9
- isbot: 5.1.40
+ isbot: 5.1.39
solid-js: 2.0.0-beta.14
'@tanstack/solid-start-client@2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)':
@@ -7890,18 +7971,18 @@ snapshots:
transitivePeerDependencies:
- crossws
- '@tanstack/solid-start@2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))':
+ '@tanstack/solid-start@2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)))(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))':
dependencies:
'@solidjs/web': 2.0.0-beta.13(solid-js@2.0.0-beta.14)
'@tanstack/solid-router': 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)
'@tanstack/solid-start-client': 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)
'@tanstack/solid-start-server': 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)
'@tanstack/start-client-core': 1.167.9
- '@tanstack/start-plugin-core': 1.167.17(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ '@tanstack/start-plugin-core': 1.167.17(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)))(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
'@tanstack/start-server-core': 1.167.9
pathe: 2.0.3
solid-js: 2.0.0-beta.14
- vite: 8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
+ vite: 8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
transitivePeerDependencies:
- '@rsbuild/core'
- '@tanstack/react-router'
@@ -7915,11 +7996,11 @@ snapshots:
'@tanstack/router-core': 1.168.9
'@tanstack/start-fn-stubs': 1.161.6
'@tanstack/start-storage-context': 1.166.23
- seroval: 1.5.4
+ seroval: 1.5.2
'@tanstack/start-fn-stubs@1.161.6': {}
- '@tanstack/start-plugin-core@1.167.17(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))':
+ '@tanstack/start-plugin-core@1.167.17(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)))(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/core': 7.29.0
@@ -7927,7 +8008,7 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-beta.40
'@tanstack/router-core': 1.168.9
'@tanstack/router-generator': 1.166.24
- '@tanstack/router-plugin': 1.167.12(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ '@tanstack/router-plugin': 1.167.12(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)))(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
'@tanstack/router-utils': 1.161.6
'@tanstack/start-client-core': 1.167.9
'@tanstack/start-server-core': 1.167.9
@@ -7939,8 +8020,8 @@ snapshots:
srvx: 0.11.15
tinyglobby: 0.2.16
ufo: 1.6.1
- vite: 8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
- vitefu: 1.1.3(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ vite: 8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
+ vitefu: 1.1.3(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
xmlbuilder2: 4.0.3
zod: 3.25.63
transitivePeerDependencies:
@@ -7958,7 +8039,7 @@ snapshots:
'@tanstack/start-client-core': 1.167.9
'@tanstack/start-storage-context': 1.166.23
h3-v2: h3@2.0.1-rc.16
- seroval: 1.5.4
+ seroval: 1.5.2
transitivePeerDependencies:
- crossws
@@ -7976,7 +8057,7 @@ snapshots:
dependencies:
'@tauri-apps/api': 2.0.1
- '@tybys/wasm-util@0.10.2':
+ '@tybys/wasm-util@0.10.1':
dependencies:
tslib: 2.8.1
optional: true
@@ -8346,34 +8427,35 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-plugin-jsx-dom-expressions@0.40.7(@babel/core@7.27.4):
+ babel-plugin-jsx-dom-expressions@0.39.8(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.27.4
+ '@babel/core': 7.29.0
'@babel/helper-module-imports': 7.18.6
- '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.27.4)
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
'@babel/types': 7.29.0
html-entities: 2.3.3
parse5: 7.3.0
+ validate-html-nesting: 1.2.2
babel-plugin-jsx-dom-expressions@0.50.0-next.11(@babel/core@7.29.0):
dependencies:
'@babel/core': 7.29.0
'@babel/helper-module-imports': 7.18.6
- '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
'@babel/types': 7.29.0
html-entities: 2.3.3
parse5: 7.3.0
- validate-html-nesting: 1.2.4
+ validate-html-nesting: 1.2.2
- babel-plugin-jsx-dom-expressions@0.50.0-next.13(@babel/core@7.27.4):
+ babel-plugin-jsx-dom-expressions@0.50.0-next.13(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.27.4
+ '@babel/core': 7.29.0
'@babel/helper-module-imports': 7.18.6
- '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.27.4)
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
'@babel/types': 7.29.0
html-entities: 2.3.3
parse5: 7.3.0
- validate-html-nesting: 1.2.4
+ validate-html-nesting: 1.2.2
babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {}
@@ -8384,7 +8466,7 @@ snapshots:
'@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.29.0)
'@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0)
'@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.29.0)
- '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
'@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0)
'@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.29.0)
'@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.29.0)
@@ -8410,12 +8492,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-preset-solid@1.9.12(@babel/core@7.27.4)(solid-js@2.0.0-beta.14):
+ babel-preset-solid@1.9.6(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.27.4
- babel-plugin-jsx-dom-expressions: 0.40.7(@babel/core@7.27.4)
- optionalDependencies:
- solid-js: 2.0.0-beta.14
+ '@babel/core': 7.29.0
+ babel-plugin-jsx-dom-expressions: 0.39.8(@babel/core@7.29.0)
babel-preset-solid@2.0.0-beta.13(@babel/core@7.29.0)(solid-js@2.0.0-beta.14):
dependencies:
@@ -8424,10 +8504,10 @@ snapshots:
optionalDependencies:
solid-js: 2.0.0-beta.14
- babel-preset-solid@2.0.0-beta.14(@babel/core@7.27.4)(solid-js@2.0.0-beta.14):
+ babel-preset-solid@2.0.0-beta.14(@babel/core@7.29.0)(solid-js@2.0.0-beta.14):
dependencies:
- '@babel/core': 7.27.4
- babel-plugin-jsx-dom-expressions: 0.50.0-next.13(@babel/core@7.27.4)
+ '@babel/core': 7.29.0
+ babel-plugin-jsx-dom-expressions: 0.50.0-next.13(@babel/core@7.29.0)
optionalDependencies:
solid-js: 2.0.0-beta.14
@@ -8886,9 +8966,9 @@ snapshots:
esbuild-plugin-solid@0.6.0(esbuild@0.25.5)(solid-js@2.0.0-beta.14):
dependencies:
- '@babel/core': 7.27.4
- '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4)
- babel-preset-solid: 1.9.12(@babel/core@7.27.4)(solid-js@2.0.0-beta.14)
+ '@babel/core': 7.29.0
+ '@babel/preset-typescript': 7.27.1(@babel/core@7.29.0)
+ babel-preset-solid: 1.9.6(@babel/core@7.29.0)
esbuild: 0.25.5
solid-js: 2.0.0-beta.14
transitivePeerDependencies:
@@ -8948,6 +9028,35 @@ snapshots:
'@esbuild/win32-ia32': 0.25.5
'@esbuild/win32-x64': 0.25.5
+ esbuild@0.28.0:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.28.0
+ '@esbuild/android-arm': 0.28.0
+ '@esbuild/android-arm64': 0.28.0
+ '@esbuild/android-x64': 0.28.0
+ '@esbuild/darwin-arm64': 0.28.0
+ '@esbuild/darwin-x64': 0.28.0
+ '@esbuild/freebsd-arm64': 0.28.0
+ '@esbuild/freebsd-x64': 0.28.0
+ '@esbuild/linux-arm': 0.28.0
+ '@esbuild/linux-arm64': 0.28.0
+ '@esbuild/linux-ia32': 0.28.0
+ '@esbuild/linux-loong64': 0.28.0
+ '@esbuild/linux-mips64el': 0.28.0
+ '@esbuild/linux-ppc64': 0.28.0
+ '@esbuild/linux-riscv64': 0.28.0
+ '@esbuild/linux-s390x': 0.28.0
+ '@esbuild/linux-x64': 0.28.0
+ '@esbuild/netbsd-arm64': 0.28.0
+ '@esbuild/netbsd-x64': 0.28.0
+ '@esbuild/openbsd-arm64': 0.28.0
+ '@esbuild/openbsd-x64': 0.28.0
+ '@esbuild/openharmony-arm64': 0.28.0
+ '@esbuild/sunos-x64': 0.28.0
+ '@esbuild/win32-arm64': 0.28.0
+ '@esbuild/win32-ia32': 0.28.0
+ '@esbuild/win32-x64': 0.28.0
+
escalade@3.2.0: {}
escape-string-regexp@1.0.5: {}
@@ -9205,10 +9314,6 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
- get-tsconfig@4.10.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
github-slugger@2.0.0: {}
glob-parent@5.1.2:
@@ -9517,7 +9622,7 @@ snapshots:
is-windows@1.0.2: {}
- isbot@5.1.40: {}
+ isbot@5.1.39: {}
isexe@2.0.0: {}
@@ -10397,7 +10502,7 @@ snapshots:
picocolors: 0.2.1
source-map: 0.6.1
- postcss@8.5.14:
+ postcss@8.5.13:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
@@ -10448,7 +10553,7 @@ snapshots:
queue-microtask@1.2.3: {}
- react@19.2.6: {}
+ react@19.2.5: {}
read-cache@1.0.0:
dependencies:
@@ -10594,8 +10699,6 @@ snapshots:
resolve-from@5.0.0: {}
- resolve-pkg-maps@1.0.0: {}
-
resolve@1.22.10:
dependencies:
is-core-module: 2.16.1
@@ -10611,26 +10714,26 @@ snapshots:
rfdc@1.4.1: {}
- rolldown@1.0.1:
+ rolldown@1.0.0-rc.17:
dependencies:
- '@oxc-project/types': 0.130.0
- '@rolldown/pluginutils': 1.0.1
+ '@oxc-project/types': 0.127.0
+ '@rolldown/pluginutils': 1.0.0-rc.17
optionalDependencies:
- '@rolldown/binding-android-arm64': 1.0.1
- '@rolldown/binding-darwin-arm64': 1.0.1
- '@rolldown/binding-darwin-x64': 1.0.1
- '@rolldown/binding-freebsd-x64': 1.0.1
- '@rolldown/binding-linux-arm-gnueabihf': 1.0.1
- '@rolldown/binding-linux-arm64-gnu': 1.0.1
- '@rolldown/binding-linux-arm64-musl': 1.0.1
- '@rolldown/binding-linux-ppc64-gnu': 1.0.1
- '@rolldown/binding-linux-s390x-gnu': 1.0.1
- '@rolldown/binding-linux-x64-gnu': 1.0.1
- '@rolldown/binding-linux-x64-musl': 1.0.1
- '@rolldown/binding-openharmony-arm64': 1.0.1
- '@rolldown/binding-wasm32-wasi': 1.0.1
- '@rolldown/binding-win32-arm64-msvc': 1.0.1
- '@rolldown/binding-win32-x64-msvc': 1.0.1
+ '@rolldown/binding-android-arm64': 1.0.0-rc.17
+ '@rolldown/binding-darwin-arm64': 1.0.0-rc.17
+ '@rolldown/binding-darwin-x64': 1.0.0-rc.17
+ '@rolldown/binding-freebsd-x64': 1.0.0-rc.17
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17
+ '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17
+ '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17
+ '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17
+ '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17
+ '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17
+ '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17
+ '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17
+ '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17
+ '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17
+ '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17
rollup@4.43.0:
dependencies:
@@ -10708,16 +10811,10 @@ snapshots:
dependencies:
seroval: 1.5.2
- seroval-plugins@1.5.4(seroval@1.5.4):
- dependencies:
- seroval: 1.5.4
-
seroval@1.3.2: {}
seroval@1.5.2: {}
- seroval@1.5.4: {}
-
set-blocking@2.0.0: {}
setimmediate@1.0.5: {}
@@ -10771,12 +10868,19 @@ snapshots:
seroval: 1.3.2
seroval-plugins: 1.3.2(seroval@1.3.2)
+ solid-js@2.0.0-beta.12:
+ dependencies:
+ '@solidjs/signals': 2.0.0-beta.13
+ csstype: 3.1.3
+ seroval: 1.5.2
+ seroval-plugins: 1.5.2(seroval@1.5.2)
+
solid-js@2.0.0-beta.14:
dependencies:
'@solidjs/signals': 2.0.0-beta.14
csstype: 3.1.3
- seroval: 1.5.4
- seroval-plugins: 1.5.4(seroval@1.5.4)
+ seroval: 1.5.2
+ seroval-plugins: 1.5.2(seroval@1.5.2)
solid-refresh@0.8.0-next.7(solid-js@2.0.0-beta.14):
dependencies:
@@ -11022,10 +11126,9 @@ snapshots:
tslib@2.8.1: {}
- tsx@4.20.2:
+ tsx@4.22.3:
dependencies:
- esbuild: 0.25.5
- get-tsconfig: 4.10.1
+ esbuild: 0.28.0
optionalDependencies:
fsevents: 2.3.3
@@ -11127,7 +11230,7 @@ snapshots:
util-deprecate@1.0.2: {}
- validate-html-nesting@1.2.4: {}
+ validate-html-nesting@1.2.2: {}
value-or-promise@1.0.12: {}
@@ -11159,7 +11262,7 @@ snapshots:
- supports-color
- terser
- vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)):
+ vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)):
dependencies:
'@babel/core': 7.29.0
'@solidjs/web': 2.0.0-beta.13(solid-js@2.0.0-beta.14)
@@ -11168,12 +11271,12 @@ snapshots:
merge-anything: 5.1.7
solid-js: 2.0.0-beta.14
solid-refresh: 0.8.0-next.7(solid-js@2.0.0-beta.14)
- vite: 8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
- vitefu: 1.1.3(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ vite: 8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
+ vitefu: 1.1.3(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
transitivePeerDependencies:
- supports-color
- vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)):
+ vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)):
dependencies:
'@babel/core': 7.29.0
'@solidjs/web': 2.0.0-beta.14(solid-js@2.0.0-beta.14)
@@ -11182,8 +11285,8 @@ snapshots:
merge-anything: 5.1.7
solid-js: 2.0.0-beta.14
solid-refresh: 0.8.0-next.7(solid-js@2.0.0-beta.14)
- vite: 6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
- vitefu: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0))
+ vite: 6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
+ vitefu: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0))
transitivePeerDependencies:
- supports-color
@@ -11198,7 +11301,7 @@ snapshots:
lightningcss: 1.32.0
sass: 1.77.8
- vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0):
+ vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0):
dependencies:
esbuild: 0.25.5
fdir: 6.4.6(picomatch@4.0.2)
@@ -11212,32 +11315,32 @@ snapshots:
jiti: 1.21.7
lightningcss: 1.32.0
sass: 1.77.8
- tsx: 4.20.2
+ tsx: 4.22.3
yaml: 2.5.0
- vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0):
+ vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
- postcss: 8.5.14
- rolldown: 1.0.1
+ postcss: 8.5.13
+ rolldown: 1.0.0-rc.17
tinyglobby: 0.2.16
optionalDependencies:
'@types/node': 22.15.31
- esbuild: 0.25.5
+ esbuild: 0.28.0
fsevents: 2.3.3
jiti: 1.21.7
sass: 1.77.8
- tsx: 4.20.2
+ tsx: 4.22.3
yaml: 2.5.0
- vitefu@1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)):
+ vitefu@1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)):
optionalDependencies:
- vite: 6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
+ vite: 6.3.5(@types/node@22.15.31)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
- vitefu@1.1.3(vite@8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)):
+ vitefu@1.1.3(vite@8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)):
optionalDependencies:
- vite: 8.0.13(@types/node@22.15.31)(esbuild@0.25.5)(jiti@1.21.7)(sass@1.77.8)(tsx@4.20.2)(yaml@2.5.0)
+ vite: 8.0.10(@types/node@22.15.31)(esbuild@0.28.0)(jiti@1.21.7)(sass@1.77.8)(tsx@4.22.3)(yaml@2.5.0)
vitest@2.1.9(@types/node@22.15.31)(jsdom@25.0.1)(lightningcss@1.32.0)(sass@1.77.8):
dependencies: