diff --git a/.gitignore b/.gitignore
index e43b0f98..817612c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,13 @@
+node_modules
+dist
+coverage
+.env
+.env.*
+!.env.example
+*.log
+playwright-report
+test-results
.DS_Store
+.vscode/*
+!.vscode/extensions.json
+.idea
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..04b68ebd
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,7 @@
+dist
+coverage
+node_modules
+pnpm-lock.yaml
+documents
+README.md
+.github
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 00000000..521e2711
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,6 @@
+{
+ "singleQuote": true,
+ "semi": true,
+ "printWidth": 100,
+ "trailingComma": "all"
+}
diff --git a/README.md b/README.md
index c2f177e0..e24b1d4e 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,12 @@ Datasettet har rundt 900 000 spill, så søk, filtrering og sortering må skje i
Datasettet lastes ned og importeres i en PostgreSQL-database som kjører på serveren. Klienten henter ikke data direkte fra databasen, men går via et GraphQL-API på serveren.
+For oppsett av database se egen [dokumentasjon](db/database-setup.md).
+
+For databasens layout (dvs. tabeller, kolonner, etc.) se [database-layout](db/database-layout.md).
+
+For bruk av databasen se [database-usage](db/database-usage.md).
+
## Skisse

diff --git a/backend/.env.example b/backend/.env.example
new file mode 100644
index 00000000..6aed5c03
--- /dev/null
+++ b/backend/.env.example
@@ -0,0 +1,2 @@
+DATABASE_URL=postgresql://gameapp:@localhost:5432/gamesdb
+PORT=3001
diff --git a/backend/.gitignore b/backend/.gitignore
deleted file mode 100644
index a547bf36..00000000
--- a/backend/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/backend/eslint.config.js b/backend/eslint.config.js
new file mode 100644
index 00000000..1e71a3ac
--- /dev/null
+++ b/backend/eslint.config.js
@@ -0,0 +1,18 @@
+import js from '@eslint/js';
+import globals from 'globals';
+import tseslint from 'typescript-eslint';
+import eslintConfigPrettier from 'eslint-config-prettier/flat';
+import { defineConfig, globalIgnores } from 'eslint/config';
+
+export default defineConfig([
+ globalIgnores(['dist']),
+ {
+ files: ['**/*.ts'],
+ extends: [js.configs.recommended, tseslint.configs.recommended],
+ languageOptions: {
+ ecmaVersion: 2023,
+ globals: globals.node,
+ },
+ },
+ eslintConfigPrettier,
+]);
diff --git a/backend/eslint.config.ts b/backend/eslint.config.ts
deleted file mode 100644
index 2c01edd9..00000000
--- a/backend/eslint.config.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import js from "@eslint/js";
-import globals from "globals";
-import tseslint from "typescript-eslint";
-import { defineConfig } from "eslint/config";
-
-export default defineConfig([
- { files: ["**/*.{js,mjs,cjs,ts,mts,cts}"], plugins: { js }, extends: ["js/recommended"], languageOptions: { globals: globals.node } },
- tseslint.configs.recommended,
-]);
diff --git a/backend/package.json b/backend/package.json
index f39ec90d..c5121671 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -4,34 +4,30 @@
"description": "",
"main": "index.js",
"scripts": {
- "test": "vitest run",
+ "dev": "tsx watch src/index.ts",
+ "build": "tsc",
+ "start": "node dist/index.js",
"lint": "eslint ."
},
"keywords": [],
"author": "",
"license": "ISC",
- "devEngines": {
- "packageManager": {
- "name": "pnpm",
- "version": "12.6.0",
- "onFail": "download"
- }
- },
- "packageManager": "pnpm@12.6.0",
"type": "module",
"dependencies": {
"@apollo/server": "^5.5.1",
+ "dotenv": "^18.0.5",
"graphql": "^17.0.2",
- "graphql-tag": "^2.12.7",
- "pg": "^8.23.0"
+ "pg": "^8.23.1"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
+ "@types/node": "^24.19.0",
"@types/pg": "^8.23.1",
"eslint": "^10.11.0",
+ "eslint-config-prettier": "^10.1.8",
"globals": "^17.12.0",
- "jiti": "^2.7.0",
- "typescript-eslint": "^8.70.1",
- "vitest": "^5.0.2"
+ "tsx": "^4.23.15",
+ "typescript": "~6.0.3",
+ "typescript-eslint": "^8.71.0"
}
}
diff --git a/backend/pnpm-workspace.yaml b/backend/pnpm-workspace.yaml
deleted file mode 100644
index d4c555c0..00000000
--- a/backend/pnpm-workspace.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-allowBuilds:
- '@apollo/protobufjs': false
diff --git a/backend/src/index.ts b/backend/src/index.ts
new file mode 100644
index 00000000..5a97d4ff
--- /dev/null
+++ b/backend/src/index.ts
@@ -0,0 +1,2 @@
+// placeholder, erstattes av apollo server senere
+console.log('backend');
diff --git a/backend/tsconfig.json b/backend/tsconfig.json
new file mode 100644
index 00000000..7e5ee0be
--- /dev/null
+++ b/backend/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "compilerOptions": {
+ "target": "ES2023",
+ "module": "NodeNext",
+ "moduleResolution": "NodeNext",
+ "outDir": "dist",
+ "rootDir": "src",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "types": ["node"]
+ },
+ "include": ["src"]
+}
diff --git a/db/database-layout.md b/db/database-layout.md
new file mode 100644
index 00000000..58c91f4d
--- /dev/null
+++ b/db/database-layout.md
@@ -0,0 +1,47 @@
+
+#### Database-layout
+
+Under er utskrift fra postgres lokalt på vm. Eksemplene viser henholdsvis alle tabellene i databasen vår `gamesdb`, og alle kolonnene som tabellen `games` inneholder.
+
+```shell
+gamesdb-> \dt
+ List of tables
+ Schema | Name | Type | Owner
+--------+-----------------+-------+---------
+ public | developers | table | gameapp
+ public | game_developers | table | gameapp
+ public | game_genres | table | gameapp
+ public | game_platforms | table | gameapp
+ public | game_publishers | table | gameapp
+ public | game_stores | table | gameapp
+ public | game_tags | table | gameapp
+ public | games | table | gameapp
+ public | genres | table | gameapp
+ public | platforms | table | gameapp
+ public | publishers | table | gameapp
+ public | reviews | table | gameapp
+ public | stores | table | gameapp
+ public | tags | table | gameapp
+(14 rows)
+
+gamesdb-> \d games
+ Table "public.games"
+ Column | Type | Collation | Nullable | Default
+------------------+---------+-----------+----------+---------
+ id | bigint | | not null |
+ slug | text | | |
+ name | text | | not null |
+ released | date | | |
+ background_image | text | | |
+ rating | real | | |
+ ratings_count | integer | | not null | 0
+ added | integer | | not null | 0
+ metacritic | integer | | |
+ playtime | integer | | |
+ esrb_rating | text | | |
+ description | text | | |
+ website | text | | |
+ dominant_color | text | | |
+
+```
+
diff --git a/db/database-setup.md b/db/database-setup.md
new file mode 100644
index 00000000..614dbe08
--- /dev/null
+++ b/db/database-setup.md
@@ -0,0 +1,73 @@
+# Database-oppsett
+
+PostgreSQL kjører direkte på VM-en og er kun tilgjengelig fra `localhost`. Dataene kommer fra [RAWG-datasettet på Hugging Face](https://huggingface.co/datasets/atalaydenknalbant/video-games-dataset), filtrert til spill med registrert brukerengasjement (`added > 0`, ca. 120 000 av 899 000 rader)
+
+## 1. Installer Postgres
+
+```bash
+sudo apt install postgresql postgresql-contrib
+sudo systemctl enable --now postgresql
+```
+
+Installerer postgres, sørger for at postgres.service kjører på startup (`enable`), og starter postgres.service (`--now`).
+
+## 2. Opprett rolle, database og extension
+
+```bash
+sudo -u postgres psql
+```
+
+```sql
+CREATE USER gameapp WITH PASSWORD '';
+CREATE DATABASE gamesdb OWNER gameapp;
+\c gamesdb
+CREATE EXTENSION IF NOT EXISTS pg_trgm;
+\q
+```
+
+`pg_trgm` gir indeksert, case-insensitivt delstrengsøk (`ILIKE '%term%'`).
+
+## 3. Verifiser at Postgres kun lytter lokalt
+
+```bash
+sudo ss -tlnp | grep 5432
+```
+
+Skal kun vise `127.0.0.1:5432` og `[::1]:5432`.
+
+## 4. Last ned datasettet
+
+```bash
+pip install -U huggingface_hub
+hf download atalaydenknalbant/video-games-dataset videogames_data.parquet \
+ --repo-type dataset --local-dir ~/data
+```
+
+Parquet-filen (ca. 1 GB) brukes i stedet for JSONL (4,3 GB) og CSV (2 GB).
+
+## 5. Kjør importen
+
+```bash
+cd backend/db
+python3 -m venv .venv && source .venv/bin/activate
+pip install -r requirements.txt
+export DATABASE_URL='postgresql://gameapp:@localhost:5432/gamesdb'
+python load.py
+```
+
+`load.py` leser Parquet-filen med DuckDB, deler opp flerverdi-felter til oppslags- og koblingstabeller, laster alt med `COPY`, oppretter indekser etter lasting og kjører `ANALYZE`. Filstien kan overstyres med `PARQUET_PATH`. Finnes tabellene allerede, avbryter scriptet. `python load.py --force` sletter og laster alt på nytt, inkludert reviews.
+
+| Fil | Innhold |
+| --- | --- |
+| `schema.sql` | Tabeller: `games`, oppslagstabeller, koblingstabeller, `reviews` |
+| `indexes.sql` | Trigram-indeks for søk, keyset-indekser for sortering, omvendte indekser for filtrering |
+| `load.py` | Import fra Parquet til Postgres |
+
+## 6. Verifiser
+
+```bash
+psql "$DATABASE_URL" -c "SELECT count(*) FROM games;"
+psql "$DATABASE_URL" -c "EXPLAIN ANALYZE SELECT id, name FROM games WHERE name ILIKE '%zelda%' LIMIT 20;"
+```
+
+Første skal gi ca. 120 067. Den andre skal vise `Bitmap Index Scan on games_name_trgm` (målt til 0,7 ms).
diff --git a/db/database-usage.md b/db/database-usage.md
new file mode 100644
index 00000000..b9c6a64e
--- /dev/null
+++ b/db/database-usage.md
@@ -0,0 +1,29 @@
+
+#### Database-usage
+
+Under er noen generelle kommandoer som kan brukes i postgres for navigere databasen:
+
+```
+\l list databaser
+\c gamesdb bytt database
+\dt list tabeller
+\d games kolonner, typer, indekser og constraints for en tabell
+\d+ games samme, med størrelse og beskrivelser
+\di list indekser
+\dx list extensions (pg_trgm)
+\du list roller
+\x veksle utvidet visning (én kolonne per linje, nyttig for lange rader)
+\timing vis kjøretid for hver spørring
+\q avslutt
+
+```
+
+Se på data i tabellen (spørringer):
+```SQL
+// viser første 5 spillene i games-tabellen
+SELECT * FROM games LIMIT 5;
+
+// viser metacritic score for spill med id 4291
+SELECT metacritic FROM games WHERE id = 4291;
+
+```
diff --git a/db/load.py.bak b/db/load.py.bak
deleted file mode 100644
index 3a0d5798..00000000
--- a/db/load.py.bak
+++ /dev/null
@@ -1,118 +0,0 @@
-import os
-import sys
-import tempfile
-from pathlib import Path
-
-import duckdb
-import psycopg
-
-HERE = Path(__file__).parent
-PARQUET = os.environ.get("PARQUET_PATH", str(Path.home() / "data" / "videogames_data.parquet"))
-DATABASE_URL = os.environ["DATABASE_URL"]
-FORCE = "--force" in sys.argv
-
-# (parquet column, lookup table, junction table, junction fk column)
-RELATIONS = [
- ("genres", "genres", "game_genres", "genre_id"),
- ("platforms", "platforms", "game_platforms", "platform_id"),
- ("stores", "stores", "game_stores", "store_id"),
- ("developers", "developers", "game_developers", "developer_id"),
- ("publishers", "publishers", "game_publishers", "publisher_id"),
- ("tags", "tags", "game_tags", "tag_id"),
-]
-
-GAME_COLUMNS = (
- "id, slug, name, released, background_image, rating, ratings_count, added, "
- "metacritic, playtime, esrb_rating, description, website, dominant_color"
-)
-
-
-def export_csvs(out: Path) -> None:
- con = duckdb.connect()
- con.execute(
- f"""CREATE VIEW src AS
- SELECT * FROM read_parquet('{PARQUET}')
- WHERE added > 0 AND name IS NOT NULL"""
- )
- con.execute(
- f"""COPY (
- SELECT
- id,
- slug,
- name,
- TRY_CAST(released AS DATE) AS released,
- background_image,
- NULLIF(rating, 0) AS rating,
- COALESCE(TRY_CAST(ratings_count AS INTEGER), 0) AS ratings_count,
- TRY_CAST(added AS INTEGER) AS added,
- TRY_CAST(metacritic AS INTEGER) AS metacritic,
- TRY_CAST(playtime AS INTEGER) AS playtime,
- json_extract_string(esrb_rating, '$.name') AS esrb_rating,
- description_raw AS description,
- website,
- dominant_color
- FROM src
- ) TO '{out}/games.csv' (FORMAT csv, HEADER)"""
- )
- for col, table, junction, fk in RELATIONS:
- con.execute(
- f"""CREATE OR REPLACE TEMP TABLE pairs AS
- SELECT id AS game_id, trim(unnest(string_split({col}, '|'))) AS name
- FROM src WHERE {col} IS NOT NULL"""
- )
- con.execute(
- """CREATE OR REPLACE TEMP TABLE lk AS
- SELECT row_number() OVER (ORDER BY name) AS id, name
- FROM (SELECT DISTINCT name FROM pairs WHERE name <> '')"""
- )
- con.execute(f"COPY (SELECT id, name FROM lk) TO '{out}/{table}.csv' (FORMAT csv, HEADER)")
- con.execute(
- f"""COPY (
- SELECT DISTINCT p.game_id, l.id AS {fk}
- FROM pairs p JOIN lk l ON l.name = p.name
- ) TO '{out}/{junction}.csv' (FORMAT csv, HEADER)"""
- )
-
-
-def copy_csv(cur: psycopg.Cursor, table: str, columns: str, path: Path) -> None:
- sql = f"COPY {table} ({columns}) FROM STDIN WITH (FORMAT csv, HEADER true)"
- with open(path, "rb") as f, cur.copy(sql) as cp:
- while chunk := f.read(1 << 20):
- cp.write(chunk)
-
-
-def main() -> None:
- with tempfile.TemporaryDirectory() as tmp:
- out = Path(tmp)
- print("Exporting CSVs from Parquet...")
- export_csvs(out)
-
- with psycopg.connect(DATABASE_URL) as conn:
- cur = conn.cursor()
- cur.execute("SELECT to_regclass('public.games')")
- if cur.fetchone()[0] is not None and not FORCE:
- sys.exit("games table already exists. Rerun with --force to wipe and reload (deletes reviews too).")
-
- print("Creating tables...")
- cur.execute((HERE / "schema.sql").read_text())
-
- print("Loading data...")
- copy_csv(cur, "games", GAME_COLUMNS, out / "games.csv")
- for _, table, junction, fk in RELATIONS:
- copy_csv(cur, table, "id, name", out / f"{table}.csv")
- copy_csv(cur, junction, f"game_id, {fk}", out / f"{junction}.csv")
-
- print("Creating indexes...")
- cur.execute((HERE / "indexes.sql").read_text())
- conn.commit()
-
- cur.execute("ANALYZE")
- conn.commit()
-
- for table in ["games"] + [r[1] for r in RELATIONS] + [r[2] for r in RELATIONS]:
- cur.execute(f"SELECT count(*) FROM {table}")
- print(f"{table}: {cur.fetchone()[0]}")
-
-
-if __name__ == "__main__":
- main()
diff --git a/db/requirements.txt b/db/requirements.txt
new file mode 100644
index 00000000..c3eb184d
--- /dev/null
+++ b/db/requirements.txt
@@ -0,0 +1,2 @@
+duckdb
+psycopg[binary]
diff --git a/frontend/README.md b/frontend/README.md
index 653fa867..2eec18d8 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -43,16 +43,15 @@ export default defineConfig([
// other options...
},
},
-])
-
+]);
```
You can also install [eslint-plugin-react-x](https://npmx.dev/package/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://npmx.dev/package/eslint-plugin-react-dom) for React-specific lint rules:
```js
// eslint.config.js
-import reactX from 'eslint-plugin-react-x'
-import reactDom from 'eslint-plugin-react-dom'
+import reactX from 'eslint-plugin-react-x';
+import reactDom from 'eslint-plugin-react-dom';
export default defineConfig([
globalIgnores(['dist']),
@@ -73,6 +72,5 @@ export default defineConfig([
// other options...
},
},
-])
-
+]);
```
diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js
index ef614d25..f7f65a3c 100644
--- a/frontend/eslint.config.js
+++ b/frontend/eslint.config.js
@@ -1,9 +1,10 @@
-import js from '@eslint/js'
-import globals from 'globals'
-import reactHooks from 'eslint-plugin-react-hooks'
-import reactRefresh from 'eslint-plugin-react-refresh'
-import tseslint from 'typescript-eslint'
-import { defineConfig, globalIgnores } from 'eslint/config'
+import eslintConfigPrettier from 'eslint-config-prettier/flat';
+import js from '@eslint/js';
+import globals from 'globals';
+import reactHooks from 'eslint-plugin-react-hooks';
+import reactRefresh from 'eslint-plugin-react-refresh';
+import tseslint from 'typescript-eslint';
+import { defineConfig, globalIgnores } from 'eslint/config';
export default defineConfig([
globalIgnores(['dist']),
@@ -19,4 +20,5 @@ export default defineConfig([
globals: globals.browser,
},
},
-])
+ eslintConfigPrettier,
+]);
diff --git a/frontend/package.json b/frontend/package.json
index dd3bc152..271323b8 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -26,6 +26,7 @@
"@vitejs/plugin-react": "^6.1.1",
"babel-plugin-react-compiler": "^1.0.0",
"eslint": "^10.10.0",
+ "eslint-config-prettier": "^10.1.8",
"eslint-plugin-react-hooks": "^7.1.1",
"eslint-plugin-react-refresh": "^0.5.6",
"globals": "^17.12.0",
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
deleted file mode 100644
index 83e9d827..00000000
--- a/frontend/pnpm-lock.yaml
+++ /dev/null
@@ -1,1932 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@apollo/client':
- specifier: ^4.3.1
- version: 4.3.1(graphql@17.0.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rxjs@7.8.2)
- graphql:
- specifier: ^17.0.2
- version: 17.0.2
- react:
- specifier: ^19.2.8
- version: 19.3.0
- react-dom:
- specifier: ^19.2.8
- version: 19.3.0(react@19.3.0)
- devDependencies:
- '@babel/core':
- specifier: ^7.29.7
- version: 7.29.7
- '@eslint/js':
- specifier: ^10.0.1
- version: 10.0.1(eslint@10.11.0)
- '@rolldown/plugin-babel':
- specifier: ^0.2.3
- version: 0.2.4(@babel/core@7.29.7)(rolldown@1.2.10)(vite@8.3.1(@types/node@24.13.6))
- '@types/babel__core':
- specifier: ^7.20.5
- version: 7.20.5
- '@types/node':
- specifier: ^24.13.3
- version: 24.13.6
- '@types/react':
- specifier: ^19.2.18
- version: 19.3.0
- '@types/react-dom':
- specifier: ^19.2.7
- version: 19.3.0(@types/react@19.3.0)
- '@vitejs/plugin-react':
- specifier: ^6.1.1
- version: 6.1.1(@rolldown/plugin-babel@0.2.4(@babel/core@7.29.7)(rolldown@1.2.10)(vite@8.3.1(@types/node@24.13.6)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.1(@types/node@24.13.6))
- babel-plugin-react-compiler:
- specifier: ^1.0.0
- version: 1.0.0
- eslint:
- specifier: ^10.10.0
- version: 10.11.0
- eslint-plugin-react-hooks:
- specifier: ^7.1.1
- version: 7.1.1(eslint@10.11.0)
- eslint-plugin-react-refresh:
- specifier: ^0.5.6
- version: 0.5.7(eslint@10.11.0)
- globals:
- specifier: ^17.12.0
- version: 17.12.0
- typescript:
- specifier: ~6.0.2
- version: 6.0.3
- typescript-eslint:
- specifier: ^8.69.0
- version: 8.70.1(eslint@10.11.0)(typescript@6.0.3)
- vite:
- specifier: ^8.3.0
- version: 8.3.1(@types/node@24.13.6)
-
-packages:
-
- '@apollo/client@4.3.1':
- resolution: {integrity: sha512-MFHzUfHxS+A6AzH+cS4896jHuSTRw5ACUANijz1gyesWZDLsbgZ17oCb/KfRAOUuoUr8AzCaBE+xJPi7R7ZOCA==}
- peerDependencies:
- graphql: ^16.0.0 || ^17.0.0
- graphql-ws: ^5.5.5 || ^6.0.3
- react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc
- react-dom: ^17.0.0 || ^18.0.0 || >=19.0.0-rc
- rxjs: ^7.3.0
- subscriptions-transport-ws: ^0.9.0 || ^0.11.0
- peerDependenciesMeta:
- graphql-ws:
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
- subscriptions-transport-ws:
- optional: true
-
- '@babel/code-frame@7.29.7':
- resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.29.7':
- resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.29.7':
- resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.29.8':
- resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-compilation-targets@7.29.7':
- resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-globals@7.29.7':
- resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.29.7':
- resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.29.7':
- resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-string-parser@7.29.7':
- resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.29.7':
- resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-option@7.29.7':
- resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.29.7':
- resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.29.9':
- resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/template@7.29.7':
- resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.29.8':
- resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.29.8':
- resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==}
- engines: {node: '>=6.9.0'}
-
- '@cacheable/memory@2.2.0':
- resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==}
-
- '@cacheable/utils@2.5.0':
- resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==}
-
- '@eslint-community/eslint-utils@4.10.1':
- resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-
- '@eslint-community/regexpp@4.12.2':
- resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/config-array@0.23.5':
- resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- '@eslint/config-helpers@0.7.0':
- resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- '@eslint/core@1.2.1':
- resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- '@eslint/js@10.0.1':
- resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- peerDependencies:
- eslint: ^10.0.0
- peerDependenciesMeta:
- eslint:
- optional: true
-
- '@eslint/object-schema@3.0.5':
- resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- '@eslint/plugin-kit@0.7.3':
- resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- '@graphql-typed-document-node/core@3.2.0':
- resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
- peerDependencies:
- graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
-
- '@humanfs/core@0.19.2':
- resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==}
- engines: {node: '>=18.18.0'}
-
- '@humanfs/node@0.16.8':
- resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==}
- engines: {node: '>=18.18.0'}
-
- '@humanfs/types@0.15.0':
- resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==}
- engines: {node: '>=18.18.0'}
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/retry@0.4.3':
- resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
- engines: {node: '>=18.18'}
-
- '@jridgewell/gen-mapping@0.3.13':
- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
-
- '@jridgewell/remapping@2.3.5':
- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.6.0':
- resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
-
- '@jridgewell/trace-mapping@0.3.31':
- resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
-
- '@keyv/bigmap@1.3.1':
- resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- keyv: ^5.6.0
-
- '@keyv/serialize@1.1.1':
- resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
-
- '@oxc-project/types@0.151.0':
- resolution: {integrity: sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==}
-
- '@rolldown/binding-android-arm-eabi@1.2.10':
- resolution: {integrity: sha512-bp9svZb+QurZeh+8H4BhrZkifEB0YBNvTVzNSJnJQkj4NrRwmQoDUCGP0vSN7PbvLeM7l1tK6GXL8mrTiH2myg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [android]
-
- '@rolldown/binding-android-arm64@1.2.10':
- resolution: {integrity: sha512-wm6Dld3RXUAZ/gRWKyUy+4W1B5CB5UeFaOzsSWJWEdxZXHH8rCYiZ5dGe6oJmhsunAPWzL7FZV+VtvmN5Ye2eA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [android]
-
- '@rolldown/binding-darwin-arm64@1.2.10':
- resolution: {integrity: sha512-UbEfXq/AqGNgRTV3ik+X/iR6mUxu2QdYAadwRxJWquUGnW6gDqdP1FtLtFXRow7RJx0ssRwi80XAPr4r+4DtsA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [darwin]
-
- '@rolldown/binding-darwin-x64@1.2.10':
- resolution: {integrity: sha512-7f5h17q5KZVx/ji1vb8OTq31ch1O2I7K8NPIr44GkyWTApXMIsmhWqZfgpOH10xeauqghDAvGlZktasCkcF6Eg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [darwin]
-
- '@rolldown/binding-freebsd-x64@1.2.10':
- resolution: {integrity: sha512-ynOk/eEYhC6ZB2xCGvKrEOwE58oBy9LnrAqtkrDF9Fz1VTaNdGZTsV0VarJdhPwb+sOJTGjCLwcuyRJZ1dnMcQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [freebsd]
-
- '@rolldown/binding-linux-arm-gnueabihf@1.2.10':
- resolution: {integrity: sha512-ERrAs185meZZhGan7a4l3RiiJK1ArSDlHdST++uvSxe+FDbR4TwUPahT/cbZJvaG6fIpDpF78surN+tX708Y4Q==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
-
- '@rolldown/binding-linux-arm64-gnu@1.2.10':
- resolution: {integrity: sha512-KN7OHKD0J3jy1UzBwZWPxpwhODf9IARUIJcrH+yLYKOcmegZ8luEUM38lDP1bDVj40yP6PsSzCqOJF76vljFnQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-arm64-musl@1.2.10':
- resolution: {integrity: sha512-8l9wP8O+wa8zD6iw6egSfzVtu7oZVfH3hlUsMM4MwbLMhxleqeoXbZzjddyK3YyNlwLhqznq3tF7PkNJ8T/V2w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@rolldown/binding-linux-ppc64-gnu@1.2.10':
- resolution: {integrity: sha512-SeXNKeQzA5kLhz/J0CH6ZP0/HJ3v1xm/0YbiYpE0kK7emfRC2OIGGIaE14xzkISEGv2aYuUSpiLiU5Gbq+OI0A==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-s390x-gnu@1.2.10':
- resolution: {integrity: sha512-mtht0nR+y8/hart4175Ll15w7lY8dg7CtQ+j2FDNTsDRspOWTK/2V3l0aj9sIj7XmvqxT8Yli/wq22e7feTTWg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-x64-gnu@1.2.10':
- resolution: {integrity: sha512-FSM94nGd55NYo48usCyM/nHfUKRnqc9+b0vJNuKV0oCCpIp/OGims7rO1Nv/DkFkt0S/s2rxsJ2kkS8J3HcpeA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-x64-musl@1.2.10':
- resolution: {integrity: sha512-C3YxNB16myRLs7o+B+6PnQ6jBsdIS4+AE4Ah8glVGhDpEv9AOvxhZ/1duAb4B0UGczEK/lBbccksd8VI+p6zfw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@rolldown/binding-openharmony-arm64@1.2.10':
- resolution: {integrity: sha512-571TlE/F1eeTjjdjYAMMMPs1Mfv3MtX6s3+ZKVU6HiUjZ5Njc6c/qzNy/8K3zALTZnaw3JQVYrHxvNfjm43KAg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [openharmony]
-
- '@rolldown/binding-win32-arm64-msvc@1.2.10':
- resolution: {integrity: sha512-QXW+ZWaiqs2c7Fi++D/SsW07LTPcUrncxcskJGfGNBoaLik1IU6fJymz4HsqwEO0u5Iq11yTO0B/mc4cPk7jrQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [win32]
-
- '@rolldown/binding-win32-x64-msvc@1.2.10':
- resolution: {integrity: sha512-5FQFGgah17YeMtG1Yd5a+rMxQpTksyNXxRtKz06FVTaQw3RKYUJQbUoKk0/5jrXBpDo+7makNP7UHA2LQyH64A==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [win32]
-
- '@rolldown/plugin-babel@0.2.4':
- resolution: {integrity: sha512-ygmm2j/mN+aCvstHo0x3IOu4uc6LqXT9SJ3q4kpfG/+Yhfz0B+E47FITcC0FljZADwUFARP6E2kiE+Lc26D8wg==}
- engines: {node: '>=22.12.0 || ^24.0.0'}
- peerDependencies:
- '@babel/core': ^7.29.0 || ^8.0.0-rc.1
- '@babel/plugin-transform-runtime': ^7.29.0 || ^8.0.0-rc.1
- '@babel/runtime': ^7.27.0 || ^8.0.0-rc.1
- rolldown: ^1.0.0-rc.5
- vite: ^8.0.0
- peerDependenciesMeta:
- '@babel/plugin-transform-runtime':
- optional: true
- '@babel/runtime':
- optional: true
- vite:
- optional: true
-
- '@rolldown/pluginutils@1.0.1':
- resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
-
- '@types/babel__core@7.20.5':
- resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
-
- '@types/babel__generator@7.27.0':
- resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
-
- '@types/babel__template@7.4.4':
- resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
-
- '@types/babel__traverse@7.28.0':
- resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
-
- '@types/esrecurse@4.3.1':
- resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==}
-
- '@types/estree@1.0.9':
- resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
-
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
-
- '@types/node@24.13.6':
- resolution: {integrity: sha512-SGrw/h3KPFshy3OE6ZL53LMBG5vGQQ8/gIpiqz/kRZhPJ7HgwCEs8LBuNtWLa8dvGZVpSF7+Bf+c11HUrCb/yg==}
-
- '@types/react-dom@19.3.0':
- resolution: {integrity: sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==}
- peerDependencies:
- '@types/react': ^19.3.0
-
- '@types/react@19.3.0':
- resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==}
-
- '@typescript-eslint/eslint-plugin@8.70.1':
- resolution: {integrity: sha512-nDNrUQ/4ruSNYbu749TRY7cfrzPtoLHEXSNBI8aaNY32LlZCajixqRf3FqcKC4p5Cam4VOHYx/t+i5+nKXvrqA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.70.1
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/parser@8.70.1':
- resolution: {integrity: sha512-nO974WLllwhSFWQXnMLj6nDGa8f0khKEz1JzpPJ1u7Vm/4X1X6ZHajpoknU4bb41vJyMB0HHVyS2GqdhWfIXZw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/project-service@8.70.1':
- resolution: {integrity: sha512-62xOgboPfwc3/IgPSX/W6oQR3ZbF04194FPGUGH8HL8iLFHbt/456/8Ph1wLNUgVF+s94FlHoipBsz+v7+LMnA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/scope-manager@8.70.1':
- resolution: {integrity: sha512-Pa0EeSeAusQc1WbjQMac+YfenewYTBu0KjgYvkUKwhXaHUKbFog23Dm/rp0DX/6tyYOQ3Xl1a+3EcFNZynGHCw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/tsconfig-utils@8.70.1':
- resolution: {integrity: sha512-jumze1fPI+sDOaM2TWGQdn39PDxTr7TZGeuyLkAbNyx2vtMT3uRnVKChN0hfht5V2TugphJzF6bYXvBcE09qqg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/type-utils@8.70.1':
- resolution: {integrity: sha512-7zKTnyvaVWqzLZHPFQtX1hVHqgkMC+WebPWakNCSyrQVbIP1AM0L0TlBZtACldIRb6PptI8Odk+jyZ5kP3B1VA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/types@8.70.1':
- resolution: {integrity: sha512-Dm1ypdhhrGCTyyehxElhgJ6kgk8MVCv5qXdoOVqPr1uqk42jX8KjrZqhROvdShczA8qrDoYiOWn1ykWlx2k81Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.70.1':
- resolution: {integrity: sha512-TU8PwyGN0PQJUcE96mw8eCQ44SmxGdQlJmlWakHaHQ15eIuuvye5yNtmh/i6oS88jzXVQB71xdNkbkB/fMwL0g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/utils@8.70.1':
- resolution: {integrity: sha512-Esgul8MsnKnRLdYU2Eb2cRV9bS5HJYtKj1ByJnOzzG2M58DGdSUQ1jUuILxipqcpB2h9WLrbD5GijIWUjX/Tqw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/visitor-keys@8.70.1':
- resolution: {integrity: sha512-Vwj9lUIW5Xq3wQ9w6gv3R86g1hMK8f2zNOdGTAgeXUMMXFK78G9ruCjjqutHMNJc0+CH7LYRnHeUB9IT8wFmcw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@vitejs/plugin-react@6.1.1':
- resolution: {integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- peerDependencies:
- '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0
- babel-plugin-react-compiler: ^1.0.0
- oxc-transform-react: ^0.145.0
- vite: ^8.0.0
- peerDependenciesMeta:
- '@rolldown/plugin-babel':
- optional: true
- babel-plugin-react-compiler:
- optional: true
- oxc-transform-react:
- optional: true
-
- '@wry/caches@1.0.1':
- resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==}
- engines: {node: '>=8'}
-
- '@wry/context@0.7.4':
- resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==}
- engines: {node: '>=8'}
-
- '@wry/equality@0.5.7':
- resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==}
- engines: {node: '>=8'}
-
- '@wry/trie@0.5.0':
- resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==}
- engines: {node: '>=8'}
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.18.0:
- resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ajv@6.15.0:
- resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
-
- babel-plugin-react-compiler@1.0.0:
- resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==}
-
- balanced-match@4.0.4:
- resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
- engines: {node: 18 || 20 || >=22}
-
- baseline-browser-mapping@2.11.25:
- resolution: {integrity: sha512-gMmEShwwq7FJqMwvfRwvCl00v4kN+KOfJqXn+f4nrufak5gNHJOksd/60Dvjuz7sI8Y5WiSFBa8FEYr+zoyqCw==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- brace-expansion@5.0.12:
- resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==}
- engines: {node: 20 || >=22}
-
- browserslist@4.29.0:
- resolution: {integrity: sha512-3GSvyjvDI4Dur1Meg2BekJquu5uF+9R9a1+5M1Mde192eZoXbeXjzgOsgqPS2V8D5wrrip0gR5Hf/GhWQ9ZzaA==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- cacheable@2.5.0:
- resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==}
-
- caniuse-lite@1.0.30001812:
- resolution: {integrity: sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng==}
-
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
-
- csstype@3.2.3:
- resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
-
- debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- detect-libc@2.1.2:
- resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
- engines: {node: '>=8'}
-
- electron-to-chromium@1.5.438:
- resolution: {integrity: sha512-AN9xMU1hJiT65LkCUPL1DZm5TCbOPb2Qsm5pYwFLEXp6/qj9SdT4yMiqs7Qqstwvkn1zF7l36SRGt+s6XcJ0FA==}
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- eslint-plugin-react-hooks@7.1.1:
- resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==}
- engines: {node: '>=18'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0
-
- eslint-plugin-react-refresh@0.5.7:
- resolution: {integrity: sha512-XhJSzLljuYD4UjNuFGJu2v7aD3sqNVK12w5/DCUfrNfHWegZo2+TsavNx8MuxMwEquuFAzNbNfXKU0WoZ+YUIg==}
- peerDependencies:
- eslint: ^9 || ^10
-
- eslint-scope@9.1.2:
- resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint-visitor-keys@5.0.1:
- resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- eslint@10.11.0:
- resolution: {integrity: sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
-
- espree@11.2.0:
- resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- esquery@1.7.0:
- resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
- engines: {node: '>=0.10'}
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
- 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: '>=12.0.0'}
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
-
- file-entry-cache@11.1.5:
- resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@6.1.23:
- resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==}
-
- flatted@3.4.4:
- resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- globals@17.12.0:
- resolution: {integrity: sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==}
- engines: {node: '>=18'}
-
- graphql-tag@2.12.7:
- resolution: {integrity: sha512-xnE/NFzy+0eIesvAsREJZ284zTl/wYuBAvpsFSDhRGRdRHdnE90M21Q3xAWyYInb0J756c6x0pIQ62+vtvOs1Q==}
- engines: {node: '>=10'}
- peerDependencies:
- graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
-
- graphql@17.0.2:
- resolution: {integrity: sha512-FRWbddMxfkjiB7z+aQDWIR+E34xo9I8c9mtK2RPv8PmMzKRvrdsreHL/Ui/TmwHJfhHChEtsFPyMHKI+xuarQQ==}
- engines: {node: ^22.0.0 || ^24.0.0 || ^25.0.0 || >=26.0.0}
-
- hashery@1.5.1:
- resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==}
- engines: {node: '>=20'}
-
- hermes-estree@0.25.1:
- resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
-
- hermes-parser@0.25.1:
- resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
-
- hookified@1.15.1:
- resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==}
-
- hookified@2.2.0:
- resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==}
-
- ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
-
- ignore@7.0.10:
- resolution: {integrity: sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==}
- engines: {node: '>= 4'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- jsesc@3.1.0:
- resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
- engines: {node: '>=6'}
- hasBin: true
-
- 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: '>=6'}
- hasBin: true
-
- keyv@5.6.0:
- resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lightningcss-android-arm64@1.33.0:
- resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [android]
-
- lightningcss-darwin-arm64@1.33.0:
- resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- lightningcss-darwin-x64@1.33.0:
- resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
-
- lightningcss-freebsd-x64@1.33.0:
- resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- lightningcss-linux-arm-gnueabihf@1.33.0:
- resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
-
- lightningcss-linux-arm64-gnu@1.33.0:
- resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-arm64-musl@1.33.0:
- resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- lightningcss-linux-x64-gnu@1.33.0:
- resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-x64-musl@1.33.0:
- resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- lightningcss-win32-arm64-msvc@1.33.0:
- resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [win32]
-
- lightningcss-win32-x64-msvc@1.33.0:
- resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
-
- lightningcss@1.33.0:
- resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
- engines: {node: '>= 12.0.0'}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
- minimatch@10.2.6:
- resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
- engines: {node: 18 || 20 || >=22}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- nanoid@3.3.19:
- resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
- node-releases@2.0.57:
- resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==}
- engines: {node: '>=18'}
-
- optimism@0.18.1:
- resolution: {integrity: sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==}
-
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@4.0.7:
- resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
- engines: {node: '>=12'}
-
- postcss@8.5.28:
- resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==}
- engines: {node: ^10 || ^12 || >=14}
-
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- qified@0.10.1:
- resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==}
- engines: {node: '>=20'}
-
- react-dom@19.3.0:
- resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==}
- peerDependencies:
- react: ^19.3.0
-
- react@19.3.0:
- resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==}
- engines: {node: '>=0.10.0'}
-
- rolldown@1.2.10:
- resolution: {integrity: sha512-OxkA08pSryMK7B3XiFA09B4OJ1xJMPgIYCBMY2xchzpqgBGsV1o0DetPAE+Sl3N3L4oCPiEzmHVSOj7iR04Zog==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
-
- rxjs@7.8.2:
- resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
-
- scheduler@0.28.0:
- resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==}
-
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
- semver@7.8.5:
- resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
- engines: {node: '>=10'}
- hasBin: true
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- tinyglobby@0.2.17:
- resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
- engines: {node: '>=12.0.0'}
-
- ts-api-utils@2.5.0:
- resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
- engines: {node: '>=18.12'}
- peerDependencies:
- typescript: '>=4.8.4'
-
- tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- typescript-eslint@8.70.1:
- resolution: {integrity: sha512-AcWG7KDjZ2THNXsgwttMaGmzVi0VFRlFYfqFHYQRbDpF3owuYbuiL8c7UUrd2k8s3PoSfIQrWfrGXfcElrWLYA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- typescript@6.0.3:
- resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- undici-types@7.18.2:
- resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
-
- update-browserslist-db@1.3.3:
- resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- vite@8.3.1:
- resolution: {integrity: sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- '@vitejs/devtools': ^0.7.1
- esbuild: ^0.27.0 || ^0.28.0
- jiti: '>=1.21.0'
- less: ^4.0.0
- sass: ^1.70.0
- sass-embedded: ^1.70.0
- stylus: '>=0.54.8'
- sugarss: ^5.0.0
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- '@vitejs/devtools':
- optional: true
- esbuild:
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
-
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- zod-validation-error@4.0.2:
- resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
- engines: {node: '>=18.0.0'}
- peerDependencies:
- zod: ^3.25.0 || ^4.0.0
-
- zod@4.6.5:
- resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==}
-
-snapshots:
-
- '@apollo/client@4.3.1(graphql@17.0.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rxjs@7.8.2)':
- dependencies:
- '@graphql-typed-document-node/core': 3.2.0(graphql@17.0.2)
- '@wry/caches': 1.0.1
- '@wry/equality': 0.5.7
- '@wry/trie': 0.5.0
- graphql: 17.0.2
- graphql-tag: 2.12.7(graphql@17.0.2)
- optimism: 0.18.1
- rxjs: 7.8.2
- tslib: 2.8.1
- optionalDependencies:
- react: 19.3.0
- react-dom: 19.3.0(react@19.3.0)
-
- '@babel/code-frame@7.29.7':
- dependencies:
- '@babel/helper-validator-identifier': 7.29.7
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/compat-data@7.29.7': {}
-
- '@babel/core@7.29.7':
- dependencies:
- '@babel/code-frame': 7.29.7
- '@babel/generator': 7.29.8
- '@babel/helper-compilation-targets': 7.29.7
- '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
- '@babel/helpers': 7.29.7
- '@babel/parser': 7.29.9
- '@babel/template': 7.29.7
- '@babel/traverse': 7.29.8
- '@babel/types': 7.29.8
- '@jridgewell/remapping': 2.3.5
- convert-source-map: 2.0.0
- debug: 4.4.3
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.29.8':
- dependencies:
- '@babel/parser': 7.29.9
- '@babel/types': 7.29.8
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
- jsesc: 3.1.0
-
- '@babel/helper-compilation-targets@7.29.7':
- dependencies:
- '@babel/compat-data': 7.29.7
- '@babel/helper-validator-option': 7.29.7
- browserslist: 4.29.0
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-globals@7.29.7': {}
-
- '@babel/helper-module-imports@7.29.7':
- dependencies:
- '@babel/traverse': 7.29.8
- '@babel/types': 7.29.8
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)':
- dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-module-imports': 7.29.7
- '@babel/helper-validator-identifier': 7.29.7
- '@babel/traverse': 7.29.8
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.29.7': {}
-
- '@babel/helper-validator-identifier@7.29.7': {}
-
- '@babel/helper-validator-option@7.29.7': {}
-
- '@babel/helpers@7.29.7':
- dependencies:
- '@babel/template': 7.29.7
- '@babel/types': 7.29.8
-
- '@babel/parser@7.29.9':
- dependencies:
- '@babel/types': 7.29.8
-
- '@babel/template@7.29.7':
- dependencies:
- '@babel/code-frame': 7.29.7
- '@babel/parser': 7.29.9
- '@babel/types': 7.29.8
-
- '@babel/traverse@7.29.8':
- dependencies:
- '@babel/code-frame': 7.29.7
- '@babel/generator': 7.29.8
- '@babel/helper-globals': 7.29.7
- '@babel/parser': 7.29.9
- '@babel/template': 7.29.7
- '@babel/types': 7.29.8
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.29.8':
- dependencies:
- '@babel/helper-string-parser': 7.29.7
- '@babel/helper-validator-identifier': 7.29.7
-
- '@cacheable/memory@2.2.0':
- dependencies:
- '@cacheable/utils': 2.5.0
- '@keyv/bigmap': 1.3.1(keyv@5.6.0)
- hookified: 1.15.1
- keyv: 5.6.0
-
- '@cacheable/utils@2.5.0':
- dependencies:
- hashery: 1.5.1
- keyv: 5.6.0
-
- '@eslint-community/eslint-utils@4.10.1(eslint@10.11.0)':
- dependencies:
- eslint: 10.11.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.12.2': {}
-
- '@eslint/config-array@0.23.5':
- dependencies:
- '@eslint/object-schema': 3.0.5
- debug: 4.4.3
- minimatch: 10.2.6
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/config-helpers@0.7.0':
- dependencies:
- '@eslint/core': 1.2.1
-
- '@eslint/core@1.2.1':
- dependencies:
- '@types/json-schema': 7.0.15
-
- '@eslint/js@10.0.1(eslint@10.11.0)':
- optionalDependencies:
- eslint: 10.11.0
-
- '@eslint/object-schema@3.0.5': {}
-
- '@eslint/plugin-kit@0.7.3':
- dependencies:
- '@eslint/core': 1.2.1
- levn: 0.4.1
-
- '@graphql-typed-document-node/core@3.2.0(graphql@17.0.2)':
- dependencies:
- graphql: 17.0.2
-
- '@humanfs/core@0.19.2':
- dependencies:
- '@humanfs/types': 0.15.0
-
- '@humanfs/node@0.16.8':
- dependencies:
- '@humanfs/core': 0.19.2
- '@humanfs/types': 0.15.0
- '@humanwhocodes/retry': 0.4.3
-
- '@humanfs/types@0.15.0': {}
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/retry@0.4.3': {}
-
- '@jridgewell/gen-mapping@0.3.13':
- dependencies:
- '@jridgewell/sourcemap-codec': 1.6.0
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/remapping@2.3.5':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/sourcemap-codec@1.6.0': {}
-
- '@jridgewell/trace-mapping@0.3.31':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.6.0
-
- '@keyv/bigmap@1.3.1(keyv@5.6.0)':
- dependencies:
- hashery: 1.5.1
- hookified: 1.15.1
- keyv: 5.6.0
-
- '@keyv/serialize@1.1.1': {}
-
- '@oxc-project/types@0.151.0': {}
-
- '@rolldown/binding-android-arm-eabi@1.2.10':
- optional: true
-
- '@rolldown/binding-android-arm64@1.2.10':
- optional: true
-
- '@rolldown/binding-darwin-arm64@1.2.10':
- optional: true
-
- '@rolldown/binding-darwin-x64@1.2.10':
- optional: true
-
- '@rolldown/binding-freebsd-x64@1.2.10':
- optional: true
-
- '@rolldown/binding-linux-arm-gnueabihf@1.2.10':
- optional: true
-
- '@rolldown/binding-linux-arm64-gnu@1.2.10':
- optional: true
-
- '@rolldown/binding-linux-arm64-musl@1.2.10':
- optional: true
-
- '@rolldown/binding-linux-ppc64-gnu@1.2.10':
- optional: true
-
- '@rolldown/binding-linux-s390x-gnu@1.2.10':
- optional: true
-
- '@rolldown/binding-linux-x64-gnu@1.2.10':
- optional: true
-
- '@rolldown/binding-linux-x64-musl@1.2.10':
- optional: true
-
- '@rolldown/binding-openharmony-arm64@1.2.10':
- optional: true
-
- '@rolldown/binding-win32-arm64-msvc@1.2.10':
- optional: true
-
- '@rolldown/binding-win32-x64-msvc@1.2.10':
- optional: true
-
- '@rolldown/plugin-babel@0.2.4(@babel/core@7.29.7)(rolldown@1.2.10)(vite@8.3.1(@types/node@24.13.6))':
- dependencies:
- '@babel/core': 7.29.7
- picomatch: 4.0.7
- rolldown: 1.2.10
- optionalDependencies:
- vite: 8.3.1(@types/node@24.13.6)
-
- '@rolldown/pluginutils@1.0.1': {}
-
- '@types/babel__core@7.20.5':
- dependencies:
- '@babel/parser': 7.29.9
- '@babel/types': 7.29.8
- '@types/babel__generator': 7.27.0
- '@types/babel__template': 7.4.4
- '@types/babel__traverse': 7.28.0
-
- '@types/babel__generator@7.27.0':
- dependencies:
- '@babel/types': 7.29.8
-
- '@types/babel__template@7.4.4':
- dependencies:
- '@babel/parser': 7.29.9
- '@babel/types': 7.29.8
-
- '@types/babel__traverse@7.28.0':
- dependencies:
- '@babel/types': 7.29.8
-
- '@types/esrecurse@4.3.1': {}
-
- '@types/estree@1.0.9': {}
-
- '@types/json-schema@7.0.15': {}
-
- '@types/node@24.13.6':
- dependencies:
- undici-types: 7.18.2
-
- '@types/react-dom@19.3.0(@types/react@19.3.0)':
- dependencies:
- '@types/react': 19.3.0
-
- '@types/react@19.3.0':
- dependencies:
- csstype: 3.2.3
-
- '@typescript-eslint/eslint-plugin@8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0)(typescript@6.0.3))(eslint@10.11.0)(typescript@6.0.3)':
- dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.70.1(eslint@10.11.0)(typescript@6.0.3)
- '@typescript-eslint/scope-manager': 8.70.1
- '@typescript-eslint/type-utils': 8.70.1(eslint@10.11.0)(typescript@6.0.3)
- '@typescript-eslint/utils': 8.70.1(eslint@10.11.0)(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.70.1
- eslint: 10.11.0
- ignore: 7.0.10
- natural-compare: 1.4.0
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.70.1(eslint@10.11.0)(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.70.1
- '@typescript-eslint/types': 8.70.1
- '@typescript-eslint/typescript-estree': 8.70.1(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.70.1
- debug: 4.4.3
- eslint: 10.11.0
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.70.1(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3)
- '@typescript-eslint/types': 8.70.1
- debug: 4.4.3
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/scope-manager@8.70.1':
- dependencies:
- '@typescript-eslint/types': 8.70.1
- '@typescript-eslint/visitor-keys': 8.70.1
-
- '@typescript-eslint/tsconfig-utils@8.70.1(typescript@6.0.3)':
- dependencies:
- typescript: 6.0.3
-
- '@typescript-eslint/type-utils@8.70.1(eslint@10.11.0)(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/types': 8.70.1
- '@typescript-eslint/typescript-estree': 8.70.1(typescript@6.0.3)
- '@typescript-eslint/utils': 8.70.1(eslint@10.11.0)(typescript@6.0.3)
- debug: 4.4.3
- eslint: 10.11.0
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/types@8.70.1': {}
-
- '@typescript-eslint/typescript-estree@8.70.1(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/project-service': 8.70.1(typescript@6.0.3)
- '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3)
- '@typescript-eslint/types': 8.70.1
- '@typescript-eslint/visitor-keys': 8.70.1
- debug: 4.4.3
- minimatch: 10.2.6
- semver: 7.8.5
- tinyglobby: 0.2.17
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.70.1(eslint@10.11.0)(typescript@6.0.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0)
- '@typescript-eslint/scope-manager': 8.70.1
- '@typescript-eslint/types': 8.70.1
- '@typescript-eslint/typescript-estree': 8.70.1(typescript@6.0.3)
- eslint: 10.11.0
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/visitor-keys@8.70.1':
- dependencies:
- '@typescript-eslint/types': 8.70.1
- eslint-visitor-keys: 5.0.1
-
- '@vitejs/plugin-react@6.1.1(@rolldown/plugin-babel@0.2.4(@babel/core@7.29.7)(rolldown@1.2.10)(vite@8.3.1(@types/node@24.13.6)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.1(@types/node@24.13.6))':
- dependencies:
- '@rolldown/pluginutils': 1.0.1
- vite: 8.3.1(@types/node@24.13.6)
- optionalDependencies:
- '@rolldown/plugin-babel': 0.2.4(@babel/core@7.29.7)(rolldown@1.2.10)(vite@8.3.1(@types/node@24.13.6))
- babel-plugin-react-compiler: 1.0.0
-
- '@wry/caches@1.0.1':
- dependencies:
- tslib: 2.8.1
-
- '@wry/context@0.7.4':
- dependencies:
- tslib: 2.8.1
-
- '@wry/equality@0.5.7':
- dependencies:
- tslib: 2.8.1
-
- '@wry/trie@0.5.0':
- dependencies:
- tslib: 2.8.1
-
- acorn-jsx@5.3.2(acorn@8.18.0):
- dependencies:
- acorn: 8.18.0
-
- acorn@8.18.0: {}
-
- ajv@6.15.0:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
- babel-plugin-react-compiler@1.0.0:
- dependencies:
- '@babel/types': 7.29.8
-
- balanced-match@4.0.4: {}
-
- baseline-browser-mapping@2.11.25: {}
-
- brace-expansion@5.0.12:
- dependencies:
- balanced-match: 4.0.4
-
- browserslist@4.29.0:
- dependencies:
- baseline-browser-mapping: 2.11.25
- caniuse-lite: 1.0.30001812
- electron-to-chromium: 1.5.438
- node-releases: 2.0.57
- update-browserslist-db: 1.3.3(browserslist@4.29.0)
-
- cacheable@2.5.0:
- dependencies:
- '@cacheable/memory': 2.2.0
- '@cacheable/utils': 2.5.0
- hookified: 1.15.1
- keyv: 5.6.0
- qified: 0.10.1
-
- caniuse-lite@1.0.30001812: {}
-
- convert-source-map@2.0.0: {}
-
- cross-spawn@7.0.6:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- csstype@3.2.3: {}
-
- debug@4.4.3:
- dependencies:
- ms: 2.1.3
-
- deep-is@0.1.4: {}
-
- detect-libc@2.1.2: {}
-
- electron-to-chromium@1.5.438: {}
-
- escalade@3.2.0: {}
-
- escape-string-regexp@4.0.0: {}
-
- eslint-plugin-react-hooks@7.1.1(eslint@10.11.0):
- dependencies:
- '@babel/core': 7.29.7
- '@babel/parser': 7.29.9
- eslint: 10.11.0
- hermes-parser: 0.25.1
- zod: 4.6.5
- zod-validation-error: 4.0.2(zod@4.6.5)
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-react-refresh@0.5.7(eslint@10.11.0):
- dependencies:
- eslint: 10.11.0
-
- eslint-scope@9.1.2:
- dependencies:
- '@types/esrecurse': 4.3.1
- '@types/estree': 1.0.9
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint-visitor-keys@5.0.1: {}
-
- eslint@10.11.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0)
- '@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.23.5
- '@eslint/config-helpers': 0.7.0
- '@eslint/core': 1.2.1
- '@eslint/plugin-kit': 0.7.3
- '@humanfs/node': 0.16.8
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.9
- ajv: 6.15.0
- cross-spawn: 7.0.6
- debug: 4.4.3
- escape-string-regexp: 4.0.0
- eslint-scope: 9.1.2
- eslint-visitor-keys: 5.0.1
- espree: 11.2.0
- esquery: 1.7.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 11.1.5
- find-up: 5.0.0
- glob-parent: 6.0.2
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- json-stable-stringify-without-jsonify: 1.0.1
- minimatch: 10.2.6
- natural-compare: 1.4.0
- optionator: 0.9.4
- transitivePeerDependencies:
- - supports-color
-
- espree@11.2.0:
- dependencies:
- acorn: 8.18.0
- acorn-jsx: 5.3.2(acorn@8.18.0)
- eslint-visitor-keys: 5.0.1
-
- esquery@1.7.0:
- dependencies:
- estraverse: 5.3.0
-
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
-
- estraverse@5.3.0: {}
-
- esutils@2.0.3: {}
-
- 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
-
- file-entry-cache@11.1.5:
- dependencies:
- flat-cache: 6.1.23
-
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- flat-cache@6.1.23:
- dependencies:
- cacheable: 2.5.0
- flatted: 3.4.4
- hookified: 1.15.1
-
- flatted@3.4.4: {}
-
- fsevents@2.3.3:
- optional: true
-
- gensync@1.0.0-beta.2: {}
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- globals@17.12.0: {}
-
- graphql-tag@2.12.7(graphql@17.0.2):
- dependencies:
- graphql: 17.0.2
- tslib: 2.8.1
-
- graphql@17.0.2: {}
-
- hashery@1.5.1:
- dependencies:
- hookified: 1.15.1
-
- hermes-estree@0.25.1: {}
-
- hermes-parser@0.25.1:
- dependencies:
- hermes-estree: 0.25.1
-
- hookified@1.15.1: {}
-
- hookified@2.2.0: {}
-
- ignore@5.3.2: {}
-
- ignore@7.0.10: {}
-
- imurmurhash@0.1.4: {}
-
- is-extglob@2.1.1: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- isexe@2.0.0: {}
-
- js-tokens@4.0.0: {}
-
- jsesc@3.1.0: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
-
- json5@2.2.3: {}
-
- keyv@5.6.0:
- dependencies:
- '@keyv/serialize': 1.1.1
-
- 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
-
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
- minimatch@10.2.6:
- dependencies:
- brace-expansion: 5.0.12
-
- ms@2.1.3: {}
-
- nanoid@3.3.19: {}
-
- natural-compare@1.4.0: {}
-
- node-releases@2.0.57: {}
-
- optimism@0.18.1:
- dependencies:
- '@wry/caches': 1.0.1
- '@wry/context': 0.7.4
- '@wry/trie': 0.5.0
- tslib: 2.8.1
-
- 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
-
- path-exists@4.0.0: {}
-
- path-key@3.1.1: {}
-
- picocolors@1.1.1: {}
-
- picomatch@4.0.7: {}
-
- postcss@8.5.28:
- dependencies:
- nanoid: 3.3.19
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- prelude-ls@1.2.1: {}
-
- punycode@2.3.1: {}
-
- qified@0.10.1:
- dependencies:
- hookified: 2.2.0
-
- react-dom@19.3.0(react@19.3.0):
- dependencies:
- react: 19.3.0
- scheduler: 0.28.0
-
- react@19.3.0: {}
-
- rolldown@1.2.10:
- dependencies:
- '@oxc-project/types': 0.151.0
- '@rolldown/pluginutils': 1.0.1
- optionalDependencies:
- '@rolldown/binding-android-arm-eabi': 1.2.10
- '@rolldown/binding-android-arm64': 1.2.10
- '@rolldown/binding-darwin-arm64': 1.2.10
- '@rolldown/binding-darwin-x64': 1.2.10
- '@rolldown/binding-freebsd-x64': 1.2.10
- '@rolldown/binding-linux-arm-gnueabihf': 1.2.10
- '@rolldown/binding-linux-arm64-gnu': 1.2.10
- '@rolldown/binding-linux-arm64-musl': 1.2.10
- '@rolldown/binding-linux-ppc64-gnu': 1.2.10
- '@rolldown/binding-linux-s390x-gnu': 1.2.10
- '@rolldown/binding-linux-x64-gnu': 1.2.10
- '@rolldown/binding-linux-x64-musl': 1.2.10
- '@rolldown/binding-openharmony-arm64': 1.2.10
- '@rolldown/binding-win32-arm64-msvc': 1.2.10
- '@rolldown/binding-win32-x64-msvc': 1.2.10
-
- rxjs@7.8.2:
- dependencies:
- tslib: 2.8.1
-
- scheduler@0.28.0: {}
-
- semver@6.3.1: {}
-
- semver@7.8.5: {}
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- source-map-js@1.2.1: {}
-
- tinyglobby@0.2.17:
- dependencies:
- fdir: 6.5.0(picomatch@4.0.7)
- picomatch: 4.0.7
-
- ts-api-utils@2.5.0(typescript@6.0.3):
- dependencies:
- typescript: 6.0.3
-
- tslib@2.8.1: {}
-
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
- typescript-eslint@8.70.1(eslint@10.11.0)(typescript@6.0.3):
- dependencies:
- '@typescript-eslint/eslint-plugin': 8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0)(typescript@6.0.3))(eslint@10.11.0)(typescript@6.0.3)
- '@typescript-eslint/parser': 8.70.1(eslint@10.11.0)(typescript@6.0.3)
- '@typescript-eslint/typescript-estree': 8.70.1(typescript@6.0.3)
- '@typescript-eslint/utils': 8.70.1(eslint@10.11.0)(typescript@6.0.3)
- eslint: 10.11.0
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
-
- typescript@6.0.3: {}
-
- undici-types@7.18.2: {}
-
- update-browserslist-db@1.3.3(browserslist@4.29.0):
- dependencies:
- browserslist: 4.29.0
- escalade: 3.2.0
- picocolors: 1.1.1
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- vite@8.3.1(@types/node@24.13.6):
- dependencies:
- lightningcss: 1.33.0
- picomatch: 4.0.7
- postcss: 8.5.28
- rolldown: 1.2.10
- tinyglobby: 0.2.17
- optionalDependencies:
- '@types/node': 24.13.6
- fsevents: 2.3.3
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- word-wrap@1.2.5: {}
-
- yallist@3.1.1: {}
-
- yocto-queue@0.1.0: {}
-
- zod-validation-error@4.0.2(zod@4.6.5):
- dependencies:
- zod: 4.6.5
-
- zod@4.6.5: {}
diff --git a/frontend/src/App.css b/frontend/src/App.css
index f90339d8..d6c7c9a0 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -42,8 +42,7 @@
z-index: 1;
top: 34px;
height: 28px;
- transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg)
- scale(1.4);
+ transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg) scale(1.4);
}
.vite {
@@ -51,8 +50,7 @@
top: 107px;
height: 26px;
width: auto;
- transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg)
- scale(0.8);
+ transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg) scale(0.8);
}
}
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 9ca8e8d4..9ec34bc7 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,11 +1,11 @@
-import { useState } from 'react'
-import heroImg from './assets/hero.png'
-import reactLogo from './assets/react.svg'
-import viteLogo from './assets/vite.svg'
-import './App.css'
+import { useState } from 'react';
+import heroImg from './assets/hero.png';
+import reactLogo from './assets/react.svg';
+import viteLogo from './assets/vite.svg';
+import './App.css';
function App() {
- const [count, setCount] = useState(0)
+ const [count, setCount] = useState(0);
return (
<>
@@ -21,11 +21,7 @@ function App() {
Edit src/App.tsx and save to test HMR
-