From 981a280141bb6186abeacd5316ddc76687c76837 Mon Sep 17 00:00:00 2001
From: Meno Abels <meno.abels@adviser.com>
Date: Thu, 30 Jan 2025 22:17:06 +0100
Subject: [PATCH] chore: rename indexdb -> indexeddb chore: updated vitest

---
 package-fireproof-core.json                   |  18 +-
 package.json                                  |  10 +-
 pnpm-lock.yaml                                | 615 +++++-------------
 setup.indexdb.ts => setup.indexeddb.ts        |   0
 src/blockstore/register-store-protocol.ts     |  12 +-
 src/runtime/gateways/indexdb-version.ts       |   1 -
 src/runtime/gateways/indexdb/index.ts         |   9 -
 src/runtime/gateways/indexeddb-version.ts     |   1 +
 .../{indexdb => indexeddb}/gateway-impl.ts    |  18 +-
 src/runtime/gateways/indexeddb/index.ts       |   9 +
 .../key-bag-indexeddb.ts}                     |   2 +-
 src/runtime/index.ts                          |   2 +-
 src/runtime/key-bag.ts                        |   8 +-
 ...ts => keyed-crypto-indexeddb-file.test.ts} |  14 +-
 tests/blockstore/keyed-crypto.test.ts         |  14 +-
 .../loader-config.test.ts                     |  20 +-
 tests/helpers.ts                              |   2 +-
 tsconfig.json                                 |   2 +-
 tsup.config.ts                                |  12 +-
 vitest.file.config.ts                         |   2 +-
 ...db.config.ts => vitest.indexeddb.config.ts |   4 +-
 vitest.memory.config.ts                       |   4 +-
 vitest.workspace.ts                           |   4 +-
 23 files changed, 229 insertions(+), 554 deletions(-)
 rename setup.indexdb.ts => setup.indexeddb.ts (100%)
 delete mode 100644 src/runtime/gateways/indexdb-version.ts
 delete mode 100644 src/runtime/gateways/indexdb/index.ts
 create mode 100644 src/runtime/gateways/indexeddb-version.ts
 rename src/runtime/gateways/{indexdb => indexeddb}/gateway-impl.ts (91%)
 create mode 100644 src/runtime/gateways/indexeddb/index.ts
 rename src/runtime/gateways/{indexdb/key-bag-indexdb.ts => indexeddb/key-bag-indexeddb.ts} (95%)
 rename tests/blockstore/{keyed-crypto-indexdb-file.test.ts => keyed-crypto-indexeddb-file.test.ts} (92%)
 rename tests/gateway/{indexdb => indexeddb}/loader-config.test.ts (83%)
 rename vitest.indexdb.config.ts => vitest.indexeddb.config.ts (87%)

diff --git a/package-fireproof-core.json b/package-fireproof-core.json
index 42b0bf42b..07c7c0cad 100644
--- a/package-fireproof-core.json
+++ b/package-fireproof-core.json
@@ -15,27 +15,27 @@
     },
     "./node": {
       "import": {
-        "browser": "./indexdb/index.js",
+        "browser": "./indexeddb/index.js",
         "default": "./node/index.js"
       },
-      "browser": "./indexdb/index.js",
+      "browser": "./indexeddb/index.js",
       "require": "./node/index.cjs",
       "types": "./node/index.d.ts"
     },
     "./deno": {
       "import": {
-        "browser": "./indexdb/index.js",
+        "browser": "./indexeddb/index.js",
         "default": "./deno/index.js"
       },
-      "browser": "./indexdb/index.js",
+      "browser": "./indexeddb/index.js",
       "require": "./deno/index.cjs",
       "types": "./deno/index.d.ts"
     },
-    "./indexdb": {
-      "import": "./indexdb/index.js",
-      "browser": "./indexdb/index.js",
-      "require": "./indexdb/index.cjs",
-      "types": "./indexdb/index.d.ts"
+    "./indexeddb": {
+      "import": "./indexeddb/index.js",
+      "browser": "./indexeddb/index.js",
+      "require": "./indexeddb/index.cjs",
+      "types": "./indexeddb/index.d.ts"
     },
     "./react": {
       "import": "./react/index.js",
diff --git a/package.json b/package.json
index c42f93edc..e40d53246 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,7 @@
     "env": "env",
     "test": "vitest --run",
     "test:file": "vitest --config vitest.file.config.ts --run",
-    "test:indexdb": "vitest --config vitest.browser.config.ts --run",
+    "test:browser": "vitest --config vitest.browser.config.ts --run",
     "test:deno": "deno run --quiet --allow-net --allow-write --allow-run  --allow-sys --allow-ffi  --allow-read --allow-env  ./node_modules/vitest/vitest.mjs --run --project file",
     "format": "prettier .",
     "lint": "eslint"
@@ -54,9 +54,9 @@
     "@types/randombytes": "^2.0.3",
     "@types/react": "^18.3.12",
     "@typescript-eslint/typescript-estree": "^8.21.0",
-    "@vitest/browser": "^2.1.8",
-    "@vitest/coverage-v8": "^2.1.8",
-    "@vitest/ui": "^2.1.8",
+    "@vitest/browser": "^3.0.4",
+    "@vitest/coverage-v8": "^3.0.4",
+    "@vitest/ui": "^3.0.4",
     "esbuild": "^0.24.2",
     "esbuild-plugin-replace": "^1.4.0",
     "esbuild-plugin-resolve": "^2.0.0",
@@ -73,7 +73,7 @@
     "uuidv7": "^1.0.2",
     "vite": "^6.0.7",
     "vite-tsconfig-paths": "^5.1.4",
-    "vitest": "^2.1.8",
+    "vitest": "^3.0.4",
     "webdriverio": "^9.7.1",
     "zx": "^8.3.0"
   },
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6da82c168..b32488d29 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -64,14 +64,14 @@ importers:
         specifier: ^8.21.0
         version: 8.21.0(typescript@5.7.3)
       '@vitest/browser':
-        specifier: ^2.1.8
-        version: 2.1.8(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@2.1.8)(webdriverio@9.7.1)
+        specifier: ^3.0.4
+        version: 3.0.4(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@3.0.4)(webdriverio@9.7.1)
       '@vitest/coverage-v8':
-        specifier: ^2.1.8
-        version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8)
+        specifier: ^3.0.4
+        version: 3.0.4(@vitest/browser@3.0.4)(vitest@3.0.4)
       '@vitest/ui':
-        specifier: ^2.1.8
-        version: 2.1.8(vitest@2.1.8)
+        specifier: ^3.0.4
+        version: 3.0.4(vitest@3.0.4)
       esbuild:
         specifier: ^0.24.2
         version: 0.24.2
@@ -121,8 +121,8 @@ importers:
         specifier: ^5.1.4
         version: 5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))
       vitest:
-        specifier: ^2.1.8
-        version: 2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))
+        specifier: ^3.0.4
+        version: 3.0.4(@types/node@22.10.5)(@vitest/browser@3.0.4)(@vitest/ui@3.0.4)(happy-dom@14.12.3)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.6.1)
       webdriverio:
         specifier: ^9.7.1
         version: 9.7.1
@@ -173,8 +173,9 @@ packages:
     resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==}
     engines: {node: '>=6.9.0'}
 
-  '@bcoe/v8-coverage@0.2.3':
-    resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+  '@bcoe/v8-coverage@1.0.2':
+    resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==}
+    engines: {node: '>=18'}
 
   '@bundled-es-modules/cookie@2.0.1':
     resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==}
@@ -185,12 +186,6 @@ packages:
   '@bundled-es-modules/tough-cookie@0.1.6':
     resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==}
 
-  '@esbuild/aix-ppc64@0.21.5':
-    resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [aix]
-
   '@esbuild/aix-ppc64@0.23.1':
     resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
     engines: {node: '>=18'}
@@ -203,12 +198,6 @@ packages:
     cpu: [ppc64]
     os: [aix]
 
-  '@esbuild/android-arm64@0.21.5':
-    resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [android]
-
   '@esbuild/android-arm64@0.23.1':
     resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
     engines: {node: '>=18'}
@@ -221,12 +210,6 @@ packages:
     cpu: [arm64]
     os: [android]
 
-  '@esbuild/android-arm@0.21.5':
-    resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [android]
-
   '@esbuild/android-arm@0.23.1':
     resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
     engines: {node: '>=18'}
@@ -239,12 +222,6 @@ packages:
     cpu: [arm]
     os: [android]
 
-  '@esbuild/android-x64@0.21.5':
-    resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [android]
-
   '@esbuild/android-x64@0.23.1':
     resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
     engines: {node: '>=18'}
@@ -257,12 +234,6 @@ packages:
     cpu: [x64]
     os: [android]
 
-  '@esbuild/darwin-arm64@0.21.5':
-    resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [darwin]
-
   '@esbuild/darwin-arm64@0.23.1':
     resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
     engines: {node: '>=18'}
@@ -275,12 +246,6 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
-  '@esbuild/darwin-x64@0.21.5':
-    resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [darwin]
-
   '@esbuild/darwin-x64@0.23.1':
     resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
     engines: {node: '>=18'}
@@ -293,12 +258,6 @@ packages:
     cpu: [x64]
     os: [darwin]
 
-  '@esbuild/freebsd-arm64@0.21.5':
-    resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [freebsd]
-
   '@esbuild/freebsd-arm64@0.23.1':
     resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
     engines: {node: '>=18'}
@@ -311,12 +270,6 @@ packages:
     cpu: [arm64]
     os: [freebsd]
 
-  '@esbuild/freebsd-x64@0.21.5':
-    resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [freebsd]
-
   '@esbuild/freebsd-x64@0.23.1':
     resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
     engines: {node: '>=18'}
@@ -329,12 +282,6 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
-  '@esbuild/linux-arm64@0.21.5':
-    resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [linux]
-
   '@esbuild/linux-arm64@0.23.1':
     resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
     engines: {node: '>=18'}
@@ -347,12 +294,6 @@ packages:
     cpu: [arm64]
     os: [linux]
 
-  '@esbuild/linux-arm@0.21.5':
-    resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [linux]
-
   '@esbuild/linux-arm@0.23.1':
     resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
     engines: {node: '>=18'}
@@ -365,12 +306,6 @@ packages:
     cpu: [arm]
     os: [linux]
 
-  '@esbuild/linux-ia32@0.21.5':
-    resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [linux]
-
   '@esbuild/linux-ia32@0.23.1':
     resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
     engines: {node: '>=18'}
@@ -383,12 +318,6 @@ packages:
     cpu: [ia32]
     os: [linux]
 
-  '@esbuild/linux-loong64@0.21.5':
-    resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
-    engines: {node: '>=12'}
-    cpu: [loong64]
-    os: [linux]
-
   '@esbuild/linux-loong64@0.23.1':
     resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
     engines: {node: '>=18'}
@@ -401,12 +330,6 @@ packages:
     cpu: [loong64]
     os: [linux]
 
-  '@esbuild/linux-mips64el@0.21.5':
-    resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
-    engines: {node: '>=12'}
-    cpu: [mips64el]
-    os: [linux]
-
   '@esbuild/linux-mips64el@0.23.1':
     resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
     engines: {node: '>=18'}
@@ -419,12 +342,6 @@ packages:
     cpu: [mips64el]
     os: [linux]
 
-  '@esbuild/linux-ppc64@0.21.5':
-    resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [linux]
-
   '@esbuild/linux-ppc64@0.23.1':
     resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
     engines: {node: '>=18'}
@@ -437,12 +354,6 @@ packages:
     cpu: [ppc64]
     os: [linux]
 
-  '@esbuild/linux-riscv64@0.21.5':
-    resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
-    engines: {node: '>=12'}
-    cpu: [riscv64]
-    os: [linux]
-
   '@esbuild/linux-riscv64@0.23.1':
     resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
     engines: {node: '>=18'}
@@ -455,12 +366,6 @@ packages:
     cpu: [riscv64]
     os: [linux]
 
-  '@esbuild/linux-s390x@0.21.5':
-    resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
-    engines: {node: '>=12'}
-    cpu: [s390x]
-    os: [linux]
-
   '@esbuild/linux-s390x@0.23.1':
     resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
     engines: {node: '>=18'}
@@ -473,12 +378,6 @@ packages:
     cpu: [s390x]
     os: [linux]
 
-  '@esbuild/linux-x64@0.21.5':
-    resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [linux]
-
   '@esbuild/linux-x64@0.23.1':
     resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
     engines: {node: '>=18'}
@@ -497,12 +396,6 @@ packages:
     cpu: [arm64]
     os: [netbsd]
 
-  '@esbuild/netbsd-x64@0.21.5':
-    resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [netbsd]
-
   '@esbuild/netbsd-x64@0.23.1':
     resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
     engines: {node: '>=18'}
@@ -527,12 +420,6 @@ packages:
     cpu: [arm64]
     os: [openbsd]
 
-  '@esbuild/openbsd-x64@0.21.5':
-    resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [openbsd]
-
   '@esbuild/openbsd-x64@0.23.1':
     resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
     engines: {node: '>=18'}
@@ -545,12 +432,6 @@ packages:
     cpu: [x64]
     os: [openbsd]
 
-  '@esbuild/sunos-x64@0.21.5':
-    resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [sunos]
-
   '@esbuild/sunos-x64@0.23.1':
     resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
     engines: {node: '>=18'}
@@ -563,12 +444,6 @@ packages:
     cpu: [x64]
     os: [sunos]
 
-  '@esbuild/win32-arm64@0.21.5':
-    resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [win32]
-
   '@esbuild/win32-arm64@0.23.1':
     resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
     engines: {node: '>=18'}
@@ -581,12 +456,6 @@ packages:
     cpu: [arm64]
     os: [win32]
 
-  '@esbuild/win32-ia32@0.21.5':
-    resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [win32]
-
   '@esbuild/win32-ia32@0.23.1':
     resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
     engines: {node: '>=18'}
@@ -599,12 +468,6 @@ packages:
     cpu: [ia32]
     os: [win32]
 
-  '@esbuild/win32-x64@0.21.5':
-    resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [win32]
-
   '@esbuild/win32-x64@0.23.1':
     resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
     engines: {node: '>=18'}
@@ -726,10 +589,6 @@ packages:
     resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
     engines: {node: '>=8'}
 
-  '@jridgewell/gen-mapping@0.3.5':
-    resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
-    engines: {node: '>=6.0.0'}
-
   '@jridgewell/gen-mapping@0.3.8':
     resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
     engines: {node: '>=6.0.0'}
@@ -1048,8 +907,8 @@ packages:
       '@types/react-dom':
         optional: true
 
-  '@testing-library/user-event@14.5.2':
-    resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==}
+  '@testing-library/user-event@14.6.1':
+    resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==}
     engines: {node: '>=12', npm: '>=6'}
     peerDependencies:
       '@testing-library/dom': '>=7.21.4'
@@ -1167,12 +1026,12 @@ packages:
     resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@vitest/browser@2.1.8':
-    resolution: {integrity: sha512-OWVvEJThRgxlNMYNVLEK/9qVkpRcLvyuKLngIV3Hob01P56NjPHprVBYn+rx4xAJudbM9yrCrywPIEuA3Xyo8A==}
+  '@vitest/browser@3.0.4':
+    resolution: {integrity: sha512-CMUG+OYJvXoe5ylGzmAU3eVX6d848FvRc+1j/STOi3bHBIv4kfXgUrvPuxJVzl6kOad57Vg+SKBvNjeBoc4esw==}
     peerDependencies:
       playwright: '*'
       safaridriver: '*'
-      vitest: 2.1.8
+      vitest: 3.0.4
       webdriverio: '*'
     peerDependenciesMeta:
       playwright:
@@ -1182,48 +1041,48 @@ packages:
       webdriverio:
         optional: true
 
-  '@vitest/coverage-v8@2.1.8':
-    resolution: {integrity: sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==}
+  '@vitest/coverage-v8@3.0.4':
+    resolution: {integrity: sha512-f0twgRCHgbs24Dp8cLWagzcObXMcuKtAwgxjJV/nnysPAJJk1JiKu/W0gIehZLmkljhJXU/E0/dmuQzsA/4jhA==}
     peerDependencies:
-      '@vitest/browser': 2.1.8
-      vitest: 2.1.8
+      '@vitest/browser': 3.0.4
+      vitest: 3.0.4
     peerDependenciesMeta:
       '@vitest/browser':
         optional: true
 
-  '@vitest/expect@2.1.8':
-    resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==}
+  '@vitest/expect@3.0.4':
+    resolution: {integrity: sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==}
 
-  '@vitest/mocker@2.1.8':
-    resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==}
+  '@vitest/mocker@3.0.4':
+    resolution: {integrity: sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==}
     peerDependencies:
       msw: ^2.4.9
-      vite: ^5.0.0
+      vite: ^5.0.0 || ^6.0.0
     peerDependenciesMeta:
       msw:
         optional: true
       vite:
         optional: true
 
-  '@vitest/pretty-format@2.1.8':
-    resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==}
+  '@vitest/pretty-format@3.0.4':
+    resolution: {integrity: sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==}
 
-  '@vitest/runner@2.1.8':
-    resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==}
+  '@vitest/runner@3.0.4':
+    resolution: {integrity: sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==}
 
-  '@vitest/snapshot@2.1.8':
-    resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==}
+  '@vitest/snapshot@3.0.4':
+    resolution: {integrity: sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==}
 
-  '@vitest/spy@2.1.8':
-    resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==}
+  '@vitest/spy@3.0.4':
+    resolution: {integrity: sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==}
 
-  '@vitest/ui@2.1.8':
-    resolution: {integrity: sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==}
+  '@vitest/ui@3.0.4':
+    resolution: {integrity: sha512-e+s2F9e9FUURkZ5aFIe1Fi3Y8M7UF6gEuShcaV/ur7y/Ldri+1tzWQ1TJq9Vas42NXnXvCAIrU39Z4U2RyET6g==}
     peerDependencies:
-      vitest: 2.1.8
+      vitest: 3.0.4
 
-  '@vitest/utils@2.1.8':
-    resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==}
+  '@vitest/utils@3.0.4':
+    resolution: {integrity: sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==}
 
   '@wdio/config@9.6.4':
     resolution: {integrity: sha512-oTNXVVzaZ0qaM7oX8tyS3YBr4A3ij2py3Umew3ez0IS2vHpRs1LvLfVWoHRSqrhJIVnfjV3+zqcl9BWALNVD/g==}
@@ -1720,8 +1579,8 @@ packages:
     resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
     engines: {node: '>= 0.4'}
 
-  es-module-lexer@1.5.4:
-    resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+  es-module-lexer@1.6.0:
+    resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
 
   es-object-atoms@1.1.1:
     resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
@@ -1744,11 +1603,6 @@ packages:
   esbuild-plugin-resolve@2.0.0:
     resolution: {integrity: sha512-eJy9B8yDW5X/J48eWtR1uVmv+DKfHvYYnrrcqQoe/nUkVHVOTZlJnSevkYyGOz6hI90t036Y5QIPDrGzmppxfg==}
 
-  esbuild@0.21.5:
-    resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
-    engines: {node: '>=12'}
-    hasBin: true
-
   esbuild@0.23.1:
     resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
     engines: {node: '>=18'}
@@ -1956,13 +1810,12 @@ packages:
   flatted@3.3.1:
     resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
 
+  flatted@3.3.2:
+    resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
+
   for-each@0.3.3:
     resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
 
-  foreground-child@3.1.1:
-    resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
-    engines: {node: '>=14'}
-
   foreground-child@3.3.0:
     resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
     engines: {node: '>=14'}
@@ -2035,11 +1888,6 @@ packages:
     resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
     engines: {node: '>=10.13.0'}
 
-  glob@10.4.2:
-    resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==}
-    engines: {node: '>=16 || 14 >=14.18'}
-    hasBin: true
-
   glob@10.4.5:
     resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
     hasBin: true
@@ -2357,10 +2205,6 @@ packages:
   it-stream-types@2.0.2:
     resolution: {integrity: sha512-Rz/DEZ6Byn/r9+/SBCuJhpPATDF9D+dz5pbgSUyBsCDtza6wtNATrz/jz1gDyNanC3XdLboriHnOC925bZRBww==}
 
-  jackspeak@3.4.0:
-    resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
-    engines: {node: '>=14'}
-
   jackspeak@3.4.3:
     resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
 
@@ -2478,8 +2322,8 @@ packages:
   magic-string@0.25.9:
     resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
 
-  magic-string@0.30.12:
-    resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
+  magic-string@0.30.17:
+    resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
 
   magicast@0.3.5:
     resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
@@ -2532,8 +2376,8 @@ packages:
   ms@2.1.3:
     resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
 
-  msw@2.6.9:
-    resolution: {integrity: sha512-b2z9MvsEOYG5G7jtJasXO3ucHDcqCjf046e9wELIixBbYCRZCEmB4gqcb+C7ASyXBafNBR0D2u31YtG01OdX3A==}
+  msw@2.7.0:
+    resolution: {integrity: sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==}
     engines: {node: '>=18'}
     hasBin: true
     peerDependencies:
@@ -2669,9 +2513,6 @@ packages:
     resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==}
     engines: {node: '>= 14'}
 
-  package-json-from-dist@1.0.0:
-    resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
-
   package-json-from-dist@1.0.1:
     resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
 
@@ -2709,8 +2550,8 @@ packages:
   path-to-regexp@6.3.0:
     resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
 
-  pathe@1.1.2:
-    resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+  pathe@2.0.2:
+    resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==}
 
   pathval@2.0.0:
     resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
@@ -3180,9 +3021,6 @@ packages:
   tinybench@2.9.0:
     resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
 
-  tinyexec@0.3.1:
-    resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
-
   tinyexec@0.3.2:
     resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
 
@@ -3194,8 +3032,8 @@ packages:
     resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
     engines: {node: ^18.0.0 || >=20.0.0}
 
-  tinyrainbow@1.2.0:
-    resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
+  tinyrainbow@2.0.0:
+    resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
     engines: {node: '>=14.0.0'}
 
   tinyspy@3.0.2:
@@ -3389,9 +3227,9 @@ packages:
   varint@6.0.0:
     resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
 
-  vite-node@2.1.8:
-    resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==}
-    engines: {node: ^18.0.0 || >=20.0.0}
+  vite-node@3.0.4:
+    resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==}
+    engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
     hasBin: true
 
   vite-tsconfig-paths@5.1.4:
@@ -3402,37 +3240,6 @@ packages:
       vite:
         optional: true
 
-  vite@5.4.11:
-    resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==}
-    engines: {node: ^18.0.0 || >=20.0.0}
-    hasBin: true
-    peerDependencies:
-      '@types/node': ^18.0.0 || >=20.0.0
-      less: '*'
-      lightningcss: ^1.21.0
-      sass: '*'
-      sass-embedded: '*'
-      stylus: '*'
-      sugarss: '*'
-      terser: ^5.4.0
-    peerDependenciesMeta:
-      '@types/node':
-        optional: true
-      less:
-        optional: true
-      lightningcss:
-        optional: true
-      sass:
-        optional: true
-      sass-embedded:
-        optional: true
-      stylus:
-        optional: true
-      sugarss:
-        optional: true
-      terser:
-        optional: true
-
   vite@6.0.7:
     resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==}
     engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
@@ -3473,20 +3280,23 @@ packages:
       yaml:
         optional: true
 
-  vitest@2.1.8:
-    resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==}
-    engines: {node: ^18.0.0 || >=20.0.0}
+  vitest@3.0.4:
+    resolution: {integrity: sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==}
+    engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
     hasBin: true
     peerDependencies:
       '@edge-runtime/vm': '*'
-      '@types/node': ^18.0.0 || >=20.0.0
-      '@vitest/browser': 2.1.8
-      '@vitest/ui': 2.1.8
+      '@types/debug': ^4.1.12
+      '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+      '@vitest/browser': 3.0.4
+      '@vitest/ui': 3.0.4
       happy-dom: '*'
       jsdom: '*'
     peerDependenciesMeta:
       '@edge-runtime/vm':
         optional: true
+      '@types/debug':
+        optional: true
       '@types/node':
         optional: true
       '@vitest/browser':
@@ -3654,7 +3464,7 @@ snapshots:
 
   '@ampproject/remapping@2.3.0':
     dependencies:
-      '@jridgewell/gen-mapping': 0.3.5
+      '@jridgewell/gen-mapping': 0.3.8
       '@jridgewell/trace-mapping': 0.3.25
 
   '@babel/code-frame@7.24.7':
@@ -3686,7 +3496,7 @@ snapshots:
       '@babel/helper-string-parser': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
 
-  '@bcoe/v8-coverage@0.2.3': {}
+  '@bcoe/v8-coverage@1.0.2': {}
 
   '@bundled-es-modules/cookie@2.0.1':
     dependencies:
@@ -3701,153 +3511,102 @@ snapshots:
       '@types/tough-cookie': 4.0.5
       tough-cookie: 4.1.4
 
-  '@esbuild/aix-ppc64@0.21.5':
-    optional: true
-
   '@esbuild/aix-ppc64@0.23.1':
     optional: true
 
   '@esbuild/aix-ppc64@0.24.2':
     optional: true
 
-  '@esbuild/android-arm64@0.21.5':
-    optional: true
-
   '@esbuild/android-arm64@0.23.1':
     optional: true
 
   '@esbuild/android-arm64@0.24.2':
     optional: true
 
-  '@esbuild/android-arm@0.21.5':
-    optional: true
-
   '@esbuild/android-arm@0.23.1':
     optional: true
 
   '@esbuild/android-arm@0.24.2':
     optional: true
 
-  '@esbuild/android-x64@0.21.5':
-    optional: true
-
   '@esbuild/android-x64@0.23.1':
     optional: true
 
   '@esbuild/android-x64@0.24.2':
     optional: true
 
-  '@esbuild/darwin-arm64@0.21.5':
-    optional: true
-
   '@esbuild/darwin-arm64@0.23.1':
     optional: true
 
   '@esbuild/darwin-arm64@0.24.2':
     optional: true
 
-  '@esbuild/darwin-x64@0.21.5':
-    optional: true
-
   '@esbuild/darwin-x64@0.23.1':
     optional: true
 
   '@esbuild/darwin-x64@0.24.2':
     optional: true
 
-  '@esbuild/freebsd-arm64@0.21.5':
-    optional: true
-
   '@esbuild/freebsd-arm64@0.23.1':
     optional: true
 
   '@esbuild/freebsd-arm64@0.24.2':
     optional: true
 
-  '@esbuild/freebsd-x64@0.21.5':
-    optional: true
-
   '@esbuild/freebsd-x64@0.23.1':
     optional: true
 
   '@esbuild/freebsd-x64@0.24.2':
     optional: true
 
-  '@esbuild/linux-arm64@0.21.5':
-    optional: true
-
   '@esbuild/linux-arm64@0.23.1':
     optional: true
 
   '@esbuild/linux-arm64@0.24.2':
     optional: true
 
-  '@esbuild/linux-arm@0.21.5':
-    optional: true
-
   '@esbuild/linux-arm@0.23.1':
     optional: true
 
   '@esbuild/linux-arm@0.24.2':
     optional: true
 
-  '@esbuild/linux-ia32@0.21.5':
-    optional: true
-
   '@esbuild/linux-ia32@0.23.1':
     optional: true
 
   '@esbuild/linux-ia32@0.24.2':
     optional: true
 
-  '@esbuild/linux-loong64@0.21.5':
-    optional: true
-
   '@esbuild/linux-loong64@0.23.1':
     optional: true
 
   '@esbuild/linux-loong64@0.24.2':
     optional: true
 
-  '@esbuild/linux-mips64el@0.21.5':
-    optional: true
-
   '@esbuild/linux-mips64el@0.23.1':
     optional: true
 
   '@esbuild/linux-mips64el@0.24.2':
     optional: true
 
-  '@esbuild/linux-ppc64@0.21.5':
-    optional: true
-
   '@esbuild/linux-ppc64@0.23.1':
     optional: true
 
   '@esbuild/linux-ppc64@0.24.2':
     optional: true
 
-  '@esbuild/linux-riscv64@0.21.5':
-    optional: true
-
   '@esbuild/linux-riscv64@0.23.1':
     optional: true
 
   '@esbuild/linux-riscv64@0.24.2':
     optional: true
 
-  '@esbuild/linux-s390x@0.21.5':
-    optional: true
-
   '@esbuild/linux-s390x@0.23.1':
     optional: true
 
   '@esbuild/linux-s390x@0.24.2':
     optional: true
 
-  '@esbuild/linux-x64@0.21.5':
-    optional: true
-
   '@esbuild/linux-x64@0.23.1':
     optional: true
 
@@ -3857,9 +3616,6 @@ snapshots:
   '@esbuild/netbsd-arm64@0.24.2':
     optional: true
 
-  '@esbuild/netbsd-x64@0.21.5':
-    optional: true
-
   '@esbuild/netbsd-x64@0.23.1':
     optional: true
 
@@ -3872,45 +3628,30 @@ snapshots:
   '@esbuild/openbsd-arm64@0.24.2':
     optional: true
 
-  '@esbuild/openbsd-x64@0.21.5':
-    optional: true
-
   '@esbuild/openbsd-x64@0.23.1':
     optional: true
 
   '@esbuild/openbsd-x64@0.24.2':
     optional: true
 
-  '@esbuild/sunos-x64@0.21.5':
-    optional: true
-
   '@esbuild/sunos-x64@0.23.1':
     optional: true
 
   '@esbuild/sunos-x64@0.24.2':
     optional: true
 
-  '@esbuild/win32-arm64@0.21.5':
-    optional: true
-
   '@esbuild/win32-arm64@0.23.1':
     optional: true
 
   '@esbuild/win32-arm64@0.24.2':
     optional: true
 
-  '@esbuild/win32-ia32@0.21.5':
-    optional: true
-
   '@esbuild/win32-ia32@0.23.1':
     optional: true
 
   '@esbuild/win32-ia32@0.24.2':
     optional: true
 
-  '@esbuild/win32-x64@0.21.5':
-    optional: true
-
   '@esbuild/win32-x64@0.23.1':
     optional: true
 
@@ -4058,12 +3799,6 @@ snapshots:
 
   '@istanbuljs/schema@0.1.3': {}
 
-  '@jridgewell/gen-mapping@0.3.5':
-    dependencies:
-      '@jridgewell/set-array': 1.2.1
-      '@jridgewell/sourcemap-codec': 1.5.0
-      '@jridgewell/trace-mapping': 0.3.25
-
   '@jridgewell/gen-mapping@0.3.8':
     dependencies:
       '@jridgewell/set-array': 1.2.1
@@ -4316,7 +4051,7 @@ snapshots:
     optionalDependencies:
       '@types/react': 18.3.12
 
-  '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)':
+  '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)':
     dependencies:
       '@testing-library/dom': 10.4.0
 
@@ -4464,17 +4199,17 @@ snapshots:
       '@typescript-eslint/types': 8.21.0
       eslint-visitor-keys: 4.2.0
 
-  '@vitest/browser@2.1.8(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@2.1.8)(webdriverio@9.7.1)':
+  '@vitest/browser@3.0.4(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@3.0.4)(webdriverio@9.7.1)':
     dependencies:
       '@testing-library/dom': 10.4.0
-      '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
-      '@vitest/mocker': 2.1.8(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))
-      '@vitest/utils': 2.1.8
-      magic-string: 0.30.12
-      msw: 2.6.9(@types/node@22.10.5)(typescript@5.7.3)
+      '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0)
+      '@vitest/mocker': 3.0.4(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))
+      '@vitest/utils': 3.0.4
+      magic-string: 0.30.17
+      msw: 2.7.0(@types/node@22.10.5)(typescript@5.7.3)
       sirv: 3.0.0
-      tinyrainbow: 1.2.0
-      vitest: 2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))
+      tinyrainbow: 2.0.0
+      vitest: 3.0.4(@types/node@22.10.5)(@vitest/browser@3.0.4)(@vitest/ui@3.0.4)(happy-dom@14.12.3)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.6.1)
       ws: 8.18.0
     optionalDependencies:
       playwright: 1.49.0
@@ -4486,86 +4221,77 @@ snapshots:
       - utf-8-validate
       - vite
 
-  '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8)':
+  '@vitest/coverage-v8@3.0.4(@vitest/browser@3.0.4)(vitest@3.0.4)':
     dependencies:
       '@ampproject/remapping': 2.3.0
-      '@bcoe/v8-coverage': 0.2.3
-      debug: 4.3.7
+      '@bcoe/v8-coverage': 1.0.2
+      debug: 4.4.0
       istanbul-lib-coverage: 3.2.2
       istanbul-lib-report: 3.0.1
       istanbul-lib-source-maps: 5.0.6
       istanbul-reports: 3.1.7
-      magic-string: 0.30.12
+      magic-string: 0.30.17
       magicast: 0.3.5
       std-env: 3.8.0
       test-exclude: 7.0.1
-      tinyrainbow: 1.2.0
-      vitest: 2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))
+      tinyrainbow: 2.0.0
+      vitest: 3.0.4(@types/node@22.10.5)(@vitest/browser@3.0.4)(@vitest/ui@3.0.4)(happy-dom@14.12.3)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.6.1)
     optionalDependencies:
-      '@vitest/browser': 2.1.8(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@2.1.8)(webdriverio@9.7.1)
+      '@vitest/browser': 3.0.4(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@3.0.4)(webdriverio@9.7.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitest/expect@2.1.8':
+  '@vitest/expect@3.0.4':
     dependencies:
-      '@vitest/spy': 2.1.8
-      '@vitest/utils': 2.1.8
+      '@vitest/spy': 3.0.4
+      '@vitest/utils': 3.0.4
       chai: 5.1.2
-      tinyrainbow: 1.2.0
-
-  '@vitest/mocker@2.1.8(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))(vite@5.4.11(@types/node@22.10.5))':
-    dependencies:
-      '@vitest/spy': 2.1.8
-      estree-walker: 3.0.3
-      magic-string: 0.30.12
-    optionalDependencies:
-      msw: 2.6.9(@types/node@22.10.5)(typescript@5.7.3)
-      vite: 5.4.11(@types/node@22.10.5)
+      tinyrainbow: 2.0.0
 
-  '@vitest/mocker@2.1.8(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))':
+  '@vitest/mocker@3.0.4(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))':
     dependencies:
-      '@vitest/spy': 2.1.8
+      '@vitest/spy': 3.0.4
       estree-walker: 3.0.3
-      magic-string: 0.30.12
+      magic-string: 0.30.17
     optionalDependencies:
-      msw: 2.6.9(@types/node@22.10.5)(typescript@5.7.3)
+      msw: 2.7.0(@types/node@22.10.5)(typescript@5.7.3)
       vite: 6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1)
 
-  '@vitest/pretty-format@2.1.8':
+  '@vitest/pretty-format@3.0.4':
     dependencies:
-      tinyrainbow: 1.2.0
+      tinyrainbow: 2.0.0
 
-  '@vitest/runner@2.1.8':
+  '@vitest/runner@3.0.4':
     dependencies:
-      '@vitest/utils': 2.1.8
-      pathe: 1.1.2
+      '@vitest/utils': 3.0.4
+      pathe: 2.0.2
 
-  '@vitest/snapshot@2.1.8':
+  '@vitest/snapshot@3.0.4':
     dependencies:
-      '@vitest/pretty-format': 2.1.8
-      magic-string: 0.30.12
-      pathe: 1.1.2
+      '@vitest/pretty-format': 3.0.4
+      magic-string: 0.30.17
+      pathe: 2.0.2
 
-  '@vitest/spy@2.1.8':
+  '@vitest/spy@3.0.4':
     dependencies:
       tinyspy: 3.0.2
 
-  '@vitest/ui@2.1.8(vitest@2.1.8)':
+  '@vitest/ui@3.0.4(vitest@3.0.4)':
     dependencies:
-      '@vitest/utils': 2.1.8
+      '@vitest/utils': 3.0.4
       fflate: 0.8.2
-      flatted: 3.3.1
-      pathe: 1.1.2
+      flatted: 3.3.2
+      pathe: 2.0.2
       sirv: 3.0.0
       tinyglobby: 0.2.10
-      tinyrainbow: 1.2.0
-      vitest: 2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))
+      tinyrainbow: 2.0.0
+      vitest: 3.0.4(@types/node@22.10.5)(@vitest/browser@3.0.4)(@vitest/ui@3.0.4)(happy-dom@14.12.3)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.6.1)
 
-  '@vitest/utils@2.1.8':
+  '@vitest/utils@3.0.4':
     dependencies:
-      '@vitest/pretty-format': 2.1.8
+      '@vitest/pretty-format': 3.0.4
       loupe: 3.1.2
-      tinyrainbow: 1.2.0
+      tinyrainbow: 2.0.0
 
   '@wdio/config@9.6.4':
     dependencies:
@@ -5159,7 +4885,7 @@ snapshots:
 
   es-errors@1.3.0: {}
 
-  es-module-lexer@1.5.4: {}
+  es-module-lexer@1.6.0: {}
 
   es-object-atoms@1.1.1:
     dependencies:
@@ -5188,32 +4914,6 @@ snapshots:
 
   esbuild-plugin-resolve@2.0.0: {}
 
-  esbuild@0.21.5:
-    optionalDependencies:
-      '@esbuild/aix-ppc64': 0.21.5
-      '@esbuild/android-arm': 0.21.5
-      '@esbuild/android-arm64': 0.21.5
-      '@esbuild/android-x64': 0.21.5
-      '@esbuild/darwin-arm64': 0.21.5
-      '@esbuild/darwin-x64': 0.21.5
-      '@esbuild/freebsd-arm64': 0.21.5
-      '@esbuild/freebsd-x64': 0.21.5
-      '@esbuild/linux-arm': 0.21.5
-      '@esbuild/linux-arm64': 0.21.5
-      '@esbuild/linux-ia32': 0.21.5
-      '@esbuild/linux-loong64': 0.21.5
-      '@esbuild/linux-mips64el': 0.21.5
-      '@esbuild/linux-ppc64': 0.21.5
-      '@esbuild/linux-riscv64': 0.21.5
-      '@esbuild/linux-s390x': 0.21.5
-      '@esbuild/linux-x64': 0.21.5
-      '@esbuild/netbsd-x64': 0.21.5
-      '@esbuild/openbsd-x64': 0.21.5
-      '@esbuild/sunos-x64': 0.21.5
-      '@esbuild/win32-arm64': 0.21.5
-      '@esbuild/win32-ia32': 0.21.5
-      '@esbuild/win32-x64': 0.21.5
-
   esbuild@0.23.1:
     optionalDependencies:
       '@esbuild/aix-ppc64': 0.23.1
@@ -5498,15 +5198,12 @@ snapshots:
 
   flatted@3.3.1: {}
 
+  flatted@3.3.2: {}
+
   for-each@0.3.3:
     dependencies:
       is-callable: 1.2.7
 
-  foreground-child@3.1.1:
-    dependencies:
-      cross-spawn: 7.0.6
-      signal-exit: 4.1.0
-
   foreground-child@3.3.0:
     dependencies:
       cross-spawn: 7.0.6
@@ -5601,15 +5298,6 @@ snapshots:
     dependencies:
       is-glob: 4.0.3
 
-  glob@10.4.2:
-    dependencies:
-      foreground-child: 3.1.1
-      jackspeak: 3.4.0
-      minimatch: 9.0.5
-      minipass: 7.1.2
-      package-json-from-dist: 1.0.0
-      path-scurry: 1.11.1
-
   glob@10.4.5:
     dependencies:
       foreground-child: 3.3.0
@@ -5887,7 +5575,7 @@ snapshots:
   istanbul-lib-source-maps@5.0.6:
     dependencies:
       '@jridgewell/trace-mapping': 0.3.25
-      debug: 4.3.7
+      debug: 4.4.0
       istanbul-lib-coverage: 3.2.2
     transitivePeerDependencies:
       - supports-color
@@ -5929,12 +5617,6 @@ snapshots:
 
   it-stream-types@2.0.2: {}
 
-  jackspeak@3.4.0:
-    dependencies:
-      '@isaacs/cliui': 8.0.2
-    optionalDependencies:
-      '@pkgjs/parseargs': 0.11.0
-
   jackspeak@3.4.3:
     dependencies:
       '@isaacs/cliui': 8.0.2
@@ -6039,7 +5721,7 @@ snapshots:
     dependencies:
       sourcemap-codec: 1.4.8
 
-  magic-string@0.30.12:
+  magic-string@0.30.17:
     dependencies:
       '@jridgewell/sourcemap-codec': 1.5.0
 
@@ -6093,7 +5775,7 @@ snapshots:
 
   ms@2.1.3: {}
 
-  msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3):
+  msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3):
     dependencies:
       '@bundled-es-modules/cookie': 2.0.1
       '@bundled-es-modules/statuses': 1.0.1
@@ -6104,12 +5786,12 @@ snapshots:
       '@open-draft/until': 2.1.0
       '@types/cookie': 0.6.0
       '@types/statuses': 2.0.5
-      chalk: 4.1.2
       graphql: 16.9.0
       headers-polyfill: 4.0.3
       is-node-process: 1.2.0
       outvariant: 1.4.3
       path-to-regexp: 6.3.0
+      picocolors: 1.1.1
       strict-event-emitter: 0.5.1
       type-fest: 4.30.1
       yargs: 17.7.2
@@ -6257,8 +5939,6 @@ snapshots:
       degenerator: 5.0.1
       netmask: 2.0.2
 
-  package-json-from-dist@1.0.0: {}
-
   package-json-from-dist@1.0.1: {}
 
   pako@1.0.11: {}
@@ -6293,7 +5973,7 @@ snapshots:
 
   path-to-regexp@6.3.0: {}
 
-  pathe@1.1.2: {}
+  pathe@2.0.2: {}
 
   pathval@2.0.0: {}
 
@@ -6817,7 +6497,7 @@ snapshots:
   test-exclude@7.0.1:
     dependencies:
       '@istanbuljs/schema': 0.1.3
-      glob: 10.4.2
+      glob: 10.4.5
       minimatch: 9.0.5
 
   text-decoder@1.2.3:
@@ -6836,8 +6516,6 @@ snapshots:
 
   tinybench@2.9.0: {}
 
-  tinyexec@0.3.1: {}
-
   tinyexec@0.3.2: {}
 
   tinyglobby@0.2.10:
@@ -6847,7 +6525,7 @@ snapshots:
 
   tinypool@1.0.2: {}
 
-  tinyrainbow@1.2.0: {}
+  tinyrainbow@2.0.0: {}
 
   tinyspy@3.0.2: {}
 
@@ -7047,15 +6725,16 @@ snapshots:
 
   varint@6.0.0: {}
 
-  vite-node@2.1.8(@types/node@22.10.5):
+  vite-node@3.0.4(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1):
     dependencies:
       cac: 6.7.14
       debug: 4.4.0
-      es-module-lexer: 1.5.4
-      pathe: 1.1.2
-      vite: 5.4.11(@types/node@22.10.5)
+      es-module-lexer: 1.6.0
+      pathe: 2.0.2
+      vite: 6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1)
     transitivePeerDependencies:
       - '@types/node'
+      - jiti
       - less
       - lightningcss
       - sass
@@ -7064,6 +6743,8 @@ snapshots:
       - sugarss
       - supports-color
       - terser
+      - tsx
+      - yaml
 
   vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1)):
     dependencies:
@@ -7076,15 +6757,6 @@ snapshots:
       - supports-color
       - typescript
 
-  vite@5.4.11(@types/node@22.10.5):
-    dependencies:
-      esbuild: 0.21.5
-      postcss: 8.4.49
-      rollup: 4.32.0
-    optionalDependencies:
-      '@types/node': 22.10.5
-      fsevents: 2.3.3
-
   vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1):
     dependencies:
       esbuild: 0.24.2
@@ -7096,34 +6768,35 @@ snapshots:
       tsx: 4.19.2
       yaml: 2.6.1
 
-  vitest@2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3)):
+  vitest@3.0.4(@types/node@22.10.5)(@vitest/browser@3.0.4)(@vitest/ui@3.0.4)(happy-dom@14.12.3)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.6.1):
     dependencies:
-      '@vitest/expect': 2.1.8
-      '@vitest/mocker': 2.1.8(msw@2.6.9(@types/node@22.10.5)(typescript@5.7.3))(vite@5.4.11(@types/node@22.10.5))
-      '@vitest/pretty-format': 2.1.8
-      '@vitest/runner': 2.1.8
-      '@vitest/snapshot': 2.1.8
-      '@vitest/spy': 2.1.8
-      '@vitest/utils': 2.1.8
+      '@vitest/expect': 3.0.4
+      '@vitest/mocker': 3.0.4(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))
+      '@vitest/pretty-format': 3.0.4
+      '@vitest/runner': 3.0.4
+      '@vitest/snapshot': 3.0.4
+      '@vitest/spy': 3.0.4
+      '@vitest/utils': 3.0.4
       chai: 5.1.2
-      debug: 4.3.7
+      debug: 4.4.0
       expect-type: 1.1.0
-      magic-string: 0.30.12
-      pathe: 1.1.2
+      magic-string: 0.30.17
+      pathe: 2.0.2
       std-env: 3.8.0
       tinybench: 2.9.0
-      tinyexec: 0.3.1
+      tinyexec: 0.3.2
       tinypool: 1.0.2
-      tinyrainbow: 1.2.0
-      vite: 5.4.11(@types/node@22.10.5)
-      vite-node: 2.1.8(@types/node@22.10.5)
+      tinyrainbow: 2.0.0
+      vite: 6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1)
+      vite-node: 3.0.4(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1)
       why-is-node-running: 2.3.0
     optionalDependencies:
       '@types/node': 22.10.5
-      '@vitest/browser': 2.1.8(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@2.1.8)(webdriverio@9.7.1)
-      '@vitest/ui': 2.1.8(vitest@2.1.8)
+      '@vitest/browser': 3.0.4(@types/node@22.10.5)(playwright@1.49.0)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(tsx@4.19.2)(yaml@2.6.1))(vitest@3.0.4)(webdriverio@9.7.1)
+      '@vitest/ui': 3.0.4(vitest@3.0.4)
       happy-dom: 14.12.3
     transitivePeerDependencies:
+      - jiti
       - less
       - lightningcss
       - msw
@@ -7133,6 +6806,8 @@ snapshots:
       - sugarss
       - supports-color
       - terser
+      - tsx
+      - yaml
 
   wait-port@1.1.0:
     dependencies:
diff --git a/setup.indexdb.ts b/setup.indexeddb.ts
similarity index 100%
rename from setup.indexdb.ts
rename to setup.indexeddb.ts
diff --git a/src/blockstore/register-store-protocol.ts b/src/blockstore/register-store-protocol.ts
index 4ccdbc49f..5374f7249 100644
--- a/src/blockstore/register-store-protocol.ts
+++ b/src/blockstore/register-store-protocol.ts
@@ -2,7 +2,7 @@ import { BuildURI, runtimeFn, URI } from "@adviser/cement";
 import { PARAM, SuperThis } from "../types.js";
 import type { SerdeGateway } from "./serde-gateway.js";
 import { FILESTORE_VERSION } from "../runtime/gateways/file/version.js";
-import { INDEXDB_VERSION } from "../runtime/gateways/indexdb-version.js";
+import { INDEXEDDB_VERSION } from "../runtime/gateways/indexeddb-version.js";
 import type { Gateway } from "./gateway.js";
 
 import { FileGateway } from "../runtime/gateways/file/gateway-impl.js";
@@ -22,7 +22,7 @@ export interface SerdeGatewayFactoryItem {
 
   // readonly gateway?: (sthis: SuperThis) => Promise<SerdeGateway>;
   // readonly test: (sthis: SuperThis, gfi: GatewayFactoryItem) => Promise<TestGateway>;
-  // which switches between file and indexdb
+  // which switches between file and indexeddb
   // readonly data: (logger: Logger) => Promise<Gateway>;
   // readonly meta: (logger: Logger) => Promise<Gateway>;
   // readonly wal: (logger: Logger) => Promise<Gateway>;
@@ -130,17 +130,17 @@ if (runtimeFn().isNodeIsh || runtimeFn().isDeno) {
 
 if (runtimeFn().isBrowser) {
   registerStoreProtocol({
-    protocol: "indexdb:",
+    protocol: "indexeddb:",
     isDefault: true,
     defaultURI: () => {
-      return BuildURI.from("indexdb://")
+      return BuildURI.from("indexeddb://")
         .pathname("fp")
-        .setParam(PARAM.VERSION, INDEXDB_VERSION)
+        .setParam(PARAM.VERSION, INDEXEDDB_VERSION)
         .setParam(PARAM.RUNTIME, "browser")
         .URI();
     },
     gateway: async () => {
-      const { GatewayImpl } = await import("@fireproof/core/indexdb");
+      const { GatewayImpl } = await import("@fireproof/core/indexeddb");
       return new GatewayImpl();
     },
   });
diff --git a/src/runtime/gateways/indexdb-version.ts b/src/runtime/gateways/indexdb-version.ts
deleted file mode 100644
index 70d4511c3..000000000
--- a/src/runtime/gateways/indexdb-version.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const INDEXDB_VERSION = "v0.19-indexdb";
diff --git a/src/runtime/gateways/indexdb/index.ts b/src/runtime/gateways/indexdb/index.ts
deleted file mode 100644
index 563f0b631..000000000
--- a/src/runtime/gateways/indexdb/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// export * from "./gateway-impl.js";
-
-export * from "./key-bag-indexdb.js";
-import { KeyBagProviderIndexDB as KeyBagProviderImpl } from "./key-bag-indexdb.js";
-
-export { KeyBagProviderImpl };
-
-import { IndexDBGateway as GatewayImpl } from "./gateway-impl.js";
-export { GatewayImpl };
diff --git a/src/runtime/gateways/indexeddb-version.ts b/src/runtime/gateways/indexeddb-version.ts
new file mode 100644
index 000000000..80fc2ca74
--- /dev/null
+++ b/src/runtime/gateways/indexeddb-version.ts
@@ -0,0 +1 @@
+export const INDEXEDDB_VERSION = "v0.19-indexeddb";
diff --git a/src/runtime/gateways/indexdb/gateway-impl.ts b/src/runtime/gateways/indexeddb/gateway-impl.ts
similarity index 91%
rename from src/runtime/gateways/indexdb/gateway-impl.ts
rename to src/runtime/gateways/indexeddb/gateway-impl.ts
index 8a8f2a63c..0e9385fef 100644
--- a/src/runtime/gateways/indexdb/gateway-impl.ts
+++ b/src/runtime/gateways/indexeddb/gateway-impl.ts
@@ -1,11 +1,11 @@
 import { openDB, IDBPDatabase } from "idb";
 import { exception2Result, KeyedResolvOnce, Result, URI } from "@adviser/cement";
 
-import { INDEXDB_VERSION } from "../indexdb-version.js";
+import { INDEXEDDB_VERSION } from "../indexeddb-version.js";
 import { NotFoundError, PARAM, exceptionWrapper, getKey, getStore, type SuperThis, bs } from "@fireproof/core";
 
 function ensureVersion(url: URI): URI {
-  return url.build().defParam(PARAM.VERSION, INDEXDB_VERSION).URI();
+  return url.build().defParam(PARAM.VERSION, INDEXEDDB_VERSION).URI();
 }
 
 interface IDBConn {
@@ -14,7 +14,7 @@ interface IDBConn {
   readonly version: string;
   readonly url: URI;
 }
-const onceIndexDB = new KeyedResolvOnce<IDBConn>();
+const onceIndexedDB = new KeyedResolvOnce<IDBConn>();
 
 function sanitzeKey(key: string | string[]): string | string[] {
   if (key.length === 1) {
@@ -24,8 +24,8 @@ function sanitzeKey(key: string | string[]): string | string[] {
 }
 
 async function connectIdb(url: URI, sthis: SuperThis): Promise<IDBConn> {
-  const dbName = getIndexDBName(url, sthis);
-  const once = await onceIndexDB.get(dbName.fullDb).once(async () => {
+  const dbName = getIndexedDBName(url, sthis);
+  const once = await onceIndexedDB.get(dbName.fullDb).once(async () => {
     const db = await openDB(dbName.fullDb, 1, {
       upgrade(db) {
         ["version", "data", "wal", "meta", "idx.data", "idx.wal", "idx.meta"].map((store) => {
@@ -64,7 +64,7 @@ function joinDBName(...names: string[]): string {
     .join(".");
 }
 
-export function getIndexDBName(iurl: URI, sthis: SuperThis): DbName {
+export function getIndexedDBName(iurl: URI, sthis: SuperThis): DbName {
   const url = ensureVersion(iurl);
   const fullDb = url.pathname.replace(/^\/+/, "").replace(/\?.*$/, ""); // cut leading slashes
   const dbName = url.getParam(PARAM.NAME);
@@ -80,7 +80,7 @@ export function getIndexDBName(iurl: URI, sthis: SuperThis): DbName {
   };
 }
 
-export class IndexDBGateway implements bs.Gateway {
+export class IndexedDBGateway implements bs.Gateway {
   _db: IDBPDatabase<unknown> = {} as IDBPDatabase<unknown>;
 
   async start(baseURL: URI, sthis: SuperThis): Promise<Result<URI>> {
@@ -98,9 +98,9 @@ export class IndexDBGateway implements bs.Gateway {
   }
   async destroy(baseUrl: URI, sthis: SuperThis): Promise<Result<void>> {
     return exception2Result(async () => {
-      // return deleteDB(getIndexDBName(this.url).fullDb);
+      // return deleteDB(getIndexedDBName(this.url).fullDb);
       const type = getStore(baseUrl, sthis, joinDBName).name;
-      // console.log("IndexDBDataStore:destroy", type);
+      // console.log("IndexedDBDataStore:destroy", type);
       const idb = this._db;
       const trans = idb.transaction(type, "readwrite");
       const object_store = trans.objectStore(type);
diff --git a/src/runtime/gateways/indexeddb/index.ts b/src/runtime/gateways/indexeddb/index.ts
new file mode 100644
index 000000000..95c6f9be5
--- /dev/null
+++ b/src/runtime/gateways/indexeddb/index.ts
@@ -0,0 +1,9 @@
+// export * from "./gateway-impl.js";
+
+export * from "./key-bag-indexeddb.js";
+import { KeyBagProviderIndexedDB as KeyBagProviderImpl } from "./key-bag-indexeddb.js";
+
+export { KeyBagProviderImpl };
+
+import { IndexedDBGateway as GatewayImpl } from "./gateway-impl.js";
+export { GatewayImpl };
diff --git a/src/runtime/gateways/indexdb/key-bag-indexdb.ts b/src/runtime/gateways/indexeddb/key-bag-indexeddb.ts
similarity index 95%
rename from src/runtime/gateways/indexdb/key-bag-indexdb.ts
rename to src/runtime/gateways/indexeddb/key-bag-indexeddb.ts
index 4cc7b03a0..d8b63082a 100644
--- a/src/runtime/gateways/indexdb/key-bag-indexdb.ts
+++ b/src/runtime/gateways/indexeddb/key-bag-indexeddb.ts
@@ -2,7 +2,7 @@ import { IDBPDatabase, openDB } from "idb";
 import { Logger, ResolveOnce, URI } from "@adviser/cement";
 import { type SuperThis, rt } from "@fireproof/core";
 
-export class KeyBagProviderIndexDB implements rt.kb.KeyBagProvider {
+export class KeyBagProviderIndexedDB implements rt.kb.KeyBagProvider {
   readonly _db: ResolveOnce<IDBPDatabase<unknown>> = new ResolveOnce<IDBPDatabase<unknown>>();
 
   readonly dbName: string;
diff --git a/src/runtime/index.ts b/src/runtime/index.ts
index ea16d9688..3c8e12aed 100644
--- a/src/runtime/index.ts
+++ b/src/runtime/index.ts
@@ -16,5 +16,5 @@ export * as gw from "./gateways/index.js";
 export * from "./key-bag.js";
 
 export { FILESTORE_VERSION } from "./gateways/file/version.js";
-export { INDEXDB_VERSION } from "./gateways/indexdb-version.js";
+export { INDEXEDDB_VERSION } from "./gateways/indexeddb-version.js";
 // export { V0_19SQL_VERSION } from "./store-sql/v0.19/version.js";
diff --git a/src/runtime/key-bag.ts b/src/runtime/key-bag.ts
index 1f4524e89..d3927662c 100644
--- a/src/runtime/key-bag.ts
+++ b/src/runtime/key-bag.ts
@@ -185,9 +185,9 @@ const keyBagProviderFactories = new Map<string, KeyBagProviderFactoryItem>(
       },
     },
     {
-      protocol: "indexdb:",
+      protocol: "indexeddb:",
       factory: async (url: URI, sthis: SuperThis) => {
-        const { KeyBagProviderImpl } = await import("@fireproof/core/indexdb");
+        const { KeyBagProviderImpl } = await import("@fireproof/core/indexeddb");
         return new KeyBagProviderImpl(url, sthis);
       },
     },
@@ -212,7 +212,7 @@ export function defaultKeyBagUrl(sthis: SuperThis): URI {
   let bagFnameOrUrl = sthis.env.get("FP_KEYBAG_URL");
   let url: URI;
   if (runtimeFn().isBrowser) {
-    url = URI.from(bagFnameOrUrl || "indexdb://fp-keybag");
+    url = URI.from(bagFnameOrUrl || "indexeddb://fp-keybag");
   } else {
     if (!bagFnameOrUrl) {
       const home = sthis.env.get("HOME");
@@ -240,7 +240,7 @@ export function defaultKeyBagOpts(sthis: SuperThis, kbo?: Partial<KeyBagOpts>):
   } else {
     let bagFnameOrUrl = sthis.env.get("FP_KEYBAG_URL");
     if (runtimeFn().isBrowser) {
-      url = URI.from(bagFnameOrUrl || "indexdb://fp-keybag");
+      url = URI.from(bagFnameOrUrl || "indexeddb://fp-keybag");
     } else {
       if (!bagFnameOrUrl) {
         const home = sthis.env.get("HOME");
diff --git a/tests/blockstore/keyed-crypto-indexdb-file.test.ts b/tests/blockstore/keyed-crypto-indexeddb-file.test.ts
similarity index 92%
rename from tests/blockstore/keyed-crypto-indexdb-file.test.ts
rename to tests/blockstore/keyed-crypto-indexeddb-file.test.ts
index 110491218..e718117b0 100644
--- a/tests/blockstore/keyed-crypto-indexdb-file.test.ts
+++ b/tests/blockstore/keyed-crypto-indexeddb-file.test.ts
@@ -2,15 +2,15 @@ import { bs, ensureSuperThis, PARAM, rt } from "@fireproof/core";
 import { runtimeFn, toCryptoRuntime, URI } from "@adviser/cement";
 import { base58btc } from "multiformats/bases/base58";
 import { mockSuperThis } from "../helpers.js";
-import { KeyBagProviderIndexDB } from "@fireproof/core/indexdb";
+import { KeyBagProviderIndexedDB } from "@fireproof/core/indexeddb";
 
-describe("KeyBag indexdb and file", () => {
+describe("KeyBag indexeddb and file", () => {
   let url: URI;
   const sthis = mockSuperThis();
   beforeAll(async () => {
     await sthis.start();
     if (runtimeFn().isBrowser) {
-      url = URI.from("indexdb://fp-keybag");
+      url = URI.from("indexeddb://fp-keybag");
     } else {
       url = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
     }
@@ -20,7 +20,7 @@ describe("KeyBag indexdb and file", () => {
     sthis.env.delete("FP_KEYBAG_URL");
     const kb = await rt.kb.getKeyBag(sthis);
     if (runtimeFn().isBrowser) {
-      expect(kb.rt.url.toString()).toBe(`indexdb://fp-keybag`);
+      expect(kb.rt.url.toString()).toBe(`indexeddb://fp-keybag`);
     } else {
       expect(kb.rt.url.toString()).toBe(`file://${sthis.env.get("HOME")}/.fireproof/keybag`);
     }
@@ -58,7 +58,7 @@ describe("KeyBag indexdb and file", () => {
     let diskBag2: rt.kb.KeyItem;
     const provider = await kb.rt.getBagProvider();
     if (runtimeFn().isBrowser) {
-      const p = provider as KeyBagProviderIndexDB;
+      const p = provider as KeyBagProviderIndexedDB;
       diskBag = await p._prepare().then((db) => db.get("bag", name));
       diskBag2 = await p._prepare().then((db) => db.get("bag", name2));
     } else {
@@ -100,8 +100,8 @@ describe("KeyedCryptoStore", () => {
     // logger = MockLogger().logger;
     let kbUrl: URI;
     if (runtimeFn().isBrowser) {
-      kbUrl = URI.from("indexdb://fp-keybag");
-      baseUrl = URI.from("indexdb://fp-keyed-crypto-store");
+      kbUrl = URI.from("indexeddb://fp-keybag");
+      baseUrl = URI.from("indexeddb://fp-keyed-crypto-store");
     } else {
       kbUrl = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
       baseUrl = URI.merge("file://./dist/tests/keyed-crypto-store", sthis.env.get("FP_STORAGE_URL"));
diff --git a/tests/blockstore/keyed-crypto.test.ts b/tests/blockstore/keyed-crypto.test.ts
index c22ff5767..8e33476c1 100644
--- a/tests/blockstore/keyed-crypto.test.ts
+++ b/tests/blockstore/keyed-crypto.test.ts
@@ -3,7 +3,7 @@ import { BuildURI, runtimeFn, toCryptoRuntime, URI } from "@adviser/cement";
 import { base58btc } from "multiformats/bases/base58";
 import { sha256 as hasher } from "multiformats/hashes/sha2";
 import * as dagCodec from "@fireproof/vendor/@ipld/dag-cbor";
-import type { KeyBagProviderIndexDB } from "@fireproof/core/indexdb";
+import type { KeyBagProviderIndexedDB } from "@fireproof/core/indexeddb";
 import { MockSuperThis, mockSuperThis } from "../helpers.js";
 
 describe("KeyBag", () => {
@@ -14,7 +14,7 @@ describe("KeyBag", () => {
     sthis = mockSuperThis();
     await sthis.start();
     if (runtimeFn().isBrowser) {
-      url = URI.from("indexdb://fp-keybag");
+      url = URI.from("indexeddb://fp-keybag");
     } else {
       url = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
     }
@@ -24,7 +24,7 @@ describe("KeyBag", () => {
     sthis.env.delete("FP_KEYBAG_URL");
     const kb = await rt.kb.getKeyBag(sthis);
     if (runtimeFn().isBrowser) {
-      expect(kb.rt.url.toString()).toBe(`indexdb://fp-keybag`);
+      expect(kb.rt.url.toString()).toBe(`indexeddb://fp-keybag`);
     } else {
       expect(kb.rt.url.toString()).toBe(`file://${sthis.env.get("HOME")}/.fireproof/keybag`);
     }
@@ -89,7 +89,7 @@ describe("KeyBag", () => {
     let diskBag2: rt.kb.KeyItem;
     const provider = await kb.rt.getBagProvider();
     if (runtimeFn().isBrowser) {
-      const p = provider as KeyBagProviderIndexDB;
+      const p = provider as KeyBagProviderIndexedDB;
       diskBag = await p._prepare().then((db) => db.get("bag", name));
       diskBag2 = await p._prepare().then((db) => db.get("bag", name2));
     } else {
@@ -135,8 +135,8 @@ describe("KeyedCryptoStore", () => {
     // logger = MockLogger().logger;
     // let kbUrl: URI;
     // if (runtimeFn().isBrowser) {
-    //   kbUrl = URI.from("indexdb://fp-keybag");
-    //   baseUrl = URI.from("indexdb://fp-keyed-crypto-store");
+    //   kbUrl = URI.from("indexeddb://fp-keybag");
+    //   baseUrl = URI.from("indexeddb://fp-keyed-crypto-store");
     // } else {
     //   kbUrl = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
     //   baseUrl = URI.merge("file://./dist/tests/keyed-crypto-store", sthis.env.get("FP_STORAGE_URL"));
@@ -249,7 +249,7 @@ describe("KeyedCrypto", () => {
   beforeEach(async () => {
     // let url: URI;
     // if (runtimeFn().isBrowser) {
-    //   url = URI.from("indexdb://fp-keybag");
+    //   url = URI.from("indexeddb://fp-keybag");
     // } else {
     //   url = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
     // }
diff --git a/tests/gateway/indexdb/loader-config.test.ts b/tests/gateway/indexeddb/loader-config.test.ts
similarity index 83%
rename from tests/gateway/indexdb/loader-config.test.ts
rename to tests/gateway/indexeddb/loader-config.test.ts
index cc3433fb4..d689b02a4 100644
--- a/tests/gateway/indexdb/loader-config.test.ts
+++ b/tests/gateway/indexeddb/loader-config.test.ts
@@ -1,7 +1,7 @@
 import { fireproof } from "@fireproof/core";
 import { mockSuperThis } from "../../helpers.js";
 
-describe("fireproof config indexdb", () => {
+describe("fireproof config indexeddb", () => {
   const _my_app = "my-app";
   function my_app() {
     return _my_app;
@@ -11,7 +11,7 @@ describe("fireproof config indexdb", () => {
     await sthis.start();
   });
 
-  it("indexdb-loader", async () => {
+  it("indexeddb-loader", async () => {
     const db = fireproof(my_app());
     await db.put({ name: "my-app" });
     expect(db.ledger.name).toBe(my_app());
@@ -19,14 +19,14 @@ describe("fireproof config indexdb", () => {
     const fileStore = await db.ledger.crdt.blockstore.loader.fileStore();
     expect(fileStore?.url().asObj()).toEqual({
       pathname: "fp",
-      protocol: "indexdb:",
+      protocol: "indexeddb:",
       searchParams: {
         name: "my-app",
         store: "data",
         runtime: "browser",
         storekey: "@my-app-data@",
         urlGen: "default",
-        version: "v0.19-indexdb",
+        version: "v0.19-indexeddb",
       },
       style: "path",
     });
@@ -34,7 +34,7 @@ describe("fireproof config indexdb", () => {
     const dataStore = await db.ledger.crdt.blockstore.loader.carStore();
     expect(dataStore?.url().asObj()).toEqual({
       pathname: "fp",
-      protocol: "indexdb:",
+      protocol: "indexeddb:",
       searchParams: {
         name: "my-app",
         store: "data",
@@ -42,35 +42,35 @@ describe("fireproof config indexdb", () => {
         storekey: "@my-app-data@",
         suffix: ".car",
         urlGen: "default",
-        version: "v0.19-indexdb",
+        version: "v0.19-indexeddb",
       },
       style: "path",
     });
     const metaStore = await db.ledger.crdt.blockstore.loader.metaStore();
     expect(metaStore?.url().asObj()).toEqual({
       pathname: "fp",
-      protocol: "indexdb:",
+      protocol: "indexeddb:",
       searchParams: {
         name: "my-app",
         store: "meta",
         runtime: "browser",
         storekey: "@my-app-meta@",
         urlGen: "default",
-        version: "v0.19-indexdb",
+        version: "v0.19-indexeddb",
       },
       style: "path",
     });
     const WALStore = await db.ledger.crdt.blockstore.loader.WALStore();
     expect(WALStore?.url().asObj()).toEqual({
       pathname: "fp",
-      protocol: "indexdb:",
+      protocol: "indexeddb:",
       searchParams: {
         name: "my-app",
         store: "wal",
         runtime: "browser",
         storekey: "@my-app-wal@",
         urlGen: "default",
-        version: "v0.19-indexdb",
+        version: "v0.19-indexeddb",
       },
       style: "path",
     });
diff --git a/tests/helpers.ts b/tests/helpers.ts
index 2362800ac..82d46544b 100644
--- a/tests/helpers.ts
+++ b/tests/helpers.ts
@@ -31,7 +31,7 @@ export function storageURL(sthis: SuperThis): URI {
   const old = sthis.env.get("FP_STORAGE_URL");
   let merged: URI;
   if (runtimeFn().isBrowser) {
-    merged = URI.merge(`indexdb://fp`, old, "indexdb:");
+    merged = URI.merge(`indexeddb://fp`, old, "indexeddb:");
   } else {
     merged = URI.merge(`./dist/env`, old);
   }
diff --git a/tsconfig.json b/tsconfig.json
index a23228c9d..d64aeefcd 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -32,7 +32,7 @@
     "paths": {
       "@fireproof/core": ["./src/index.js"],
       "@fireproof/core/react": ["./src/react/index.js"],
-      "@fireproof/core/indexdb": ["./src/runtime/gateways/indexdb/index.js"],
+      "@fireproof/core/indexeddb": ["./src/runtime/gateways/indexeddb/index.js"],
       "@fireproof/core/node": ["./src/runtime/gateways/file/node/index.js"],
       "@fireproof/core/deno": ["./src/runtime/gateways/file/deno/index.js"],
       "use-fireproof": ["./src/use-fireproof/index.js"]
diff --git a/tsup.config.ts b/tsup.config.ts
index b3275db9b..b418691b0 100644
--- a/tsup.config.ts
+++ b/tsup.config.ts
@@ -24,7 +24,7 @@ const external = [
   "@fireproof/core",
   "@fireproof/core/node",
   "@fireproof/core/mem",
-  "@fireproof/core/indexdb",
+  "@fireproof/core/indexeddb",
   "@fireproof/core/react",
 ];
 
@@ -190,10 +190,10 @@ const LIBRARY_BUNDLES: readonly Options[] = [
   {
     ...LIBRARY_BUNDLE_OPTIONS,
     format: ["esm", "cjs"],
-    name: "@fireproof/core/indexdb",
-    entry: ["src/runtime/gateways/indexdb/index.ts"],
+    name: "@fireproof/core/indexeddb",
+    entry: ["src/runtime/gateways/indexeddb/index.ts"],
     platform: "browser",
-    outDir: "dist/fireproof-core/indexdb",
+    outDir: "dist/fireproof-core/indexeddb",
     esbuildPlugins: [
       replace({
         __packageVersion__: packageVersion(),
@@ -204,7 +204,7 @@ const LIBRARY_BUNDLES: readonly Options[] = [
       }),
     ],
     dts: {
-      footer: "declare module '@fireproof/core/indexdb'",
+      footer: "declare module '@fireproof/core/indexeddb'",
     },
   },
   {
@@ -226,7 +226,7 @@ const LIBRARY_BUNDLES: readonly Options[] = [
       }),
     ],
     dts: {
-      footer: "declare module '@fireproof/core/indexdb'",
+      footer: "declare module '@fireproof/core/indexeddb'",
     },
   },
   {
diff --git a/vitest.file.config.ts b/vitest.file.config.ts
index 6cf8b8c8d..ba2c7e34b 100644
--- a/vitest.file.config.ts
+++ b/vitest.file.config.ts
@@ -6,7 +6,7 @@ export default defineConfig({
   plugins: [tsconfigPaths()],
   test: {
     name: "file",
-    exclude: ["tests/react/**", "examples/**", "tests/gateway/indexdb"],
+    exclude: ["tests/react/**", "examples/**", "tests/gateway/indexeddb"],
     include: ["tests/**/*test.?(c|m)[jt]s?(x)"],
     globals: true,
     setupFiles: "./setup.file.js",
diff --git a/vitest.indexdb.config.ts b/vitest.indexeddb.config.ts
similarity index 87%
rename from vitest.indexdb.config.ts
rename to vitest.indexeddb.config.ts
index b7f26a629..a2d561771 100644
--- a/vitest.indexdb.config.ts
+++ b/vitest.indexeddb.config.ts
@@ -5,7 +5,7 @@ import tsconfigPaths from "vite-tsconfig-paths";
 export default defineConfig({
   plugins: [tsconfigPaths()],
   test: {
-    name: "indexdb",
+    name: "indexeddb",
     exclude: ["examples/**", "tests/gateway/file"],
     include: ["tests/**/*test.?(c|m)[jt]s?(x)"],
     browser: {
@@ -15,6 +15,6 @@ export default defineConfig({
       name: process.env.FP_BROWSER || "chrome", // browser name is required
     },
     globals: true,
-    setupFiles: "./setup.indexdb.ts",
+    setupFiles: "./setup.indexeddb.ts",
   },
 });
diff --git a/vitest.memory.config.ts b/vitest.memory.config.ts
index 85737e4a5..0b2a4a64f 100644
--- a/vitest.memory.config.ts
+++ b/vitest.memory.config.ts
@@ -11,9 +11,9 @@ export default defineConfig({
       "**/smoke/**",
       "**/scripts/**",
       "**/examples/**",
-      "tests/gateway/indexdb",
+      "tests/gateway/indexeddb",
       "tests/gateway/file",
-      "tests/blockstore/keyed-crypto-indexdb-file.test.ts",
+      "tests/blockstore/keyed-crypto-indexeddb-file.test.ts",
     ],
     include: ["tests/**/*test.?(c|m)[jt]s?(x)"],
     coverage: {
diff --git a/vitest.workspace.ts b/vitest.workspace.ts
index 6466bda44..67646c5b3 100644
--- a/vitest.workspace.ts
+++ b/vitest.workspace.ts
@@ -2,6 +2,6 @@ import { defineWorkspace } from "vitest/config";
 
 import file from "./vitest.file.config.ts";
 import memory from "./vitest.memory.config.ts";
-import indexdb from "./vitest.indexdb.config.ts";
+import indexeddb from "./vitest.indexeddb.config.ts";
 
-export default defineWorkspace([memory, file, indexdb]);
+export default defineWorkspace([memory, file, indexeddb]);