<html lang="en">
<head></head>
<body>

<form id="mainForm" method="post" action="https://stackblitz.com/run" target="_self">
<input type="hidden" name="project[files][CHANGELOG.md]" value="# examples/react/todo

## 0.0.39

### Patch Changes

- Updated dependencies [[`a920d02`](https://github.com/TanStack/db/commit/a920d02fa59de3a1dfa409ffdc5325cbd984cb97), [`cda9d6a`](https://github.com/TanStack/db/commit/cda9d6a731e93777f1c8bfdab7d9e22f70e80dc6), [`bc6f30e`](https://github.com/TanStack/db/commit/bc6f30e716aeb26c13b6a0e9ba00a27edc72a4d7), [`d0dfcda`](https://github.com/TanStack/db/commit/d0dfcdae6c354a8e424c1f083ee989e9874e714e), [`16a34c9`](https://github.com/TanStack/db/commit/16a34c9f5843c9edbb6d5c2fb52b02d65d602b28), [`477afa4`](https://github.com/TanStack/db/commit/477afa48da2dbdbccb7c412c8069474300a2b789)]:
  - @tanstack/electric-db-collection@0.6.0
  - @tanstack/query-db-collection@1.4.4
  - @tanstack/trailbase-db-collection@0.1.120
  - @tanstack/solid-db@0.3.9

## 0.0.38

### Patch Changes

- Updated dependencies [[`9c62ac3`](https://github.com/TanStack/db/commit/9c62ac3782779dc2a91335dd834ad8eb907db109), [`f7c0afe`](https://github.com/TanStack/db/commit/f7c0afe1d28b2a8805695e84a383c3bc5496b63e)]:
  - @tanstack/solid-db@0.3.0
  - @tanstack/query-db-collection@1.3.1
  - @tanstack/electric-db-collection@0.5.1
  - @tanstack/trailbase-db-collection@0.1.111

## 0.0.37

### Patch Changes

- Updated dependencies [[`179d003`](https://github.com/TanStack/db/commit/179d003a14a13ddf48ffacd22b15c25087f7c5f4), [`84fc44b`](https://github.com/TanStack/db/commit/84fc44b559c94139f28b3cec526ebfe05290b95e), [`fef53f8`](https://github.com/TanStack/db/commit/fef53f8be7f1cb68f00639a4c3206a6598663de4), [`b4494fd`](https://github.com/TanStack/db/commit/b4494fd34ac58c1b0fd102a41b097dbf4dd97b80), [`8ca04e7`](https://github.com/TanStack/db/commit/8ca04e747fde178bae76d21bc16ae057c9714a17), [`d3c38c8`](https://github.com/TanStack/db/commit/d3c38c8f4e83cef4545e8011dc3419be1fcf527a), [`91a2cbf`](https://github.com/TanStack/db/commit/91a2cbfb88fccc5f19f864b69632cfb8e95ed449), [`5218f0c`](https://github.com/TanStack/db/commit/5218f0c385f61ccfa08ff366fb6f487528702017), [`fdcb078`](https://github.com/TanStack/db/commit/fdcb078a083b9c12327e8b1f68bd49e3429fb89e), [`76d766e`](https://github.com/TanStack/db/commit/76d766e84afbfcde2900a661233dd59e1decd5c2), [`f5b29c2`](https://github.com/TanStack/db/commit/f5b29c2a2d6796b9d2e4511caf156cadaf1aea3a), [`34c78be`](https://github.com/TanStack/db/commit/34c78be670b215a994394a73bdfb800a48c91ddd), [`47004bd`](https://github.com/TanStack/db/commit/47004bdda57abcfb63cb03ec6ce6397779012db5), [`1db0729`](https://github.com/TanStack/db/commit/1db0729573857b9e82a32828b53c1b0681c9670c), [`825acc5`](https://github.com/TanStack/db/commit/825acc5ff3b703354088e81b3161d0cc830650cf), [`510cb53`](https://github.com/TanStack/db/commit/510cb538c4706e21a4d70046bf2ab2753f47bfa8), [`efb84d8`](https://github.com/TanStack/db/commit/efb84d800fd162842815e872d088d070db5407e3), [`71ad428`](https://github.com/TanStack/db/commit/71ad4284922c2355eb723fc5a00f26c72296aef9)]:
  - @tanstack/query-db-collection@1.3.0
  - @tanstack/electric-db-collection@0.5.0
  - @tanstack/solid-db@0.2.46
  - @tanstack/trailbase-db-collection@0.1.110

## 0.0.36

### Patch Changes

- Updated dependencies [[`4b9e8cd`](https://github.com/TanStack/db/commit/4b9e8cdf79551734cf526e6fa4bbdba42ec94575)]:
  - @tanstack/electric-db-collection@0.4.0
  - @tanstack/query-db-collection@1.2.5
  - @tanstack/trailbase-db-collection@0.1.99
  - @tanstack/solid-db@0.2.35

## 0.0.35

### Patch Changes

- Updated dependencies [[`cde8af1`](https://github.com/TanStack/db/commit/cde8af1f21308e5206601f10e9aa0a7c258f66dc)]:
  - @tanstack/electric-db-collection@0.3.0
  - @tanstack/query-db-collection@1.0.33
  - @tanstack/solid-db@0.2.16
  - @tanstack/trailbase-db-collection@0.1.80

## 0.0.34

### Patch Changes

- Updated dependencies [[`d9c663c`](https://github.com/TanStack/db/commit/d9c663c1874b1717d72bf289277d45e875e36bc2)]:
  - @tanstack/solid-db@0.2.0
  - @tanstack/electric-db-collection@0.2.24
  - @tanstack/query-db-collection@1.0.16
  - @tanstack/trailbase-db-collection@0.1.64

## 0.0.33

### Patch Changes

- Updated dependencies []:
  - @tanstack/electric-db-collection@0.0.9
  - @tanstack/query-db-collection@0.0.9
  - @tanstack/react-db@0.0.27
  - @tanstack/trailbase-db-collection@0.0.3

## 0.0.32

### Patch Changes

- Add initial release of TrailBase collection for TanStack DB. TrailBase is a blazingly fast, open-source alternative to Firebase built on Rust, SQLite, and V8. It provides type-safe REST and realtime APIs with sub-millisecond latencies, integrated authentication, and flexible access control - all in a single executable. This collection type enables seamless integration with TrailBase backends for high-performance real-time applications. ([#228](https://github.com/TanStack/db/pull/228))

- Updated dependencies [[`09c6995`](https://github.com/TanStack/db/commit/09c6995ea9c8e6979d077ca63cbdd6215054ae78)]:
  - @tanstack/trailbase-db-collection@0.0.2
  - @tanstack/electric-db-collection@0.0.8
  - @tanstack/query-db-collection@0.0.8
  - @tanstack/react-db@0.0.26

## 0.0.31

### Patch Changes

- Updated dependencies [[`20f810e`](https://github.com/TanStack/db/commit/20f810e13a7d802bf56da6f0df89b34312ebb2fd)]:
  - @tanstack/electric-db-collection@0.0.7
  - @tanstack/query-db-collection@0.0.7
  - @tanstack/react-db@0.0.25

## 0.0.30

### Patch Changes

- Updated dependencies []:
  - @tanstack/electric-db-collection@0.0.6
  - @tanstack/query-db-collection@0.0.6
  - @tanstack/react-db@0.0.24

## 0.0.29

### Patch Changes

- Updated dependencies []:
  - @tanstack/electric-db-collection@0.0.5
  - @tanstack/query-db-collection@0.0.5
  - @tanstack/react-db@0.0.23

## 0.0.28

### Patch Changes

- Updated dependencies []:
  - @tanstack/electric-db-collection@0.0.4
  - @tanstack/query-db-collection@0.0.4
  - @tanstack/react-db@0.0.22

## 0.0.27

### Patch Changes

- Move Collections to their own packages ([#252](https://github.com/TanStack/db/pull/252))
  - Move local-only and local-storage collections to main `@tanstack/db` package
  - Create new `@tanstack/electric-db-collection` package for ElectricSQL integration
  - Create new `@tanstack/query-db-collection` package for TanStack Query integration
  - Delete `@tanstack/db-collections` package (removed from repo)
  - Update example app and documentation to use new package structure

  Why?
  - Better separation of concerns
  - Independent versioning for each collection type
  - Cleaner dependencies (electric collections don&#39;t need query deps, etc.)
  - Easier to add more collection types moving forward

- Updated dependencies [[`8e23322`](https://github.com/TanStack/db/commit/8e233229b25eabed07cdaf12948ba913786bf4f9)]:
  - @tanstack/electric-db-collection@0.0.3
  - @tanstack/query-db-collection@0.0.3
  - @tanstack/react-db@0.0.21

## 0.0.26

### Patch Changes

- Updated dependencies []:
  - @tanstack/db-collections@0.0.24
  - @tanstack/react-db@0.0.20

## 0.0.25

### Patch Changes

- - [Breaking change for the Electric Collection]: Use numbers for txid ([#245](https://github.com/TanStack/db/pull/245))
  - misc type fixes
- Updated dependencies [[`9f0b0c2`](https://github.com/TanStack/db/commit/9f0b0c28ede99273eb5914be28aff55b91c50778)]:
  - @tanstack/db-collections@0.0.23
  - @tanstack/react-db@0.0.19

## 0.0.24

### Patch Changes

- Updated dependencies [[`266bd29`](https://github.com/TanStack/db/commit/266bd29514c6c0fa9e903986ca11c5e22f4d2361)]:
  - @tanstack/db-collections@0.0.22
  - @tanstack/react-db@0.0.18

## 0.0.23

### Patch Changes

- Updated dependencies [[`1c9e867`](https://github.com/TanStack/db/commit/1c9e8676405b71a45831456c7119420975ae1456)]:
  - @tanstack/db-collections@0.0.21
  - @tanstack/react-db@0.0.17

## 0.0.22

### Patch Changes

- Updated dependencies [[`e478d53`](https://github.com/TanStack/db/commit/e478d5353cc8fc64e3a29dda1f86fba863cf6ce8)]:
  - @tanstack/react-db@0.0.16
  - @tanstack/db-collections@0.0.20

## 0.0.21

### Patch Changes

- Updated dependencies [[`0912a7c`](https://github.com/TanStack/db/commit/0912a7c165325e6981f0b702c169004e08d57f75)]:
  - @tanstack/db-collections@0.0.19
  - @tanstack/react-db@0.0.15

## 0.0.20

### Patch Changes

- Updated dependencies [[`0dede0a`](https://github.com/TanStack/db/commit/0dede0ab75e66df9797d5c898defdc66685c6f91)]:
  - @tanstack/db-collections@0.0.18

## 0.0.19

### Patch Changes

- Updated dependencies []:
  - @tanstack/db-collections@0.0.17
  - @tanstack/react-db@0.0.14

## 0.0.18

### Patch Changes

- Updated dependencies [[`945868e`](https://github.com/TanStack/db/commit/945868e95944543ccf5d778409548679a952e249), [`57b5f5d`](https://github.com/TanStack/db/commit/57b5f5de6297326a57ef205a400428af0697b48b)]:
  - @tanstack/react-db@0.0.13
  - @tanstack/db-collections@0.0.16

## 0.0.17

### Patch Changes

- Updated dependencies [[`5cafaf4`](https://github.com/TanStack/db/commit/5cafaf4f73018599ce799778029833d3fa83dbc9)]:
  - @tanstack/db-collections@0.0.15

## 0.0.16

### Patch Changes

- Updated dependencies [[`f6abe9b`](https://github.com/TanStack/db/commit/f6abe9b94b890487fe960bd72a89e4a75de89d46)]:
  - @tanstack/db-collections@0.0.14
  - @tanstack/react-db@0.0.12

## 0.0.15

### Patch Changes

- Export `ElectricCollectionUtils` &amp; allow passing generic to `createTransaction` ([#179](https://github.com/TanStack/db/pull/179))

- Updated dependencies [[`c5489ff`](https://github.com/TanStack/db/commit/c5489ff276db07a0a4b65876790ccd7f11a6f99d)]:
  - @tanstack/db-collections@0.0.13
  - @tanstack/react-db@0.0.11

## 0.0.14

### Patch Changes

- Updated dependencies []:
  - @tanstack/db-collections@0.0.12
  - @tanstack/react-db@0.0.10

## 0.0.13

### Patch Changes

- Updated dependencies []:
  - @tanstack/db-collections@0.0.11
  - @tanstack/react-db@0.0.9

## 0.0.12

### Patch Changes

- Type PendingMutation whenever possible ([#163](https://github.com/TanStack/db/pull/163))

- Updated dependencies [[`5c538cf`](https://github.com/TanStack/db/commit/5c538cf03573512a8d1bbde96962a9f7ca014708), [`b4602a0`](https://github.com/TanStack/db/commit/b4602a071cb6866bb1338e30d5802220b0d1fc49)]:
  - @tanstack/db-collections@0.0.10
  - @tanstack/react-db@0.0.8

## 0.0.11

### Patch Changes

- Updated dependencies [[`8b43ad3`](https://github.com/TanStack/db/commit/8b43ad305b277560aed660c31cf1409d22ed1e47)]:
  - @tanstack/db-collections@0.0.9
  - @tanstack/react-db@0.0.7

## 0.0.10

### Patch Changes

- This change introduces a more streamlined and intuitive API for handling mutations by allowing `onInsert`, `onUpdate`, and `onDelete` handlers to be defined directly on the collection configuration. ([#156](https://github.com/TanStack/db/pull/156))

  When `collection.insert()`, `.update()`, or `.delete()` are called outside of an explicit transaction (i.e., not within `useOptimisticMutation`), the library now automatically creates a single-operation transaction and invokes the corresponding handler to persist the change.

  Key changes:
  - **`@tanstack/db`**: The `Collection` class now supports `onInsert`, `onUpdate`, and `onDelete` in its configuration. Direct calls to mutation methods will throw an error if the corresponding handler is not defined.
  - **`@tanstack/db-collections`**:
    - `queryCollectionOptions` now accepts the new handlers and will automatically `refetch` the collection&#39;s query after a handler successfully completes. This behavior can be disabled if the handler returns `{ refetch: false }`.
    - `electricCollectionOptions` also accepts the new handlers. These handlers are now required to return an object with a transaction ID (`{ txid: string }`). The collection then automatically waits for this `txid` to be synced back before resolving the mutation, ensuring consistency.
  - **Breaking Change**: Calling `collection.insert()`, `.update()`, or `.delete()` without being inside a `useOptimisticMutation` callback and without a corresponding persistence handler (`onInsert`, etc.) configured on the collection will now throw an error.

  This new pattern simplifies the most common use cases, making the code more declarative. The `useOptimisticMutation` hook remains available for more complex scenarios, such as transactions involving multiple mutations across different collections.

  ***

  The documentation and the React Todo example application have been significantly refactored to adopt the new direct persistence handler pattern as the primary way to perform mutations.
  - The `README.md` and `docs/overview.md` files have been updated to de-emphasize `useOptimisticMutation` for simple writes. They now showcase the much simpler API of calling `collection.insert()` directly and defining persistence logic in the collection&#39;s configuration.
  - The React Todo example (`examples/react/todo/src/App.tsx`) has been completely overhauled. All instances of `useOptimisticMutation` have been removed and replaced with the new `onInsert`, `onUpdate`, and `onDelete` handlers, resulting in cleaner and more concise code.

- Updated dependencies [[`80fdac7`](https://github.com/TanStack/db/commit/80fdac76389ea741f5743bc788df375f63fb767b)]:
  - @tanstack/db-collections@0.0.8
  - @tanstack/react-db@0.0.6

## 0.0.9

### Patch Changes

- Collections must have a getId function &amp; use an id for update/delete operators ([#134](https://github.com/TanStack/db/pull/134))

- Switch to Collection options factories instead of extending the Collection class ([#145](https://github.com/TanStack/db/pull/145))

  This refactors `ElectricCollection` and `QueryCollection` into factory functions (`electricCollectionOptions` and `queryCollectionOptions`) that return standard `CollectionConfig` objects and utility functions. Also adds a `createCollection` function to standardize collection instantiation.

- Updated dependencies [[`1fbb844`](https://github.com/TanStack/db/commit/1fbb8447d8425d37cb9ab4f078ffab999b28b06c), [`ee5d026`](https://github.com/TanStack/db/commit/ee5d026715962dd0232fcaca513a8fac9189dce2), [`e4feb0c`](https://github.com/TanStack/db/commit/e4feb0c214835675b47f0aa18a72d004a423df03)]:
  - @tanstack/db-collections@0.0.7
  - @tanstack/react-db@0.0.5

## 0.0.8

### Patch Changes

- Updated dependencies []:
  - @tanstack/db-collections@0.0.6
  - @tanstack/react-db@0.0.4

## 0.0.7

### Patch Changes

- Updated dependencies [[`0bbf4c4`](https://github.com/TanStack/db/commit/0bbf4c46e01b382a70a437f05dfc09c9ff749a15)]:
  - @tanstack/db-collections@0.0.5

## 0.0.6

### Patch Changes

- Updated dependencies [[`2d0fcf1`](https://github.com/TanStack/db/commit/2d0fcf16a61a3fcd6a7220b5501640cc0f67218f)]:
  - @tanstack/db-collections@0.0.4

## 0.0.5

### Patch Changes

- Updated dependencies []:
  - @tanstack/db-collections@0.0.3
  - @tanstack/react-db@0.0.3

## 0.0.4

### Patch Changes

- Updated dependencies [[`4c82edb`](https://github.com/TanStack/db/commit/4c82edb9547f26c9de44f5bf43d4385c38920672), [`4c82edb`](https://github.com/TanStack/db/commit/4c82edb9547f26c9de44f5bf43d4385c38920672)]:
  - @tanstack/react-db@0.0.2
  - @tanstack/db-collections@0.0.2

## 0.0.3

### Patch Changes

- Updated dependencies [[`b42479c`](https://github.com/TanStack/db/commit/b42479cf95f9a820b36e01684b13a9179973f3d8)]:
  - @tanstack/react-db@0.0.3

## 0.0.2

### Patch Changes

- Updated dependencies [[`9bb6e89`](https://github.com/TanStack/db/commit/9bb6e8909cebdcd7c03091bfc12dd37f5ab2e1ea)]:
  - @tanstack/react-db@0.0.2
">
<input type="hidden" name="project[files][README.md]" value="# Todo example app

## How to run

- Go to the root of the repository and run:
  - `pnpm install`
  - `pnpm build`

- Install packages
  `pnpm install`

- Start dev server &amp; Docker containers: Postgres, Electric, TrailBase
  `pnpm dev`

- Run Postgres DB migrations
  `pnpm db:push`

- Optionally, check out the TrailBase admin UI @ http://localhost:4000/\_/admin
  (email: admin@localhost, password: secret)
">
<input type="hidden" name="project[files][docker-compose.yml]" value="version: &#39;3.8&#39;
services:
  postgres:
    image: postgres:17-alpine
    environment:
      POSTGRES_DB: todo_app
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - &#39;54322:5432&#39;
    volumes:
      - ./postgres.conf:/etc/postgresql/postgresql.conf:ro
    tmpfs:
      - /var/lib/postgresql/data
      - /tmp
    command:
      - postgres
      - -c
      - config_file=/etc/postgresql/postgresql.conf
    healthcheck:
      test: [&#39;CMD-SHELL&#39;, &#39;pg_isready -U postgres&#39;]
      interval: 5s
      timeout: 5s
      retries: 5

  electric:
    image: electricsql/electric:canary
    environment:
      DATABASE_URL: postgresql://postgres:postgres@postgres:5432/todo_app?sslmode=disable
      ELECTRIC_INSECURE: true
    ports:
      - 3003:3000
    depends_on:
      postgres:
        condition: service_healthy

  trailbase:
    image: trailbase/trailbase:latest
    ports:
      - &#39;${PORT:-4000}:4000&#39;
    restart: unless-stopped
    volumes:
      - ./traildepot:/app/traildepot
    command: &#39;/app/trail --data-dir /app/traildepot run --address 0.0.0.0:4000 --dev&#39;

volumes:
  postgres_data:
">
<input type="hidden" name="project[files][drizzle.config.ts]" value="import type { Config } from &#39;drizzle-kit&#39;

export default {
  schema: `./src/db/schema.ts`,
  out: `./drizzle`,
  dialect: `postgresql`,
  casing: `snake_case`,
  dbCredentials: {
    host: process.env.DB_HOST || `localhost`,
    port: parseInt(process.env.DB_PORT || `54322`),
    user: process.env.DB_USER || `postgres`,
    password: process.env.DB_PASSWORD || `postgres`,
    database: process.env.DB_NAME || `todo_app`,
  },
} satisfies Config
">
<input type="hidden" name="project[files][index.html]" value="&lt;!doctype html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;link rel=&quot;icon&quot; type=&quot;image/svg+xml&quot; href=&quot;/vite.svg&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;link href=&quot;/src/styles.css&quot; rel=&quot;stylesheet&quot; /&gt;
    &lt;title&gt;TODO App&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div id=&quot;root&quot;&gt;&lt;/div&gt;
    &lt;script type=&quot;module&quot; src=&quot;/src/main.tsx&quot;&gt;&lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;
">
<input type="hidden" name="project[files][package.json]" value="{
  &quot;name&quot;: &quot;@tanstack/db-example-solid-todo&quot;,
  &quot;private&quot;: true,
  &quot;version&quot;: &quot;0.0.39&quot;,
  &quot;dependencies&quot;: {
    &quot;@tanstack/electric-db-collection&quot;: &quot;https://pkg.pr.new/TanStack/db/@tanstack/electric-db-collection@5befab3&quot;,
    &quot;@tanstack/query-core&quot;: &quot;^5.107.1&quot;,
    &quot;@tanstack/query-db-collection&quot;: &quot;https://pkg.pr.new/TanStack/db/@tanstack/query-db-collection@5befab3&quot;,
    &quot;@tanstack/solid-db&quot;: &quot;https://pkg.pr.new/TanStack/db/@tanstack/solid-db@5befab3&quot;,
    &quot;@tanstack/solid-router&quot;: &quot;^1.170.43&quot;,
    &quot;@tanstack/solid-start&quot;: &quot;^1.169.5&quot;,
    &quot;@tanstack/trailbase-db-collection&quot;: &quot;https://pkg.pr.new/TanStack/db/@tanstack/trailbase-db-collection@5befab3&quot;,
    &quot;cors&quot;: &quot;^2.8.6&quot;,
    &quot;drizzle-orm&quot;: &quot;^0.45.1&quot;,
    &quot;drizzle-zod&quot;: &quot;^0.8.3&quot;,
    &quot;express&quot;: &quot;^5.3.0&quot;,
    &quot;postgres&quot;: &quot;^3.4.9&quot;,
    &quot;solid-js&quot;: &quot;^1.9.18&quot;,
    &quot;tailwindcss&quot;: &quot;^4.3.5&quot;,
    &quot;trailbase&quot;: &quot;^0.14.3&quot;,
    &quot;vite-tsconfig-paths&quot;: &quot;^6.1.1&quot;
  },
  &quot;devDependencies&quot;: {
    &quot;@eslint/js&quot;: &quot;^9.39.5&quot;,
    &quot;@tailwindcss/vite&quot;: &quot;^4.3.5&quot;,
    &quot;@types/cors&quot;: &quot;^2.8.19&quot;,
    &quot;@types/express&quot;: &quot;^5.0.6&quot;,
    &quot;@types/node&quot;: &quot;^25.2.2&quot;,
    &quot;@types/pg&quot;: &quot;^8.23.1&quot;,
    &quot;@typescript-eslint/eslint-plugin&quot;: &quot;^8.72.1&quot;,
    &quot;@typescript-eslint/parser&quot;: &quot;^8.72.1&quot;,
    &quot;concurrently&quot;: &quot;^9.2.5&quot;,
    &quot;dotenv&quot;: &quot;^17.4.2&quot;,
    &quot;drizzle-kit&quot;: &quot;^0.31.11&quot;,
    &quot;eslint&quot;: &quot;^9.39.5&quot;,
    &quot;eslint-plugin-solid&quot;: &quot;^0.19.0&quot;,
    &quot;pg&quot;: &quot;^8.23.1&quot;,
    &quot;tsx&quot;: &quot;^4.23.15&quot;,
    &quot;typescript&quot;: &quot;^5.9.2&quot;,
    &quot;vite&quot;: &quot;^8.3.6&quot;,
    &quot;vite-plugin-solid&quot;: &quot;^2.11.15&quot;
  },
  &quot;scripts&quot;: {
    &quot;build&quot;: &quot;vite build&quot;,
    &quot;db:ensure-config&quot;: &quot;tsx scripts/ensure-default-config.ts&quot;,
    &quot;db:generate&quot;: &quot;drizzle-kit generate&quot;,
    &quot;db:push&quot;: &quot;tsx scripts/migrate.ts&quot;,
    &quot;db:studio&quot;: &quot;drizzle-kit studio&quot;,
    &quot;dev&quot;: &quot;docker compose up -d &amp;&amp; vite dev&quot;,
    &quot;lint&quot;: &quot;eslint . --fix&quot;,
    &quot;preview&quot;: &quot;vite preview&quot;
  },
  &quot;type&quot;: &quot;module&quot;
}">
<input type="hidden" name="project[files][pnpm-lock.yaml]" value="lockfileVersion: &#39;9.0&#39;

settings:
  autoInstallPeers: true
  excludeLinksFromLockfile: false

importers:

  .:
    dependencies:
      &#39;@tanstack/electric-db-collection&#39;:
        specifier: ^1.0.0-rc.1.4
        version: 1.0.0-rc.1.4(typescript@5.9.3)
      &#39;@tanstack/query-core&#39;:
        specifier: ^5.107.1
        version: 5.107.1
      &#39;@tanstack/query-db-collection&#39;:
        specifier: ^1.5.1
        version: 1.5.1(@tanstack/db@1.0.0-rc.1.4(typescript@5.9.3))(@tanstack/query-core@5.107.1)(typescript@5.9.3)
      &#39;@tanstack/solid-db&#39;:
        specifier: ^1.0.0-rc.1.4
        version: 1.0.0-rc.1.4(solid-js@1.9.18)(typescript@5.9.3)
      &#39;@tanstack/solid-router&#39;:
        specifier: ^1.170.43
        version: 1.170.43(solid-js@1.9.18)
      &#39;@tanstack/solid-start&#39;:
        specifier: ^1.169.5
        version: 1.169.5(esbuild@0.28.2)(rolldown@1.2.16)(solid-js@1.9.18)(vite-plugin-solid@2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
      &#39;@tanstack/trailbase-db-collection&#39;:
        specifier: ^1.0.0-rc.1.4
        version: 1.0.0-rc.1.4(typescript@5.9.3)
      cors:
        specifier: ^2.8.6
        version: 2.8.6
      drizzle-orm:
        specifier: ^0.45.1
        version: 0.45.4(@types/pg@8.23.1)(pg@8.23.1)(postgres@3.4.9)
      drizzle-zod:
        specifier: ^0.8.3
        version: 0.8.3(drizzle-orm@0.45.4(@types/pg@8.23.1)(pg@8.23.1)(postgres@3.4.9))(zod@4.6.7)
      express:
        specifier: ^5.3.0
        version: 5.3.0
      postgres:
        specifier: ^3.4.9
        version: 3.4.9
      solid-js:
        specifier: ^1.9.18
        version: 1.9.18
      tailwindcss:
        specifier: ^4.3.5
        version: 4.3.5
      trailbase:
        specifier: ^0.14.3
        version: 0.14.3
      vite-tsconfig-paths:
        specifier: ^6.1.1
        version: 6.1.1(typescript@5.9.3)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
    devDependencies:
      &#39;@eslint/js&#39;:
        specifier: ^9.39.5
        version: 9.39.5
      &#39;@tailwindcss/vite&#39;:
        specifier: ^4.3.5
        version: 4.3.5(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
      &#39;@types/cors&#39;:
        specifier: ^2.8.19
        version: 2.8.19
      &#39;@types/express&#39;:
        specifier: ^5.0.6
        version: 5.0.6
      &#39;@types/node&#39;:
        specifier: ^25.2.2
        version: 25.9.9
      &#39;@types/pg&#39;:
        specifier: ^8.23.1
        version: 8.23.1
      &#39;@typescript-eslint/eslint-plugin&#39;:
        specifier: ^8.72.1
        version: 8.72.1(@typescript-eslint/parser@8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)
      &#39;@typescript-eslint/parser&#39;:
        specifier: ^8.72.1
        version: 8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)
      concurrently:
        specifier: ^9.2.5
        version: 9.2.5
      dotenv:
        specifier: ^17.4.2
        version: 17.4.2
      drizzle-kit:
        specifier: ^0.31.11
        version: 0.31.11
      eslint:
        specifier: ^9.39.5
        version: 9.39.5(jiti@2.7.0)
      eslint-plugin-solid:
        specifier: ^0.19.0
        version: 0.19.0(eslint@9.39.5(jiti@2.7.0))
      pg:
        specifier: ^8.23.1
        version: 8.23.1
      tsx:
        specifier: ^4.23.15
        version: 4.23.15
      typescript:
        specifier: ^5.9.2
        version: 5.9.3
      vite:
        specifier: ^8.3.6
        version: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)
      vite-plugin-solid:
        specifier: ^2.11.15
        version: 2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))

packages:

  &#39;@ampproject/remapping@2.3.0&#39;:
    resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
    engines: {node: &#39;&gt;=6.0.0&#39;}

  &#39;@babel/code-frame@7.26.2&#39;:
    resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/code-frame@7.29.7&#39;:
    resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/compat-data@7.26.8&#39;:
    resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/compat-data@7.29.7&#39;:
    resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/core@7.26.9&#39;:
    resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/core@7.29.13&#39;:
    resolution: {integrity: sha512-j1nvOQCZYSgp7HLmisnCXFTpVvFODiijQ9QHkORfGKWH6YDtskTEeCJS7eV545GZ9UBzrq0e2xsOd5QQ5PjIqw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/generator@7.26.9&#39;:
    resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/generator@7.29.13&#39;:
    resolution: {integrity: sha512-T5FRo+RzVHvGjWOuF1Ljc44b+NXAOazodHkGUHp4I3zCkQ4/sNVJm56h1S278LMR0bY5xBhztGziSbli8zObIw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-compilation-targets@7.26.5&#39;:
    resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-compilation-targets@7.29.13&#39;:
    resolution: {integrity: sha512-8WxJ4/Vmes3ghacj8VOJy3NW8eyHiFY/4thU/LSBuBE470+igjR/j1ZTNn8fV5VdNrLx6iXUwig526UdOvfP0w==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-globals@7.29.7&#39;:
    resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-module-imports@7.18.6&#39;:
    resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-module-imports@7.25.9&#39;:
    resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-module-imports@7.29.7&#39;:
    resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-module-transforms@7.26.0&#39;:
    resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}
    peerDependencies:
      &#39;@babel/core&#39;: ^7.0.0

  &#39;@babel/helper-module-transforms@7.29.13&#39;:
    resolution: {integrity: sha512-/U96wOz+SCoZ7Da/8kjDGltcNY280JPQcRNPK0Hk3PTbdpaiBDQImtC6JsbVwb1HGMr3usZQU2WsWVjhYNmRzw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}
    peerDependencies:
      &#39;@babel/core&#39;: ^7.0.0

  &#39;@babel/helper-plugin-utils@7.29.7&#39;:
    resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-string-parser@7.25.9&#39;:
    resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-string-parser@7.29.13&#39;:
    resolution: {integrity: sha512-fWegr+WsEsiMVW4KUNdIIzzMTZSzNiqhy0//6+2MRi2d5NFNsL/AYwBQW8eBnRbTBVRnDVzjaJEUqKaCWjMMdQ==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-validator-identifier@7.25.9&#39;:
    resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-validator-identifier@7.29.7&#39;:
    resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-validator-option@7.25.9&#39;:
    resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helper-validator-option@7.29.7&#39;:
    resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helpers@7.26.9&#39;:
    resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/helpers@7.29.13&#39;:
    resolution: {integrity: sha512-laoRpD/kO/iA4CDlgJbixHekg7oPvWALK0PQyK3Ob2I2njZRvVAD77RfWCIImtqWCq6KijoBoZK7bp/HlTWASQ==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/parser@7.26.9&#39;:
    resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==}
    engines: {node: &#39;&gt;=6.0.0&#39;}
    hasBin: true

  &#39;@babel/parser@7.29.13&#39;:
    resolution: {integrity: sha512-fJM50YYjlTiBhgdkGmC1tBpv+FMAyo4annf2X6Aks+0yRlaiVkYW/3f07xAfVVkYIoZ9fFZp+mEThUFnuybhkQ==}
    engines: {node: &#39;&gt;=6.0.0&#39;}
    hasBin: true

  &#39;@babel/plugin-syntax-jsx@7.29.7&#39;:
    resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==}
    engines: {node: &#39;&gt;=6.9.0&#39;}
    peerDependencies:
      &#39;@babel/core&#39;: ^7.0.0-0

  &#39;@babel/template@7.26.9&#39;:
    resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/template@7.29.7&#39;:
    resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/traverse@7.26.9&#39;:
    resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/traverse@7.29.13&#39;:
    resolution: {integrity: sha512-0ve0xMlFA73dgY1oyJRY6RoW+/bncdcOQqg6jjYcVfXBK90OdLXjm9R6lmRetdZVrPjXkKIoMVBqYFPjcAlZ4Q==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/types@7.26.9&#39;:
    resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@babel/types@7.29.11&#39;:
    resolution: {integrity: sha512-WCsemW40Cpc6gouC1SrY6PBaZ+oLRlEVY9XBvZBI7il/HyUrb2nJ505wE1MHEFyDZNnrWDEuy4jL50WVHfTTSQ==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  &#39;@drizzle-team/brocli@0.10.2&#39;:
    resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==}

  &#39;@electric-sql/client@1.5.28&#39;:
    resolution: {integrity: sha512-b0cym3YWXL6PbQmEF0xDRsLt2xgXX46stvOSRAIXRPAP6dLZIHZL0o0HxeTdsZ27L3PbIg6Pw6KnyanRVGtWPA==}
    hasBin: true

  &#39;@esbuild-kit/core-utils@3.3.2&#39;:
    resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
    deprecated: &#39;Merged into tsx: https://tsx.hirok.io&#39;

  &#39;@esbuild-kit/esm-loader@2.6.5&#39;:
    resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
    deprecated: &#39;Merged into tsx: https://tsx.hirok.io&#39;

  &#39;@esbuild/aix-ppc64@0.25.12&#39;:
    resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ppc64]
    os: [aix]

  &#39;@esbuild/aix-ppc64@0.28.2&#39;:
    resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ppc64]
    os: [aix]

  &#39;@esbuild/android-arm64@0.18.20&#39;:
    resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [arm64]
    os: [android]

  &#39;@esbuild/android-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [android]

  &#39;@esbuild/android-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [android]

  &#39;@esbuild/android-arm@0.18.20&#39;:
    resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [arm]
    os: [android]

  &#39;@esbuild/android-arm@0.25.12&#39;:
    resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm]
    os: [android]

  &#39;@esbuild/android-arm@0.28.2&#39;:
    resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm]
    os: [android]

  &#39;@esbuild/android-x64@0.18.20&#39;:
    resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [android]

  &#39;@esbuild/android-x64@0.25.12&#39;:
    resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [android]

  &#39;@esbuild/android-x64@0.28.2&#39;:
    resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [android]

  &#39;@esbuild/darwin-arm64@0.18.20&#39;:
    resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [arm64]
    os: [darwin]

  &#39;@esbuild/darwin-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [darwin]

  &#39;@esbuild/darwin-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [darwin]

  &#39;@esbuild/darwin-x64@0.18.20&#39;:
    resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [darwin]

  &#39;@esbuild/darwin-x64@0.25.12&#39;:
    resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [darwin]

  &#39;@esbuild/darwin-x64@0.28.2&#39;:
    resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [darwin]

  &#39;@esbuild/freebsd-arm64@0.18.20&#39;:
    resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [arm64]
    os: [freebsd]

  &#39;@esbuild/freebsd-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [freebsd]

  &#39;@esbuild/freebsd-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [freebsd]

  &#39;@esbuild/freebsd-x64@0.18.20&#39;:
    resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [freebsd]

  &#39;@esbuild/freebsd-x64@0.25.12&#39;:
    resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [freebsd]

  &#39;@esbuild/freebsd-x64@0.28.2&#39;:
    resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [freebsd]

  &#39;@esbuild/linux-arm64@0.18.20&#39;:
    resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [arm64]
    os: [linux]

  &#39;@esbuild/linux-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [linux]

  &#39;@esbuild/linux-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [linux]

  &#39;@esbuild/linux-arm@0.18.20&#39;:
    resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [arm]
    os: [linux]

  &#39;@esbuild/linux-arm@0.25.12&#39;:
    resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm]
    os: [linux]

  &#39;@esbuild/linux-arm@0.28.2&#39;:
    resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm]
    os: [linux]

  &#39;@esbuild/linux-ia32@0.18.20&#39;:
    resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [ia32]
    os: [linux]

  &#39;@esbuild/linux-ia32@0.25.12&#39;:
    resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ia32]
    os: [linux]

  &#39;@esbuild/linux-ia32@0.28.2&#39;:
    resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ia32]
    os: [linux]

  &#39;@esbuild/linux-loong64@0.18.20&#39;:
    resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [loong64]
    os: [linux]

  &#39;@esbuild/linux-loong64@0.25.12&#39;:
    resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [loong64]
    os: [linux]

  &#39;@esbuild/linux-loong64@0.28.2&#39;:
    resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [loong64]
    os: [linux]

  &#39;@esbuild/linux-mips64el@0.18.20&#39;:
    resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [mips64el]
    os: [linux]

  &#39;@esbuild/linux-mips64el@0.25.12&#39;:
    resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [mips64el]
    os: [linux]

  &#39;@esbuild/linux-mips64el@0.28.2&#39;:
    resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [mips64el]
    os: [linux]

  &#39;@esbuild/linux-ppc64@0.18.20&#39;:
    resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [ppc64]
    os: [linux]

  &#39;@esbuild/linux-ppc64@0.25.12&#39;:
    resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ppc64]
    os: [linux]

  &#39;@esbuild/linux-ppc64@0.28.2&#39;:
    resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ppc64]
    os: [linux]

  &#39;@esbuild/linux-riscv64@0.18.20&#39;:
    resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [riscv64]
    os: [linux]

  &#39;@esbuild/linux-riscv64@0.25.12&#39;:
    resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [riscv64]
    os: [linux]

  &#39;@esbuild/linux-riscv64@0.28.2&#39;:
    resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [riscv64]
    os: [linux]

  &#39;@esbuild/linux-s390x@0.18.20&#39;:
    resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [s390x]
    os: [linux]

  &#39;@esbuild/linux-s390x@0.25.12&#39;:
    resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [s390x]
    os: [linux]

  &#39;@esbuild/linux-s390x@0.28.2&#39;:
    resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [s390x]
    os: [linux]

  &#39;@esbuild/linux-x64@0.18.20&#39;:
    resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [linux]

  &#39;@esbuild/linux-x64@0.25.12&#39;:
    resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [linux]

  &#39;@esbuild/linux-x64@0.28.2&#39;:
    resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [linux]

  &#39;@esbuild/netbsd-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [netbsd]

  &#39;@esbuild/netbsd-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [netbsd]

  &#39;@esbuild/netbsd-x64@0.18.20&#39;:
    resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [netbsd]

  &#39;@esbuild/netbsd-x64@0.25.12&#39;:
    resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [netbsd]

  &#39;@esbuild/netbsd-x64@0.28.2&#39;:
    resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [netbsd]

  &#39;@esbuild/openbsd-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [openbsd]

  &#39;@esbuild/openbsd-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [openbsd]

  &#39;@esbuild/openbsd-x64@0.18.20&#39;:
    resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [openbsd]

  &#39;@esbuild/openbsd-x64@0.25.12&#39;:
    resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [openbsd]

  &#39;@esbuild/openbsd-x64@0.28.2&#39;:
    resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [openbsd]

  &#39;@esbuild/openharmony-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [openharmony]

  &#39;@esbuild/openharmony-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [openharmony]

  &#39;@esbuild/sunos-x64@0.18.20&#39;:
    resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [sunos]

  &#39;@esbuild/sunos-x64@0.25.12&#39;:
    resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [sunos]

  &#39;@esbuild/sunos-x64@0.28.2&#39;:
    resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [sunos]

  &#39;@esbuild/win32-arm64@0.18.20&#39;:
    resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [arm64]
    os: [win32]

  &#39;@esbuild/win32-arm64@0.25.12&#39;:
    resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [win32]

  &#39;@esbuild/win32-arm64@0.28.2&#39;:
    resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [arm64]
    os: [win32]

  &#39;@esbuild/win32-ia32@0.18.20&#39;:
    resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [ia32]
    os: [win32]

  &#39;@esbuild/win32-ia32@0.25.12&#39;:
    resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ia32]
    os: [win32]

  &#39;@esbuild/win32-ia32@0.28.2&#39;:
    resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [ia32]
    os: [win32]

  &#39;@esbuild/win32-x64@0.18.20&#39;:
    resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
    engines: {node: &#39;&gt;=12&#39;}
    cpu: [x64]
    os: [win32]

  &#39;@esbuild/win32-x64@0.25.12&#39;:
    resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [win32]

  &#39;@esbuild/win32-x64@0.28.2&#39;:
    resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==}
    engines: {node: &#39;&gt;=18&#39;}
    cpu: [x64]
    os: [win32]

  &#39;@eslint-community/eslint-utils@4.10.1&#39;:
    resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==}
    engines: {node: ^12.22.0 || ^14.17.0 || &gt;=16.0.0}
    peerDependencies:
      eslint: ^6.0.0 || ^7.0.0 || &gt;=8.0.0

  &#39;@eslint-community/regexpp@4.12.1&#39;:
    resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
    engines: {node: ^12.0.0 || ^14.0.0 || &gt;=16.0.0}

  &#39;@eslint-community/regexpp@4.12.2&#39;:
    resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
    engines: {node: ^12.0.0 || ^14.0.0 || &gt;=16.0.0}

  &#39;@eslint/config-array@0.21.2&#39;:
    resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@eslint/config-helpers@0.4.2&#39;:
    resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@eslint/core@0.17.0&#39;:
    resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@eslint/eslintrc@3.3.7&#39;:
    resolution: {integrity: sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@eslint/js@9.39.5&#39;:
    resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@eslint/object-schema@2.1.7&#39;:
    resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@eslint/plugin-kit@0.4.1&#39;:
    resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@humanfs/core@0.19.1&#39;:
    resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
    engines: {node: &#39;&gt;=18.18.0&#39;}

  &#39;@humanfs/node@0.16.6&#39;:
    resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
    engines: {node: &#39;&gt;=18.18.0&#39;}

  &#39;@humanwhocodes/module-importer@1.0.1&#39;:
    resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
    engines: {node: &#39;&gt;=12.22&#39;}

  &#39;@humanwhocodes/retry@0.3.1&#39;:
    resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
    engines: {node: &#39;&gt;=18.18&#39;}

  &#39;@humanwhocodes/retry@0.4.2&#39;:
    resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
    engines: {node: &#39;&gt;=18.18&#39;}

  &#39;@jridgewell/gen-mapping@0.3.13&#39;:
    resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}

  &#39;@jridgewell/gen-mapping@0.3.8&#39;:
    resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
    engines: {node: &#39;&gt;=6.0.0&#39;}

  &#39;@jridgewell/remapping@2.3.5&#39;:
    resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}

  &#39;@jridgewell/resolve-uri@3.1.2&#39;:
    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
    engines: {node: &#39;&gt;=6.0.0&#39;}

  &#39;@jridgewell/set-array@1.2.1&#39;:
    resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
    engines: {node: &#39;&gt;=6.0.0&#39;}

  &#39;@jridgewell/sourcemap-codec@1.5.0&#39;:
    resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}

  &#39;@jridgewell/sourcemap-codec@1.6.0&#39;:
    resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}

  &#39;@jridgewell/trace-mapping@0.3.25&#39;:
    resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}

  &#39;@jridgewell/trace-mapping@0.3.31&#39;:
    resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}

  &#39;@microsoft/fetch-event-source@2.0.1&#39;:
    resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==}

  &#39;@oozcitak/dom@2.0.2&#39;:
    resolution: {integrity: sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==}
    engines: {node: &#39;&gt;=20.0&#39;}

  &#39;@oozcitak/infra@2.0.2&#39;:
    resolution: {integrity: sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA==}
    engines: {node: &#39;&gt;=20.0&#39;}

  &#39;@oozcitak/url@3.0.0&#39;:
    resolution: {integrity: sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ==}
    engines: {node: &#39;&gt;=20.0&#39;}

  &#39;@oozcitak/util@10.0.0&#39;:
    resolution: {integrity: sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==}
    engines: {node: &#39;&gt;=20.0&#39;}

  &#39;@oxc-project/types@0.156.0&#39;:
    resolution: {integrity: sha512-1Duyg48TdJNdyhEB8Xn1L36bT9Pv6GUtlKjHxOys8xkaF/rQq3XJE+bAurSK/AgIz5mGFsb77cn9Pb20+WCScw==}

  &#39;@rolldown/binding-android-arm-eabi@1.2.16&#39;:
    resolution: {integrity: sha512-ia3DwAs0OsMGS7+IConptSiyk9pEXkOx/AbJ2n/lAGxH3QkWQus1t8d7gnAT38FCU2sQu8lUbeR6AiZFv4JxaA==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm]
    os: [android]

  &#39;@rolldown/binding-android-arm64@1.2.16&#39;:
    resolution: {integrity: sha512-kx5wBiMB6E7TEvpl2B9gjLU004BkvEm2Dr941BFjx/SontPwSzNuQUIoVKxHHoSjpFIfHMmcguyLOtyn0hObRg==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm64]
    os: [android]

  &#39;@rolldown/binding-darwin-arm64@1.2.16&#39;:
    resolution: {integrity: sha512-qslZrXnKJU4cUpjoAmtAo/KQM9e2IRMlmpig6Zpwj+8KWxW8v+nkAf9216Bsek9lOC1jvg2yCjygCFo2f83msQ==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm64]
    os: [darwin]

  &#39;@rolldown/binding-darwin-x64@1.2.16&#39;:
    resolution: {integrity: sha512-FdF+y48ND13eAyM2mQn+85kvAqNlvRWROy2rhgA463X/0Gv4vGtazZtfaF1mRBLscYvtOlh4QnLjOWiFzX69OQ==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [x64]
    os: [darwin]

  &#39;@rolldown/binding-freebsd-x64@1.2.16&#39;:
    resolution: {integrity: sha512-ddjqFM5e95AgLbUPtKIS7V1KTVlA0RUgCVr5mn+/IEhsdy3pr+Vuj/HZ7nlMN2FyxIwUktOH1LEPIQXO1v9y1Q==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [x64]
    os: [freebsd]

  &#39;@rolldown/binding-linux-arm-gnueabihf@1.2.16&#39;:
    resolution: {integrity: sha512-tHdKWbFkFBI687iim3LIyIvyL7j66VvQYkDPss5Stn/qyE2tWkR1YD0dXmXPFKKqT/o5ZEJVsaRsWS2meQwGOA==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm]
    os: [linux]

  &#39;@rolldown/binding-linux-arm64-gnu@1.2.16&#39;:
    resolution: {integrity: sha512-FJiLGAblPBMlBEdbOqw6kW6QcXDWAf/oJu7gYs9ZJZwmg+K+/zjFLxPTIY9izJUzxzc24FHvmseyA0IvJSl17w==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm64]
    os: [linux]
    libc: [glibc]

  &#39;@rolldown/binding-linux-arm64-musl@1.2.16&#39;:
    resolution: {integrity: sha512-hrJpblMsrQ58U9veWpbXzkhV5zStunds6HWLprqq1qauvgBr1E6P+24kLj6lSLI9vjRn/RYpjprhkHQPKGWpNg==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm64]
    os: [linux]
    libc: [musl]

  &#39;@rolldown/binding-linux-ppc64-gnu@1.2.16&#39;:
    resolution: {integrity: sha512-qJd/dC6j6CwLG9/s/RP2nb1RZ0GIgj7Ioj7x/SYa3RzjVrlzrmH0fhIOpfvqQDeIsdP0loi+kHaMhJzY1PBIaA==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [ppc64]
    os: [linux]
    libc: [glibc]

  &#39;@rolldown/binding-linux-s390x-gnu@1.2.16&#39;:
    resolution: {integrity: sha512-Vx7Xg5uUJuNcujJjI70OICaH0EYj80BtOLZTSN7uOYg8QOLlyKnaG0IW7Fn/J0IpJsaKzmDKMhOQv1JBM9m9vg==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [s390x]
    os: [linux]
    libc: [glibc]

  &#39;@rolldown/binding-linux-x64-gnu@1.2.16&#39;:
    resolution: {integrity: sha512-TNKhgE3uJTsTzatUSSYt0Kgo+Oa2uSlSjz4r1aEIea7HX6ULBym4fAlYUhG1i6pjNf2njfCUAfKwr6C3E9Xg1w==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [x64]
    os: [linux]
    libc: [glibc]

  &#39;@rolldown/binding-linux-x64-musl@1.2.16&#39;:
    resolution: {integrity: sha512-7chXdpjXZ8qG0+mIxECN3cT9kvhZ3/oZhMX6Pp876P7CDrIy8nJswva6Mq357JR7eYXfuskwZxMeV1SzoZdHrA==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [x64]
    os: [linux]
    libc: [musl]

  &#39;@rolldown/binding-openharmony-arm64@1.2.16&#39;:
    resolution: {integrity: sha512-Kwjt+7uNTJK5/MDkGWGVO2KQPnj8yAV75dMpfwyHZrJSXWHrniOB0aUEWlVYf3H1hOqFLIStLdM5QXq6bnKmOQ==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm64]
    os: [openharmony]

  &#39;@rolldown/binding-win32-arm64-msvc@1.2.16&#39;:
    resolution: {integrity: sha512-/LH6WfjDRXXJz/p5xl4TmU+jpcnwcxbKEQBW/GZE0JHfN0lGIyTtsUEGaQ/q/GikkGJ2yLKe6pwm7AnEWO8pdw==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [arm64]
    os: [win32]

  &#39;@rolldown/binding-win32-x64-msvc@1.2.16&#39;:
    resolution: {integrity: sha512-1lv1KvX0Z871zfk7vw+dnXMMnHNyDwMzWG8Kv3HxDXMOhzCX4SHc7HK319fInP0i+0p9D8brkfzL7pJOaGl+tw==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    cpu: [x64]
    os: [win32]

  &#39;@rolldown/pluginutils@1.0.1&#39;:
    resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}

  &#39;@rollup/rollup-darwin-arm64@4.34.8&#39;:
    resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==}
    cpu: [arm64]
    os: [darwin]

  &#39;@solid-primitives/map@0.7.4&#39;:
    resolution: {integrity: sha512-zHWjQpcqxiXCuHb08GXJm3KnCTXOQNGMQu07CBOwtj9qCgjNUmwm5/UG+M2txQIPCbpY9rleAoOmEaQW4iaXMQ==}
    peerDependencies:
      solid-js: ^1.6.12

  &#39;@solid-primitives/refs@1.1.4&#39;:
    resolution: {integrity: sha512-bLjwIs6ZPu8NQnuw04sU3Zc8qKSpbc0umUU/O4SHf6oWOdO4+dHY8vb1T7C4b/Tg103+9WGr6sEE0+NFlbaB/A==}
    peerDependencies:
      solid-js: ^1.6.12

  &#39;@solid-primitives/trigger@1.2.4&#39;:
    resolution: {integrity: sha512-Ju0e+ZOD7hpOp7nptJimvDSZHWFvIvF9iBWMvuwt30smX7c5wmB8Kmc0AdDuv0wOTi06PQ1J5IrP1WJbH2yUBQ==}
    peerDependencies:
      solid-js: ^1.6.12

  &#39;@solid-primitives/utils@6.4.1&#39;:
    resolution: {integrity: sha512-ISSB5QX1qP2ynrheIpYwc4oKR5Ny4siNuUyf1qZniy+Il+p/PtDB0QK1Dnle8noiHpwRD3gpPdubOC3qI/Zamg==}
    peerDependencies:
      solid-js: ^1.6.12

  &#39;@solidjs/meta@0.29.8&#39;:
    resolution: {integrity: sha512-DkK5odQmnNJ/JlDFPf4rV6RaYN+G6ZtJyyb8jPmKAFT6HpRWnajYq4JaiDm/9UdY4rLKLVv+Q4ilkG1CD4x7mw==}
    peerDependencies:
      solid-js: ^1.8.4

  &#39;@standard-schema/spec@1.1.0&#39;:
    resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}

  &#39;@tailwindcss/node@4.3.5&#39;:
    resolution: {integrity: sha512-yT53FzV4ke0cr/BguDxhWMpm5MJu1O2muzk+tKw6lKHjODAsYArBbWwFbJiaksfzFv1tpkO9QHGzmfs1hJT66g==}

  &#39;@tailwindcss/oxide-android-arm64@4.3.5&#39;:
    resolution: {integrity: sha512-Se0z5xMqcSQanJD1IYmO0cGpK3iv0fp3ZsIT7xRJZ1Da5PghvNoc46zz4jIQn+aan3dV9T8AermFNN9QPmsh0Q==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [arm64]
    os: [android]

  &#39;@tailwindcss/oxide-darwin-arm64@4.3.5&#39;:
    resolution: {integrity: sha512-UPrgTDuUbvmqGMZuCnmI3FKee/tYKzKdp00/kuB4oSGB213VYg8QTdF7lVhnPoBXq/mIfJ+ILoBFqNOboWcMwQ==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [arm64]
    os: [darwin]

  &#39;@tailwindcss/oxide-darwin-x64@4.3.5&#39;:
    resolution: {integrity: sha512-E+p7HEtjI0b8D7kbbWxH067cGui6d4c79COGko9fAPVE3rwc1E7ld2HFCbaG86AOGWS5VKQYqZOaf38ya4uxTQ==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [x64]
    os: [darwin]

  &#39;@tailwindcss/oxide-freebsd-x64@4.3.5&#39;:
    resolution: {integrity: sha512-yWEWcWyAG7rWOcTpJTjdhQ3pcaFY2h+0bqTRfgU3G2fz87ZU3AKdvdZKhslD+kyHnjBUWKvNdRYwIYC5dI1tIg==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [x64]
    os: [freebsd]

  &#39;@tailwindcss/oxide-linux-arm-gnueabihf@4.3.5&#39;:
    resolution: {integrity: sha512-WmeVjtJhZlr+smpqcdR2kQkkn6arHIJnUIBxTO2EJcTLGY1ecVXNo2hbSn8xc0IH2aEtys936iMWKGyj0GaKnA==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [arm]
    os: [linux]

  &#39;@tailwindcss/oxide-linux-arm64-gnu@4.3.5&#39;:
    resolution: {integrity: sha512-DTCSyucc6ShMp1QMqV5R94Z7xlgNgUzkGmFF1rL5HH2Qjy4eSmEqy+YLGkqqYvWa4sILtgrBt1JjRKbneQtiFQ==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [arm64]
    os: [linux]
    libc: [glibc]

  &#39;@tailwindcss/oxide-linux-arm64-musl@4.3.5&#39;:
    resolution: {integrity: sha512-H9lsvO4x9E4nE4Hi8h7NHHw0O/kcVSu+iOyFHNGdYzazGgDjFHZbE6S3hQ8kMcbNXSBlMdNi67LV5EVqtpaJtw==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [arm64]
    os: [linux]
    libc: [musl]

  &#39;@tailwindcss/oxide-linux-x64-gnu@4.3.5&#39;:
    resolution: {integrity: sha512-4uxQvtBvPuIdl13WfUBj9xMZHH14PtHZ8OZdtLmdyDtG66sCa1t599NZT+jagkUzRtWhuul1qRZQ1nAJscXN5g==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [x64]
    os: [linux]
    libc: [glibc]

  &#39;@tailwindcss/oxide-linux-x64-musl@4.3.5&#39;:
    resolution: {integrity: sha512-0JQAzs7jwbA7O6+z/adU+Jk3AXwsu3npAhtr5escXS7TqEqWcaDV7qHuI+0Vy/KQRuVGnLQREcSJWYauyV3oqg==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [x64]
    os: [linux]
    libc: [musl]

  &#39;@tailwindcss/oxide-wasm32-wasi@4.3.5&#39;:
    resolution: {integrity: sha512-OJhFmlEfdzMr+avACdi40RPtnkW0B6hXyxL/8r+tnEHBWZji36CYRjEXrrvgBmaYsD3oEOBqwYFRKsYvzFe7Bw==}
    engines: {node: ^20.19.0 || ^22.13.0 || &gt;=23.5.0}
    bundledDependencies:
      - &#39;@napi-rs/wasm-runtime&#39;
      - &#39;@emnapi/core&#39;
      - &#39;@emnapi/runtime&#39;
      - &#39;@tybys/wasm-util&#39;
      - &#39;@emnapi/wasi-threads&#39;
      - tslib

  &#39;@tailwindcss/oxide-win32-arm64-msvc@4.3.5&#39;:
    resolution: {integrity: sha512-9o8jgthi+QE5eandnboiJT64VQfnIArfZzSTdgbhEK5aafdiu2jTW9Honi/mwYHxBZuH1vAC57IFyrh+0iK5Gg==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [arm64]
    os: [win32]

  &#39;@tailwindcss/oxide-win32-x64-msvc@4.3.5&#39;:
    resolution: {integrity: sha512-XiKFfIy1RWe7qK4WqByxNW7Oz1/nkOy8o/BWhHminyV1PmpUd8Eedj5v2A8h2kpqeVlz6xRnwk9Fr/ZXNLcZfg==}
    engines: {node: &#39;&gt;= 20&#39;}
    cpu: [x64]
    os: [win32]

  &#39;@tailwindcss/oxide@4.3.5&#39;:
    resolution: {integrity: sha512-PynqGLZsZvwM9tqD/CUxkOIfyd6K5elZ2MooauzJryP/UqXYgi3yYbtt3N0Xe+MHV/eFKPFQCEfIKAqlAS1CBg==}
    engines: {node: &#39;&gt;= 20&#39;}

  &#39;@tailwindcss/vite@4.3.5&#39;:
    resolution: {integrity: sha512-BCNiY0a1ZjdOHVqw7kyb7U72BwfMF3dfUuN+tQsLWky/J5JOI/r7abibglXfygrZhVO/3u3V+E25kkKTeMkXaQ==}
    peerDependencies:
      vite: ^5.2.0 || ^6 || ^7 || ^8

  &#39;@tanstack/db-ivm@1.0.0-rc.1.2&#39;:
    resolution: {integrity: sha512-kF5XbkzNmDuJBr+p2//ijZO9CzAGp0fK8gRGRX6gzt9QZM9RNIizAPVLdXM9kcg+VlZC6xB28ZmScsX9j4LMuw==}
    peerDependencies:
      typescript: &#39;&gt;=4.7&#39;

  &#39;@tanstack/db@1.0.0-rc.1.4&#39;:
    resolution: {integrity: sha512-UaBXdnoACdauRb0tdav0TqwGE/viWWTHssnPKOC4sd3jiLdS5Jb2KFunW4wflfQpJHxSD+12wAIO7J8uMXQGgA==}
    peerDependencies:
      typescript: &#39;&gt;=4.7&#39;

  &#39;@tanstack/electric-db-collection@1.0.0-rc.1.4&#39;:
    resolution: {integrity: sha512-XpuAFOMm40oUND1eVlaxMRKRCoMOUs8TEPD8yoKBgCGiEqLMmmSDNgtiGry4E3/bhCF2f/JtDQ7V6AirIRZglQ==}

  &#39;@tanstack/history@1.162.5&#39;:
    resolution: {integrity: sha512-w1+YvwmTkwt5n8yUqEH3IWZ9DsmorCZW/EQ3KYHnqEgIkOZpH54NvW6/Epq3Dzb8H0ifIeYX8PExvrNLIH5FIA==}
    engines: {node: &#39;&gt;=20.19&#39;}

  &#39;@tanstack/pacer-lite@0.2.2&#39;:
    resolution: {integrity: sha512-eQ1MyLKCHyXiH7NbdmB80W77OhiMgGBUb+qDx/8WMGbwg5Lf/NlfD0TfNYAqY77i8V3AxoDoYdICrQE5ADw4Yw==}
    engines: {node: &#39;&gt;=18&#39;}

  &#39;@tanstack/query-core@5.107.1&#39;:
    resolution: {integrity: sha512-PSyAik11oQBEVOiVy5hjZWHmoUqOXqK1WYy4v55mcxozEfKaQgpUMsgnXhWjuESzSht8JfzqMS1m6M/9CpNgvg==}

  &#39;@tanstack/query-db-collection@1.5.1&#39;:
    resolution: {integrity: sha512-KPEQHvbBm4BHpsKSoWAndCu/Xy21JyiYx/OISFj+TtPoN5o7ettoYaC8URDmqU5m1zGvji/nZv7SdVPipVcFRw==}
    peerDependencies:
      &#39;@tanstack/db&#39;: ^1.0.0-rc.0
      &#39;@tanstack/query-core&#39;: ^5.90.15
      typescript: &#39;&gt;=4.7&#39;

  &#39;@tanstack/router-core@1.171.39&#39;:
    resolution: {integrity: sha512-qUhoJ0meuSUqGYQbHbcJYdASr06YtK+bulbj6vtrhKYFkLgkSsZ6tXmMyym7sFxiSJSPYgasgozrL01LyyR/6A==}
    engines: {node: &#39;&gt;=20.19&#39;}

  &#39;@tanstack/router-generator@1.168.0&#39;:
    resolution: {integrity: sha512-Ty3y1g96Nq4yMojTH+OTgRFp0oa14LBKhiDW8+SrsdgW2mCpPRzZ8Ix7jjztxmkS8O+AKc2WaLkSskGUe3oEDQ==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}

  &#39;@tanstack/router-plugin@1.169.0&#39;:
    resolution: {integrity: sha512-aulFJmvW/rN5zQg/IM1Z5iUueX9dnYjBKxNpFWstpHxbatdlRlEwtSrc57VlBmfzRuckVxpZLi6wH3O40DMLgw==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    peerDependencies:
      &#39;@rsbuild/core&#39;: &#39;&gt;=1.0.2 || ^2.0.0&#39;
      &#39;@tanstack/react-router&#39;: ^1.170.46
      vite: &#39;&gt;=6.0.0&#39;
      vite-plugin-solid: ^2.11.10 || ^3.0.0-0
      webpack: &#39;&gt;=5.92.0&#39;
    peerDependenciesMeta:
      &#39;@rsbuild/core&#39;:
        optional: true
      &#39;@tanstack/react-router&#39;:
        optional: true
      vite:
        optional: true
      vite-plugin-solid:
        optional: true
      webpack:
        optional: true

  &#39;@tanstack/router-utils@1.163.0&#39;:
    resolution: {integrity: sha512-OMeFv8aRwk9Xtf3JhRmQrjtMxCj7qqfnsueASuL8xUgItoblIL9eCIyt4Zv0hk3LBp/s7NqviZgQhiAfDhJb/A==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}

  &#39;@tanstack/solid-db@1.0.0-rc.1.4&#39;:
    resolution: {integrity: sha512-TmCEW8B12TNwChfrI8M9Lt1LJK6lekheHYDhC/HxFEoUJS/w2/0FDpIhRQzi3X6VQCp/41YpvpHrc2h0Yx5NIQ==}
    peerDependencies:
      solid-js: ^1.9.0

  &#39;@tanstack/solid-router@1.170.43&#39;:
    resolution: {integrity: sha512-5z/V3i2x9PUxg770a9mH/o2C3fdWVB3YqyJ1r1a0O+pKf8Wevshrf8rb9sOfgNJr0nuP/WCxktZJYCq5lh1lGQ==}
    engines: {node: &#39;&gt;=20.19&#39;}
    peerDependencies:
      solid-js: ^1.9.10

  &#39;@tanstack/solid-start-client@1.168.42&#39;:
    resolution: {integrity: sha512-64owXYM9vSF2Xayhs0ktsABRuyxJq2vzv+t/SpkbaYpjxli2FeEtJrvYDZd87lG7EikDWrFWKdk/T35pP/jIoA==}
    engines: {node: &#39;&gt;=22.12.0&#39;}
    peerDependencies:
      solid-js: &#39;&gt;=1.0.0&#39;

  &#39;@tanstack/solid-start-server@1.167.50&#39;:
    resolution: {integrity: sha512-qbwT9fpjeDCMossW2iflERVLyAZgkYUm9OE5l75JWc1Jeqw4mrjuT7qBVInR3T2klK6CdYT+Dro9aFmvZB4nZA==}
    engines: {node: &#39;&gt;=22.12.0&#39;}
    peerDependencies:
      solid-js: ^1.0.0

  &#39;@tanstack/solid-start@1.169.5&#39;:
    resolution: {integrity: sha512-YV84IVlE+ozrankKgeM+8iionwRJeStk7Rn+5J4szMvoIXk6TFxXM5KJ5c7JxXnZIDOpM/kEj6Vqk4T7w8BcTg==}
    engines: {node: &#39;&gt;=22.12.0&#39;}
    peerDependencies:
      &#39;@rsbuild/core&#39;: ^2.0.5
      solid-js: &#39;&gt;=1.0.0&#39;
      vite: &#39;&gt;=8.0.0&#39;
    peerDependenciesMeta:
      &#39;@rsbuild/core&#39;:
        optional: true
      vite:
        optional: true

  &#39;@tanstack/start-client-core@1.170.39&#39;:
    resolution: {integrity: sha512-G0VJbZFf9/dYomQjZkWapaTjkjEI4vbk1jnxhhVtQ3nTRb3sIRc196j+S+qZcySfEV5W9TJHu4KatjSzjZZQwQ==}
    engines: {node: &#39;&gt;=22.12.0&#39;}

  &#39;@tanstack/start-fn-stubs@1.162.0&#39;:
    resolution: {integrity: sha512-QWfUZ3Yo923tdQn38LyKMU8rcTw69zc+T4dAvgTWV4O56SqFRsGfS0lSWIMhJRwXIx/bvdi7nTUBDdZtTHtpTQ==}
    engines: {node: &#39;&gt;=22.12.0&#39;}

  &#39;@tanstack/start-plugin-core@1.171.56&#39;:
    resolution: {integrity: sha512-xTzXpxfuBsJjBq4xLbQ0Go0/87SReVukjevkqNR3k/rgeKHfjt8nHJDMaQByS97ko+jmSoVY8+TXtRLaCYvI0A==}
    engines: {node: &#39;&gt;=22.12.0&#39;}
    peerDependencies:
      &#39;@rsbuild/core&#39;: ^2.0.5
      vite: &#39;&gt;=8.0.0&#39;
    peerDependenciesMeta:
      &#39;@rsbuild/core&#39;:
        optional: true
      vite:
        optional: true

  &#39;@tanstack/start-server-core@1.169.45&#39;:
    resolution: {integrity: sha512-fKySLUGIy7aVYR6ZRgjC19TQdsZ+q/54M9hVfHrJQQVpM/T5qq5djZ3gsqhugmrWP+gyd9qpa9D6cxRtR6CJvg==}
    engines: {node: &#39;&gt;=22.12.0&#39;}

  &#39;@tanstack/start-storage-context@1.167.41&#39;:
    resolution: {integrity: sha512-MY+Z4cZBPbH7hjORcROMX7K3kV1X25ArFKmRbks+EukPP9UVwCXbZFVzYkTt1u0AHthvQTcpa4J9B9i0o6fEnA==}
    engines: {node: &#39;&gt;=22.12.0&#39;}

  &#39;@tanstack/store@0.9.3&#39;:
    resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==}

  &#39;@tanstack/trailbase-db-collection@1.0.0-rc.1.4&#39;:
    resolution: {integrity: sha512-dSSY5+COGCxMEEZOEPl6zihurwFaDDBqVG3ICU3CpyY3Y6pYR8H/itRPByp0e7UxxHfoltUKzxNzC+g9Rzc3fA==}
    peerDependencies:
      typescript: &#39;&gt;=4.7&#39;

  &#39;@tanstack/virtual-file-routes@1.162.0&#39;:
    resolution: {integrity: sha512-uhOeFyxLcU41HzvrxsGpiWdcMbScY1EDgbZ5K7DVRMYInbLYWAC0EA/kx9wXAoSM8q82bUG2hRl8+EAjE6XAbA==}
    engines: {node: &#39;&gt;=20.19&#39;}

  &#39;@types/babel__core@7.20.5&#39;:
    resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}

  &#39;@types/babel__generator@7.6.8&#39;:
    resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}

  &#39;@types/babel__template@7.4.4&#39;:
    resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}

  &#39;@types/babel__traverse@7.20.6&#39;:
    resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}

  &#39;@types/body-parser@1.19.5&#39;:
    resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}

  &#39;@types/connect@3.4.38&#39;:
    resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}

  &#39;@types/cors@2.8.19&#39;:
    resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==}

  &#39;@types/estree@1.0.6&#39;:
    resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}

  &#39;@types/express-serve-static-core@5.1.3&#39;:
    resolution: {integrity: sha512-dPfW8NFiOF4wOHc7+N/QSxlY9cfSsenewGbAz8C8U/MULPd/YZ27LvJUIlzaXie7e6Ove9YunJGgC9tbHD2cKw==}

  &#39;@types/express@5.0.6&#39;:
    resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==}

  &#39;@types/geojson@7946.0.16&#39;:
    resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==}

  &#39;@types/http-errors@2.0.4&#39;:
    resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}

  &#39;@types/json-schema@7.0.15&#39;:
    resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}

  &#39;@types/mime@1.3.5&#39;:
    resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}

  &#39;@types/node@22.13.5&#39;:
    resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==}

  &#39;@types/node@25.9.9&#39;:
    resolution: {integrity: sha512-b4e2xxj/yMeT2hNlD6x7zNFiQK2Dlmkb9CQ6v3/1G2RezKN4YS2lcEv8lzGm1mhs4f2lM4yNAMI/zUDBZBBt7w==}

  &#39;@types/pg@8.23.1&#39;:
    resolution: {integrity: sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==}

  &#39;@types/qs@6.9.18&#39;:
    resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}

  &#39;@types/range-parser@1.2.7&#39;:
    resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}

  &#39;@types/send@0.17.4&#39;:
    resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}

  &#39;@types/serve-static@2.2.0&#39;:
    resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}

  &#39;@typescript-eslint/eslint-plugin@8.72.1&#39;:
    resolution: {integrity: sha512-5CokTWXpmbylfFabsbvHC0CAw3XLaGnoa+nFJX5FR592h/LoZsENUE6p/rg5xvkKrFEXz6pYmgI29AgXc2N3BQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    peerDependencies:
      &#39;@typescript-eslint/parser&#39;: ^8.72.1
      eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
      typescript: &#39;&gt;=4.8.4 &lt;6.1.0&#39;

  &#39;@typescript-eslint/parser@8.72.1&#39;:
    resolution: {integrity: sha512-ZGwZP4OCfyA0AQTpEAMWz+rtX01DRhQWW5hB0ucKDEIX5U7jdmPSaMx94rQfaPAQzIYz2BimOgKOJtjfpRFQ9g==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
      typescript: &#39;&gt;=4.8.4 &lt;6.1.0&#39;

  &#39;@typescript-eslint/project-service@8.72.1&#39;:
    resolution: {integrity: sha512-fAuVMkwdO/huI8nyo/WKnNKf6Gag93S56Rh3Ts5mGcavwSdaN8tRg1gCeIGX8PF+nzp1BjGfO4gHhGzW1J6jTg==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    peerDependencies:
      typescript: &#39;&gt;=4.8.4 &lt;6.1.0&#39;

  &#39;@typescript-eslint/scope-manager@8.72.1&#39;:
    resolution: {integrity: sha512-lC/t6eMCZZQAAKZEYGL6RDVSuFehpdmMT6h+nJIjIa6oylN/PwDgDVtEIbB7O9xFfZYtZAYLoLlDNWKJhtF+uQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@typescript-eslint/tsconfig-utils@8.72.1&#39;:
    resolution: {integrity: sha512-e4D5R5vpeAEPBxT2BAzsFQL3sbwyeeeo5+aczgNSRK1V734jE7pTqaGFU+fXapWEQwnZbpFaTn32+Z8DwS6OTg==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    peerDependencies:
      typescript: &#39;&gt;=4.8.4 &lt;6.1.0&#39;

  &#39;@typescript-eslint/type-utils@8.72.1&#39;:
    resolution: {integrity: sha512-iY2wlmyrXJmx4yxUGP3aYCFF3cA/6ShddOKmLU2dx7LnEykbAM8WThlxZEfd1NddqceF6eJmZUayxx9oKIYNlg==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
      typescript: &#39;&gt;=4.8.4 &lt;6.1.0&#39;

  &#39;@typescript-eslint/types@8.72.1&#39;:
    resolution: {integrity: sha512-LmE5IhQet1BWOWEXqBrVtBPsMAOQ6Nzk35d+WLh3mk4EUF33sqlfxjio1MdYeSvKSG5skactKKuixBIKXhL4Rw==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@typescript-eslint/typescript-estree@8.72.1&#39;:
    resolution: {integrity: sha512-DAlUoUV93hIvrtIQLwCbmZQYVZwOMhiHJrOVUUIWicFZaIYjTRqlY3I/NZevfkLmSqkNHRu2qYDcq9lrn16oOQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    peerDependencies:
      typescript: &#39;&gt;=4.8.4 &lt;6.1.0&#39;

  &#39;@typescript-eslint/utils@8.72.1&#39;:
    resolution: {integrity: sha512-5v5liypurJBFHCBNqh/RjsymAD+VWcE0djuGY/BUqp5fC3Qn+luWDEksjuTtWjPn6i5zQlUtkZCRG/CYG0yCkA==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
      typescript: &#39;&gt;=4.8.4 &lt;6.1.0&#39;

  &#39;@typescript-eslint/visitor-keys@8.72.1&#39;:
    resolution: {integrity: sha512-SB8xqipSzZHUePCCLNeYxqnxq83X61/qzNhjQGbTfjxGZIeOEP7tBgWYX05Tcd6CgE02WdTJnh5b8kMZJ/+bnQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  &#39;@ungap/raw-json@0.4.4&#39;:
    resolution: {integrity: sha512-mUDobz3DeEItDmI34Hg+eL9hTTJSZbIvsvGAr42YoK4IyS7SWKmF5Xa0pI8RWFZSijL8QmfvCNH3s8HYJNxKaw==}

  accepts@2.0.0:
    resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
    engines: {node: &#39;&gt;= 0.6&#39;}

  acorn-jsx@5.3.2:
    resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
    peerDependencies:
      acorn: ^6.0.0 || ^7.0.0 || ^8.0.0

  acorn@8.14.0:
    resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
    engines: {node: &#39;&gt;=0.4.0&#39;}
    hasBin: true

  acorn@8.19.0:
    resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==}
    engines: {node: &#39;&gt;=0.4.0&#39;}
    hasBin: true

  ajv@6.15.0:
    resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}

  ansi-regex@5.0.1:
    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
    engines: {node: &#39;&gt;=8&#39;}

  ansi-styles@4.3.0:
    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
    engines: {node: &#39;&gt;=8&#39;}

  ansis@4.5.0:
    resolution: {integrity: sha512-KwIVkfFfJSSzBmZhDGuTmkhWqTdyB5oNVzzznBJbBZ5bZtHiqSrcugRF0RKJKT4Ss3d7ZrcjnlFVDlQNmtWfWw==}
    engines: {node: &#39;&gt;=14&#39;}

  argparse@2.0.1:
    resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}

  babel-dead-code-elimination@1.0.12:
    resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==}

  babel-plugin-jsx-dom-expressions@0.40.11:
    resolution: {integrity: sha512-k7TkOv7uVYnrq/bYyVvG5cWOC9IObAGfmyW3aMkG8l2sq2qt/5THkUBja69PMLEGGi8G+fXB2Fh7eS4OwZRBoQ==}
    peerDependencies:
      &#39;@babel/core&#39;: ^7.20.12

  babel-preset-solid@1.9.16:
    resolution: {integrity: sha512-+0h40Qk2oBfkQ4OGDBHIDtvq/XQiOnCfzjNHmMxriAr8MmdsaIbyJgqYglDs4d70sF8O08sSpx61TKdpUt3oRw==}
    peerDependencies:
      &#39;@babel/core&#39;: ^7.0.0
      solid-js: ^1.9.16
    peerDependenciesMeta:
      solid-js:
        optional: true

  balanced-match@1.0.2:
    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}

  balanced-match@4.0.4:
    resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
    engines: {node: 18 || 20 || &gt;=22}

  body-parser@2.4.0:
    resolution: {integrity: sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==}
    engines: {node: &#39;&gt;=18&#39;}

  brace-expansion@1.1.11:
    resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}

  brace-expansion@5.0.12:
    resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==}
    engines: {node: 20 || &gt;=22}

  browserslist@4.24.4:
    resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==}
    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || &gt;=13.7}
    hasBin: true

  buffer-from@1.1.2:
    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}

  bytes@3.1.2:
    resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  call-bind-apply-helpers@1.0.2:
    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  call-bound@1.0.3:
    resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  callsites@3.1.0:
    resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
    engines: {node: &#39;&gt;=6&#39;}

  caniuse-lite@1.0.30001700:
    resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==}

  chalk@4.1.2:
    resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
    engines: {node: &#39;&gt;=10&#39;}

  chokidar@5.0.0:
    resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
    engines: {node: &#39;&gt;= 20.19.0&#39;}

  cliui@8.0.1:
    resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
    engines: {node: &#39;&gt;=12&#39;}

  color-convert@2.0.1:
    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
    engines: {node: &#39;&gt;=7.0.0&#39;}

  color-name@1.1.4:
    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}

  concat-map@0.0.1:
    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}

  concurrently@9.2.5:
    resolution: {integrity: sha512-YMZlvWrTPQEhjKp60XSmMGt60+pffbv6DyRnOMvVO98+J7aF8w8Ui9FhdcOwvSixc/kyR6SoVvmejcn/2lZBqg==}
    engines: {node: &#39;&gt;=18&#39;}
    hasBin: true

  content-disposition@2.0.1:
    resolution: {integrity: sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==}
    engines: {node: &#39;&gt;=18&#39;}

  content-type@2.1.0:
    resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==}
    engines: {node: &#39;&gt;=18&#39;}

  convert-source-map@2.0.0:
    resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}

  cookie-es@3.1.1:
    resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==}

  cookie-signature@1.2.2:
    resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
    engines: {node: &#39;&gt;=6.6.0&#39;}

  cookie@0.7.1:
    resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
    engines: {node: &#39;&gt;= 0.6&#39;}

  cors@2.8.6:
    resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==}
    engines: {node: &#39;&gt;= 0.10&#39;}

  cross-spawn@7.0.6:
    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
    engines: {node: &#39;&gt;= 8&#39;}

  csstype@3.1.3:
    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}

  debug@4.4.0:
    resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
    engines: {node: &#39;&gt;=6.0&#39;}
    peerDependencies:
      supports-color: &#39;*&#39;
    peerDependenciesMeta:
      supports-color:
        optional: true

  debug@4.4.3:
    resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
    engines: {node: &#39;&gt;=6.0&#39;}
    peerDependencies:
      supports-color: &#39;*&#39;
    peerDependenciesMeta:
      supports-color:
        optional: true

  deep-is@0.1.4:
    resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}

  depd@2.0.0:
    resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  detect-libc@2.1.2:
    resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
    engines: {node: &#39;&gt;=8&#39;}

  diff@9.0.0:
    resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==}
    engines: {node: &#39;&gt;=0.3.1&#39;}

  dotenv@17.4.2:
    resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==}
    engines: {node: &#39;&gt;=12&#39;}

  drizzle-kit@0.31.11:
    resolution: {integrity: sha512-YCYqxTLIB2OCqf6w9/Vef13baBVbwQIPcbT4Y56AfO6B9ajZhDhD8Jkveg/hJvT/iuMloKD/IYYkyMMNhr7Kqg==}
    hasBin: true

  drizzle-orm@0.45.4:
    resolution: {integrity: sha512-NiM1YZpJ2UxyeE67DpDDZ+Tsw4YLX3trSlkNT7Tm9eKoUNb1LvaAaQzXgYQsWs+AQ9TUmmwMmBOCXuqqxUWKKQ==}
    peerDependencies:
      &#39;@aws-sdk/client-rds-data&#39;: &#39;&gt;=3&#39;
      &#39;@cloudflare/workers-types&#39;: &#39;&gt;=4&#39;
      &#39;@electric-sql/pglite&#39;: &#39;&gt;=0.2.0&#39;
      &#39;@libsql/client&#39;: &#39;&gt;=0.10.0&#39;
      &#39;@libsql/client-wasm&#39;: &#39;&gt;=0.10.0&#39;
      &#39;@neondatabase/serverless&#39;: &#39;&gt;=0.10.0&#39;
      &#39;@netlify/db&#39;: &#39;&gt;=0.4.0&#39;
      &#39;@op-engineering/op-sqlite&#39;: &#39;&gt;=2&#39;
      &#39;@opentelemetry/api&#39;: ^1.4.1
      &#39;@planetscale/database&#39;: &#39;&gt;=1.13&#39;
      &#39;@prisma/client&#39;: &#39;*&#39;
      &#39;@tidbcloud/serverless&#39;: &#39;*&#39;
      &#39;@types/better-sqlite3&#39;: &#39;*&#39;
      &#39;@types/pg&#39;: &#39;*&#39;
      &#39;@types/sql.js&#39;: &#39;*&#39;
      &#39;@upstash/redis&#39;: &#39;&gt;=1.34.7&#39;
      &#39;@vercel/postgres&#39;: &#39;&gt;=0.8.0&#39;
      &#39;@xata.io/client&#39;: &#39;*&#39;
      better-sqlite3: &#39;&gt;=7&#39;
      bun-types: &#39;*&#39;
      expo-sqlite: &#39;&gt;=14.0.0&#39;
      gel: &#39;&gt;=2&#39;
      knex: &#39;*&#39;
      kysely: &#39;*&#39;
      mysql2: &#39;&gt;=2&#39;
      pg: &#39;&gt;=8&#39;
      postgres: &#39;&gt;=3&#39;
      prisma: &#39;*&#39;
      sql.js: &#39;&gt;=1&#39;
      sqlite3: &#39;&gt;=5&#39;
    peerDependenciesMeta:
      &#39;@aws-sdk/client-rds-data&#39;:
        optional: true
      &#39;@cloudflare/workers-types&#39;:
        optional: true
      &#39;@electric-sql/pglite&#39;:
        optional: true
      &#39;@libsql/client&#39;:
        optional: true
      &#39;@libsql/client-wasm&#39;:
        optional: true
      &#39;@neondatabase/serverless&#39;:
        optional: true
      &#39;@netlify/db&#39;:
        optional: true
      &#39;@op-engineering/op-sqlite&#39;:
        optional: true
      &#39;@opentelemetry/api&#39;:
        optional: true
      &#39;@planetscale/database&#39;:
        optional: true
      &#39;@prisma/client&#39;:
        optional: true
      &#39;@tidbcloud/serverless&#39;:
        optional: true
      &#39;@types/better-sqlite3&#39;:
        optional: true
      &#39;@types/pg&#39;:
        optional: true
      &#39;@types/sql.js&#39;:
        optional: true
      &#39;@upstash/redis&#39;:
        optional: true
      &#39;@vercel/postgres&#39;:
        optional: true
      &#39;@xata.io/client&#39;:
        optional: true
      better-sqlite3:
        optional: true
      bun-types:
        optional: true
      expo-sqlite:
        optional: true
      gel:
        optional: true
      knex:
        optional: true
      kysely:
        optional: true
      mysql2:
        optional: true
      pg:
        optional: true
      postgres:
        optional: true
      prisma:
        optional: true
      sql.js:
        optional: true
      sqlite3:
        optional: true

  drizzle-zod@0.8.3:
    resolution: {integrity: sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww==}
    peerDependencies:
      drizzle-orm: &#39;&gt;=0.36.0&#39;
      zod: ^3.25.0 || ^4.0.0

  dunder-proto@1.0.1:
    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  ee-first@1.1.1:
    resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}

  electron-to-chromium@1.5.104:
    resolution: {integrity: sha512-Us9M2L4cO/zMBqVkJtnj353nQhMju9slHm62NprKTmdF3HH8wYOtNvDFq/JB2+ZRoGLzdvYDiATlMHs98XBM1g==}

  emoji-regex@8.0.0:
    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}

  encodeurl@2.0.0:
    resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  enhanced-resolve@5.26.1:
    resolution: {integrity: sha512-PPnnSJq3azKOIewXR/uppBV/6h98dprBJ/WaQ9Qgj10xX1lJLNfg+XShpbsrSqcDSy2yYYyhfXM1wWhftqgyzw==}
    engines: {node: &#39;&gt;=10.13.0&#39;}

  entities@6.0.1:
    resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
    engines: {node: &#39;&gt;=0.12&#39;}

  es-define-property@1.0.1:
    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  es-errors@1.3.0:
    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  es-object-atoms@1.1.1:
    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  esbuild@0.18.20:
    resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
    engines: {node: &#39;&gt;=12&#39;}
    hasBin: true

  esbuild@0.25.12:
    resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
    engines: {node: &#39;&gt;=18&#39;}
    hasBin: true

  esbuild@0.28.2:
    resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==}
    engines: {node: &#39;&gt;=18&#39;}
    hasBin: true

  escalade@3.2.0:
    resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
    engines: {node: &#39;&gt;=6&#39;}

  escape-html@1.0.3:
    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}

  escape-string-regexp@4.0.0:
    resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
    engines: {node: &#39;&gt;=10&#39;}

  eslint-plugin-solid@0.19.0:
    resolution: {integrity: sha512-Is7Aj9bfce774C9B6ivc/S5HNmUpYwlzYx8bO13EIIF7JaY8c6OACxE0LTyhNLDeMR3VNBDn+a/k830dvYl4uQ==}
    engines: {node: &#39;&gt;=22.0.0&#39;}
    peerDependencies:
      eslint: ^9.0.0 || ^10.0.0
    peerDependenciesMeta:
      eslint:
        optional: true

  eslint-scope@8.4.0:
    resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  eslint-visitor-keys@3.4.3:
    resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
    engines: {node: ^12.22.0 || ^14.17.0 || &gt;=16.0.0}

  eslint-visitor-keys@4.2.0:
    resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  eslint-visitor-keys@4.2.1:
    resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  eslint-visitor-keys@5.0.1:
    resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
    engines: {node: ^20.19.0 || ^22.13.0 || &gt;=24}

  eslint@9.39.5:
    resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}
    deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
    hasBin: true
    peerDependencies:
      jiti: &#39;*&#39;
    peerDependenciesMeta:
      jiti:
        optional: true

  espree@10.3.0:
    resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  espree@10.4.0:
    resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || &gt;=21.1.0}

  esquery@1.6.0:
    resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
    engines: {node: &#39;&gt;=0.10&#39;}

  esrecurse@4.3.0:
    resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
    engines: {node: &#39;&gt;=4.0&#39;}

  estraverse@5.3.0:
    resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
    engines: {node: &#39;&gt;=4.0&#39;}

  esutils@2.0.3:
    resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  etag@1.8.1:
    resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
    engines: {node: &#39;&gt;= 0.6&#39;}

  express@5.3.0:
    resolution: {integrity: sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==}
    engines: {node: &#39;&gt;= 18&#39;}

  exsolve@1.2.0:
    resolution: {integrity: sha512-h1pQPR9XoeSMdntRNCjyTznaume4UpfXrULBnlkZ2CUM/G5eSa+pBByGldO5uR8dxbPC+OuJXsPPNf+JZ81ADg==}

  fast-deep-equal@3.1.3:
    resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}

  fast-json-stable-stringify@2.1.0:
    resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}

  fast-levenshtein@2.0.6:
    resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}

  fdir@6.5.0:
    resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
    engines: {node: &#39;&gt;=12.0.0&#39;}
    peerDependencies:
      picomatch: ^3 || ^4
    peerDependenciesMeta:
      picomatch:
        optional: true

  fetchdts@0.2.0:
    resolution: {integrity: sha512-PJb4ZTGT2/wK78RmVrxZITStWabhZlKBsL52VOgq+c7clEkdHdEB+0rtzrXCbZJqeYJj+IwNWYqB5/G6vouA6A==}

  file-entry-cache@8.0.0:
    resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
    engines: {node: &#39;&gt;=16.0.0&#39;}

  finalhandler@2.1.1:
    resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==}
    engines: {node: &#39;&gt;= 18.0.0&#39;}

  find-up@5.0.0:
    resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
    engines: {node: &#39;&gt;=10&#39;}

  flat-cache@4.0.1:
    resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
    engines: {node: &#39;&gt;=16&#39;}

  flatted@3.3.3:
    resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}

  forwarded@0.2.0:
    resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
    engines: {node: &#39;&gt;= 0.6&#39;}

  fractional-indexing@3.4.0:
    resolution: {integrity: sha512-8J3glhz2rrpKG6KmI7wmJo3zH1VjeOpN+vTJSw1fOyO+Viqq3zX6/5NGh6oaZB2qIAYdOYuu5Dz9xp4faOO0Pg==}
    engines: {node: ^14.13.1 || &gt;=16.0.0}

  fresh@2.0.0:
    resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  fsevents@2.3.3:
    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
    engines: {node: ^8.16.0 || ^10.6.0 || &gt;=11.0.0}
    os: [darwin]

  function-bind@1.1.2:
    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}

  gensync@1.0.0-beta.2:
    resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
    engines: {node: &#39;&gt;=6.9.0&#39;}

  geojson@0.5.0:
    resolution: {integrity: sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==}
    engines: {node: &#39;&gt;= 0.10&#39;}

  get-caller-file@2.0.5:
    resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
    engines: {node: 6.* || 8.* || &gt;= 10.*}

  get-intrinsic@1.3.0:
    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  get-proto@1.0.1:
    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  get-tsconfig@4.10.0:
    resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}

  glob-parent@6.0.2:
    resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
    engines: {node: &#39;&gt;=10.13.0&#39;}

  globals@11.12.0:
    resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
    engines: {node: &#39;&gt;=4&#39;}

  globals@14.0.0:
    resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
    engines: {node: &#39;&gt;=18&#39;}

  globrex@0.1.2:
    resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}

  gopd@1.2.0:
    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  graceful-fs@4.2.11:
    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}

  has-flag@4.0.0:
    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
    engines: {node: &#39;&gt;=8&#39;}

  has-symbols@1.1.0:
    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  hasown@2.0.2:
    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  html-entities@2.3.3:
    resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}

  html-tags@3.3.1:
    resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
    engines: {node: &#39;&gt;=8&#39;}

  http-errors@2.0.0:
    resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  http-errors@2.0.1:
    resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  iconv-lite@0.7.3:
    resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  ignore@5.3.2:
    resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
    engines: {node: &#39;&gt;= 4&#39;}

  ignore@7.0.14:
    resolution: {integrity: sha512-wCBiZ77u1tuWde6G/nfOtLaCTYcFDU5yCzARzK10y+rLhzYoL7a7yEemcopcc2Mzow7gZOIjnV2ym1NYmdiJOQ==}
    engines: {node: &#39;&gt;= 4&#39;}

  import-fresh@3.3.1:
    resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
    engines: {node: &#39;&gt;=6&#39;}

  imurmurhash@0.1.4:
    resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
    engines: {node: &#39;&gt;=0.8.19&#39;}

  inherits@2.0.4:
    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}

  inline-style-parser@0.2.7:
    resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}

  ipaddr.js@1.9.1:
    resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
    engines: {node: &#39;&gt;= 0.10&#39;}

  is-extglob@2.1.1:
    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  is-fullwidth-code-point@3.0.0:
    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
    engines: {node: &#39;&gt;=8&#39;}

  is-glob@4.0.3:
    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  is-html@2.0.0:
    resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==}
    engines: {node: &#39;&gt;=8&#39;}

  is-promise@4.0.0:
    resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}

  is-what@4.1.16:
    resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
    engines: {node: &#39;&gt;=12.13&#39;}

  isbot@5.2.2:
    resolution: {integrity: sha512-iQcBXcd+Rv/pkubRyGh2utW2j1oPG5hZY6TUhVPpqK4G+o3IbxpJNx04hgksjc/N7GK5pEorUxDeg31cFgEk/w==}
    engines: {node: &#39;&gt;=18&#39;}

  isexe@2.0.0:
    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}

  jiti@2.7.0:
    resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
    hasBin: true

  js-tokens@4.0.0:
    resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}

  js-yaml@4.3.2:
    resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==}
    hasBin: true

  jsesc@3.1.0:
    resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
    engines: {node: &#39;&gt;=6&#39;}
    hasBin: true

  json-buffer@3.0.1:
    resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}

  json-schema-traverse@0.4.1:
    resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}

  json-stable-stringify-without-jsonify@1.0.1:
    resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}

  json5@2.2.3:
    resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
    engines: {node: &#39;&gt;=6&#39;}
    hasBin: true

  jwt-decode@4.0.0:
    resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==}
    engines: {node: &#39;&gt;=18&#39;}

  kebab-case@1.0.2:
    resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==}

  keyv@4.5.4:
    resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}

  known-css-properties@0.30.0:
    resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==}

  levn@0.4.1:
    resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
    engines: {node: &#39;&gt;= 0.8.0&#39;}

  lightningcss-android-arm64@1.33.0:
    resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [arm64]
    os: [android]

  lightningcss-darwin-arm64@1.33.0:
    resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [arm64]
    os: [darwin]

  lightningcss-darwin-x64@1.33.0:
    resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [x64]
    os: [darwin]

  lightningcss-freebsd-x64@1.33.0:
    resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [x64]
    os: [freebsd]

  lightningcss-linux-arm-gnueabihf@1.33.0:
    resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [arm]
    os: [linux]

  lightningcss-linux-arm64-gnu@1.33.0:
    resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [arm64]
    os: [linux]
    libc: [glibc]

  lightningcss-linux-arm64-musl@1.33.0:
    resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [arm64]
    os: [linux]
    libc: [musl]

  lightningcss-linux-x64-gnu@1.33.0:
    resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [x64]
    os: [linux]
    libc: [glibc]

  lightningcss-linux-x64-musl@1.33.0:
    resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [x64]
    os: [linux]
    libc: [musl]

  lightningcss-win32-arm64-msvc@1.33.0:
    resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [arm64]
    os: [win32]

  lightningcss-win32-x64-msvc@1.33.0:
    resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}
    cpu: [x64]
    os: [win32]

  lightningcss@1.33.0:
    resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
    engines: {node: &#39;&gt;= 12.0.0&#39;}

  locate-path@6.0.0:
    resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
    engines: {node: &#39;&gt;=10&#39;}

  lodash.merge@4.6.2:
    resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}

  lru-cache@5.1.1:
    resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}

  magic-string@0.30.21:
    resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}

  magic-string@1.4.5:
    resolution: {integrity: sha512-oLLC2+YvQUfAa+vxoufE/yc1icb87M9iXIRqAoR/2EhE/8cb3SF/+Gi0c2By1B+5Vz2e2vQtUvHiu1+63Znh+w==}

  math-intrinsics@1.1.0:
    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  media-typer@1.1.1:
    resolution: {integrity: sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  merge-anything@5.1.7:
    resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
    engines: {node: &#39;&gt;=12.13&#39;}

  merge-descriptors@2.0.0:
    resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
    engines: {node: &#39;&gt;=18&#39;}

  mime-db@1.54.0:
    resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
    engines: {node: &#39;&gt;= 0.6&#39;}

  mime-types@3.0.2:
    resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
    engines: {node: &#39;&gt;=18&#39;}

  minimatch@10.2.6:
    resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
    engines: {node: 18 || 20 || &gt;=22}

  minimatch@3.1.5:
    resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}

  ms@2.1.3:
    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}

  nanoid@3.3.20:
    resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==}
    engines: {node: ^10 || ^12 || ^13.7 || ^14 || &gt;=15.0.1}
    hasBin: true

  natural-compare@1.4.0:
    resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}

  negotiator@1.1.0:
    resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==}
    engines: {node: &#39;&gt;=18&#39;}

  node-releases@2.0.19:
    resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}

  object-assign@4.1.1:
    resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  object-inspect@1.13.4:
    resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  on-finished@2.4.1:
    resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  once@1.4.0:
    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}

  optionator@0.9.4:
    resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
    engines: {node: &#39;&gt;= 0.8.0&#39;}

  p-limit@3.1.0:
    resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
    engines: {node: &#39;&gt;=10&#39;}

  p-locate@5.0.0:
    resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
    engines: {node: &#39;&gt;=10&#39;}

  parent-module@1.0.1:
    resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
    engines: {node: &#39;&gt;=6&#39;}

  parse5@7.3.0:
    resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}

  parseurl@1.3.3:
    resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  path-exists@4.0.0:
    resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
    engines: {node: &#39;&gt;=8&#39;}

  path-key@3.1.1:
    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
    engines: {node: &#39;&gt;=8&#39;}

  path-to-regexp@8.4.2:
    resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==}

  pathe@2.0.3:
    resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}

  pg-cloudflare@1.4.1:
    resolution: {integrity: sha512-6PQbsFWZcp9EmJEwy5cGQ2La+AMWpP46lgbb8X+U/XsHIUweYDNCpeuKck5RxL2MdVFi7krbbEi5nX4Zh7JhrQ==}

  pg-connection-string@2.14.1:
    resolution: {integrity: sha512-qR3kGNPBLpCNtz0evbKA0Y/MRFXwSSdT+pTJvYp/bXTcReZbvX1kzF0IyTc1QnxqF7AZbOeBhNL8R5mYQZV/MA==}

  pg-int8@1.0.1:
    resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
    engines: {node: &#39;&gt;=4.0.0&#39;}

  pg-pool@3.14.0:
    resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==}
    peerDependencies:
      pg: &#39;&gt;=8.0&#39;

  pg-protocol@1.16.1:
    resolution: {integrity: sha512-p9VOFMiHB/ZbJATetbg+99PxssTVSQRnyuPSQ67mN1+1KBOjZaZ83ZQzltnxPhJwSsC3nwVjJ10DVJlerbFzLg==}

  pg-protocol@1.7.1:
    resolution: {integrity: sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==}

  pg-types@2.2.0:
    resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
    engines: {node: &#39;&gt;=4&#39;}

  pg@8.23.1:
    resolution: {integrity: sha512-aL96AHANtWjPLDOLqnhx+ngp9+UK7ETEU8VJrDCGvsSSi/mGLcWYsS6Herg7lmaBJe4uwrfqsa7gTEFaSizDoQ==}
    engines: {node: &#39;&gt;= 16.0.0&#39;}
    peerDependencies:
      pg-native: &#39;&gt;=3.0.1&#39;
    peerDependenciesMeta:
      pg-native:
        optional: true

  pgpass@1.0.5:
    resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==}

  picocolors@1.1.1:
    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}

  picomatch@4.0.7:
    resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
    engines: {node: &#39;&gt;=12&#39;}

  postcss@8.5.32:
    resolution: {integrity: sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==}
    engines: {node: ^10 || ^12 || &gt;=14}

  postgres-array@2.0.0:
    resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
    engines: {node: &#39;&gt;=4&#39;}

  postgres-bytea@1.0.0:
    resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  postgres-date@1.0.7:
    resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  postgres-interval@1.2.0:
    resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  postgres@3.4.9:
    resolution: {integrity: sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw==}
    engines: {node: &#39;&gt;=12&#39;}

  prelude-ls@1.2.1:
    resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
    engines: {node: &#39;&gt;= 0.8.0&#39;}

  prettier@3.9.10:
    resolution: {integrity: sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==}
    engines: {node: &#39;&gt;=14&#39;}
    hasBin: true

  proxy-addr@2.0.8:
    resolution: {integrity: sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==}
    engines: {node: &#39;&gt;= 0.10&#39;}

  punycode@2.3.1:
    resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
    engines: {node: &#39;&gt;=6&#39;}

  qs@6.17.1:
    resolution: {integrity: sha512-jd3COkaKVgGUW+ZHyEHCG9bH7RoaaiWuMgzsIBjUMVjLAaWGWpoUAVwljVvBHxRu/2qEHnadLGZrkutYUBPQJA==}
    engines: {node: &#39;&gt;=0.6&#39;}

  range-parser@1.2.1:
    resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
    engines: {node: &#39;&gt;= 0.6&#39;}

  raw-body@3.0.2:
    resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
    engines: {node: &#39;&gt;= 0.10&#39;}

  readdirp@5.1.1:
    resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==}
    engines: {node: &#39;&gt;= 20.19.0&#39;}

  require-directory@2.1.1:
    resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  resolve-from@4.0.0:
    resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
    engines: {node: &#39;&gt;=4&#39;}

  resolve-pkg-maps@1.0.0:
    resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}

  rolldown@1.2.16:
    resolution: {integrity: sha512-bWvlMpFKiTfDKfnK7FC2MPgPeWCf/Kpwsq49ApdW+FQaBZb6O6dZ4MAPbPUjp7hYQrw/RobqCzn64BRrQecGHw==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    hasBin: true

  router@2.2.0:
    resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
    engines: {node: &#39;&gt;= 18&#39;}

  rxjs@7.8.2:
    resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}

  safer-buffer@2.1.2:
    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}

  semver@6.3.1:
    resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
    hasBin: true

  semver@7.8.6:
    resolution: {integrity: sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw==}
    engines: {node: &#39;&gt;=10&#39;}
    hasBin: true

  send@1.2.1:
    resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
    engines: {node: &#39;&gt;= 18&#39;}

  seroval-plugins@1.6.12:
    resolution: {integrity: sha512-+reiwp/lYxiyctSrdvX7OQ1YLrcbWYgBiZrhSFL+V43b0/DGRLNVSDyZINbQe+tWplPOI2fw2dPrdv6hcc09kQ==}
    engines: {node: &#39;&gt;=10&#39;}
    peerDependencies:
      seroval: ^1.0

  seroval-plugins@1.7.8:
    resolution: {integrity: sha512-SCfCNzJ8CEz3spf1jNd6XE7mrtrKMchVRMGLFNUEXjY0wIUhKl1bXhkNG3/i0X8uLCWLOhUdMjcM286JZqnCbg==}
    engines: {node: &#39;&gt;=20&#39;}
    peerDependencies:
      seroval: ^1.0

  seroval@1.6.12:
    resolution: {integrity: sha512-CqbIVfk/7GL3ITwZI55lcPbpQbjHZ2DD5cUj4iH7E9YsCfHNJV1mx7yNp86Z84w5IpmkZZS/2s5vPOWmVWSdQg==}
    engines: {node: &#39;&gt;=10&#39;}

  seroval@1.7.10:
    resolution: {integrity: sha512-6Ya73+E5T7ToU9AJQSAvEt+WsLYfc7jM9C93KVcUGM14REPU9/eLn6Ho6fqBb+QkpjSQMPewWBzxI80WiNl7Mg==}
    engines: {node: &#39;&gt;=20&#39;}

  serve-static@2.2.1:
    resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==}
    engines: {node: &#39;&gt;= 18&#39;}

  setprototypeof@1.2.0:
    resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}

  shebang-command@2.0.0:
    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
    engines: {node: &#39;&gt;=8&#39;}

  shebang-regex@3.0.0:
    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
    engines: {node: &#39;&gt;=8&#39;}

  shell-quote@1.12.0:
    resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  side-channel-list@1.0.1:
    resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  side-channel-map@1.0.1:
    resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  side-channel-weakmap@1.0.2:
    resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  side-channel@1.1.1:
    resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==}
    engines: {node: &#39;&gt;= 0.4&#39;}

  solid-js@1.9.18:
    resolution: {integrity: sha512-CHGO5YFk6Y9m/1YSxVtKnXfrW7JD3Tmof8HmR4z6TmCPsS8efo8LnzIR8CQh3cUvffqYm6DWyBFfk8dQw1CNQQ==}

  solid-refresh@0.6.3:
    resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
    peerDependencies:
      solid-js: ^1.3

  source-map-js@1.2.1:
    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  source-map-js@1.2.2:
    resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  source-map-support@0.5.21:
    resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}

  source-map@0.6.1:
    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  source-map@0.7.6:
    resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
    engines: {node: &#39;&gt;= 12&#39;}

  split2@4.2.0:
    resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
    engines: {node: &#39;&gt;= 10.x&#39;}

  srvx@1.0.8:
    resolution: {integrity: sha512-ngFS/J6St4PJfHRHGjr78xkPPtbyXtdMOLNE4x/XZunEK3OhV7aGUWMHf9WTUEy6wm1U0W4okkd82ZFFWRVQTw==}
    engines: {node: &#39;&gt;=20.16.0&#39;}
    hasBin: true

  statuses@2.0.1:
    resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  statuses@2.0.2:
    resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  string-width@4.2.3:
    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
    engines: {node: &#39;&gt;=8&#39;}

  strip-ansi@6.0.1:
    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
    engines: {node: &#39;&gt;=8&#39;}

  strip-json-comments@3.1.1:
    resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
    engines: {node: &#39;&gt;=8&#39;}

  style-to-object@1.0.14:
    resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}

  supports-color@7.2.0:
    resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
    engines: {node: &#39;&gt;=8&#39;}

  supports-color@8.1.1:
    resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
    engines: {node: &#39;&gt;=10&#39;}

  tailwindcss@4.3.5:
    resolution: {integrity: sha512-FcQk9BuffmEHJP2G0XmB2SplU1aLTI7j07Kunk+U74Ny+XiWOtzXz9aujFZ/avntw1e2cOv/3PkgzflQ7gX2vQ==}

  tapable@2.3.3:
    resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
    engines: {node: &#39;&gt;=6&#39;}

  tinyglobby@0.2.17:
    resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
    engines: {node: &#39;&gt;=12.0.0&#39;}

  toidentifier@1.0.1:
    resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
    engines: {node: &#39;&gt;=0.6&#39;}

  trailbase@0.10.0:
    resolution: {integrity: sha512-IGIofZQWU3RRUZVXIAztWQ1vBabtbcuFFLZhTLj5gtZOIR2ml/levQgKaWNE+RhcDsFE/pD1gf+tfHVfrC9NGw==}

  trailbase@0.14.3:
    resolution: {integrity: sha512-nWc+DozEa0Jmv1WQJltUPUExfqYU/hIZEpyHeCpmpRz7uzqQh5fnbxBdE4PArz1tvyDV64NUbU0Dhh/+igXHXg==}

  tree-kill@1.2.2:
    resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
    hasBin: true

  ts-api-utils@2.5.0:
    resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
    engines: {node: &#39;&gt;=18.12&#39;}
    peerDependencies:
      typescript: &#39;&gt;=4.8.4&#39;

  tsconfck@3.1.6:
    resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
    engines: {node: ^18 || &gt;=20}
    deprecated: unmaintained
    hasBin: true
    peerDependencies:
      typescript: ^5.0.0
    peerDependenciesMeta:
      typescript:
        optional: true

  tslib@2.8.1:
    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}

  tsx@4.23.15:
    resolution: {integrity: sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==}
    engines: {node: &#39;&gt;=18.0.0&#39;}
    hasBin: true

  type-check@0.4.0:
    resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
    engines: {node: &#39;&gt;= 0.8.0&#39;}

  type-is@2.1.0:
    resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==}
    engines: {node: &#39;&gt;= 18&#39;}

  typescript@5.9.3:
    resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
    engines: {node: &#39;&gt;=14.17&#39;}
    hasBin: true

  ufo@1.6.4:
    resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==}

  undici-types@6.20.0:
    resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}

  undici-types@7.24.6:
    resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}

  unpipe@1.0.0:
    resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  unplugin@3.7.0:
    resolution: {integrity: sha512-GrM2uq3DQo3hvLU2FjeYhooJ8BY9N6j1Fbzgx7Pta3VVJevsD3VP4dPjZkZOS0mLvN8w9zzr9OlP+31bSMyuLw==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    peerDependencies:
      &#39;@farmfe/core&#39;: &#39;*&#39;
      &#39;@rsbuild/core&#39;: &#39;*&#39;
      &#39;@rspack/core&#39;: &#39;*&#39;
      bun-types-no-globals: &#39;*&#39;
      esbuild: &#39;*&#39;
      rolldown: &#39;*&#39;
      rollup: &#39;*&#39;
      unloader: &#39;*&#39;
      vite: &#39;*&#39;
      webpack: &#39;*&#39;
    peerDependenciesMeta:
      &#39;@farmfe/core&#39;:
        optional: true
      &#39;@rsbuild/core&#39;:
        optional: true
      &#39;@rspack/core&#39;:
        optional: true
      bun-types-no-globals:
        optional: true
      esbuild:
        optional: true
      rolldown:
        optional: true
      rollup:
        optional: true
      unloader:
        optional: true
      vite:
        optional: true
      webpack:
        optional: true

  update-browserslist-db@1.1.2:
    resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==}
    hasBin: true
    peerDependencies:
      browserslist: &#39;&gt;= 4.21.0&#39;

  uri-js@4.4.1:
    resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}

  uuid@13.0.2:
    resolution: {integrity: sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==}
    hasBin: true

  uuid@14.0.3:
    resolution: {integrity: sha512-Sc5u1VVln93y1Xnz4R+CunOZc7R9LUcTmhj7Rc7Eg3HVcf7rVn2FOoa812fe0W8p3jD7xeoGSYbfqCGGH2B6xw==}
    hasBin: true

  validate-html-nesting@1.2.4:
    resolution: {integrity: sha512-doQi7e8EJ2OWneSG1aZpJluS6A49aZM0+EICXWKm1i6WvqTLmq0tpUcImc4KTWG50mORO0C4YDBtOCSYvElftw==}

  vary@1.1.2:
    resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
    engines: {node: &#39;&gt;= 0.8&#39;}

  vite-plugin-solid@2.11.15:
    resolution: {integrity: sha512-twDNPdUDbhem+UOXVu5PyRJvwHFmxSJ3+NxbCgT9iFL42EmWS7lBfFskVM/HXLwd86fh1BgHKJBfGCWkTu2zEg==}
    peerDependencies:
      &#39;@testing-library/jest-dom&#39;: ^5.16.6 || ^5.17.0 || ^6.0.0 || ^7.0.0
      solid-js: ^1.7.2
      vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
    peerDependenciesMeta:
      &#39;@testing-library/jest-dom&#39;:
        optional: true

  vite-tsconfig-paths@6.1.1:
    resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==}
    peerDependencies:
      vite: &#39;*&#39;

  vite@8.3.6:
    resolution: {integrity: sha512-UI7dK29NnS54Fk+mmo7o+jI6U8Fp7hDl+X5Q1k45WH+d4dSlbLVUETGQ+hfkNgvLQGyoElPj837nZyv4MBc0VA==}
    engines: {node: ^20.19.0 || &gt;=22.12.0}
    hasBin: true
    peerDependencies:
      &#39;@types/node&#39;: ^20.19.0 || &gt;=22.12.0
      &#39;@vitejs/devtools&#39;: ^0.7.1 || ^0.8.0
      esbuild: ^0.27.0 || ^0.28.0
      jiti: &#39;&gt;=1.21.0&#39;
      less: ^4.0.0
      sass: ^1.70.0
      sass-embedded: ^1.70.0
      stylus: &#39;&gt;=0.54.8&#39;
      sugarss: ^5.0.0
      terser: ^5.16.0
      tsx: ^4.8.1
      yaml: ^2.4.2
    peerDependenciesMeta:
      &#39;@types/node&#39;:
        optional: true
      &#39;@vitejs/devtools&#39;:
        optional: true
      esbuild:
        optional: true
      jiti:
        optional: true
      less:
        optional: true
      sass:
        optional: true
      sass-embedded:
        optional: true
      stylus:
        optional: true
      sugarss:
        optional: true
      terser:
        optional: true
      tsx:
        optional: true
      yaml:
        optional: true

  vitefu@1.1.3:
    resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==}
    peerDependencies:
      vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
    peerDependenciesMeta:
      vite:
        optional: true

  webpack-virtual-modules@0.6.2:
    resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}

  which@2.0.2:
    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
    engines: {node: &#39;&gt;= 8&#39;}
    hasBin: true

  word-wrap@1.2.5:
    resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
    engines: {node: &#39;&gt;=0.10.0&#39;}

  wrap-ansi@7.0.0:
    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
    engines: {node: &#39;&gt;=10&#39;}

  wrappy@1.0.2:
    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}

  xmlbuilder2@4.0.3:
    resolution: {integrity: sha512-bx8Q1STctnNaaDymWnkfQLKofs0mGNN7rLLapJlGuV3VlvegD7Ls4ggMjE3aUSWItCCzU0PEv45lI87iSigiCA==}
    engines: {node: &#39;&gt;=20.0&#39;}

  xtend@4.0.2:
    resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
    engines: {node: &#39;&gt;=0.4&#39;}

  y18n@5.0.8:
    resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
    engines: {node: &#39;&gt;=10&#39;}

  yallist@3.1.1:
    resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}

  yargs-parser@21.1.1:
    resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
    engines: {node: &#39;&gt;=12&#39;}

  yargs@17.7.2:
    resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
    engines: {node: &#39;&gt;=12&#39;}

  yocto-queue@0.1.0:
    resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
    engines: {node: &#39;&gt;=10&#39;}

  zod@4.6.7:
    resolution: {integrity: sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==}

snapshots:

  &#39;@ampproject/remapping@2.3.0&#39;:
    dependencies:
      &#39;@jridgewell/gen-mapping&#39;: 0.3.8
      &#39;@jridgewell/trace-mapping&#39;: 0.3.25

  &#39;@babel/code-frame@7.26.2&#39;:
    dependencies:
      &#39;@babel/helper-validator-identifier&#39;: 7.25.9
      js-tokens: 4.0.0
      picocolors: 1.1.1

  &#39;@babel/code-frame@7.29.7&#39;:
    dependencies:
      &#39;@babel/helper-validator-identifier&#39;: 7.29.7
      js-tokens: 4.0.0
      picocolors: 1.1.1

  &#39;@babel/compat-data@7.26.8&#39;: {}

  &#39;@babel/compat-data@7.29.7&#39;: {}

  &#39;@babel/core@7.26.9&#39;:
    dependencies:
      &#39;@ampproject/remapping&#39;: 2.3.0
      &#39;@babel/code-frame&#39;: 7.26.2
      &#39;@babel/generator&#39;: 7.26.9
      &#39;@babel/helper-compilation-targets&#39;: 7.26.5
      &#39;@babel/helper-module-transforms&#39;: 7.26.0(@babel/core@7.26.9)
      &#39;@babel/helpers&#39;: 7.26.9
      &#39;@babel/parser&#39;: 7.26.9
      &#39;@babel/template&#39;: 7.26.9
      &#39;@babel/traverse&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9
      convert-source-map: 2.0.0
      debug: 4.4.0
      gensync: 1.0.0-beta.2
      json5: 2.2.3
      semver: 6.3.1
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/core@7.29.13&#39;:
    dependencies:
      &#39;@babel/code-frame&#39;: 7.29.7
      &#39;@babel/generator&#39;: 7.29.13
      &#39;@babel/helper-compilation-targets&#39;: 7.29.13
      &#39;@babel/helper-module-transforms&#39;: 7.29.13(@babel/core@7.29.13)
      &#39;@babel/helpers&#39;: 7.29.13
      &#39;@babel/parser&#39;: 7.29.13
      &#39;@babel/template&#39;: 7.29.7
      &#39;@babel/traverse&#39;: 7.29.13
      &#39;@babel/types&#39;: 7.29.11
      &#39;@jridgewell/remapping&#39;: 2.3.5
      convert-source-map: 2.0.0
      debug: 4.4.0
      gensync: 1.0.0-beta.2
      json5: 2.2.3
      semver: 6.3.1
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/generator@7.26.9&#39;:
    dependencies:
      &#39;@babel/parser&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9
      &#39;@jridgewell/gen-mapping&#39;: 0.3.8
      &#39;@jridgewell/trace-mapping&#39;: 0.3.25
      jsesc: 3.1.0

  &#39;@babel/generator@7.29.13&#39;:
    dependencies:
      &#39;@babel/parser&#39;: 7.29.13
      &#39;@babel/types&#39;: 7.29.11
      &#39;@jridgewell/gen-mapping&#39;: 0.3.13
      &#39;@jridgewell/trace-mapping&#39;: 0.3.31
      jsesc: 3.1.0

  &#39;@babel/helper-compilation-targets@7.26.5&#39;:
    dependencies:
      &#39;@babel/compat-data&#39;: 7.26.8
      &#39;@babel/helper-validator-option&#39;: 7.25.9
      browserslist: 4.24.4
      lru-cache: 5.1.1
      semver: 6.3.1

  &#39;@babel/helper-compilation-targets@7.29.13&#39;:
    dependencies:
      &#39;@babel/compat-data&#39;: 7.29.7
      &#39;@babel/helper-validator-option&#39;: 7.29.7
      browserslist: 4.24.4
      lru-cache: 5.1.1
      semver: 6.3.1

  &#39;@babel/helper-globals@7.29.7&#39;: {}

  &#39;@babel/helper-module-imports@7.18.6&#39;:
    dependencies:
      &#39;@babel/types&#39;: 7.26.9

  &#39;@babel/helper-module-imports@7.25.9&#39;:
    dependencies:
      &#39;@babel/traverse&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/helper-module-imports@7.29.7&#39;:
    dependencies:
      &#39;@babel/traverse&#39;: 7.29.13
      &#39;@babel/types&#39;: 7.29.11
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)&#39;:
    dependencies:
      &#39;@babel/core&#39;: 7.26.9
      &#39;@babel/helper-module-imports&#39;: 7.25.9
      &#39;@babel/helper-validator-identifier&#39;: 7.25.9
      &#39;@babel/traverse&#39;: 7.26.9
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/helper-module-transforms@7.29.13(@babel/core@7.29.13)&#39;:
    dependencies:
      &#39;@babel/core&#39;: 7.29.13
      &#39;@babel/helper-module-imports&#39;: 7.29.7
      &#39;@babel/helper-validator-identifier&#39;: 7.29.7
      &#39;@babel/traverse&#39;: 7.29.13
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/helper-plugin-utils@7.29.7&#39;: {}

  &#39;@babel/helper-string-parser@7.25.9&#39;: {}

  &#39;@babel/helper-string-parser@7.29.13&#39;: {}

  &#39;@babel/helper-validator-identifier@7.25.9&#39;: {}

  &#39;@babel/helper-validator-identifier@7.29.7&#39;: {}

  &#39;@babel/helper-validator-option@7.25.9&#39;: {}

  &#39;@babel/helper-validator-option@7.29.7&#39;: {}

  &#39;@babel/helpers@7.26.9&#39;:
    dependencies:
      &#39;@babel/template&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9

  &#39;@babel/helpers@7.29.13&#39;:
    dependencies:
      &#39;@babel/template&#39;: 7.29.7
      &#39;@babel/types&#39;: 7.29.11

  &#39;@babel/parser@7.26.9&#39;:
    dependencies:
      &#39;@babel/types&#39;: 7.26.9

  &#39;@babel/parser@7.29.13&#39;:
    dependencies:
      &#39;@babel/types&#39;: 7.29.11

  &#39;@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.26.9)&#39;:
    dependencies:
      &#39;@babel/core&#39;: 7.26.9
      &#39;@babel/helper-plugin-utils&#39;: 7.29.7

  &#39;@babel/template@7.26.9&#39;:
    dependencies:
      &#39;@babel/code-frame&#39;: 7.26.2
      &#39;@babel/parser&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9

  &#39;@babel/template@7.29.7&#39;:
    dependencies:
      &#39;@babel/code-frame&#39;: 7.29.7
      &#39;@babel/parser&#39;: 7.29.13
      &#39;@babel/types&#39;: 7.29.11

  &#39;@babel/traverse@7.26.9&#39;:
    dependencies:
      &#39;@babel/code-frame&#39;: 7.26.2
      &#39;@babel/generator&#39;: 7.26.9
      &#39;@babel/parser&#39;: 7.26.9
      &#39;@babel/template&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9
      debug: 4.4.0
      globals: 11.12.0
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/traverse@7.29.13&#39;:
    dependencies:
      &#39;@babel/code-frame&#39;: 7.29.7
      &#39;@babel/generator&#39;: 7.29.13
      &#39;@babel/helper-globals&#39;: 7.29.7
      &#39;@babel/parser&#39;: 7.29.13
      &#39;@babel/template&#39;: 7.29.7
      &#39;@babel/types&#39;: 7.29.11
      debug: 4.4.0
    transitivePeerDependencies:
      - supports-color

  &#39;@babel/types@7.26.9&#39;:
    dependencies:
      &#39;@babel/helper-string-parser&#39;: 7.25.9
      &#39;@babel/helper-validator-identifier&#39;: 7.25.9

  &#39;@babel/types@7.29.11&#39;:
    dependencies:
      &#39;@babel/helper-string-parser&#39;: 7.29.13
      &#39;@babel/helper-validator-identifier&#39;: 7.29.7

  &#39;@drizzle-team/brocli@0.10.2&#39;: {}

  &#39;@electric-sql/client@1.5.28&#39;:
    dependencies:
      &#39;@microsoft/fetch-event-source&#39;: 2.0.1
    optionalDependencies:
      &#39;@rollup/rollup-darwin-arm64&#39;: 4.34.8

  &#39;@esbuild-kit/core-utils@3.3.2&#39;:
    dependencies:
      esbuild: 0.18.20
      source-map-support: 0.5.21

  &#39;@esbuild-kit/esm-loader@2.6.5&#39;:
    dependencies:
      &#39;@esbuild-kit/core-utils&#39;: 3.3.2
      get-tsconfig: 4.10.0

  &#39;@esbuild/aix-ppc64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/aix-ppc64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/android-arm64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/android-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/android-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/android-arm@0.18.20&#39;:
    optional: true

  &#39;@esbuild/android-arm@0.25.12&#39;:
    optional: true

  &#39;@esbuild/android-arm@0.28.2&#39;:
    optional: true

  &#39;@esbuild/android-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/android-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/android-x64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/darwin-arm64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/darwin-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/darwin-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/darwin-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/darwin-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/darwin-x64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/freebsd-arm64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/freebsd-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/freebsd-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/freebsd-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/freebsd-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/freebsd-x64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-arm64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-arm@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-arm@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-arm@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-ia32@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-ia32@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-ia32@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-loong64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-loong64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-loong64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-mips64el@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-mips64el@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-mips64el@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-ppc64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-ppc64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-ppc64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-riscv64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-riscv64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-riscv64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-s390x@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-s390x@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-s390x@0.28.2&#39;:
    optional: true

  &#39;@esbuild/linux-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/linux-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/linux-x64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/netbsd-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/netbsd-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/netbsd-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/netbsd-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/netbsd-x64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/openbsd-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/openbsd-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/openbsd-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/openbsd-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/openbsd-x64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/openharmony-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/openharmony-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/sunos-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/sunos-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/sunos-x64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/win32-arm64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/win32-arm64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/win32-arm64@0.28.2&#39;:
    optional: true

  &#39;@esbuild/win32-ia32@0.18.20&#39;:
    optional: true

  &#39;@esbuild/win32-ia32@0.25.12&#39;:
    optional: true

  &#39;@esbuild/win32-ia32@0.28.2&#39;:
    optional: true

  &#39;@esbuild/win32-x64@0.18.20&#39;:
    optional: true

  &#39;@esbuild/win32-x64@0.25.12&#39;:
    optional: true

  &#39;@esbuild/win32-x64@0.28.2&#39;:
    optional: true

  &#39;@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.7.0))&#39;:
    dependencies:
      eslint: 9.39.5(jiti@2.7.0)
      eslint-visitor-keys: 3.4.3

  &#39;@eslint-community/regexpp@4.12.1&#39;: {}

  &#39;@eslint-community/regexpp@4.12.2&#39;: {}

  &#39;@eslint/config-array@0.21.2&#39;:
    dependencies:
      &#39;@eslint/object-schema&#39;: 2.1.7
      debug: 4.4.0
      minimatch: 3.1.5
    transitivePeerDependencies:
      - supports-color

  &#39;@eslint/config-helpers@0.4.2&#39;:
    dependencies:
      &#39;@eslint/core&#39;: 0.17.0

  &#39;@eslint/core@0.17.0&#39;:
    dependencies:
      &#39;@types/json-schema&#39;: 7.0.15

  &#39;@eslint/eslintrc@3.3.7&#39;:
    dependencies:
      ajv: 6.15.0
      debug: 4.4.0
      espree: 10.3.0
      globals: 14.0.0
      ignore: 5.3.2
      import-fresh: 3.3.1
      js-yaml: 4.3.2
      minimatch: 3.1.5
      strip-json-comments: 3.1.1
    transitivePeerDependencies:
      - supports-color

  &#39;@eslint/js@9.39.5&#39;: {}

  &#39;@eslint/object-schema@2.1.7&#39;: {}

  &#39;@eslint/plugin-kit@0.4.1&#39;:
    dependencies:
      &#39;@eslint/core&#39;: 0.17.0
      levn: 0.4.1

  &#39;@humanfs/core@0.19.1&#39;: {}

  &#39;@humanfs/node@0.16.6&#39;:
    dependencies:
      &#39;@humanfs/core&#39;: 0.19.1
      &#39;@humanwhocodes/retry&#39;: 0.3.1

  &#39;@humanwhocodes/module-importer@1.0.1&#39;: {}

  &#39;@humanwhocodes/retry@0.3.1&#39;: {}

  &#39;@humanwhocodes/retry@0.4.2&#39;: {}

  &#39;@jridgewell/gen-mapping@0.3.13&#39;:
    dependencies:
      &#39;@jridgewell/sourcemap-codec&#39;: 1.5.0
      &#39;@jridgewell/trace-mapping&#39;: 0.3.25

  &#39;@jridgewell/gen-mapping@0.3.8&#39;:
    dependencies:
      &#39;@jridgewell/set-array&#39;: 1.2.1
      &#39;@jridgewell/sourcemap-codec&#39;: 1.5.0
      &#39;@jridgewell/trace-mapping&#39;: 0.3.25

  &#39;@jridgewell/remapping@2.3.5&#39;:
    dependencies:
      &#39;@jridgewell/gen-mapping&#39;: 0.3.8
      &#39;@jridgewell/trace-mapping&#39;: 0.3.25

  &#39;@jridgewell/resolve-uri@3.1.2&#39;: {}

  &#39;@jridgewell/set-array@1.2.1&#39;: {}

  &#39;@jridgewell/sourcemap-codec@1.5.0&#39;: {}

  &#39;@jridgewell/sourcemap-codec@1.6.0&#39;: {}

  &#39;@jridgewell/trace-mapping@0.3.25&#39;:
    dependencies:
      &#39;@jridgewell/resolve-uri&#39;: 3.1.2
      &#39;@jridgewell/sourcemap-codec&#39;: 1.5.0

  &#39;@jridgewell/trace-mapping@0.3.31&#39;:
    dependencies:
      &#39;@jridgewell/resolve-uri&#39;: 3.1.2
      &#39;@jridgewell/sourcemap-codec&#39;: 1.5.0

  &#39;@microsoft/fetch-event-source@2.0.1&#39;: {}

  &#39;@oozcitak/dom@2.0.2&#39;:
    dependencies:
      &#39;@oozcitak/infra&#39;: 2.0.2
      &#39;@oozcitak/url&#39;: 3.0.0
      &#39;@oozcitak/util&#39;: 10.0.0

  &#39;@oozcitak/infra@2.0.2&#39;:
    dependencies:
      &#39;@oozcitak/util&#39;: 10.0.0

  &#39;@oozcitak/url@3.0.0&#39;:
    dependencies:
      &#39;@oozcitak/infra&#39;: 2.0.2
      &#39;@oozcitak/util&#39;: 10.0.0

  &#39;@oozcitak/util@10.0.0&#39;: {}

  &#39;@oxc-project/types@0.156.0&#39;: {}

  &#39;@rolldown/binding-android-arm-eabi@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-android-arm64@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-darwin-arm64@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-darwin-x64@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-freebsd-x64@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-linux-arm-gnueabihf@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-linux-arm64-gnu@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-linux-arm64-musl@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-linux-ppc64-gnu@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-linux-s390x-gnu@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-linux-x64-gnu@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-linux-x64-musl@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-openharmony-arm64@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-win32-arm64-msvc@1.2.16&#39;:
    optional: true

  &#39;@rolldown/binding-win32-x64-msvc@1.2.16&#39;:
    optional: true

  &#39;@rolldown/pluginutils@1.0.1&#39;: {}

  &#39;@rollup/rollup-darwin-arm64@4.34.8&#39;:
    optional: true

  &#39;@solid-primitives/map@0.7.4(solid-js@1.9.18)&#39;:
    dependencies:
      &#39;@solid-primitives/trigger&#39;: 1.2.4(solid-js@1.9.18)
      solid-js: 1.9.18

  &#39;@solid-primitives/refs@1.1.4(solid-js@1.9.18)&#39;:
    dependencies:
      &#39;@solid-primitives/utils&#39;: 6.4.1(solid-js@1.9.18)
      solid-js: 1.9.18

  &#39;@solid-primitives/trigger@1.2.4(solid-js@1.9.18)&#39;:
    dependencies:
      &#39;@solid-primitives/utils&#39;: 6.4.1(solid-js@1.9.18)
      solid-js: 1.9.18

  &#39;@solid-primitives/utils@6.4.1(solid-js@1.9.18)&#39;:
    dependencies:
      solid-js: 1.9.18

  &#39;@solidjs/meta@0.29.8(solid-js@1.9.18)&#39;:
    dependencies:
      solid-js: 1.9.18

  &#39;@standard-schema/spec@1.1.0&#39;: {}

  &#39;@tailwindcss/node@4.3.5&#39;:
    dependencies:
      &#39;@jridgewell/remapping&#39;: 2.3.5
      enhanced-resolve: 5.26.1
      jiti: 2.7.0
      lightningcss: 1.33.0
      magic-string: 1.4.5
      source-map-js: 1.2.1
      tailwindcss: 4.3.5

  &#39;@tailwindcss/oxide-android-arm64@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-darwin-arm64@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-darwin-x64@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-freebsd-x64@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-linux-arm-gnueabihf@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-linux-arm64-gnu@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-linux-arm64-musl@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-linux-x64-gnu@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-linux-x64-musl@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-wasm32-wasi@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-win32-arm64-msvc@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide-win32-x64-msvc@4.3.5&#39;:
    optional: true

  &#39;@tailwindcss/oxide@4.3.5&#39;:
    optionalDependencies:
      &#39;@tailwindcss/oxide-android-arm64&#39;: 4.3.5
      &#39;@tailwindcss/oxide-darwin-arm64&#39;: 4.3.5
      &#39;@tailwindcss/oxide-darwin-x64&#39;: 4.3.5
      &#39;@tailwindcss/oxide-freebsd-x64&#39;: 4.3.5
      &#39;@tailwindcss/oxide-linux-arm-gnueabihf&#39;: 4.3.5
      &#39;@tailwindcss/oxide-linux-arm64-gnu&#39;: 4.3.5
      &#39;@tailwindcss/oxide-linux-arm64-musl&#39;: 4.3.5
      &#39;@tailwindcss/oxide-linux-x64-gnu&#39;: 4.3.5
      &#39;@tailwindcss/oxide-linux-x64-musl&#39;: 4.3.5
      &#39;@tailwindcss/oxide-wasm32-wasi&#39;: 4.3.5
      &#39;@tailwindcss/oxide-win32-arm64-msvc&#39;: 4.3.5
      &#39;@tailwindcss/oxide-win32-x64-msvc&#39;: 4.3.5

  &#39;@tailwindcss/vite@4.3.5(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))&#39;:
    dependencies:
      &#39;@tailwindcss/node&#39;: 4.3.5
      &#39;@tailwindcss/oxide&#39;: 4.3.5
      tailwindcss: 4.3.5
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)

  &#39;@tanstack/db-ivm@1.0.0-rc.1.2(typescript@5.9.3)&#39;:
    dependencies:
      fractional-indexing: 3.4.0
      typescript: 5.9.3

  &#39;@tanstack/db@1.0.0-rc.1.4(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@standard-schema/spec&#39;: 1.1.0
      &#39;@tanstack/db-ivm&#39;: 1.0.0-rc.1.2(typescript@5.9.3)
      &#39;@tanstack/pacer-lite&#39;: 0.2.2
      typescript: 5.9.3

  &#39;@tanstack/electric-db-collection@1.0.0-rc.1.4(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@electric-sql/client&#39;: 1.5.28
      &#39;@standard-schema/spec&#39;: 1.1.0
      &#39;@tanstack/db&#39;: 1.0.0-rc.1.4(typescript@5.9.3)
      debug: 4.4.3
    transitivePeerDependencies:
      - supports-color
      - typescript

  &#39;@tanstack/history@1.162.5&#39;: {}

  &#39;@tanstack/pacer-lite@0.2.2&#39;: {}

  &#39;@tanstack/query-core@5.107.1&#39;: {}

  &#39;@tanstack/query-db-collection@1.5.1(@tanstack/db@1.0.0-rc.1.4(typescript@5.9.3))(@tanstack/query-core@5.107.1)(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@standard-schema/spec&#39;: 1.1.0
      &#39;@tanstack/db&#39;: 1.0.0-rc.1.4(typescript@5.9.3)
      &#39;@tanstack/query-core&#39;: 5.107.1
      typescript: 5.9.3

  &#39;@tanstack/router-core@1.171.39&#39;:
    dependencies:
      &#39;@tanstack/history&#39;: 1.162.5
      cookie-es: 3.1.1
      seroval: 1.7.10
      seroval-plugins: 1.7.8(seroval@1.7.10)

  &#39;@tanstack/router-generator@1.168.0&#39;:
    dependencies:
      &#39;@babel/types&#39;: 7.29.11
      &#39;@tanstack/router-core&#39;: 1.171.39
      &#39;@tanstack/router-utils&#39;: 1.163.0
      &#39;@tanstack/virtual-file-routes&#39;: 1.162.0
      jiti: 2.7.0
      magic-string: 0.30.21
      prettier: 3.9.10
      zod: 4.6.7
    transitivePeerDependencies:
      - supports-color

  &#39;@tanstack/router-plugin@1.169.0(esbuild@0.28.2)(rolldown@1.2.16)(vite-plugin-solid@2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))&#39;:
    dependencies:
      &#39;@babel/core&#39;: 7.29.13
      &#39;@babel/template&#39;: 7.29.7
      &#39;@babel/types&#39;: 7.29.11
      &#39;@tanstack/router-core&#39;: 1.171.39
      &#39;@tanstack/router-generator&#39;: 1.168.0
      &#39;@tanstack/router-utils&#39;: 1.163.0
      chokidar: 5.0.0
      unplugin: 3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
      zod: 4.6.7
    optionalDependencies:
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)
      vite-plugin-solid: 2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
    transitivePeerDependencies:
      - &#39;@farmfe/core&#39;
      - &#39;@rspack/core&#39;
      - bun-types-no-globals
      - esbuild
      - rolldown
      - rollup
      - supports-color
      - unloader

  &#39;@tanstack/router-utils@1.163.0&#39;:
    dependencies:
      &#39;@babel/generator&#39;: 7.29.13
      &#39;@babel/parser&#39;: 7.29.13
      &#39;@babel/types&#39;: 7.29.11
      ansis: 4.5.0
      babel-dead-code-elimination: 1.0.12
      diff: 9.0.0
      pathe: 2.0.3
      tinyglobby: 0.2.17
    transitivePeerDependencies:
      - supports-color

  &#39;@tanstack/solid-db@1.0.0-rc.1.4(solid-js@1.9.18)(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@solid-primitives/map&#39;: 0.7.4(solid-js@1.9.18)
      &#39;@tanstack/db&#39;: 1.0.0-rc.1.4(typescript@5.9.3)
      solid-js: 1.9.18
    transitivePeerDependencies:
      - typescript

  &#39;@tanstack/solid-router@1.170.43(solid-js@1.9.18)&#39;:
    dependencies:
      &#39;@solid-primitives/refs&#39;: 1.1.4(solid-js@1.9.18)
      &#39;@solidjs/meta&#39;: 0.29.8(solid-js@1.9.18)
      &#39;@tanstack/history&#39;: 1.162.5
      &#39;@tanstack/router-core&#39;: 1.171.39
      isbot: 5.2.2
      solid-js: 1.9.18

  &#39;@tanstack/solid-start-client@1.168.42(solid-js@1.9.18)&#39;:
    dependencies:
      &#39;@tanstack/router-core&#39;: 1.171.39
      &#39;@tanstack/solid-router&#39;: 1.170.43(solid-js@1.9.18)
      &#39;@tanstack/start-client-core&#39;: 1.170.39
      solid-js: 1.9.18

  &#39;@tanstack/solid-start-server@1.167.50(solid-js@1.9.18)&#39;:
    dependencies:
      &#39;@tanstack/router-core&#39;: 1.171.39
      &#39;@tanstack/solid-router&#39;: 1.170.43(solid-js@1.9.18)
      &#39;@tanstack/start-server-core&#39;: 1.169.45
      solid-js: 1.9.18

  &#39;@tanstack/solid-start@1.169.5(esbuild@0.28.2)(rolldown@1.2.16)(solid-js@1.9.18)(vite-plugin-solid@2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))&#39;:
    dependencies:
      &#39;@tanstack/solid-router&#39;: 1.170.43(solid-js@1.9.18)
      &#39;@tanstack/solid-start-client&#39;: 1.168.42(solid-js@1.9.18)
      &#39;@tanstack/solid-start-server&#39;: 1.167.50(solid-js@1.9.18)
      &#39;@tanstack/start-client-core&#39;: 1.170.39
      &#39;@tanstack/start-plugin-core&#39;: 1.171.56(esbuild@0.28.2)(rolldown@1.2.16)(vite-plugin-solid@2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
      &#39;@tanstack/start-server-core&#39;: 1.169.45
      pathe: 2.0.3
      solid-js: 1.9.18
    optionalDependencies:
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)
    transitivePeerDependencies:
      - &#39;@farmfe/core&#39;
      - &#39;@rspack/core&#39;
      - &#39;@tanstack/react-router&#39;
      - bun-types-no-globals
      - esbuild
      - rolldown
      - rollup
      - supports-color
      - unloader
      - vite-plugin-solid
      - webpack

  &#39;@tanstack/start-client-core@1.170.39&#39;:
    dependencies:
      &#39;@tanstack/router-core&#39;: 1.171.39
      &#39;@tanstack/start-fn-stubs&#39;: 1.162.0
      &#39;@tanstack/start-storage-context&#39;: 1.167.41
      seroval: 1.7.10

  &#39;@tanstack/start-fn-stubs@1.162.0&#39;: {}

  &#39;@tanstack/start-plugin-core@1.171.56(esbuild@0.28.2)(rolldown@1.2.16)(vite-plugin-solid@2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))&#39;:
    dependencies:
      &#39;@babel/code-frame&#39;: 7.29.7
      &#39;@babel/core&#39;: 7.29.13
      &#39;@babel/types&#39;: 7.29.11
      &#39;@jridgewell/remapping&#39;: 2.3.5
      &#39;@tanstack/router-core&#39;: 1.171.39
      &#39;@tanstack/router-generator&#39;: 1.168.0
      &#39;@tanstack/router-plugin&#39;: 1.169.0(esbuild@0.28.2)(rolldown@1.2.16)(vite-plugin-solid@2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
      &#39;@tanstack/router-utils&#39;: 1.163.0
      &#39;@tanstack/start-server-core&#39;: 1.169.45
      exsolve: 1.2.0
      lightningcss: 1.33.0
      pathe: 2.0.3
      picomatch: 4.0.7
      seroval: 1.7.10
      source-map: 0.7.6
      srvx: 1.0.8
      tinyglobby: 0.2.17
      ufo: 1.6.4
      vitefu: 1.1.3(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
      xmlbuilder2: 4.0.3
      zod: 4.6.7
    optionalDependencies:
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)
    transitivePeerDependencies:
      - &#39;@farmfe/core&#39;
      - &#39;@rspack/core&#39;
      - &#39;@tanstack/react-router&#39;
      - bun-types-no-globals
      - esbuild
      - rolldown
      - rollup
      - supports-color
      - unloader
      - vite-plugin-solid
      - webpack

  &#39;@tanstack/start-server-core@1.169.45&#39;:
    dependencies:
      &#39;@tanstack/history&#39;: 1.162.5
      &#39;@tanstack/router-core&#39;: 1.171.39
      &#39;@tanstack/start-client-core&#39;: 1.170.39
      &#39;@tanstack/start-storage-context&#39;: 1.167.41
      cookie-es: 3.1.1
      fetchdts: 0.2.0
      seroval: 1.7.10

  &#39;@tanstack/start-storage-context@1.167.41&#39;:
    dependencies:
      &#39;@tanstack/router-core&#39;: 1.171.39

  &#39;@tanstack/store@0.9.3&#39;: {}

  &#39;@tanstack/trailbase-db-collection@1.0.0-rc.1.4(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@standard-schema/spec&#39;: 1.1.0
      &#39;@tanstack/db&#39;: 1.0.0-rc.1.4(typescript@5.9.3)
      &#39;@tanstack/store&#39;: 0.9.3
      debug: 4.4.3
      trailbase: 0.10.0
      typescript: 5.9.3
    transitivePeerDependencies:
      - supports-color

  &#39;@tanstack/virtual-file-routes@1.162.0&#39;: {}

  &#39;@types/babel__core@7.20.5&#39;:
    dependencies:
      &#39;@babel/parser&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9
      &#39;@types/babel__generator&#39;: 7.6.8
      &#39;@types/babel__template&#39;: 7.4.4
      &#39;@types/babel__traverse&#39;: 7.20.6

  &#39;@types/babel__generator@7.6.8&#39;:
    dependencies:
      &#39;@babel/types&#39;: 7.26.9

  &#39;@types/babel__template@7.4.4&#39;:
    dependencies:
      &#39;@babel/parser&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9

  &#39;@types/babel__traverse@7.20.6&#39;:
    dependencies:
      &#39;@babel/types&#39;: 7.26.9

  &#39;@types/body-parser@1.19.5&#39;:
    dependencies:
      &#39;@types/connect&#39;: 3.4.38
      &#39;@types/node&#39;: 22.13.5

  &#39;@types/connect@3.4.38&#39;:
    dependencies:
      &#39;@types/node&#39;: 22.13.5

  &#39;@types/cors@2.8.19&#39;:
    dependencies:
      &#39;@types/node&#39;: 22.13.5

  &#39;@types/estree@1.0.6&#39;: {}

  &#39;@types/express-serve-static-core@5.1.3&#39;:
    dependencies:
      &#39;@types/node&#39;: 22.13.5
      &#39;@types/qs&#39;: 6.9.18
      &#39;@types/range-parser&#39;: 1.2.7
      &#39;@types/send&#39;: 0.17.4

  &#39;@types/express@5.0.6&#39;:
    dependencies:
      &#39;@types/body-parser&#39;: 1.19.5
      &#39;@types/express-serve-static-core&#39;: 5.1.3
      &#39;@types/serve-static&#39;: 2.2.0

  &#39;@types/geojson@7946.0.16&#39;: {}

  &#39;@types/http-errors@2.0.4&#39;: {}

  &#39;@types/json-schema@7.0.15&#39;: {}

  &#39;@types/mime@1.3.5&#39;: {}

  &#39;@types/node@22.13.5&#39;:
    dependencies:
      undici-types: 6.20.0

  &#39;@types/node@25.9.9&#39;:
    dependencies:
      undici-types: 7.24.6

  &#39;@types/pg@8.23.1&#39;:
    dependencies:
      &#39;@types/node&#39;: 22.13.5
      pg-protocol: 1.7.1
      pg-types: 2.2.0

  &#39;@types/qs@6.9.18&#39;: {}

  &#39;@types/range-parser@1.2.7&#39;: {}

  &#39;@types/send@0.17.4&#39;:
    dependencies:
      &#39;@types/mime&#39;: 1.3.5
      &#39;@types/node&#39;: 22.13.5

  &#39;@types/serve-static@2.2.0&#39;:
    dependencies:
      &#39;@types/http-errors&#39;: 2.0.4
      &#39;@types/node&#39;: 22.13.5

  &#39;@typescript-eslint/eslint-plugin@8.72.1(@typescript-eslint/parser@8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@eslint-community/regexpp&#39;: 4.12.2
      &#39;@typescript-eslint/parser&#39;: 8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)
      &#39;@typescript-eslint/scope-manager&#39;: 8.72.1
      &#39;@typescript-eslint/type-utils&#39;: 8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)
      &#39;@typescript-eslint/utils&#39;: 8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)
      &#39;@typescript-eslint/visitor-keys&#39;: 8.72.1
      eslint: 9.39.5(jiti@2.7.0)
      ignore: 7.0.14
      natural-compare: 1.4.0
      ts-api-utils: 2.5.0(typescript@5.9.3)
      typescript: 5.9.3
    transitivePeerDependencies:
      - supports-color

  &#39;@typescript-eslint/parser@8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@typescript-eslint/scope-manager&#39;: 8.72.1
      &#39;@typescript-eslint/types&#39;: 8.72.1
      &#39;@typescript-eslint/typescript-estree&#39;: 8.72.1(typescript@5.9.3)
      &#39;@typescript-eslint/visitor-keys&#39;: 8.72.1
      debug: 4.4.3
      eslint: 9.39.5(jiti@2.7.0)
      typescript: 5.9.3
    transitivePeerDependencies:
      - supports-color

  &#39;@typescript-eslint/project-service@8.72.1(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@typescript-eslint/tsconfig-utils&#39;: 8.72.1(typescript@5.9.3)
      &#39;@typescript-eslint/types&#39;: 8.72.1
      debug: 4.4.3
      typescript: 5.9.3
    transitivePeerDependencies:
      - supports-color

  &#39;@typescript-eslint/scope-manager@8.72.1&#39;:
    dependencies:
      &#39;@typescript-eslint/types&#39;: 8.72.1
      &#39;@typescript-eslint/visitor-keys&#39;: 8.72.1

  &#39;@typescript-eslint/tsconfig-utils@8.72.1(typescript@5.9.3)&#39;:
    dependencies:
      typescript: 5.9.3

  &#39;@typescript-eslint/type-utils@8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@typescript-eslint/types&#39;: 8.72.1
      &#39;@typescript-eslint/typescript-estree&#39;: 8.72.1(typescript@5.9.3)
      &#39;@typescript-eslint/utils&#39;: 8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)
      debug: 4.4.3
      eslint: 9.39.5(jiti@2.7.0)
      ts-api-utils: 2.5.0(typescript@5.9.3)
      typescript: 5.9.3
    transitivePeerDependencies:
      - supports-color

  &#39;@typescript-eslint/types@8.72.1&#39;: {}

  &#39;@typescript-eslint/typescript-estree@8.72.1(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@typescript-eslint/project-service&#39;: 8.72.1(typescript@5.9.3)
      &#39;@typescript-eslint/tsconfig-utils&#39;: 8.72.1(typescript@5.9.3)
      &#39;@typescript-eslint/types&#39;: 8.72.1
      &#39;@typescript-eslint/visitor-keys&#39;: 8.72.1
      debug: 4.4.3
      minimatch: 10.2.6
      semver: 7.8.6
      tinyglobby: 0.2.17
      ts-api-utils: 2.5.0(typescript@5.9.3)
      typescript: 5.9.3
    transitivePeerDependencies:
      - supports-color

  &#39;@typescript-eslint/utils@8.72.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)&#39;:
    dependencies:
      &#39;@eslint-community/eslint-utils&#39;: 4.10.1(eslint@9.39.5(jiti@2.7.0))
      &#39;@typescript-eslint/scope-manager&#39;: 8.72.1
      &#39;@typescript-eslint/types&#39;: 8.72.1
      &#39;@typescript-eslint/typescript-estree&#39;: 8.72.1(typescript@5.9.3)
      eslint: 9.39.5(jiti@2.7.0)
      typescript: 5.9.3
    transitivePeerDependencies:
      - supports-color

  &#39;@typescript-eslint/visitor-keys@8.72.1&#39;:
    dependencies:
      &#39;@typescript-eslint/types&#39;: 8.72.1
      eslint-visitor-keys: 5.0.1

  &#39;@ungap/raw-json@0.4.4&#39;: {}

  accepts@2.0.0:
    dependencies:
      mime-types: 3.0.2
      negotiator: 1.1.0

  acorn-jsx@5.3.2(acorn@8.14.0):
    dependencies:
      acorn: 8.14.0

  acorn-jsx@5.3.2(acorn@8.19.0):
    dependencies:
      acorn: 8.19.0

  acorn@8.14.0: {}

  acorn@8.19.0: {}

  ajv@6.15.0:
    dependencies:
      fast-deep-equal: 3.1.3
      fast-json-stable-stringify: 2.1.0
      json-schema-traverse: 0.4.1
      uri-js: 4.4.1

  ansi-regex@5.0.1: {}

  ansi-styles@4.3.0:
    dependencies:
      color-convert: 2.0.1

  ansis@4.5.0: {}

  argparse@2.0.1: {}

  babel-dead-code-elimination@1.0.12:
    dependencies:
      &#39;@babel/core&#39;: 7.26.9
      &#39;@babel/parser&#39;: 7.26.9
      &#39;@babel/traverse&#39;: 7.26.9
      &#39;@babel/types&#39;: 7.26.9
    transitivePeerDependencies:
      - supports-color

  babel-plugin-jsx-dom-expressions@0.40.11(@babel/core@7.26.9):
    dependencies:
      &#39;@babel/core&#39;: 7.26.9
      &#39;@babel/helper-module-imports&#39;: 7.18.6
      &#39;@babel/plugin-syntax-jsx&#39;: 7.29.7(@babel/core@7.26.9)
      &#39;@babel/types&#39;: 7.26.9
      html-entities: 2.3.3
      parse5: 7.3.0

  babel-preset-solid@1.9.16(@babel/core@7.26.9)(solid-js@1.9.18):
    dependencies:
      &#39;@babel/core&#39;: 7.26.9
      babel-plugin-jsx-dom-expressions: 0.40.11(@babel/core@7.26.9)
    optionalDependencies:
      solid-js: 1.9.18

  balanced-match@1.0.2: {}

  balanced-match@4.0.4: {}

  body-parser@2.4.0:
    dependencies:
      bytes: 3.1.2
      content-type: 2.1.0
      debug: 4.4.3
      http-errors: 2.0.1
      iconv-lite: 0.7.3
      on-finished: 2.4.1
      qs: 6.17.1
      raw-body: 3.0.2
      type-is: 2.1.0
    transitivePeerDependencies:
      - supports-color

  brace-expansion@1.1.11:
    dependencies:
      balanced-match: 1.0.2
      concat-map: 0.0.1

  brace-expansion@5.0.12:
    dependencies:
      balanced-match: 4.0.4

  browserslist@4.24.4:
    dependencies:
      caniuse-lite: 1.0.30001700
      electron-to-chromium: 1.5.104
      node-releases: 2.0.19
      update-browserslist-db: 1.1.2(browserslist@4.24.4)

  buffer-from@1.1.2: {}

  bytes@3.1.2: {}

  call-bind-apply-helpers@1.0.2:
    dependencies:
      es-errors: 1.3.0
      function-bind: 1.1.2

  call-bound@1.0.3:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      get-intrinsic: 1.3.0

  callsites@3.1.0: {}

  caniuse-lite@1.0.30001700: {}

  chalk@4.1.2:
    dependencies:
      ansi-styles: 4.3.0
      supports-color: 7.2.0

  chokidar@5.0.0:
    dependencies:
      readdirp: 5.1.1

  cliui@8.0.1:
    dependencies:
      string-width: 4.2.3
      strip-ansi: 6.0.1
      wrap-ansi: 7.0.0

  color-convert@2.0.1:
    dependencies:
      color-name: 1.1.4

  color-name@1.1.4: {}

  concat-map@0.0.1: {}

  concurrently@9.2.5:
    dependencies:
      chalk: 4.1.2
      rxjs: 7.8.2
      shell-quote: 1.12.0
      supports-color: 8.1.1
      tree-kill: 1.2.2
      yargs: 17.7.2

  content-disposition@2.0.1: {}

  content-type@2.1.0: {}

  convert-source-map@2.0.0: {}

  cookie-es@3.1.1: {}

  cookie-signature@1.2.2: {}

  cookie@0.7.1: {}

  cors@2.8.6:
    dependencies:
      object-assign: 4.1.1
      vary: 1.1.2

  cross-spawn@7.0.6:
    dependencies:
      path-key: 3.1.1
      shebang-command: 2.0.0
      which: 2.0.2

  csstype@3.1.3: {}

  debug@4.4.0:
    dependencies:
      ms: 2.1.3

  debug@4.4.3:
    dependencies:
      ms: 2.1.3

  deep-is@0.1.4: {}

  depd@2.0.0: {}

  detect-libc@2.1.2: {}

  diff@9.0.0: {}

  dotenv@17.4.2: {}

  drizzle-kit@0.31.11:
    dependencies:
      &#39;@drizzle-team/brocli&#39;: 0.10.2
      &#39;@esbuild-kit/esm-loader&#39;: 2.6.5
      esbuild: 0.25.12
      tsx: 4.23.15

  drizzle-orm@0.45.4(@types/pg@8.23.1)(pg@8.23.1)(postgres@3.4.9):
    optionalDependencies:
      &#39;@types/pg&#39;: 8.23.1
      pg: 8.23.1
      postgres: 3.4.9

  drizzle-zod@0.8.3(drizzle-orm@0.45.4(@types/pg@8.23.1)(pg@8.23.1)(postgres@3.4.9))(zod@4.6.7):
    dependencies:
      drizzle-orm: 0.45.4(@types/pg@8.23.1)(pg@8.23.1)(postgres@3.4.9)
      zod: 4.6.7

  dunder-proto@1.0.1:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      es-errors: 1.3.0
      gopd: 1.2.0

  ee-first@1.1.1: {}

  electron-to-chromium@1.5.104: {}

  emoji-regex@8.0.0: {}

  encodeurl@2.0.0: {}

  enhanced-resolve@5.26.1:
    dependencies:
      graceful-fs: 4.2.11
      tapable: 2.3.3

  entities@6.0.1: {}

  es-define-property@1.0.1: {}

  es-errors@1.3.0: {}

  es-object-atoms@1.1.1:
    dependencies:
      es-errors: 1.3.0

  esbuild@0.18.20:
    optionalDependencies:
      &#39;@esbuild/android-arm&#39;: 0.18.20
      &#39;@esbuild/android-arm64&#39;: 0.18.20
      &#39;@esbuild/android-x64&#39;: 0.18.20
      &#39;@esbuild/darwin-arm64&#39;: 0.18.20
      &#39;@esbuild/darwin-x64&#39;: 0.18.20
      &#39;@esbuild/freebsd-arm64&#39;: 0.18.20
      &#39;@esbuild/freebsd-x64&#39;: 0.18.20
      &#39;@esbuild/linux-arm&#39;: 0.18.20
      &#39;@esbuild/linux-arm64&#39;: 0.18.20
      &#39;@esbuild/linux-ia32&#39;: 0.18.20
      &#39;@esbuild/linux-loong64&#39;: 0.18.20
      &#39;@esbuild/linux-mips64el&#39;: 0.18.20
      &#39;@esbuild/linux-ppc64&#39;: 0.18.20
      &#39;@esbuild/linux-riscv64&#39;: 0.18.20
      &#39;@esbuild/linux-s390x&#39;: 0.18.20
      &#39;@esbuild/linux-x64&#39;: 0.18.20
      &#39;@esbuild/netbsd-x64&#39;: 0.18.20
      &#39;@esbuild/openbsd-x64&#39;: 0.18.20
      &#39;@esbuild/sunos-x64&#39;: 0.18.20
      &#39;@esbuild/win32-arm64&#39;: 0.18.20
      &#39;@esbuild/win32-ia32&#39;: 0.18.20
      &#39;@esbuild/win32-x64&#39;: 0.18.20

  esbuild@0.25.12:
    optionalDependencies:
      &#39;@esbuild/aix-ppc64&#39;: 0.25.12
      &#39;@esbuild/android-arm&#39;: 0.25.12
      &#39;@esbuild/android-arm64&#39;: 0.25.12
      &#39;@esbuild/android-x64&#39;: 0.25.12
      &#39;@esbuild/darwin-arm64&#39;: 0.25.12
      &#39;@esbuild/darwin-x64&#39;: 0.25.12
      &#39;@esbuild/freebsd-arm64&#39;: 0.25.12
      &#39;@esbuild/freebsd-x64&#39;: 0.25.12
      &#39;@esbuild/linux-arm&#39;: 0.25.12
      &#39;@esbuild/linux-arm64&#39;: 0.25.12
      &#39;@esbuild/linux-ia32&#39;: 0.25.12
      &#39;@esbuild/linux-loong64&#39;: 0.25.12
      &#39;@esbuild/linux-mips64el&#39;: 0.25.12
      &#39;@esbuild/linux-ppc64&#39;: 0.25.12
      &#39;@esbuild/linux-riscv64&#39;: 0.25.12
      &#39;@esbuild/linux-s390x&#39;: 0.25.12
      &#39;@esbuild/linux-x64&#39;: 0.25.12
      &#39;@esbuild/netbsd-arm64&#39;: 0.25.12
      &#39;@esbuild/netbsd-x64&#39;: 0.25.12
      &#39;@esbuild/openbsd-arm64&#39;: 0.25.12
      &#39;@esbuild/openbsd-x64&#39;: 0.25.12
      &#39;@esbuild/openharmony-arm64&#39;: 0.25.12
      &#39;@esbuild/sunos-x64&#39;: 0.25.12
      &#39;@esbuild/win32-arm64&#39;: 0.25.12
      &#39;@esbuild/win32-ia32&#39;: 0.25.12
      &#39;@esbuild/win32-x64&#39;: 0.25.12

  esbuild@0.28.2:
    optionalDependencies:
      &#39;@esbuild/aix-ppc64&#39;: 0.28.2
      &#39;@esbuild/android-arm&#39;: 0.28.2
      &#39;@esbuild/android-arm64&#39;: 0.28.2
      &#39;@esbuild/android-x64&#39;: 0.28.2
      &#39;@esbuild/darwin-arm64&#39;: 0.28.2
      &#39;@esbuild/darwin-x64&#39;: 0.28.2
      &#39;@esbuild/freebsd-arm64&#39;: 0.28.2
      &#39;@esbuild/freebsd-x64&#39;: 0.28.2
      &#39;@esbuild/linux-arm&#39;: 0.28.2
      &#39;@esbuild/linux-arm64&#39;: 0.28.2
      &#39;@esbuild/linux-ia32&#39;: 0.28.2
      &#39;@esbuild/linux-loong64&#39;: 0.28.2
      &#39;@esbuild/linux-mips64el&#39;: 0.28.2
      &#39;@esbuild/linux-ppc64&#39;: 0.28.2
      &#39;@esbuild/linux-riscv64&#39;: 0.28.2
      &#39;@esbuild/linux-s390x&#39;: 0.28.2
      &#39;@esbuild/linux-x64&#39;: 0.28.2
      &#39;@esbuild/netbsd-arm64&#39;: 0.28.2
      &#39;@esbuild/netbsd-x64&#39;: 0.28.2
      &#39;@esbuild/openbsd-arm64&#39;: 0.28.2
      &#39;@esbuild/openbsd-x64&#39;: 0.28.2
      &#39;@esbuild/openharmony-arm64&#39;: 0.28.2
      &#39;@esbuild/sunos-x64&#39;: 0.28.2
      &#39;@esbuild/win32-arm64&#39;: 0.28.2
      &#39;@esbuild/win32-ia32&#39;: 0.28.2
      &#39;@esbuild/win32-x64&#39;: 0.28.2

  escalade@3.2.0: {}

  escape-html@1.0.3: {}

  escape-string-regexp@4.0.0: {}

  eslint-plugin-solid@0.19.0(eslint@9.39.5(jiti@2.7.0)):
    dependencies:
      eslint-visitor-keys: 3.4.3
      estraverse: 5.3.0
      is-html: 2.0.0
      kebab-case: 1.0.2
      known-css-properties: 0.30.0
      parse5: 7.3.0
      style-to-object: 1.0.14
      validate-html-nesting: 1.2.4
    optionalDependencies:
      eslint: 9.39.5(jiti@2.7.0)

  eslint-scope@8.4.0:
    dependencies:
      esrecurse: 4.3.0
      estraverse: 5.3.0

  eslint-visitor-keys@3.4.3: {}

  eslint-visitor-keys@4.2.0: {}

  eslint-visitor-keys@4.2.1: {}

  eslint-visitor-keys@5.0.1: {}

  eslint@9.39.5(jiti@2.7.0):
    dependencies:
      &#39;@eslint-community/eslint-utils&#39;: 4.10.1(eslint@9.39.5(jiti@2.7.0))
      &#39;@eslint-community/regexpp&#39;: 4.12.1
      &#39;@eslint/config-array&#39;: 0.21.2
      &#39;@eslint/config-helpers&#39;: 0.4.2
      &#39;@eslint/core&#39;: 0.17.0
      &#39;@eslint/eslintrc&#39;: 3.3.7
      &#39;@eslint/js&#39;: 9.39.5
      &#39;@eslint/plugin-kit&#39;: 0.4.1
      &#39;@humanfs/node&#39;: 0.16.6
      &#39;@humanwhocodes/module-importer&#39;: 1.0.1
      &#39;@humanwhocodes/retry&#39;: 0.4.2
      &#39;@types/estree&#39;: 1.0.6
      ajv: 6.15.0
      chalk: 4.1.2
      cross-spawn: 7.0.6
      debug: 4.4.0
      escape-string-regexp: 4.0.0
      eslint-scope: 8.4.0
      eslint-visitor-keys: 4.2.1
      espree: 10.4.0
      esquery: 1.6.0
      esutils: 2.0.3
      fast-deep-equal: 3.1.3
      file-entry-cache: 8.0.0
      find-up: 5.0.0
      glob-parent: 6.0.2
      ignore: 5.3.2
      imurmurhash: 0.1.4
      is-glob: 4.0.3
      json-stable-stringify-without-jsonify: 1.0.1
      lodash.merge: 4.6.2
      minimatch: 3.1.5
      natural-compare: 1.4.0
      optionator: 0.9.4
    optionalDependencies:
      jiti: 2.7.0
    transitivePeerDependencies:
      - supports-color

  espree@10.3.0:
    dependencies:
      acorn: 8.14.0
      acorn-jsx: 5.3.2(acorn@8.14.0)
      eslint-visitor-keys: 4.2.0

  espree@10.4.0:
    dependencies:
      acorn: 8.19.0
      acorn-jsx: 5.3.2(acorn@8.19.0)
      eslint-visitor-keys: 4.2.1

  esquery@1.6.0:
    dependencies:
      estraverse: 5.3.0

  esrecurse@4.3.0:
    dependencies:
      estraverse: 5.3.0

  estraverse@5.3.0: {}

  esutils@2.0.3: {}

  etag@1.8.1: {}

  express@5.3.0:
    dependencies:
      accepts: 2.0.0
      body-parser: 2.4.0
      content-disposition: 2.0.1
      content-type: 2.1.0
      cookie: 0.7.1
      cookie-signature: 1.2.2
      debug: 4.4.0
      depd: 2.0.0
      encodeurl: 2.0.0
      escape-html: 1.0.3
      etag: 1.8.1
      finalhandler: 2.1.1
      fresh: 2.0.0
      http-errors: 2.0.0
      merge-descriptors: 2.0.0
      mime-types: 3.0.2
      on-finished: 2.4.1
      once: 1.4.0
      parseurl: 1.3.3
      proxy-addr: 2.0.8
      qs: 6.17.1
      range-parser: 1.2.1
      router: 2.2.0
      send: 1.2.1
      serve-static: 2.2.1
      statuses: 2.0.1
      type-is: 2.1.0
      vary: 1.1.2
    transitivePeerDependencies:
      - supports-color

  exsolve@1.2.0: {}

  fast-deep-equal@3.1.3: {}

  fast-json-stable-stringify@2.1.0: {}

  fast-levenshtein@2.0.6: {}

  fdir@6.5.0(picomatch@4.0.7):
    optionalDependencies:
      picomatch: 4.0.7

  fetchdts@0.2.0: {}

  file-entry-cache@8.0.0:
    dependencies:
      flat-cache: 4.0.1

  finalhandler@2.1.1:
    dependencies:
      debug: 4.4.0
      encodeurl: 2.0.0
      escape-html: 1.0.3
      on-finished: 2.4.1
      parseurl: 1.3.3
      statuses: 2.0.1
    transitivePeerDependencies:
      - supports-color

  find-up@5.0.0:
    dependencies:
      locate-path: 6.0.0
      path-exists: 4.0.0

  flat-cache@4.0.1:
    dependencies:
      flatted: 3.3.3
      keyv: 4.5.4

  flatted@3.3.3: {}

  forwarded@0.2.0: {}

  fractional-indexing@3.4.0: {}

  fresh@2.0.0: {}

  fsevents@2.3.3:
    optional: true

  function-bind@1.1.2: {}

  gensync@1.0.0-beta.2: {}

  geojson@0.5.0: {}

  get-caller-file@2.0.5: {}

  get-intrinsic@1.3.0:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      es-define-property: 1.0.1
      es-errors: 1.3.0
      es-object-atoms: 1.1.1
      function-bind: 1.1.2
      get-proto: 1.0.1
      gopd: 1.2.0
      has-symbols: 1.1.0
      hasown: 2.0.2
      math-intrinsics: 1.1.0

  get-proto@1.0.1:
    dependencies:
      dunder-proto: 1.0.1
      es-object-atoms: 1.1.1

  get-tsconfig@4.10.0:
    dependencies:
      resolve-pkg-maps: 1.0.0

  glob-parent@6.0.2:
    dependencies:
      is-glob: 4.0.3

  globals@11.12.0: {}

  globals@14.0.0: {}

  globrex@0.1.2: {}

  gopd@1.2.0: {}

  graceful-fs@4.2.11: {}

  has-flag@4.0.0: {}

  has-symbols@1.1.0: {}

  hasown@2.0.2:
    dependencies:
      function-bind: 1.1.2

  html-entities@2.3.3: {}

  html-tags@3.3.1: {}

  http-errors@2.0.0:
    dependencies:
      depd: 2.0.0
      inherits: 2.0.4
      setprototypeof: 1.2.0
      statuses: 2.0.1
      toidentifier: 1.0.1

  http-errors@2.0.1:
    dependencies:
      depd: 2.0.0
      inherits: 2.0.4
      setprototypeof: 1.2.0
      statuses: 2.0.2
      toidentifier: 1.0.1

  iconv-lite@0.7.3:
    dependencies:
      safer-buffer: 2.1.2

  ignore@5.3.2: {}

  ignore@7.0.14: {}

  import-fresh@3.3.1:
    dependencies:
      parent-module: 1.0.1
      resolve-from: 4.0.0

  imurmurhash@0.1.4: {}

  inherits@2.0.4: {}

  inline-style-parser@0.2.7: {}

  ipaddr.js@1.9.1: {}

  is-extglob@2.1.1: {}

  is-fullwidth-code-point@3.0.0: {}

  is-glob@4.0.3:
    dependencies:
      is-extglob: 2.1.1

  is-html@2.0.0:
    dependencies:
      html-tags: 3.3.1

  is-promise@4.0.0: {}

  is-what@4.1.16: {}

  isbot@5.2.2: {}

  isexe@2.0.0: {}

  jiti@2.7.0: {}

  js-tokens@4.0.0: {}

  js-yaml@4.3.2:
    dependencies:
      argparse: 2.0.1

  jsesc@3.1.0: {}

  json-buffer@3.0.1: {}

  json-schema-traverse@0.4.1: {}

  json-stable-stringify-without-jsonify@1.0.1: {}

  json5@2.2.3: {}

  jwt-decode@4.0.0: {}

  kebab-case@1.0.2: {}

  keyv@4.5.4:
    dependencies:
      json-buffer: 3.0.1

  known-css-properties@0.30.0: {}

  levn@0.4.1:
    dependencies:
      prelude-ls: 1.2.1
      type-check: 0.4.0

  lightningcss-android-arm64@1.33.0:
    optional: true

  lightningcss-darwin-arm64@1.33.0:
    optional: true

  lightningcss-darwin-x64@1.33.0:
    optional: true

  lightningcss-freebsd-x64@1.33.0:
    optional: true

  lightningcss-linux-arm-gnueabihf@1.33.0:
    optional: true

  lightningcss-linux-arm64-gnu@1.33.0:
    optional: true

  lightningcss-linux-arm64-musl@1.33.0:
    optional: true

  lightningcss-linux-x64-gnu@1.33.0:
    optional: true

  lightningcss-linux-x64-musl@1.33.0:
    optional: true

  lightningcss-win32-arm64-msvc@1.33.0:
    optional: true

  lightningcss-win32-x64-msvc@1.33.0:
    optional: true

  lightningcss@1.33.0:
    dependencies:
      detect-libc: 2.1.2
    optionalDependencies:
      lightningcss-android-arm64: 1.33.0
      lightningcss-darwin-arm64: 1.33.0
      lightningcss-darwin-x64: 1.33.0
      lightningcss-freebsd-x64: 1.33.0
      lightningcss-linux-arm-gnueabihf: 1.33.0
      lightningcss-linux-arm64-gnu: 1.33.0
      lightningcss-linux-arm64-musl: 1.33.0
      lightningcss-linux-x64-gnu: 1.33.0
      lightningcss-linux-x64-musl: 1.33.0
      lightningcss-win32-arm64-msvc: 1.33.0
      lightningcss-win32-x64-msvc: 1.33.0

  locate-path@6.0.0:
    dependencies:
      p-locate: 5.0.0

  lodash.merge@4.6.2: {}

  lru-cache@5.1.1:
    dependencies:
      yallist: 3.1.1

  magic-string@0.30.21:
    dependencies:
      &#39;@jridgewell/sourcemap-codec&#39;: 1.6.0

  magic-string@1.4.5:
    dependencies:
      &#39;@jridgewell/sourcemap-codec&#39;: 1.6.0

  math-intrinsics@1.1.0: {}

  media-typer@1.1.1: {}

  merge-anything@5.1.7:
    dependencies:
      is-what: 4.1.16

  merge-descriptors@2.0.0: {}

  mime-db@1.54.0: {}

  mime-types@3.0.2:
    dependencies:
      mime-db: 1.54.0

  minimatch@10.2.6:
    dependencies:
      brace-expansion: 5.0.12

  minimatch@3.1.5:
    dependencies:
      brace-expansion: 1.1.11

  ms@2.1.3: {}

  nanoid@3.3.20: {}

  natural-compare@1.4.0: {}

  negotiator@1.1.0:
    dependencies:
      content-type: 2.1.0

  node-releases@2.0.19: {}

  object-assign@4.1.1: {}

  object-inspect@1.13.4: {}

  on-finished@2.4.1:
    dependencies:
      ee-first: 1.1.1

  once@1.4.0:
    dependencies:
      wrappy: 1.0.2

  optionator@0.9.4:
    dependencies:
      deep-is: 0.1.4
      fast-levenshtein: 2.0.6
      levn: 0.4.1
      prelude-ls: 1.2.1
      type-check: 0.4.0
      word-wrap: 1.2.5

  p-limit@3.1.0:
    dependencies:
      yocto-queue: 0.1.0

  p-locate@5.0.0:
    dependencies:
      p-limit: 3.1.0

  parent-module@1.0.1:
    dependencies:
      callsites: 3.1.0

  parse5@7.3.0:
    dependencies:
      entities: 6.0.1

  parseurl@1.3.3: {}

  path-exists@4.0.0: {}

  path-key@3.1.1: {}

  path-to-regexp@8.4.2: {}

  pathe@2.0.3: {}

  pg-cloudflare@1.4.1:
    optional: true

  pg-connection-string@2.14.1: {}

  pg-int8@1.0.1: {}

  pg-pool@3.14.0(pg@8.23.1):
    dependencies:
      pg: 8.23.1

  pg-protocol@1.16.1: {}

  pg-protocol@1.7.1: {}

  pg-types@2.2.0:
    dependencies:
      pg-int8: 1.0.1
      postgres-array: 2.0.0
      postgres-bytea: 1.0.0
      postgres-date: 1.0.7
      postgres-interval: 1.2.0

  pg@8.23.1:
    dependencies:
      pg-connection-string: 2.14.1
      pg-pool: 3.14.0(pg@8.23.1)
      pg-protocol: 1.16.1
      pg-types: 2.2.0
      pgpass: 1.0.5
    optionalDependencies:
      pg-cloudflare: 1.4.1

  pgpass@1.0.5:
    dependencies:
      split2: 4.2.0

  picocolors@1.1.1: {}

  picomatch@4.0.7: {}

  postcss@8.5.32:
    dependencies:
      nanoid: 3.3.20
      picocolors: 1.1.1
      source-map-js: 1.2.2

  postgres-array@2.0.0: {}

  postgres-bytea@1.0.0: {}

  postgres-date@1.0.7: {}

  postgres-interval@1.2.0:
    dependencies:
      xtend: 4.0.2

  postgres@3.4.9: {}

  prelude-ls@1.2.1: {}

  prettier@3.9.10: {}

  proxy-addr@2.0.8:
    dependencies:
      forwarded: 0.2.0
      ipaddr.js: 1.9.1

  punycode@2.3.1: {}

  qs@6.17.1:
    dependencies:
      es-define-property: 1.0.1
      side-channel: 1.1.1

  range-parser@1.2.1: {}

  raw-body@3.0.2:
    dependencies:
      bytes: 3.1.2
      http-errors: 2.0.1
      iconv-lite: 0.7.3
      unpipe: 1.0.0

  readdirp@5.1.1: {}

  require-directory@2.1.1: {}

  resolve-from@4.0.0: {}

  resolve-pkg-maps@1.0.0: {}

  rolldown@1.2.16:
    dependencies:
      &#39;@oxc-project/types&#39;: 0.156.0
      &#39;@rolldown/pluginutils&#39;: 1.0.1
    optionalDependencies:
      &#39;@rolldown/binding-android-arm-eabi&#39;: 1.2.16
      &#39;@rolldown/binding-android-arm64&#39;: 1.2.16
      &#39;@rolldown/binding-darwin-arm64&#39;: 1.2.16
      &#39;@rolldown/binding-darwin-x64&#39;: 1.2.16
      &#39;@rolldown/binding-freebsd-x64&#39;: 1.2.16
      &#39;@rolldown/binding-linux-arm-gnueabihf&#39;: 1.2.16
      &#39;@rolldown/binding-linux-arm64-gnu&#39;: 1.2.16
      &#39;@rolldown/binding-linux-arm64-musl&#39;: 1.2.16
      &#39;@rolldown/binding-linux-ppc64-gnu&#39;: 1.2.16
      &#39;@rolldown/binding-linux-s390x-gnu&#39;: 1.2.16
      &#39;@rolldown/binding-linux-x64-gnu&#39;: 1.2.16
      &#39;@rolldown/binding-linux-x64-musl&#39;: 1.2.16
      &#39;@rolldown/binding-openharmony-arm64&#39;: 1.2.16
      &#39;@rolldown/binding-win32-arm64-msvc&#39;: 1.2.16
      &#39;@rolldown/binding-win32-x64-msvc&#39;: 1.2.16

  router@2.2.0:
    dependencies:
      debug: 4.4.0
      depd: 2.0.0
      is-promise: 4.0.0
      parseurl: 1.3.3
      path-to-regexp: 8.4.2
    transitivePeerDependencies:
      - supports-color

  rxjs@7.8.2:
    dependencies:
      tslib: 2.8.1

  safer-buffer@2.1.2: {}

  semver@6.3.1: {}

  semver@7.8.6: {}

  send@1.2.1:
    dependencies:
      debug: 4.4.3
      encodeurl: 2.0.0
      escape-html: 1.0.3
      etag: 1.8.1
      fresh: 2.0.0
      http-errors: 2.0.1
      mime-types: 3.0.2
      ms: 2.1.3
      on-finished: 2.4.1
      range-parser: 1.2.1
      statuses: 2.0.2
    transitivePeerDependencies:
      - supports-color

  seroval-plugins@1.6.12(seroval@1.6.12):
    dependencies:
      seroval: 1.6.12

  seroval-plugins@1.7.8(seroval@1.7.10):
    dependencies:
      seroval: 1.7.10

  seroval@1.6.12: {}

  seroval@1.7.10: {}

  serve-static@2.2.1:
    dependencies:
      encodeurl: 2.0.0
      escape-html: 1.0.3
      parseurl: 1.3.3
      send: 1.2.1
    transitivePeerDependencies:
      - supports-color

  setprototypeof@1.2.0: {}

  shebang-command@2.0.0:
    dependencies:
      shebang-regex: 3.0.0

  shebang-regex@3.0.0: {}

  shell-quote@1.12.0: {}

  side-channel-list@1.0.1:
    dependencies:
      es-errors: 1.3.0
      object-inspect: 1.13.4

  side-channel-map@1.0.1:
    dependencies:
      call-bound: 1.0.3
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      object-inspect: 1.13.4

  side-channel-weakmap@1.0.2:
    dependencies:
      call-bound: 1.0.3
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      object-inspect: 1.13.4
      side-channel-map: 1.0.1

  side-channel@1.1.1:
    dependencies:
      es-errors: 1.3.0
      object-inspect: 1.13.4
      side-channel-list: 1.0.1
      side-channel-map: 1.0.1
      side-channel-weakmap: 1.0.2

  solid-js@1.9.18:
    dependencies:
      csstype: 3.1.3
      seroval: 1.6.12
      seroval-plugins: 1.6.12(seroval@1.6.12)

  solid-refresh@0.6.3(solid-js@1.9.18):
    dependencies:
      &#39;@babel/generator&#39;: 7.26.9
      &#39;@babel/helper-module-imports&#39;: 7.25.9
      &#39;@babel/types&#39;: 7.26.9
      solid-js: 1.9.18
    transitivePeerDependencies:
      - supports-color

  source-map-js@1.2.1: {}

  source-map-js@1.2.2: {}

  source-map-support@0.5.21:
    dependencies:
      buffer-from: 1.1.2
      source-map: 0.6.1

  source-map@0.6.1: {}

  source-map@0.7.6: {}

  split2@4.2.0: {}

  srvx@1.0.8: {}

  statuses@2.0.1: {}

  statuses@2.0.2: {}

  string-width@4.2.3:
    dependencies:
      emoji-regex: 8.0.0
      is-fullwidth-code-point: 3.0.0
      strip-ansi: 6.0.1

  strip-ansi@6.0.1:
    dependencies:
      ansi-regex: 5.0.1

  strip-json-comments@3.1.1: {}

  style-to-object@1.0.14:
    dependencies:
      inline-style-parser: 0.2.7

  supports-color@7.2.0:
    dependencies:
      has-flag: 4.0.0

  supports-color@8.1.1:
    dependencies:
      has-flag: 4.0.0

  tailwindcss@4.3.5: {}

  tapable@2.3.3: {}

  tinyglobby@0.2.17:
    dependencies:
      fdir: 6.5.0(picomatch@4.0.7)
      picomatch: 4.0.7

  toidentifier@1.0.1: {}

  trailbase@0.10.0:
    dependencies:
      &#39;@types/geojson&#39;: 7946.0.16
      &#39;@ungap/raw-json&#39;: 0.4.4
      geojson: 0.5.0
      jwt-decode: 4.0.0
      uuid: 13.0.2

  trailbase@0.14.3:
    dependencies:
      &#39;@types/geojson&#39;: 7946.0.16
      &#39;@ungap/raw-json&#39;: 0.4.4
      geojson: 0.5.0
      jwt-decode: 4.0.0
      uuid: 14.0.3

  tree-kill@1.2.2: {}

  ts-api-utils@2.5.0(typescript@5.9.3):
    dependencies:
      typescript: 5.9.3

  tsconfck@3.1.6(typescript@5.9.3):
    optionalDependencies:
      typescript: 5.9.3

  tslib@2.8.1: {}

  tsx@4.23.15:
    dependencies:
      esbuild: 0.28.2
    optionalDependencies:
      fsevents: 2.3.3

  type-check@0.4.0:
    dependencies:
      prelude-ls: 1.2.1

  type-is@2.1.0:
    dependencies:
      content-type: 2.1.0
      media-typer: 1.1.1
      mime-types: 3.0.2

  typescript@5.9.3: {}

  ufo@1.6.4: {}

  undici-types@6.20.0: {}

  undici-types@7.24.6: {}

  unpipe@1.0.0: {}

  unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)):
    dependencies:
      &#39;@jridgewell/remapping&#39;: 2.3.5
      &#39;@rolldown/pluginutils&#39;: 1.0.1
      picomatch: 4.0.7
      webpack-virtual-modules: 0.6.2
    optionalDependencies:
      esbuild: 0.28.2
      rolldown: 1.2.16
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)

  update-browserslist-db@1.1.2(browserslist@4.24.4):
    dependencies:
      browserslist: 4.24.4
      escalade: 3.2.0
      picocolors: 1.1.1

  uri-js@4.4.1:
    dependencies:
      punycode: 2.3.1

  uuid@13.0.2: {}

  uuid@14.0.3: {}

  validate-html-nesting@1.2.4: {}

  vary@1.1.2: {}

  vite-plugin-solid@2.11.15(solid-js@1.9.18)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)):
    dependencies:
      &#39;@babel/core&#39;: 7.26.9
      &#39;@types/babel__core&#39;: 7.20.5
      babel-preset-solid: 1.9.16(@babel/core@7.26.9)(solid-js@1.9.18)
      merge-anything: 5.1.7
      solid-js: 1.9.18
      solid-refresh: 0.6.3(solid-js@1.9.18)
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)
      vitefu: 1.1.3(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
    transitivePeerDependencies:
      - supports-color

  vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)):
    dependencies:
      debug: 4.4.0
      globrex: 0.1.2
      tsconfck: 3.1.6(typescript@5.9.3)
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)
    transitivePeerDependencies:
      - supports-color
      - typescript

  vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15):
    dependencies:
      lightningcss: 1.33.0
      picomatch: 4.0.7
      postcss: 8.5.32
      rolldown: 1.2.16
      tinyglobby: 0.2.17
    optionalDependencies:
      &#39;@types/node&#39;: 25.9.9
      esbuild: 0.28.2
      fsevents: 2.3.3
      jiti: 2.7.0
      tsx: 4.23.15

  vitefu@1.1.3(vite@8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)):
    optionalDependencies:
      vite: 8.3.6(@types/node@25.9.9)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)

  webpack-virtual-modules@0.6.2: {}

  which@2.0.2:
    dependencies:
      isexe: 2.0.0

  word-wrap@1.2.5: {}

  wrap-ansi@7.0.0:
    dependencies:
      ansi-styles: 4.3.0
      string-width: 4.2.3
      strip-ansi: 6.0.1

  wrappy@1.0.2: {}

  xmlbuilder2@4.0.3:
    dependencies:
      &#39;@oozcitak/dom&#39;: 2.0.2
      &#39;@oozcitak/infra&#39;: 2.0.2
      &#39;@oozcitak/util&#39;: 10.0.0
      js-yaml: 4.3.2

  xtend@4.0.2: {}

  y18n@5.0.8: {}

  yallist@3.1.1: {}

  yargs-parser@21.1.1: {}

  yargs@17.7.2:
    dependencies:
      cliui: 8.0.1
      escalade: 3.2.0
      get-caller-file: 2.0.5
      require-directory: 2.1.1
      string-width: 4.2.3
      y18n: 5.0.8
      yargs-parser: 21.1.1

  yocto-queue@0.1.0: {}

  zod@4.6.7: {}
">
<input type="hidden" name="project[files][postgres.conf]" value="listen_addresses = &#39;*&#39;
max_connections = 100
shared_buffers = 128MB
dynamic_shared_memory_type = posix
max_wal_size = 1GB
min_wal_size = 80MB
log_timezone = &#39;UTC&#39;
datestyle = &#39;iso, mdy&#39;
timezone = &#39;UTC&#39;
lc_messages = &#39;en_US.utf8&#39;
lc_monetary = &#39;en_US.utf8&#39;
lc_numeric = &#39;en_US.utf8&#39;
lc_time = &#39;en_US.utf8&#39;
default_text_search_config = &#39;pg_catalog.english&#39;
wal_level = logical
max_replication_slots = 10
max_wal_senders = 10
">
<input type="hidden" name="project[files][tsconfig.json]" value="{
  &quot;extends&quot;: &quot;../../../tsconfig.json&quot;,
  &quot;compilerOptions&quot;: {
    &quot;baseUrl&quot;: &quot;.&quot;,
    &quot;module&quot;: &quot;ES2022&quot;,
    &quot;jsx&quot;: &quot;preserve&quot;,
    &quot;jsxImportSource&quot;: &quot;solid-js&quot;,
    &quot;moduleResolution&quot;: &quot;bundler&quot;,
    &quot;paths&quot;: {
      &quot;@/*&quot;: [&quot;./src/*&quot;]
    }
  },
  &quot;include&quot;: [
    &quot;src/**/*.ts&quot;,
    &quot;src/**/*.tsx&quot;,
    &quot;scripts/**/*.ts&quot;,
    &quot;vite.config.ts&quot;,
    &quot;drizzle.config.ts&quot;,
    &quot;app.config.ts&quot;
  ],
  &quot;exclude&quot;: [&quot;node_modules&quot;, &quot;dist&quot;]
}
">
<input type="hidden" name="project[files][vite.config.ts]" value="import { defineConfig } from &#39;vite&#39;
import solid from &#39;vite-plugin-solid&#39;
import tailwindcss from &#39;@tailwindcss/vite&#39;
import { tanstackStart } from &#39;@tanstack/solid-start/plugin/vite&#39;
import viteTsConfigPaths from &#39;vite-tsconfig-paths&#39;

// https://vitejs.dev/config/
export default defineConfig({
  ssr: { external: [`drizzle-orm`] },
  plugins: [
    viteTsConfigPaths({
      projects: [`./tsconfig.json`],
    }),
    tailwindcss(),
    tanstackStart({
      srcDirectory: `src`,
      start: { entry: `./start.tsx` },
      server: { entry: `./server.ts` },
    }),
    solid({ ssr: true }),
  ],
})
">
<input type="hidden" name="project[files][drizzle/0000_whole_sprite.sql]" value="CREATE TABLE &quot;todos&quot; (
	&quot;id&quot; serial PRIMARY KEY NOT NULL,
	&quot;text&quot; text NOT NULL,
	&quot;completed&quot; boolean DEFAULT false NOT NULL,
	&quot;created_at&quot; timestamp with time zone DEFAULT now() NOT NULL,
	&quot;updated_at&quot; timestamp with time zone DEFAULT now() NOT NULL
);
">
<input type="hidden" name="project[files][drizzle/0001_sturdy_titania.sql]" value="CREATE TABLE &quot;config&quot; (
	&quot;id&quot; serial PRIMARY KEY NOT NULL,
	&quot;key&quot; text NOT NULL,
	&quot;value&quot; text NOT NULL,
	&quot;created_at&quot; timestamp with time zone DEFAULT now() NOT NULL,
	&quot;updated_at&quot; timestamp with time zone DEFAULT now() NOT NULL,
	CONSTRAINT &quot;config_key_unique&quot; UNIQUE(&quot;key&quot;)
);
">
<input type="hidden" name="project[files][drizzle/0002_update_timestamps_trigger.sql]" value="-- Custom SQL migration file, put your code below! --

-- Create a function to update the updated_at timestamp
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = NOW();
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- Create trigger for todos table
DROP TRIGGER IF EXISTS update_todos_updated_at ON &quot;todos&quot;;
CREATE TRIGGER update_todos_updated_at
BEFORE UPDATE ON &quot;todos&quot;
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();

-- Create trigger for config table
DROP TRIGGER IF EXISTS update_config_updated_at ON &quot;config&quot;;
CREATE TRIGGER update_config_updated_at
BEFORE UPDATE ON &quot;config&quot;
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();

-- Insert default config for background color
INSERT INTO &quot;config&quot; (&quot;key&quot;, &quot;value&quot;)
VALUES (&#39;backgroundColor&#39;, &#39;#f5f5f5&#39;)
ON CONFLICT (&quot;key&quot;) DO NOTHING;">
<input type="hidden" name="project[files][public/vite.svg]" value="&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; aria-hidden=&quot;true&quot; role=&quot;img&quot; class=&quot;iconify iconify--logos&quot; width=&quot;31.88&quot; height=&quot;32&quot; preserveAspectRatio=&quot;xMidYMid meet&quot; viewBox=&quot;0 0 256 257&quot;&gt;&lt;defs&gt;&lt;linearGradient id=&quot;IconifyId1813088fe1fbc01fb466&quot; x1=&quot;-.828%&quot; x2=&quot;57.636%&quot; y1=&quot;7.652%&quot; y2=&quot;78.411%&quot;&gt;&lt;stop offset=&quot;0%&quot; stop-color=&quot;#41D1FF&quot;&gt;&lt;/stop&gt;&lt;stop offset=&quot;100%&quot; stop-color=&quot;#BD34FE&quot;&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;linearGradient id=&quot;IconifyId1813088fe1fbc01fb467&quot; x1=&quot;43.376%&quot; x2=&quot;50.316%&quot; y1=&quot;2.242%&quot; y2=&quot;89.03%&quot;&gt;&lt;stop offset=&quot;0%&quot; stop-color=&quot;#FFEA83&quot;&gt;&lt;/stop&gt;&lt;stop offset=&quot;8.333%&quot; stop-color=&quot;#FFDD35&quot;&gt;&lt;/stop&gt;&lt;stop offset=&quot;100%&quot; stop-color=&quot;#FFA800&quot;&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/defs&gt;&lt;path fill=&quot;url(#IconifyId1813088fe1fbc01fb466)&quot; d=&quot;M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z&quot;&gt;&lt;/path&gt;&lt;path fill=&quot;url(#IconifyId1813088fe1fbc01fb467)&quot; d=&quot;M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;">
<input type="hidden" name="project[files][scripts/migrate.ts]" value="import { drizzle } from &#39;drizzle-orm/node-postgres&#39;
import { migrate } from &#39;drizzle-orm/node-postgres/migrator&#39;
import pkg from &#39;pg&#39;
import * as dotenv from &#39;dotenv&#39;

dotenv.config()

const { Pool } = pkg
const pool = new Pool({
  host: process.env.DB_HOST || `localhost`,
  port: parseInt(process.env.DB_PORT || `54322`),
  user: process.env.DB_USER || `postgres`,
  password: process.env.DB_PASSWORD || `postgres`,
  database: process.env.DB_NAME || `todo_app`,
})

const db = drizzle(pool)

async function main() {
  console.log(`Running migrations...`)
  await migrate(db, { migrationsFolder: `./drizzle` })
  console.log(`Migrations completed!`)
  await pool.end()
}

main().catch((err) =&gt; {
  console.error(`Migration failed!`, err)
  process.exit(1)
})
">
<input type="hidden" name="project[files][src/index.css]" value="@import &#39;tailwindcss&#39;;

html,
body {
  margin: 0;
  padding: 0;
}

button {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font-size: 100%;
  vertical-align: baseline;
  font-family: inherit;
  font-weight: inherit;
  color: inherit;
  appearance: none;
}

body {
  font:
    14px &#39;Helvetica Neue&#39;,
    Helvetica,
    Arial,
    sans-serif;
  line-height: 1.4em;
  background: #f5f5f5;
  color: #4d4d4d;
  margin: 0 auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-weight: 300;
}

:root {
  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
  line-height: 1.5;
  font-weight: 400;

  color-scheme: light dark;
  color: rgba(255, 255, 255, 0.87);
  background-color: #242424;

  font-synthesis: none;
  text-rendering: optimizeLegibility;
}

a {
  font-weight: 500;
  color: #646cff;
  text-decoration: inherit;
}
a:hover {
  color: #535bf2;
}

h1 {
  font-size: 3.2em;
  line-height: 1.1;
}

button {
  border-radius: 8px;
  border: 1px solid transparent;
  padding: 0.6em 1.2em;
  font-size: 1em;
  font-weight: 500;
  font-family: inherit;
  background-color: #1a1a1a;
  cursor: pointer;
  transition: border-color 0.25s;
}
button:hover {
  border-color: #646cff;
}
button:focus,
button:focus-visible {
  outline: 4px auto -webkit-focus-ring-color;
}

@media (prefers-color-scheme: light) {
  :root {
    color: #213547;
    background-color: #ffffff;
  }
  a:hover {
    color: #747bff;
  }
  button {
    background-color: #f9f9f9;
  }
}
">
<input type="hidden" name="project[files][src/routeTree.gen.ts]" value="/* eslint-disable */

// @ts-nocheck

// noinspection JSUnusedGlobalSymbols

// This file was automatically generated by TanStack Router.
// You should NOT make any changes in this file as it will be overwritten.
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.

import { Route as rootRouteImport } from &#39;./routes/__root&#39;
import { Route as IndexRouteImport } from &#39;./routes/index&#39;
import { Route as ElectricRouteImport } from &#39;./routes/electric&#39;
import { Route as QueryRouteImport } from &#39;./routes/query&#39;
import { Route as TrailbaseRouteImport } from &#39;./routes/trailbase&#39;
import { Route as ApiConfigRouteImport } from &#39;./routes/api/config&#39;
import { Route as ApiTodosRouteImport } from &#39;./routes/api/todos&#39;
import { Route as ApiConfigIdRouteImport } from &#39;./routes/api/config.$id&#39;
import { Route as ApiTodosIdRouteImport } from &#39;./routes/api/todos.$id&#39;

const IndexRoute = IndexRouteImport.update({
  id: &#39;/&#39;,
  path: &#39;/&#39;,
  getParentRoute: () =&gt; rootRouteImport,
} as any)
const ElectricRoute = ElectricRouteImport.update({
  id: &#39;/electric&#39;,
  path: &#39;/electric&#39;,
  getParentRoute: () =&gt; rootRouteImport,
} as any)
const QueryRoute = QueryRouteImport.update({
  id: &#39;/query&#39;,
  path: &#39;/query&#39;,
  getParentRoute: () =&gt; rootRouteImport,
} as any)
const TrailbaseRoute = TrailbaseRouteImport.update({
  id: &#39;/trailbase&#39;,
  path: &#39;/trailbase&#39;,
  getParentRoute: () =&gt; rootRouteImport,
} as any)
const ApiConfigRoute = ApiConfigRouteImport.update({
  id: &#39;/api/config&#39;,
  path: &#39;/api/config&#39;,
  getParentRoute: () =&gt; rootRouteImport,
} as any)
const ApiTodosRoute = ApiTodosRouteImport.update({
  id: &#39;/api/todos&#39;,
  path: &#39;/api/todos&#39;,
  getParentRoute: () =&gt; rootRouteImport,
} as any)
const ApiConfigIdRoute = ApiConfigIdRouteImport.update({
  id: &#39;/$id&#39;,
  path: &#39;/$id&#39;,
  getParentRoute: () =&gt; ApiConfigRoute,
} as any)
const ApiTodosIdRoute = ApiTodosIdRouteImport.update({
  id: &#39;/$id&#39;,
  path: &#39;/$id&#39;,
  getParentRoute: () =&gt; ApiTodosRoute,
} as any)

export interface FileRoutesByFullPath {
  &#39;/&#39;: typeof IndexRoute
  &#39;/electric&#39;: typeof ElectricRoute
  &#39;/query&#39;: typeof QueryRoute
  &#39;/trailbase&#39;: typeof TrailbaseRoute
  &#39;/api/config&#39;: typeof ApiConfigRouteWithChildren
  &#39;/api/todos&#39;: typeof ApiTodosRouteWithChildren
  &#39;/api/config/$id&#39;: typeof ApiConfigIdRoute
  &#39;/api/todos/$id&#39;: typeof ApiTodosIdRoute
}
export interface FileRoutesByTo {
  &#39;/&#39;: typeof IndexRoute
  &#39;/electric&#39;: typeof ElectricRoute
  &#39;/query&#39;: typeof QueryRoute
  &#39;/trailbase&#39;: typeof TrailbaseRoute
  &#39;/api/config&#39;: typeof ApiConfigRouteWithChildren
  &#39;/api/todos&#39;: typeof ApiTodosRouteWithChildren
  &#39;/api/config/$id&#39;: typeof ApiConfigIdRoute
  &#39;/api/todos/$id&#39;: typeof ApiTodosIdRoute
}
export interface FileRoutesById {
  __root__: typeof rootRouteImport
  &#39;/&#39;: typeof IndexRoute
  &#39;/electric&#39;: typeof ElectricRoute
  &#39;/query&#39;: typeof QueryRoute
  &#39;/trailbase&#39;: typeof TrailbaseRoute
  &#39;/api/config&#39;: typeof ApiConfigRouteWithChildren
  &#39;/api/todos&#39;: typeof ApiTodosRouteWithChildren
  &#39;/api/config/$id&#39;: typeof ApiConfigIdRoute
  &#39;/api/todos/$id&#39;: typeof ApiTodosIdRoute
}
export interface FileRouteTypes {
  fileRoutesByFullPath: FileRoutesByFullPath
  fullPaths:
    | &#39;/&#39;
    | &#39;/electric&#39;
    | &#39;/query&#39;
    | &#39;/trailbase&#39;
    | &#39;/api/config&#39;
    | &#39;/api/todos&#39;
    | &#39;/api/config/$id&#39;
    | &#39;/api/todos/$id&#39;
  fileRoutesByTo: FileRoutesByTo
  to:
    | &#39;/&#39;
    | &#39;/electric&#39;
    | &#39;/query&#39;
    | &#39;/trailbase&#39;
    | &#39;/api/config&#39;
    | &#39;/api/todos&#39;
    | &#39;/api/config/$id&#39;
    | &#39;/api/todos/$id&#39;
  id:
    | &#39;__root__&#39;
    | &#39;/&#39;
    | &#39;/electric&#39;
    | &#39;/query&#39;
    | &#39;/trailbase&#39;
    | &#39;/api/config&#39;
    | &#39;/api/todos&#39;
    | &#39;/api/config/$id&#39;
    | &#39;/api/todos/$id&#39;
  fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
  IndexRoute: typeof IndexRoute
  ElectricRoute: typeof ElectricRoute
  QueryRoute: typeof QueryRoute
  TrailbaseRoute: typeof TrailbaseRoute
  ApiConfigRoute: typeof ApiConfigRouteWithChildren
  ApiTodosRoute: typeof ApiTodosRouteWithChildren
}

declare module &#39;@tanstack/solid-router&#39; {
  interface FileRoutesByPath {
    &#39;/&#39;: {
      id: &#39;/&#39;
      path: &#39;/&#39;
      fullPath: &#39;/&#39;
      preLoaderRoute: typeof IndexRouteImport
      parentRoute: typeof rootRouteImport
    }
    &#39;/electric&#39;: {
      id: &#39;/electric&#39;
      path: &#39;/electric&#39;
      fullPath: &#39;/electric&#39;
      preLoaderRoute: typeof ElectricRouteImport
      parentRoute: typeof rootRouteImport
    }
    &#39;/query&#39;: {
      id: &#39;/query&#39;
      path: &#39;/query&#39;
      fullPath: &#39;/query&#39;
      preLoaderRoute: typeof QueryRouteImport
      parentRoute: typeof rootRouteImport
    }
    &#39;/trailbase&#39;: {
      id: &#39;/trailbase&#39;
      path: &#39;/trailbase&#39;
      fullPath: &#39;/trailbase&#39;
      preLoaderRoute: typeof TrailbaseRouteImport
      parentRoute: typeof rootRouteImport
    }
    &#39;/api/config&#39;: {
      id: &#39;/api/config&#39;
      path: &#39;/api/config&#39;
      fullPath: &#39;/api/config&#39;
      preLoaderRoute: typeof ApiConfigRouteImport
      parentRoute: typeof rootRouteImport
    }
    &#39;/api/todos&#39;: {
      id: &#39;/api/todos&#39;
      path: &#39;/api/todos&#39;
      fullPath: &#39;/api/todos&#39;
      preLoaderRoute: typeof ApiTodosRouteImport
      parentRoute: typeof rootRouteImport
    }
    &#39;/api/config/$id&#39;: {
      id: &#39;/api/config/$id&#39;
      path: &#39;/$id&#39;
      fullPath: &#39;/api/config/$id&#39;
      preLoaderRoute: typeof ApiConfigIdRouteImport
      parentRoute: typeof ApiConfigRoute
    }
    &#39;/api/todos/$id&#39;: {
      id: &#39;/api/todos/$id&#39;
      path: &#39;/$id&#39;
      fullPath: &#39;/api/todos/$id&#39;
      preLoaderRoute: typeof ApiTodosIdRouteImport
      parentRoute: typeof ApiTodosRoute
    }
  }
}

interface ApiConfigRouteChildren {
  ApiConfigIdRoute: typeof ApiConfigIdRoute
}

const ApiConfigRouteChildren: ApiConfigRouteChildren = {
  ApiConfigIdRoute: ApiConfigIdRoute,
}

const ApiConfigRouteWithChildren = ApiConfigRoute._addFileChildren(
  ApiConfigRouteChildren,
)

interface ApiTodosRouteChildren {
  ApiTodosIdRoute: typeof ApiTodosIdRoute
}

const ApiTodosRouteChildren: ApiTodosRouteChildren = {
  ApiTodosIdRoute: ApiTodosIdRoute,
}

const ApiTodosRouteWithChildren = ApiTodosRoute._addFileChildren(
  ApiTodosRouteChildren,
)

const rootRouteChildren: RootRouteChildren = {
  IndexRoute: IndexRoute,
  ElectricRoute: ElectricRoute,
  QueryRoute: QueryRoute,
  TrailbaseRoute: TrailbaseRoute,
  ApiConfigRoute: ApiConfigRouteWithChildren,
  ApiTodosRoute: ApiTodosRouteWithChildren,
}
export const routeTree = rootRouteImport
  ._addFileChildren(rootRouteChildren)
  ._addFileTypes&lt;FileRouteTypes&gt;()

import type { getRouter } from &#39;./router.tsx&#39;
import type { startInstance } from &#39;./start.tsx&#39;
declare module &#39;@tanstack/solid-start&#39; {
  interface Register {
    ssr: true
    router: Awaited&lt;ReturnType&lt;typeof getRouter&gt;&gt;
    config: Awaited&lt;ReturnType&lt;typeof startInstance.getOptions&gt;&gt;
  }
}
">
<input type="hidden" name="project[files][src/router.tsx]" value="import { createRouter as createTanstackRouter } from &#39;@tanstack/solid-router&#39;

// Import the generated route tree
import { routeTree } from &#39;./routeTree.gen&#39;
import { NotFound } from &#39;./components/NotFound&#39;

import &#39;./styles.css&#39;

// Create a new router instance
export function getRouter() {
  return createTanstackRouter({
    routeTree,
    scrollRestoration: true,
    defaultPreloadStaleTime: 0,
    defaultNotFoundComponent: NotFound,
  })
}
">
<input type="hidden" name="project[files][src/server.ts]" value="import handler from &#39;@tanstack/solid-start/server-entry&#39;

export default {
  fetch(request: Request) {
    return handler.fetch(request)
  },
}
">
<input type="hidden" name="project[files][src/start.tsx]" value="import { createStart } from &#39;@tanstack/solid-start&#39;

export const startInstance = createStart(() =&gt; {
  return {
    defaultSsr: false,
  }
})
">
<input type="hidden" name="project[files][src/styles.css]" value="@import &#39;tailwindcss&#39;;

body {
  @apply m-0;
  font-family:
    -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, &#39;Roboto&#39;, &#39;Oxygen&#39;, &#39;Ubuntu&#39;,
    &#39;Cantarell&#39;, &#39;Fira Sans&#39;, &#39;Droid Sans&#39;, &#39;Helvetica Neue&#39;, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

code {
  font-family:
    source-code-pro, Menlo, Monaco, Consolas, &#39;Courier New&#39;, monospace;
}
">
<input type="hidden" name="project[files][src/vite-env.d.ts]" value="/// &lt;reference types=&quot;vite/client&quot; /&gt;
">
<input type="hidden" name="project[files][traildepot/.gitignore]" value="# Deployment-specific directories:
backups/
data/
secrets/
uploads/

trailbase.js
trailbase.d.ts
">
<input type="hidden" name="project[files][traildepot/config.textproto]" value="email {}
server {
  application_name: &quot;TanStack-DB TrailBase Example&quot;
  logs_retention_sec: 604800
}
auth {
  auth_token_ttl_sec: 3600
  refresh_token_ttl_sec: 2592000
}
jobs {}
record_apis: [
  {
    name: &quot;todos&quot;
    table_name: &quot;todos&quot;
    acl_world: [CREATE, READ, UPDATE, DELETE]
    enable_subscriptions: true
  },
  {
    name: &quot;config&quot;
    table_name: &quot;config&quot;
    acl_world: [CREATE, READ, UPDATE, DELETE]
    enable_subscriptions: true
  }
]
">
<input type="hidden" name="project[files][drizzle/meta/0000_snapshot.json]" value="{
  &quot;id&quot;: &quot;1649b703-2b2d-413c-8185-15390a9d97e7&quot;,
  &quot;prevId&quot;: &quot;00000000-0000-0000-0000-000000000000&quot;,
  &quot;version&quot;: &quot;7&quot;,
  &quot;dialect&quot;: &quot;postgresql&quot;,
  &quot;tables&quot;: {
    &quot;public.todos&quot;: {
      &quot;name&quot;: &quot;todos&quot;,
      &quot;schema&quot;: &quot;&quot;,
      &quot;columns&quot;: {
        &quot;id&quot;: {
          &quot;name&quot;: &quot;id&quot;,
          &quot;type&quot;: &quot;serial&quot;,
          &quot;primaryKey&quot;: true,
          &quot;notNull&quot;: true
        },
        &quot;text&quot;: {
          &quot;name&quot;: &quot;text&quot;,
          &quot;type&quot;: &quot;text&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true
        },
        &quot;completed&quot;: {
          &quot;name&quot;: &quot;completed&quot;,
          &quot;type&quot;: &quot;boolean&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: false
        },
        &quot;created_at&quot;: {
          &quot;name&quot;: &quot;created_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        },
        &quot;updated_at&quot;: {
          &quot;name&quot;: &quot;updated_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        }
      },
      &quot;indexes&quot;: {},
      &quot;foreignKeys&quot;: {},
      &quot;compositePrimaryKeys&quot;: {},
      &quot;uniqueConstraints&quot;: {},
      &quot;policies&quot;: {},
      &quot;checkConstraints&quot;: {},
      &quot;isRLSEnabled&quot;: false
    }
  },
  &quot;enums&quot;: {},
  &quot;schemas&quot;: {},
  &quot;sequences&quot;: {},
  &quot;roles&quot;: {},
  &quot;policies&quot;: {},
  &quot;views&quot;: {},
  &quot;_meta&quot;: {
    &quot;columns&quot;: {},
    &quot;schemas&quot;: {},
    &quot;tables&quot;: {}
  }
}
">
<input type="hidden" name="project[files][drizzle/meta/0001_snapshot.json]" value="{
  &quot;id&quot;: &quot;1b3a815a-1865-451b-b646-983e995ee97e&quot;,
  &quot;prevId&quot;: &quot;1649b703-2b2d-413c-8185-15390a9d97e7&quot;,
  &quot;version&quot;: &quot;7&quot;,
  &quot;dialect&quot;: &quot;postgresql&quot;,
  &quot;tables&quot;: {
    &quot;public.config&quot;: {
      &quot;name&quot;: &quot;config&quot;,
      &quot;schema&quot;: &quot;&quot;,
      &quot;columns&quot;: {
        &quot;id&quot;: {
          &quot;name&quot;: &quot;id&quot;,
          &quot;type&quot;: &quot;serial&quot;,
          &quot;primaryKey&quot;: true,
          &quot;notNull&quot;: true
        },
        &quot;key&quot;: {
          &quot;name&quot;: &quot;key&quot;,
          &quot;type&quot;: &quot;text&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true
        },
        &quot;value&quot;: {
          &quot;name&quot;: &quot;value&quot;,
          &quot;type&quot;: &quot;text&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true
        },
        &quot;created_at&quot;: {
          &quot;name&quot;: &quot;created_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        },
        &quot;updated_at&quot;: {
          &quot;name&quot;: &quot;updated_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        }
      },
      &quot;indexes&quot;: {},
      &quot;foreignKeys&quot;: {},
      &quot;compositePrimaryKeys&quot;: {},
      &quot;uniqueConstraints&quot;: {
        &quot;config_key_unique&quot;: {
          &quot;name&quot;: &quot;config_key_unique&quot;,
          &quot;nullsNotDistinct&quot;: false,
          &quot;columns&quot;: [&quot;key&quot;]
        }
      },
      &quot;policies&quot;: {},
      &quot;checkConstraints&quot;: {},
      &quot;isRLSEnabled&quot;: false
    },
    &quot;public.todos&quot;: {
      &quot;name&quot;: &quot;todos&quot;,
      &quot;schema&quot;: &quot;&quot;,
      &quot;columns&quot;: {
        &quot;id&quot;: {
          &quot;name&quot;: &quot;id&quot;,
          &quot;type&quot;: &quot;serial&quot;,
          &quot;primaryKey&quot;: true,
          &quot;notNull&quot;: true
        },
        &quot;text&quot;: {
          &quot;name&quot;: &quot;text&quot;,
          &quot;type&quot;: &quot;text&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true
        },
        &quot;completed&quot;: {
          &quot;name&quot;: &quot;completed&quot;,
          &quot;type&quot;: &quot;boolean&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: false
        },
        &quot;created_at&quot;: {
          &quot;name&quot;: &quot;created_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        },
        &quot;updated_at&quot;: {
          &quot;name&quot;: &quot;updated_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        }
      },
      &quot;indexes&quot;: {},
      &quot;foreignKeys&quot;: {},
      &quot;compositePrimaryKeys&quot;: {},
      &quot;uniqueConstraints&quot;: {},
      &quot;policies&quot;: {},
      &quot;checkConstraints&quot;: {},
      &quot;isRLSEnabled&quot;: false
    }
  },
  &quot;enums&quot;: {},
  &quot;schemas&quot;: {},
  &quot;sequences&quot;: {},
  &quot;roles&quot;: {},
  &quot;policies&quot;: {},
  &quot;views&quot;: {},
  &quot;_meta&quot;: {
    &quot;columns&quot;: {},
    &quot;schemas&quot;: {},
    &quot;tables&quot;: {}
  }
}
">
<input type="hidden" name="project[files][drizzle/meta/0002_snapshot.json]" value="{
  &quot;id&quot;: &quot;017c3a1c-9d70-4fed-ad07-9a2e1ab49bb4&quot;,
  &quot;prevId&quot;: &quot;1b3a815a-1865-451b-b646-983e995ee97e&quot;,
  &quot;version&quot;: &quot;7&quot;,
  &quot;dialect&quot;: &quot;postgresql&quot;,
  &quot;tables&quot;: {
    &quot;public.config&quot;: {
      &quot;name&quot;: &quot;config&quot;,
      &quot;schema&quot;: &quot;&quot;,
      &quot;columns&quot;: {
        &quot;id&quot;: {
          &quot;name&quot;: &quot;id&quot;,
          &quot;type&quot;: &quot;serial&quot;,
          &quot;primaryKey&quot;: true,
          &quot;notNull&quot;: true
        },
        &quot;key&quot;: {
          &quot;name&quot;: &quot;key&quot;,
          &quot;type&quot;: &quot;text&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true
        },
        &quot;value&quot;: {
          &quot;name&quot;: &quot;value&quot;,
          &quot;type&quot;: &quot;text&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true
        },
        &quot;created_at&quot;: {
          &quot;name&quot;: &quot;created_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        },
        &quot;updated_at&quot;: {
          &quot;name&quot;: &quot;updated_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        }
      },
      &quot;indexes&quot;: {},
      &quot;foreignKeys&quot;: {},
      &quot;compositePrimaryKeys&quot;: {},
      &quot;uniqueConstraints&quot;: {
        &quot;config_key_unique&quot;: {
          &quot;name&quot;: &quot;config_key_unique&quot;,
          &quot;columns&quot;: [&quot;key&quot;],
          &quot;nullsNotDistinct&quot;: false
        }
      },
      &quot;policies&quot;: {},
      &quot;checkConstraints&quot;: {},
      &quot;isRLSEnabled&quot;: false
    },
    &quot;public.todos&quot;: {
      &quot;name&quot;: &quot;todos&quot;,
      &quot;schema&quot;: &quot;&quot;,
      &quot;columns&quot;: {
        &quot;id&quot;: {
          &quot;name&quot;: &quot;id&quot;,
          &quot;type&quot;: &quot;serial&quot;,
          &quot;primaryKey&quot;: true,
          &quot;notNull&quot;: true
        },
        &quot;text&quot;: {
          &quot;name&quot;: &quot;text&quot;,
          &quot;type&quot;: &quot;text&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true
        },
        &quot;completed&quot;: {
          &quot;name&quot;: &quot;completed&quot;,
          &quot;type&quot;: &quot;boolean&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: false
        },
        &quot;created_at&quot;: {
          &quot;name&quot;: &quot;created_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        },
        &quot;updated_at&quot;: {
          &quot;name&quot;: &quot;updated_at&quot;,
          &quot;type&quot;: &quot;timestamp with time zone&quot;,
          &quot;primaryKey&quot;: false,
          &quot;notNull&quot;: true,
          &quot;default&quot;: &quot;now()&quot;
        }
      },
      &quot;indexes&quot;: {},
      &quot;foreignKeys&quot;: {},
      &quot;compositePrimaryKeys&quot;: {},
      &quot;uniqueConstraints&quot;: {},
      &quot;policies&quot;: {},
      &quot;checkConstraints&quot;: {},
      &quot;isRLSEnabled&quot;: false
    }
  },
  &quot;enums&quot;: {},
  &quot;schemas&quot;: {},
  &quot;views&quot;: {},
  &quot;sequences&quot;: {},
  &quot;roles&quot;: {},
  &quot;policies&quot;: {},
  &quot;_meta&quot;: {
    &quot;columns&quot;: {},
    &quot;schemas&quot;: {},
    &quot;tables&quot;: {}
  }
}
">
<input type="hidden" name="project[files][drizzle/meta/_journal.json]" value="{
  &quot;version&quot;: &quot;7&quot;,
  &quot;dialect&quot;: &quot;postgresql&quot;,
  &quot;entries&quot;: [
    {
      &quot;idx&quot;: 0,
      &quot;version&quot;: &quot;7&quot;,
      &quot;when&quot;: 1740502196428,
      &quot;tag&quot;: &quot;0000_whole_sprite&quot;,
      &quot;breakpoints&quot;: true
    },
    {
      &quot;idx&quot;: 1,
      &quot;version&quot;: &quot;7&quot;,
      &quot;when&quot;: 1740601351239,
      &quot;tag&quot;: &quot;0001_sturdy_titania&quot;,
      &quot;breakpoints&quot;: true
    },
    {
      &quot;idx&quot;: 2,
      &quot;version&quot;: &quot;7&quot;,
      &quot;when&quot;: 1740606615508,
      &quot;tag&quot;: &quot;0002_update_timestamps_trigger&quot;,
      &quot;breakpoints&quot;: true
    }
  ]
}
">
<input type="hidden" name="project[files][src/api/server.ts]" value="import express from &#39;express&#39;
import cors from &#39;cors&#39;
import { sql } from &#39;../db/postgres&#39;
import {
  validateInsertConfig,
  validateInsertTodo,
  validateUpdateConfig,
  validateUpdateTodo,
} from &#39;../db/validation&#39;
import type { Express } from &#39;express&#39;
import type { Txid } from &#39;@tanstack/electric-db-collection&#39;

// Create Express app
const app: Express = express()
const PORT = process.env.PORT || 3001

// Middleware
app.use(cors())
app.use(express.json())

// Health check endpoint
app.get(`/api/health`, (req, res) =&gt; {
  res.status(200).json({ status: `ok` })
})

// Generate a transaction ID
async function generateTxId(tx: any): Promise&lt;Txid&gt; {
  // The ::xid cast strips off the epoch, giving you the raw 32-bit value
  // that matches what PostgreSQL sends in logical replication streams
  // (and then exposed through Electric which we&#39;ll match against
  // in the client).
  const result = await tx`SELECT pg_current_xact_id()::xid::text as txid`
  const txid = result[0]?.txid

  if (txid === undefined) {
    throw new Error(`Failed to get transaction ID`)
  }

  return parseInt(txid, 10)
}

// ===== TODOS API =====

// GET all todos
app.get(`/api/todos`, async (req, res) =&gt; {
  try {
    const todos = await sql`SELECT * FROM todos`
    return res.status(200).json(todos)
  } catch (error) {
    console.error(`Error fetching todos:`, error)
    return res.status(500).json({
      error: `Failed to fetch todos`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// GET a single todo by ID
app.get(`/api/todos/:id`, async (req, res) =&gt; {
  try {
    const { id } = req.params
    const [todo] = await sql`SELECT * FROM todos WHERE id = ${id}`

    if (!todo) {
      return res.status(404).json({ error: `Todo not found` })
    }

    return res.status(200).json(todo)
  } catch (error) {
    console.error(`Error fetching todo:`, error)
    return res.status(500).json({
      error: `Failed to fetch todo`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// POST create a new todo
app.post(`/api/todos`, async (req, res) =&gt; {
  try {
    const todoData = validateInsertTodo(req.body)

    let txid!: Txid
    const newTodo = await sql.begin(async (tx) =&gt; {
      txid = await generateTxId(tx)

      const [result] = await tx`
        INSERT INTO todos ${tx(todoData)}
        RETURNING *
      `
      return result
    })

    return res.status(201).json({ todo: newTodo, txid })
  } catch (error) {
    console.error(`Error creating todo:`, error)
    return res.status(500).json({
      error: `Failed to create todo`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// PUT update a todo
app.put(`/api/todos/:id`, async (req, res) =&gt; {
  try {
    const { id } = req.params
    const todoData = validateUpdateTodo(req.body)

    let txid!: Txid
    const updatedTodo = await sql.begin(async (tx) =&gt; {
      txid = await generateTxId(tx)

      const [result] = await tx`
        UPDATE todos
        SET ${tx(todoData)}
        WHERE id = ${id}
        RETURNING *
      `

      if (!result) {
        throw new Error(`Todo not found`)
      }

      return result
    })

    return res.status(200).json({ todo: updatedTodo, txid })
  } catch (error) {
    if (error instanceof Error &amp;&amp; error.message === `Todo not found`) {
      return res.status(404).json({ error: `Todo not found` })
    }

    console.error(`Error updating todo:`, error)
    return res.status(500).json({
      error: `Failed to update todo`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// DELETE a todo
app.delete(`/api/todos/:id`, async (req, res) =&gt; {
  try {
    const { id } = req.params

    let txid!: Txid
    await sql.begin(async (tx) =&gt; {
      txid = await generateTxId(tx)

      const [result] = await tx`
        DELETE FROM todos
        WHERE id = ${id}
        RETURNING id
      `

      if (!result) {
        throw new Error(`Todo not found`)
      }
    })

    return res.status(200).json({ success: true, txid })
  } catch (error) {
    if (error instanceof Error &amp;&amp; error.message === `Todo not found`) {
      return res.status(404).json({ error: `Todo not found` })
    }

    console.error(`Error deleting todo:`, error)
    return res.status(500).json({
      error: `Failed to delete todo`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// ===== CONFIG API =====

// GET all config entries
app.get(`/api/config`, async (req, res) =&gt; {
  try {
    const config = await sql`SELECT * FROM config`
    return res.status(200).json(config)
  } catch (error) {
    console.error(`Error fetching config:`, error)
    return res.status(500).json({
      error: `Failed to fetch config`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// GET a single config by ID
app.get(`/api/config/:id`, async (req, res) =&gt; {
  try {
    const { id } = req.params
    const [config] = await sql`SELECT * FROM config WHERE id = ${id}`

    if (!config) {
      return res.status(404).json({ error: `Config not found` })
    }

    return res.status(200).json(config)
  } catch (error) {
    console.error(`Error fetching config:`, error)
    return res.status(500).json({
      error: `Failed to fetch config`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// POST create a new config
app.post(`/api/config`, async (req, res) =&gt; {
  try {
    console.log(`POST /api/config`, req.body)
    const configData = validateInsertConfig(req.body)

    let txid!: Txid
    const newConfig = await sql.begin(async (tx) =&gt; {
      txid = await generateTxId(tx)

      const [result] = await tx`
        INSERT INTO config ${tx(configData)}
        RETURNING *
      `
      return result
    })

    return res.status(201).json({ config: newConfig, txid })
  } catch (error) {
    console.error(`Error creating config:`, error)
    return res.status(500).json({
      error: `Failed to create config`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// PUT update a config
app.put(`/api/config/:id`, async (req, res) =&gt; {
  try {
    const { id } = req.params
    const configData = validateUpdateConfig(req.body)

    let txid!: Txid
    const updatedConfig = await sql.begin(async (tx) =&gt; {
      txid = await generateTxId(tx)

      const [result] = await tx`
        UPDATE config
        SET ${tx(configData)}
        WHERE id = ${id}
        RETURNING *
      `

      if (!result) {
        throw new Error(`Config not found`)
      }

      return result
    })

    return res.status(200).json({ config: updatedConfig, txid })
  } catch (error) {
    if (error instanceof Error &amp;&amp; error.message === `Config not found`) {
      return res.status(404).json({ error: `Config not found` })
    }

    console.error(`Error updating config:`, error)
    return res.status(500).json({
      error: `Failed to update config`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// DELETE a config
app.delete(`/api/config/:id`, async (req, res) =&gt; {
  try {
    const { id } = req.params

    let txid!: Txid
    await sql.begin(async (tx) =&gt; {
      txid = await generateTxId(tx)

      const [result] = await tx`
        DELETE FROM config
        WHERE id = ${id}
        RETURNING id
      `

      if (!result) {
        throw new Error(`Config not found`)
      }
    })

    return res.status(200).json({ success: true, txid })
  } catch (error) {
    if (error instanceof Error &amp;&amp; error.message === `Config not found`) {
      return res.status(404).json({ error: `Config not found` })
    }

    console.error(`Error deleting config:`, error)
    return res.status(500).json({
      error: `Failed to delete config`,
      details: error instanceof Error ? error.message : String(error),
    })
  }
})

// Start server
app.listen(PORT, () =&gt; {
  console.log(`Server running on port ${PORT}`)
})

export default app
">
<input type="hidden" name="project[files][src/assets/react.svg]" value="&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; aria-hidden=&quot;true&quot; role=&quot;img&quot; class=&quot;iconify iconify--logos&quot; width=&quot;35.93&quot; height=&quot;32&quot; preserveAspectRatio=&quot;xMidYMid meet&quot; viewBox=&quot;0 0 256 228&quot;&gt;&lt;path fill=&quot;#00D8FF&quot; d=&quot;M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;">
<input type="hidden" name="project[files][src/components/NotFound.tsx]" value="import { Link } from &#39;@tanstack/solid-router&#39;

export function NotFound() {
  return (
    &lt;div class=&quot;min-h-screen flex items-center justify-center bg-gray-50&quot;&gt;
      &lt;div class=&quot;max-w-md w-full bg-white rounded-lg shadow-lg p-8 text-center&quot;&gt;
        &lt;div class=&quot;text-6xl font-bold text-gray-300 mb-4&quot;&gt;404&lt;/div&gt;
        &lt;h1 class=&quot;text-2xl font-bold text-gray-800 mb-4&quot;&gt;Page Not Found&lt;/h1&gt;
        &lt;p class=&quot;text-gray-600 mb-8&quot;&gt;
          The page you&#39;re looking for doesn&#39;t exist or has been moved.
        &lt;/p&gt;

        &lt;div class=&quot;space-y-4&quot;&gt;
          &lt;Link to=&quot;/&quot; class=&quot;block w-full&quot;&gt;
            &lt;button class=&quot;w-full px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors&quot;&gt;
              Go Home
            &lt;/button&gt;
          &lt;/Link&gt;

          &lt;div class=&quot;flex space-x-4&quot;&gt;
            &lt;Link to=&quot;/query&quot; class=&quot;flex-1&quot;&gt;
              &lt;button class=&quot;w-full px-4 py-2 bg-green-100 text-green-700 rounded-lg hover:bg-green-200 transition-colors text-sm&quot;&gt;
                Query Demo
              &lt;/button&gt;
            &lt;/Link&gt;
            &lt;Link to=&quot;/electric&quot; class=&quot;flex-1&quot;&gt;
              &lt;button class=&quot;w-full px-4 py-2 bg-blue-100 text-blue-700 rounded-lg hover:bg-blue-200 transition-colors text-sm&quot;&gt;
                Electric Demo
              &lt;/button&gt;
            &lt;/Link&gt;
            &lt;Link to=&quot;/trailbase&quot; class=&quot;flex-1&quot;&gt;
              &lt;button class=&quot;w-full px-4 py-2 bg-purple-100 text-purple-700 rounded-lg hover:bg-purple-200 transition-colors text-sm&quot;&gt;
                TrailBase Demo
              &lt;/button&gt;
            &lt;/Link&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  )
}
">
<input type="hidden" name="project[files][src/components/TodoApp.tsx]" value="import { Link } from &#39;@tanstack/solid-router&#39;
import { For, Show, createSignal } from &#39;solid-js&#39;
import type { JSX } from &#39;solid-js&#39;
import type { Collection } from &#39;@tanstack/solid-db&#39;
import type { SelectConfig, SelectTodo } from &#39;../db/validation&#39;

interface TodoAppProps {
  todos: Array&lt;SelectTodo&gt;
  configData: Array&lt;SelectConfig&gt;
  todoCollection: Collection&lt;SelectTodo&gt;
  configCollection: Collection&lt;SelectConfig&gt;
  title: string
}

export function TodoApp(props: TodoAppProps) {
  const [newTodo, setNewTodo] = createSignal(``)

  // Define a type-safe helper function to get config values
  const getConfigValue = (key: string): string =&gt; {
    for (const config of props.configData) {
      if (config.key === key) {
        return config.value
      }
    }
    return ``
  }

  // Define a helper function to update config values
  const setConfigValue = (key: string, value: string): void =&gt; {
    for (const config of props.configData) {
      if (config.key === key) {
        props.configCollection.update(config.id, (draft) =&gt; {
          draft.value = value
        })
        return
      }
    }

    // If the config doesn&#39;t exist yet, create it
    props.configCollection.insert({
      id: Math.round(Math.random() * 1000000),
      key,
      value,
      created_at: new Date(),
      updated_at: new Date(),
    })
  }

  const backgroundColor = getConfigValue(`backgroundColor`)

  // Function to generate a complementary color
  const getComplementaryColor = (hexColor: string): string =&gt; {
    // Default to a nice blue if no color is provided
    if (!hexColor) return `#3498db`

    // Remove the hash if it exists
    const color = hexColor.replace(`#`, ``)

    // Convert hex to RGB
    const r = parseInt(color.substr(0, 2), 16)
    const g = parseInt(color.substr(2, 2), 16)
    const b = parseInt(color.substr(4, 2), 16)

    // Calculate complementary color (inverting the RGB values)
    const compR = 255 - r
    const compG = 255 - g
    const compB = 255 - b

    // Convert back to hex
    const compHex =
      `#` +
      ((1 &lt;&lt; 24) + (compR &lt;&lt; 16) + (compG &lt;&lt; 8) + compB).toString(16).slice(1)

    // Calculate brightness of the background
    const brightness = r * 0.299 + g * 0.587 + b * 0.114

    // If the complementary color doesn&#39;t have enough contrast, adjust it
    const compBrightness = compR * 0.299 + compG * 0.587 + compB * 0.114
    const brightnessDiff = Math.abs(brightness - compBrightness)

    if (brightnessDiff &lt; 128) {
      // Not enough contrast, use a more vibrant alternative
      if (brightness &gt; 128) {
        // Dark color for light background
        return `#8e44ad` // Purple
      } else {
        // Light color for dark background
        return `#f1c40f` // Yellow
      }
    }

    return compHex
  }

  const titleColor = getComplementaryColor(backgroundColor)

  const handleColorChange: JSX.CustomEventHandlersCamelCase&lt;HTMLInputElement&gt;[`onInput`] =
    (e) =&gt; {
      const newColor = e.target.value
      setConfigValue(`backgroundColor`, newColor)
    }

  const handleSubmit: JSX.CustomEventHandlersCamelCase&lt;HTMLFormElement&gt;[`onSubmit`] =
    (e) =&gt; {
      e.preventDefault()
      if (!newTodo().trim()) return

      props.todoCollection.insert({
        text: newTodo(),
        completed: false,
        id: Math.round(Math.random() * 1000000),
        created_at: new Date(),
        updated_at: new Date(),
      })
      setNewTodo(``)
    }

  const activeTodos = props.todos.filter((todo) =&gt; !todo.completed)
  const completedTodos = props.todos.filter((todo) =&gt; todo.completed)

  return (
    &lt;div
      class=&quot;min-h-screen flex items-start justify-center overflow-auto py-8&quot;
      style={{ &#39;background-color&#39;: backgroundColor }}
    &gt;
      &lt;div style={{ width: `550px` }} class=&quot;mx-auto relative&quot;&gt;
        &lt;div class=&quot;text-center mb-8&quot;&gt;
          &lt;h1 class=&quot;text-[70px] font-bold mb-4&quot; style={{ color: titleColor }}&gt;
            {props.title}
          &lt;/h1&gt;

          {/* Navigation */}
          &lt;div class=&quot;flex justify-center gap-4 mb-4&quot;&gt;
            &lt;Link
              to=&quot;/&quot;
              class=&quot;px-4 py-2 bg-gray-500 text-white rounded hover:bg-gray-600 transition-colors&quot;
            &gt;
              ← Home
            &lt;/Link&gt;
            &lt;Link
              to=&quot;/query&quot;
              class=&quot;px-4 py-2 bg-green-700 text-white rounded hover:bg-green-800 transition-colors&quot;
            &gt;
              Query
            &lt;/Link&gt;
            &lt;Link
              to=&quot;/electric&quot;
              class=&quot;px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition-colors&quot;
            &gt;
              Electric
            &lt;/Link&gt;
            &lt;Link
              to=&quot;/trailbase&quot;
              class=&quot;px-4 py-2 bg-purple-600 text-white rounded hover:bg-purple-700 transition-colors&quot;
            &gt;
              TrailBase
            &lt;/Link&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;mb-4 flex justify-end&quot;&gt;
          &lt;div class=&quot;flex items-center&quot;&gt;
            &lt;label
              for=&quot;colorPicker&quot;
              class=&quot;mr-2 text-sm font-medium text-gray-700&quot;
              style={{ color: titleColor }}
            &gt;
              Background Color:
            &lt;/label&gt;
            &lt;input
              type=&quot;color&quot;
              id=&quot;colorPicker&quot;
              value={backgroundColor}
              onInput={handleColorChange}
              class=&quot;cursor-pointer border border-gray-300 rounded&quot;
            /&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;bg-white shadow-[0_2px_4px_0_rgba(0,0,0,0.2),0_25px_50px_0_rgba(0,0,0,0.1)] relative&quot;&gt;
          &lt;form onSubmit={handleSubmit} class=&quot;relative&quot;&gt;
            &lt;Show when={props.todos.length &gt; 0}&gt;
              &lt;button
                type=&quot;button&quot;
                class=&quot;absolute left-0 w-12 h-full text-[30px] text-[#e6e6e6] hover:text-[#4d4d4d]&quot;
                onClick={() =&gt; {
                  const allCompleted =
                    completedTodos.length === props.todos.length
                  const todosToToggle = allCompleted
                    ? completedTodos
                    : activeTodos
                  props.todoCollection.update(
                    todosToToggle.map((todo) =&gt; todo.id),
                    (drafts) =&gt; {
                      drafts.forEach(
                        (draft) =&gt; (draft.completed = !allCompleted),
                      )
                    },
                  )
                }}
              &gt;
                ❯
              &lt;/button&gt;
            &lt;/Show&gt;
            &lt;input
              type=&quot;text&quot;
              value={newTodo()}
              onChange={(e) =&gt; setNewTodo(e.target.value)}
              placeholder=&quot;What needs to be done?&quot;
              class=&quot;w-full py-4 pl-[60px] pr-4 text-2xl font-light border-none shadow-[inset_0_-2px_1px_rgba(0,0,0,0.03)] box-border&quot;
              style={{
                background: `rgba(0, 0, 0, 0.003)`,
              }}
            /&gt;
          &lt;/form&gt;

          &lt;Show when={props.todos.length &gt; 0}&gt;
            &lt;&gt;
              &lt;ul class=&quot;my-0 mx-0 p-0 list-none&quot;&gt;
                &lt;For each={props.todos}&gt;
                  {(todo) =&gt; (
                    &lt;li class=&quot;relative border-b border-[#ededed] last:border-none group&quot;&gt;
                      &lt;div class=&quot;flex items-center h-[58px] pl-[60px]&quot;&gt;
                        &lt;input
                          type=&quot;checkbox&quot;
                          checked={todo.completed}
                          onChange={() =&gt;
                            props.todoCollection.update(todo.id, (draft) =&gt; {
                              draft.completed = !draft.completed
                            })
                          }
                          class=&quot;absolute left-[12px] top-0 bottom-0 my-auto h-[40px] w-[40px] cursor-pointer&quot;
                        /&gt;
                        &lt;label
                          class={`block leading-[1.2] py-[15px] px-[15px] text-2xl transition-colors ${
                            todo.completed ? `text-[#d9d9d9] line-through` : ``
                          }`}
                        &gt;
                          {todo.text}
                        &lt;/label&gt;
                        &lt;button
                          onClick={() =&gt; {
                            props.todoCollection.delete(todo.id)
                          }}
                          class=&quot;hidden group-hover:block absolute right-[10px] w-[40px] h-[40px] my-auto top-0 bottom-0 text-[30px] text-[#cc9a9a] hover:text-[#af5b5e] transition-colors&quot;
                        &gt;
                          ×
                        &lt;/button&gt;
                      &lt;/div&gt;
                    &lt;/li&gt;
                  )}
                &lt;/For&gt;
              &lt;/ul&gt;

              &lt;footer class=&quot;text-[14px] text-[#777] py-[10px] px-[15px] h-[40px] relative border-t border-[#e6e6e6] flex justify-between items-center&quot;&gt;
                &lt;span class=&quot;text-[inherit]&quot;&gt;
                  {activeTodos.length}
                  {` `}
                  {activeTodos.length === 1 ? `item` : `items`} left
                &lt;/span&gt;
                {completedTodos.length &gt; 0 &amp;&amp; (
                  &lt;button
                    onClick={() =&gt; {
                      props.todoCollection.delete(
                        completedTodos.map((todo) =&gt; todo.id),
                      )
                    }}
                    class=&quot;text-inherit hover:underline&quot;
                  &gt;
                    Clear completed
                  &lt;/button&gt;
                )}
              &lt;/footer&gt;
            &lt;/&gt;
          &lt;/Show&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  )
}
">
<input type="hidden" name="project[files][src/db/index.ts]" value="import { drizzle } from &#39;drizzle-orm/node-postgres&#39;
import { Pool } from &#39;pg&#39;
import * as schema from &#39;./schema&#39;

// Create a PostgreSQL pool
const pool = new Pool({
  host: process.env.DB_HOST || `localhost`,
  port: parseInt(process.env.DB_PORT || `5432`),
  user: process.env.DB_USER || `postgres`,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME || `todo_app`,
})

// Create drizzle database instance
export const db = drizzle(pool, { schema })
">
<input type="hidden" name="project[files][src/db/postgres.ts]" value="import postgres from &#39;postgres&#39;

// Create a postgres instance
export const sql = postgres({
  host: `localhost`,
  port: 54322,
  user: `postgres`,
  password: `postgres`,
  database: `todo_app`,
})
">
<input type="hidden" name="project[files][src/db/schema.ts]" value="import { boolean, pgTable, serial, text, timestamp } from &#39;drizzle-orm/pg-core&#39;

export const todos = pgTable(`todos`, {
  id: serial(`id`).primaryKey(),
  text: text(`text`).notNull(),
  completed: boolean(`completed`).notNull().default(false),
  created_at: timestamp(`created_at`, { withTimezone: true })
    .defaultNow()
    .notNull(),
  updated_at: timestamp(`updated_at`, { withTimezone: true })
    .notNull()
    .defaultNow(),
})

export type Todo = typeof todos.$inferSelect
export type NewTodo = typeof todos.$inferInsert

export const config = pgTable(`config`, {
  id: serial(`id`).primaryKey(),
  key: text(`key`).notNull().unique(),
  value: text(`value`).notNull(),
  created_at: timestamp(`created_at`, { withTimezone: true })
    .notNull()
    .defaultNow(),
  updated_at: timestamp(`updated_at`, { withTimezone: true })
    .notNull()
    .defaultNow(),
})

export type Config = typeof config.$inferSelect
export type NewConfig = typeof config.$inferInsert
">
<input type="hidden" name="project[files][src/db/validation.ts]" value="import { createInsertSchema, createSelectSchema } from &#39;drizzle-zod&#39;
import { config, todos } from &#39;./schema&#39;
import type { z } from &#39;zod&#39;

// Auto-generated schemas from Drizzle schema (omit auto-generated fields)
export const insertTodoSchema = createInsertSchema(todos).omit({
  id: true,
  created_at: true,
  updated_at: true,
})
export const selectTodoSchema = createSelectSchema(todos)

// Partial schema for updates
export const updateTodoSchema = insertTodoSchema.partial().strict()

// Config schemas (omit auto-generated fields)
export const insertConfigSchema = createInsertSchema(config).omit({
  id: true,
  created_at: true,
  updated_at: true,
})
export const selectConfigSchema = createSelectSchema(config)
export const updateConfigSchema = insertConfigSchema.partial().strict()

// Type inference
export type InsertTodo = z.infer&lt;typeof insertTodoSchema&gt;
export type SelectTodo = z.infer&lt;typeof selectTodoSchema&gt;
export type UpdateTodo = z.infer&lt;typeof updateTodoSchema&gt;

export type InsertConfig = z.infer&lt;typeof insertConfigSchema&gt;
export type SelectConfig = z.infer&lt;typeof selectConfigSchema&gt;
export type UpdateConfig = z.infer&lt;typeof updateConfigSchema&gt;

// Validation functions
export const validateInsertTodo = (data: unknown): InsertTodo =&gt; {
  const parsed = insertTodoSchema.parse(data)
  if (parsed.text === `really hard todo`) {
    throw new Error(`we don&#39;t want to do really hard todos`)
  }
  return parsed
}

export const validateSelectTodo = (data: unknown): SelectTodo =&gt; {
  return selectTodoSchema.parse(data)
}

export const validateUpdateTodo = (data: unknown): UpdateTodo =&gt; {
  return updateTodoSchema.parse(data)
}

export const validateInsertConfig = (data: unknown): InsertConfig =&gt; {
  return insertConfigSchema.parse(data)
}

export const validateSelectConfig = (data: unknown): SelectConfig =&gt; {
  return selectConfigSchema.parse(data)
}

export const validateUpdateConfig = (data: unknown): UpdateConfig =&gt; {
  return updateConfigSchema.parse(data)
}

// Safe parsing functions that return Result type instead of throwing
export const safeParseInsertTodo = (data: unknown) =&gt; {
  return insertTodoSchema.safeParse(data)
}

export const safeParseSelectTodo = (data: unknown) =&gt; {
  return selectTodoSchema.safeParse(data)
}

export const safeParseUpdateTodo = (data: unknown) =&gt; {
  return updateTodoSchema.safeParse(data)
}

export const safeParseInsertConfig = (data: unknown) =&gt; {
  return insertConfigSchema.safeParse(data)
}

export const safeParseSelectConfig = (data: unknown) =&gt; {
  return selectConfigSchema.safeParse(data)
}

export const safeParseUpdateConfig = (data: unknown) =&gt; {
  return updateConfigSchema.safeParse(data)
}
">
<input type="hidden" name="project[files][src/lib/api.ts]" value="import type { SelectConfig, SelectTodo } from &#39;../db/validation&#39;

// API helper for todos and config
const API_BASE_URL = `/api`

export const api = {
  // Todo API methods
  todos: {
    getAll: async (): Promise&lt;Array&lt;SelectTodo&gt;&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/todos`)
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    getById: async (id: number): Promise&lt;SelectTodo&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/todos/${id}`)
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    create: async (
      todo: Partial&lt;SelectTodo&gt;,
    ): Promise&lt;{ todo: SelectTodo; txid: number }&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/todos`, {
        method: `POST`,
        headers: { &#39;Content-Type&#39;: `application/json` },
        body: JSON.stringify(todo),
      })
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    update: async (
      id: unknown,
      changes: Partial&lt;SelectTodo&gt;,
    ): Promise&lt;{ todo: SelectTodo; txid: number }&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/todos/${id}`, {
        method: `PUT`,
        headers: { &#39;Content-Type&#39;: `application/json` },
        body: JSON.stringify(changes),
      })
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    delete: async (
      id: unknown,
    ): Promise&lt;{ success: boolean; txid: number }&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/todos/${id}`, {
        method: `DELETE`,
      })
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
  },

  // Config API methods
  config: {
    getAll: async (): Promise&lt;Array&lt;SelectConfig&gt;&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/config`)
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    getById: async (id: number): Promise&lt;SelectConfig&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/config/${id}`)
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    create: async (
      config: Partial&lt;SelectConfig&gt;,
    ): Promise&lt;{ config: SelectConfig; txid: number }&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/config`, {
        method: `POST`,
        headers: { &#39;Content-Type&#39;: `application/json` },
        body: JSON.stringify(config),
      })
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    update: async (
      id: number,
      changes: Partial&lt;SelectConfig&gt;,
    ): Promise&lt;{ config: SelectConfig; txid: number }&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/config/${id}`, {
        method: `PUT`,
        headers: { &#39;Content-Type&#39;: `application/json` },
        body: JSON.stringify(changes),
      })
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
    delete: async (id: number): Promise&lt;{ success: boolean; txid: number }&gt; =&gt; {
      const response = await fetch(`${API_BASE_URL}/config/${id}`, {
        method: `DELETE`,
      })
      if (!response.ok)
        throw new Error(`HTTP error! Status: ${response.status}`)
      return response.json()
    },
  },
}
">
<input type="hidden" name="project[files][src/lib/collections.ts]" value="import { createCollection } from &#39;@tanstack/solid-db&#39;
import { electricCollectionOptions } from &#39;@tanstack/electric-db-collection&#39;
import { queryCollectionOptions } from &#39;@tanstack/query-db-collection&#39;
import { trailBaseCollectionOptions } from &#39;@tanstack/trailbase-db-collection&#39;
import { QueryClient } from &#39;@tanstack/query-core&#39;
import { initClient } from &#39;trailbase&#39;
import { selectConfigSchema, selectTodoSchema } from &#39;../db/validation&#39;
import { api } from &#39;./api&#39;
import type { SelectConfig, SelectTodo } from &#39;../db/validation&#39;

// Create a query client for query collections
const queryClient = new QueryClient()

// Create a TrailBase client.
const trailBaseClient = initClient(`http://localhost:4000`)

// Electric Todo Collection
export const electricTodoCollection = createCollection(
  electricCollectionOptions({
    id: `todos`,
    shapeOptions: {
      url: `http://localhost:3003/v1/shape`,
      params: {
        table: `todos`,
      },
      parser: {
        timestamptz: (date: string) =&gt; new Date(date),
      },
    },
    getKey: (item) =&gt; item.id,
    schema: selectTodoSchema,
    onInsert: async ({ transaction, collection }) =&gt; {
      const {
        id: _id,
        created_at: _f,
        updated_at: _ff,
        ...modified
      } = transaction.mutations[0].modified
      const response = await api.todos.create(modified)
      await collection.utils.awaitTxId(response.txid)
    },
    onUpdate: async ({ transaction, collection }) =&gt; {
      const txids = await Promise.all(
        transaction.mutations.map(async (mutation) =&gt; {
          const { original, changes } = mutation
          const response = await api.todos.update(original.id, changes)
          return response.txid
        }),
      )
      await Promise.all(txids.map((txid) =&gt; collection.utils.awaitTxId(txid)))
    },
    onDelete: async ({ transaction, collection }) =&gt; {
      const txids = await Promise.all(
        transaction.mutations.map(async (mutation) =&gt; {
          const { original } = mutation
          const response = await api.todos.delete(original.id)
          return response.txid
        }),
      )
      await Promise.all(txids.map((txid) =&gt; collection.utils.awaitTxId(txid)))
    },
  }),
)

// Query Todo Collection
export const queryTodoCollection = createCollection(
  queryCollectionOptions({
    id: `todos`,
    queryKey: [`todos`],
    refetchInterval: 3000,
    queryFn: async () =&gt; {
      const todos = await api.todos.getAll()
      return todos.map((todo) =&gt; ({
        ...todo,
        created_at: new Date(todo.created_at),
        updated_at: new Date(todo.updated_at),
      }))
    },
    getKey: (item) =&gt; item.id,
    schema: selectTodoSchema,
    queryClient,
    onInsert: async ({ transaction, collection }) =&gt; {
      const {
        id: _id,
        created_at: _crea,
        updated_at: _up,
        ...modified
      } = transaction.mutations[0].modified
      await api.todos.create(modified)
      await collection.utils.refetch()
    },
    onUpdate: async ({ transaction, collection }) =&gt; {
      await Promise.all(
        transaction.mutations.map(async (mutation) =&gt; {
          const { original, changes } = mutation
          return await api.todos.update(original.id, changes)
        }),
      )
      await collection.utils.refetch()
    },
    onDelete: async ({ transaction, collection }) =&gt; {
      await Promise.all(
        transaction.mutations.map(async (mutation) =&gt; {
          const { original } = mutation
          await api.todos.delete(original.id)
        }),
      )
      await collection.utils.refetch()
    },
  }),
)

type Todo = {
  id: number
  text: string
  completed: boolean
  created_at: number
  updated_at: number
}

// TrailBase Todo Collection
export const trailBaseTodoCollection = createCollection(
  trailBaseCollectionOptions&lt;SelectTodo, Todo&gt;({
    id: `todos`,
    getKey: (item) =&gt; item.id,
    recordApi: trailBaseClient.records(`todos`),
    // Re-using the example&#39;s drizzle-schema requires remapping the items.
    parse: {
      created_at: (ts) =&gt; new Date(ts * 1000),
      updated_at: (ts) =&gt; new Date(ts * 1000),
    },
    serialize: {
      created_at: (date) =&gt; Math.floor(date.valueOf() / 1000),
      updated_at: (date) =&gt; Math.floor(date.valueOf() / 1000),
    },
  }),
)

// Electric Config Collection
export const electricConfigCollection = createCollection(
  electricCollectionOptions({
    id: `config`,
    shapeOptions: {
      url: `http://localhost:3003/v1/shape`,
      params: {
        table: `config`,
      },
      parser: {
        timestamptz: (date: string) =&gt; new Date(date),
      },
    },
    getKey: (item) =&gt; item.id,
    schema: selectConfigSchema,
    onInsert: async ({ transaction, collection }) =&gt; {
      const modified = transaction.mutations[0].modified
      const response = await api.config.create(modified)
      await collection.utils.awaitTxId(response.txid)
    },
    onUpdate: async ({ transaction, collection }) =&gt; {
      const txids = await Promise.all(
        transaction.mutations.map(async (mutation) =&gt; {
          const { original, changes } = mutation
          const response = await api.config.update(original.id, changes)
          return response.txid
        }),
      )
      await Promise.all(txids.map((txid) =&gt; collection.utils.awaitTxId(txid)))
    },
  }),
)

// Query Config Collection
export const queryConfigCollection = createCollection(
  queryCollectionOptions({
    id: `config`,
    queryKey: [`config`],
    refetchInterval: 3000,
    queryFn: async () =&gt; {
      const configs = await api.config.getAll()
      return configs.map((config) =&gt; ({
        ...config,
        created_at: new Date(config.created_at),
        updated_at: new Date(config.updated_at),
      }))
    },
    getKey: (item) =&gt; item.id,
    schema: selectConfigSchema,
    queryClient,
    onInsert: async ({ transaction, collection }) =&gt; {
      const modified = transaction.mutations[0].modified
      await api.config.create(modified)
      await collection.utils.refetch()
    },
    onUpdate: async ({ transaction, collection }) =&gt; {
      await Promise.all(
        transaction.mutations.map(async (mutation) =&gt; {
          const { original, changes } = mutation
          await api.config.update(original.id, changes)
        }),
      )
      await collection.utils.refetch()
    },
  }),
)

type Config = {
  id: number
  key: string
  value: string
  created_at: number
  updated_at: number
}

// TrailBase Config Collection
export const trailBaseConfigCollection = createCollection(
  trailBaseCollectionOptions&lt;SelectConfig, Config&gt;({
    id: `config`,
    getKey: (item) =&gt; item.id,
    recordApi: trailBaseClient.records(`config`),
    // Re-using the example&#39;s drizzle-schema requires remapping the items.
    parse: {
      created_at: (ts) =&gt; new Date(ts * 1000),
      updated_at: (ts) =&gt; new Date(ts * 1000),
    },
    serialize: {
      created_at: (date) =&gt; Math.floor(date.valueOf() / 1000),
      updated_at: (date) =&gt; Math.floor(date.valueOf() / 1000),
    },
  }),
)
">
<input type="hidden" name="project[files][src/routes/__root.tsx]" value="import {
  HeadContent,
  Outlet,
  Scripts,
  createRootRoute,
} from &#39;@tanstack/solid-router&#39;
import { HydrationScript } from &#39;solid-js/web&#39;
import appCss from &#39;../styles.css?url&#39;
import type { ParentProps } from &#39;solid-js&#39;

export const Route = createRootRoute({
  head: () =&gt; ({
    meta: [
      {
        charSet: `utf-8`,
      },
      {
        name: `viewport`,
        content: `width=device-width, initial-scale=1`,
      },
      {
        title: `TanStack Solid DB Example`,
      },
    ],
    links: [
      {
        rel: `stylesheet`,
        href: appCss,
      },
    ],
  }),
  shellComponent: RootDocument,
  component: () =&gt; &lt;Outlet /&gt;,
})

function RootDocument(props: ParentProps) {
  return (
    &lt;html lang=&quot;en&quot;&gt;
      &lt;head&gt;
        &lt;HeadContent /&gt;
        &lt;HydrationScript /&gt;
      &lt;/head&gt;
      &lt;body&gt;
        {props.children}
        &lt;Scripts /&gt;
      &lt;/body&gt;
    &lt;/html&gt;
  )
}
">
<input type="hidden" name="project[files][src/routes/electric.tsx]" value="import { createFileRoute } from &#39;@tanstack/solid-router&#39;
import { useLiveQuery } from &#39;@tanstack/solid-db&#39;
import { Suspense } from &#39;solid-js&#39;
import {
  electricConfigCollection,
  electricTodoCollection,
} from &#39;../lib/collections&#39;
import { TodoApp } from &#39;../components/TodoApp&#39;

export const Route = createFileRoute(`/electric`)({
  component: ElectricPage,
  ssr: false,
  loader: async () =&gt; {
    await Promise.all([
      electricTodoCollection.preload(),
      electricConfigCollection.preload(),
    ])

    return null
  },
})

function ElectricPage() {
  // Get data using live queries with Electric collections
  const todos = useLiveQuery((q) =&gt;
    q
      .from({ todo: electricTodoCollection })
      .orderBy(({ todo }) =&gt; todo.created_at, `asc`),
  )

  const configData = useLiveQuery((q) =&gt;
    q.from({ config: electricConfigCollection }),
  )

  return (
    &lt;Suspense fallback=&quot;Loading...&quot;&gt;
      &lt;TodoApp
        todos={todos()}
        configData={configData()}
        todoCollection={electricTodoCollection}
        configCollection={electricConfigCollection}
        title=&quot;todos (electric)&quot;
      /&gt;
    &lt;/Suspense&gt;
  )
}
">
<input type="hidden" name="project[files][src/routes/index.tsx]" value="import { Link, createFileRoute } from &#39;@tanstack/solid-router&#39;

export const Route = createFileRoute(`/`)({
  component: HomePage,
})

function HomePage() {
  return (
    &lt;div class=&quot;min-h-screen flex items-center justify-center bg-gray-50&quot;&gt;
      &lt;div class=&quot;max-w-md w-full bg-white rounded-lg shadow-lg p-8&quot;&gt;
        &lt;h1 class=&quot;text-3xl font-bold text-center mb-8 text-gray-800&quot;&gt;
          TanStack Solid DB Demo
        &lt;/h1&gt;

        &lt;p class=&quot;text-gray-600 text-center mb-8&quot;&gt;
          Choose a collection type to see how TanStack Solid DB works with
          different data sources:
        &lt;/p&gt;

        &lt;div class=&quot;space-y-4&quot;&gt;
          &lt;Link to=&quot;/query&quot; class=&quot;block w-full&quot;&gt;
            &lt;button class=&quot;w-full px-6 py-4 bg-green-700 text-white rounded-lg hover:bg-green-800 transition-colors text-left&quot;&gt;
              &lt;div class=&quot;font-semibold&quot;&gt;Query Collections&lt;/div&gt;
              &lt;div class=&quot;text-sm opacity-90 mt-1&quot;&gt;
                Traditional polling with TanStack Query
              &lt;/div&gt;
            &lt;/button&gt;
          &lt;/Link&gt;
          &lt;Link to=&quot;/electric&quot; class=&quot;block w-full&quot;&gt;
            &lt;button class=&quot;w-full px-6 py-4 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors text-left&quot;&gt;
              &lt;div class=&quot;font-semibold&quot;&gt;Electric Collections&lt;/div&gt;
              &lt;div class=&quot;text-sm opacity-90 mt-1&quot;&gt;
                Real-time sync with ElectricSQL
              &lt;/div&gt;
            &lt;/button&gt;
          &lt;/Link&gt;
          &lt;Link to=&quot;/trailbase&quot; class=&quot;block w-full&quot;&gt;
            &lt;button class=&quot;w-full px-6 py-4 bg-purple-600 text-white rounded-lg hover:bg-purple-700 transition-colors text-left&quot;&gt;
              &lt;div class=&quot;font-semibold&quot;&gt;TrailBase Collections&lt;/div&gt;
              &lt;div class=&quot;text-sm opacity-90 mt-1&quot;&gt;
                Real-time sync with TrailBase
              &lt;/div&gt;
            &lt;/button&gt;
          &lt;/Link&gt;
        &lt;/div&gt;

        &lt;div class=&quot;mt-8 text-xs text-center text-gray-500&quot;&gt;
          All examples use the same API and UI components, showcasing the
          unified interface of TanStack Solid DB.
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  )
}
">
<input type="hidden" name="project[files][src/routes/query.tsx]" value="import { createFileRoute } from &#39;@tanstack/solid-router&#39;
import { useLiveQuery } from &#39;@tanstack/solid-db&#39;
import { Suspense } from &#39;solid-js&#39;
import { queryConfigCollection, queryTodoCollection } from &#39;../lib/collections&#39;
import { TodoApp } from &#39;../components/TodoApp&#39;

export const Route = createFileRoute(`/query`)({
  component: QueryPage,
  ssr: false,
  loader: async () =&gt; {
    await Promise.all([
      queryTodoCollection.preload(),
      queryConfigCollection.preload(),
    ])

    return null
  },
})

function QueryPage() {
  // Get data using live queries with Query collections
  const todos = useLiveQuery((q) =&gt;
    q
      .from({ todo: queryTodoCollection })
      .orderBy(({ todo }) =&gt; todo.created_at, `asc`),
  )

  const configData = useLiveQuery((q) =&gt;
    q.from({ config: queryConfigCollection }),
  )

  return (
    &lt;Suspense fallback=&quot;Loading...&quot;&gt;
      &lt;TodoApp
        todos={todos()}
        configData={configData()}
        todoCollection={queryTodoCollection}
        configCollection={queryConfigCollection}
        title=&quot;todos (query)&quot;
      /&gt;
    &lt;/Suspense&gt;
  )
}
">
<input type="hidden" name="project[files][src/routes/trailbase.tsx]" value="import { createFileRoute } from &#39;@tanstack/solid-router&#39;
import { useLiveQuery } from &#39;@tanstack/solid-db&#39;
import {
  trailBaseConfigCollection,
  trailBaseTodoCollection,
} from &#39;../lib/collections&#39;
import { TodoApp } from &#39;../components/TodoApp&#39;

export const Route = createFileRoute(`/trailbase`)({
  component: TrailBasePage,
  ssr: false,
  loader: async () =&gt; {
    await Promise.all([
      trailBaseTodoCollection.preload(),
      trailBaseConfigCollection.preload(),
    ])

    return null
  },
})

function TrailBasePage() {
  // Get data using live queries with TrailBase collections
  const todos = useLiveQuery((q) =&gt;
    q
      .from({ todo: trailBaseTodoCollection })
      .orderBy(({ todo }) =&gt; todo.created_at, `asc`),
  )

  const configData = useLiveQuery((q) =&gt;
    q.from({ config: trailBaseConfigCollection }),
  )

  return (
    &lt;TodoApp
      todos={todos()}
      configData={configData()}
      todoCollection={trailBaseTodoCollection}
      configCollection={trailBaseConfigCollection}
      title=&quot;todos (TrailBase)&quot;
    /&gt;
  )
}
">
<input type="hidden" name="project[files][traildepot/migrations/U1752518650__add_admin_user.sql]" value="-- Create default admin user with top &quot;secret&quot; password.
INSERT INTO _user
  (email, password_hash, verified, admin)
VALUES
  (&#39;admin@localhost&#39;, (hash_password(&#39;secret&#39;)), TRUE, TRUE);
">
<input type="hidden" name="project[files][traildepot/migrations/U1752518653__create_table_todos.sql]" value="CREATE TABLE todos (
  &quot;id&quot;          INTEGER PRIMARY KEY NOT NULL,
  &quot;text&quot;        TEXT NOT NULL,
  &quot;completed&quot;   INTEGER NOT NULL DEFAULT 0,
  &quot;created_at&quot;  INTEGER NOT NULL DEFAULT(UNIXEPOCH()),
  &quot;updated_at&quot;  INTEGER NOT NULL DEFAULT(UNIXEPOCH())
) STRICT;

CREATE TRIGGER _todos__update_trigger AFTER UPDATE ON todos FOR EACH ROW
  BEGIN
    UPDATE todos SET updated_at = UNIXEPOCH() WHERE id = OLD.id;
  END;
">
<input type="hidden" name="project[files][traildepot/migrations/U1752518746__create_table_config.sql]" value="CREATE TABLE config (
  &quot;id&quot;          INTEGER PRIMARY KEY NOT NULL,
  &quot;key&quot;         TEXT NOT NULL,
  &quot;value&quot;       TEXT NOT NULL,
  &quot;created_at&quot;  INTEGER NOT NULL DEFAULT(UNIXEPOCH()),
  &quot;updated_at&quot;  INTEGER NOT NULL DEFAULT(UNIXEPOCH())
) STRICT;

CREATE UNIQUE INDEX _config_key_index ON config (&quot;key&quot;);

CREATE TRIGGER _config__update_trigger AFTER UPDATE ON config FOR EACH ROW
  BEGIN
    UPDATE config SET updated_at = UNIXEPOCH() WHERE id = OLD.id;
  END;

-- Insert default config for background color
INSERT INTO config (&quot;key&quot;, &quot;value&quot;) VALUES (&#39;backgroundColor&#39;, &#39;#f5f5f5&#39;);
">
<input type="hidden" name="project[files][src/routes/api/config.$id.ts]" value="import { createFileRoute } from &#39;@tanstack/solid-router&#39;
import { json } from &#39;@tanstack/solid-start&#39;
import { sql } from &#39;../../db/postgres&#39;
import { validateUpdateConfig } from &#39;../../db/validation&#39;
import type { Txid } from &#39;@tanstack/electric-db-collection&#39;

// Generate a transaction ID
async function generateTxId(tx: any): Promise&lt;Txid&gt; {
  const result = await tx`SELECT pg_current_xact_id()::xid::text as txid`
  const txid = result[0]?.txid

  if (txid === undefined) {
    throw new Error(`Failed to get transaction ID`)
  }

  return parseInt(txid, 10)
}

export const Route = createFileRoute(`/api/config/$id`)({
  server: {
    handlers: {
      GET: async ({ params }) =&gt; {
        try {
          const { id } = params
          const [config] = await sql`SELECT * FROM config WHERE id = ${id}`

          if (!config) {
            return json({ error: `Config not found` }, { status: 404 })
          }

          return json(config)
        } catch (error) {
          console.error(`Error fetching config:`, error)
          return json(
            {
              error: `Failed to fetch config`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
      PUT: async ({ params, request }) =&gt; {
        try {
          const { id } = params
          const body = await request.json()
          const configData = validateUpdateConfig(body)

          let txid!: Txid
          const updatedConfig = await sql.begin(async (tx) =&gt; {
            txid = await generateTxId(tx)

            const [result] = await tx`
          UPDATE config
          SET ${tx(configData)}
          WHERE id = ${id}
          RETURNING *
        `

            if (!result) {
              throw new Error(`Config not found`)
            }

            return result
          })

          return json({ config: updatedConfig, txid })
        } catch (error) {
          if (error instanceof Error &amp;&amp; error.message === `Config not found`) {
            return json({ error: `Config not found` }, { status: 404 })
          }

          console.error(`Error updating config:`, error)
          return json(
            {
              error: `Failed to update config`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
      DELETE: async ({ params }) =&gt; {
        try {
          const { id } = params

          let txid!: Txid
          await sql.begin(async (tx) =&gt; {
            txid = await generateTxId(tx)

            const [result] = await tx`
          DELETE FROM config
          WHERE id = ${id}
          RETURNING id
        `

            if (!result) {
              throw new Error(`Config not found`)
            }
          })

          return json({ success: true, txid })
        } catch (error) {
          if (error instanceof Error &amp;&amp; error.message === `Config not found`) {
            return json({ error: `Config not found` }, { status: 404 })
          }

          console.error(`Error deleting config:`, error)
          return json(
            {
              error: `Failed to delete config`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
    },
  },
})
">
<input type="hidden" name="project[files][src/routes/api/config.ts]" value="import { createFileRoute } from &#39;@tanstack/solid-router&#39;
import { json } from &#39;@tanstack/solid-start&#39;
import { sql } from &#39;../../db/postgres&#39;
import { validateInsertConfig } from &#39;../../db/validation&#39;
import type { Txid } from &#39;@tanstack/electric-db-collection&#39;

// Generate a transaction ID
async function generateTxId(tx: any): Promise&lt;Txid&gt; {
  const result = await tx`SELECT pg_current_xact_id()::xid::text as txid`
  const txid = result[0]?.txid

  if (txid === undefined) {
    throw new Error(`Failed to get transaction ID`)
  }

  return parseInt(txid, 10)
}

export const Route = createFileRoute(`/api/config`)({
  server: {
    handlers: {
      GET: async ({ request: _request }) =&gt; {
        try {
          const config = await sql`SELECT * FROM config`
          return json(config)
        } catch (error) {
          console.error(`Error fetching config:`, error)
          return json(
            {
              error: `Failed to fetch config`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
      POST: async ({ request }) =&gt; {
        try {
          const body = await request.json()
          console.log(`POST /api/config`, body)
          const configData = validateInsertConfig(body)

          let txid!: Txid
          const newConfig = await sql.begin(async (tx) =&gt; {
            txid = await generateTxId(tx)

            const [result] = await tx`
          INSERT INTO config ${tx(configData)}
          RETURNING *
        `
            return result
          })

          return json({ config: newConfig, txid }, { status: 201 })
        } catch (error) {
          console.error(`Error creating config:`, error)
          return json(
            {
              error: `Failed to create config`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
    },
  },
})
">
<input type="hidden" name="project[files][src/routes/api/todos.$id.ts]" value="import { createFileRoute } from &#39;@tanstack/solid-router&#39;
import { json } from &#39;@tanstack/solid-start&#39;
import { sql } from &#39;../../db/postgres&#39;
import { validateUpdateTodo } from &#39;../../db/validation&#39;
import type { Txid } from &#39;@tanstack/electric-db-collection&#39;

// Generate a transaction ID
async function generateTxId(tx: any): Promise&lt;Txid&gt; {
  const result = await tx`SELECT pg_current_xact_id()::xid::text as txid`
  const txid = result[0]?.txid

  if (txid === undefined) {
    throw new Error(`Failed to get transaction ID`)
  }

  return parseInt(txid, 10)
}

export const Route = createFileRoute(`/api/todos/$id`)({
  server: {
    handlers: {
      GET: async ({ params }) =&gt; {
        try {
          const { id } = params
          const [todo] = await sql`SELECT * FROM todos WHERE id = ${id}`

          if (!todo) {
            return json({ error: `Todo not found` }, { status: 404 })
          }

          return json(todo)
        } catch (error) {
          console.error(`Error fetching todo:`, error)
          return json(
            {
              error: `Failed to fetch todo`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
      PUT: async ({ params, request }) =&gt; {
        try {
          const { id } = params
          const body = await request.json()
          const todoData = validateUpdateTodo(body)

          let txid!: Txid
          const updatedTodo = await sql.begin(async (tx) =&gt; {
            txid = await generateTxId(tx)

            const [result] = await tx`
          UPDATE todos
          SET ${tx(todoData)}
          WHERE id = ${id}
          RETURNING *
        `

            if (!result) {
              throw new Error(`Todo not found`)
            }

            return result
          })

          return json({ todo: updatedTodo, txid })
        } catch (error) {
          if (error instanceof Error &amp;&amp; error.message === `Todo not found`) {
            return json({ error: `Todo not found` }, { status: 404 })
          }

          console.error(`Error updating todo:`, error)
          return json(
            {
              error: `Failed to update todo`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
      DELETE: async ({ params }) =&gt; {
        try {
          const { id } = params

          let txid!: Txid
          await sql.begin(async (tx) =&gt; {
            txid = await generateTxId(tx)

            const [result] = await tx`
          DELETE FROM todos
          WHERE id = ${id}
          RETURNING id
        `

            if (!result) {
              throw new Error(`Todo not found`)
            }
          })

          return json({ success: true, txid })
        } catch (error) {
          if (error instanceof Error &amp;&amp; error.message === `Todo not found`) {
            return json({ error: `Todo not found` }, { status: 404 })
          }

          console.error(`Error deleting todo:`, error)
          return json(
            {
              error: `Failed to delete todo`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
    },
  },
})
">
<input type="hidden" name="project[files][src/routes/api/todos.ts]" value="import { createFileRoute } from &#39;@tanstack/solid-router&#39;
import { json } from &#39;@tanstack/solid-start&#39;
import { sql } from &#39;../../db/postgres&#39;
import { validateInsertTodo } from &#39;../../db/validation&#39;
import type { Txid } from &#39;@tanstack/electric-db-collection&#39;

// Generate a transaction ID
async function generateTxId(tx: any): Promise&lt;Txid&gt; {
  // The ::xid cast strips off the epoch, giving you the raw 32-bit value
  // that matches what PostgreSQL sends in logical replication streams
  // (and then exposed through Electric which we&#39;ll match against
  // in the client).
  const result = await tx`SELECT pg_current_xact_id()::xid::text as txid`
  const txid = result[0]?.txid

  if (txid === undefined) {
    throw new Error(`Failed to get transaction ID`)
  }

  return parseInt(txid, 10)
}

export const Route = createFileRoute(`/api/todos`)({
  server: {
    handlers: {
      GET: async ({ request: _request }) =&gt; {
        try {
          const todos = await sql`SELECT * FROM todos`
          return json(todos)
        } catch (error) {
          console.error(`Error fetching todos:`, error)
          return json(
            {
              error: `Failed to fetch todos`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
      POST: async ({ request }) =&gt; {
        try {
          const body = await request.json()
          const todoData = validateInsertTodo(body)

          let txid!: Txid
          const newTodo = await sql.begin(async (tx) =&gt; {
            txid = await generateTxId(tx)

            const [result] = await tx`
          INSERT INTO todos ${tx(todoData)}
          RETURNING *
        `
            return result
          })

          return json({ todo: newTodo, txid }, { status: 201 })
        } catch (error) {
          console.error(`Error creating todo:`, error)
          return json(
            {
              error: `Failed to create todo`,
              details: error instanceof Error ? error.message : String(error),
            },
            { status: 500 },
          )
        }
      },
    },
  },
})
">
<input type="hidden" name="project[description]" value="generated by https://pkg.pr.new">
<input type="hidden" name="project[template]" value="node">
<input type="hidden" name="project[title]" value="@tanstack/db-example-solid-todo">
</form>
<script>document.getElementById("mainForm").submit();</script>

</body></html>