Просмотр исходного кода

Revert "Merge pull request #10896 from mizozobu/prisma"

This reverts commit db87af389b5c2b0895a058b6498af5f257c0bcc8, reversing
changes made to 27ea8fe5cc12ea33fe7e6773a434a6cd044da3b3.
Yuki Takei 12 часов назад
Родитель
Сommit
33cfe9e01e

+ 1 - 3
.devcontainer/app/devcontainer.json

@@ -49,9 +49,7 @@
         "mongodb.mongodb-vscode",
         // Debug
         "msjsdiag.debugger-for-chrome",
-        "firefox-devtools.vscode-firefox-debug",
-        // prisma
-        "Prisma.prisma@6.19.0"
+        "firefox-devtools.vscode-firefox-debug"
       ],
       "settings": {
         "terminal.integrated.defaultProfile.linux": "bash"

+ 0 - 12
.github/workflows/ci-app.yml

@@ -72,10 +72,6 @@ jobs:
           pnpm add turbo --global
           pnpm install --frozen-lockfile
 
-      - name: Generate schema
-        run: |
-          pnpm run --filter @growi/app prisma:generate
-
       - name: Lint
         run: |
           turbo run lint --filter=@growi/app --filter=./packages/*
@@ -131,10 +127,6 @@ jobs:
           pnpm add turbo --global
           pnpm install --frozen-lockfile
 
-      - name: Generate schema
-        run: |
-          pnpm run --filter @growi/app prisma:generate
-
       - name: Test
         run: |
           turbo run test --filter=@growi/app --filter=./packages/* --env-mode=loose
@@ -200,10 +192,6 @@ jobs:
           pnpm add turbo --global
           pnpm install --frozen-lockfile
 
-      - name: Generate schema
-        run: |
-          pnpm run --filter @growi/app prisma:generate
-
       - name: turbo run launch-dev:ci
         working-directory: ./apps/app
         run: |

+ 0 - 4
.vscode/settings.json

@@ -21,10 +21,6 @@
     "editor.defaultFormatter": "biomejs.biome"
   },
 
-  "[prisma]": {
-    "editor.defaultFormatter": "Prisma.prisma"
-  },
-
   // use vscode-stylelint
   // see https://github.com/stylelint/vscode-stylelint
   "stylelint.validate": ["css", "less", "scss"],

+ 0 - 3
apps/app/.gitignore

@@ -23,6 +23,3 @@ next.config.js
 
 # cache
 /.swc/
-
-# prisma
-/src/generated/prisma

+ 0 - 34
apps/app/bin/migrate.ts

@@ -1,34 +0,0 @@
-/**
- * umzug cli
- *
- * Usage:
- *   pnpm ts-node bin/migrate.ts
- */
-import { resolve } from 'node:path';
-import { MongoClient } from 'mongodb';
-import { MongoDBStorage, Umzug } from 'umzug';
-
-import { prisma } from '~/utils/prisma';
-
-(async () => {
-  const url = process.env.MONGO_URI;
-  if (url === undefined) {
-    throw new Error('MONGO_URI is required');
-  }
-  const client = new MongoClient(url);
-  await client.connect();
-
-  const umzug = new Umzug({
-    migrations: { glob: resolve(__dirname, '../prisma/migrations/*.(ts|js)') },
-    context: prisma,
-    storage: new MongoDBStorage({
-      connection: client.db(),
-    }),
-    logger: console,
-  });
-
-  if (require.main === module) {
-    await umzug.runAsCLI();
-    process.exit(0);
-  }
-})();

+ 4 - 11
apps/app/package.json

@@ -16,19 +16,16 @@
     "preserver": "cross-env NODE_ENV=production pnpm run migrate",
     "pre:styles-commons": "vite build -c vite.vendor-styles-commons.ts",
     "pre:styles-components": "vite build --config vite.vendor-styles-components.ts",
-    "migrate": "pnpm run migrate:migrate-mongo && pnpm run migrate:umzug",
-    "migrate:migrate-mongo": "node -r dotenv-flow/config node_modules/migrate-mongo/bin/migrate-mongo up -f config/migrate-mongo-config.js",
-    "migrate:umzug": "pnpm run ts-node bin/migrate.ts",
+    "migrate": "node -r dotenv-flow/config node_modules/migrate-mongo/bin/migrate-mongo up -f config/migrate-mongo-config.js",
     "//// for development": "",
     "dev": "cross-env NODE_ENV=development nodemon --exec pnpm run ts-node --inspect src/server/app.ts",
     "dev:pre:styles-commons": "pnpm run pre:styles-commons --mode dev",
     "dev:pre:styles-components": "pnpm run pre:styles-components",
     "dev:migrate-mongo": "cross-env NODE_ENV=development pnpm run ts-node node_modules/migrate-mongo/bin/migrate-mongo",
-    "dev:umzug": "cross-env NODE_ENV=development pnpm run ts-node bin/migrate.ts",
     "dev:migrate": "pnpm run dev:migrate:status > tmp/cache/migration-status.out && pnpm run dev:migrate:up",
-    "dev:migrate:status": "pnpm run dev:migrate-mongo status -f config/migrate-mongo-config.js && pnpm run dev:umzug executed && pnpm run dev:umzug pending",
-    "dev:migrate:up": "pnpm run dev:migrate-mongo up -f config/migrate-mongo-config.js && pnpm run dev:umzug up",
-    "dev:migrate:down": "pnpm run dev:umzug down && pnpm run dev:migrate-mongo down -f config/migrate-mongo-config.js",
+    "dev:migrate:status": "pnpm run dev:migrate-mongo status -f config/migrate-mongo-config.js",
+    "dev:migrate:up": "pnpm run dev:migrate-mongo up -f config/migrate-mongo-config.js",
+    "dev:migrate:down": "pnpm run dev:migrate-mongo down -f config/migrate-mongo-config.js",
     "//// for CI": "",
     "launch-dev:ci": "cross-env NODE_ENV=development pnpm run dev:migrate && pnpm run ts-node src/server/app.ts --ci",
     "lint:typecheck": "tsgo --noEmit",
@@ -48,8 +45,6 @@
     "//// misc": "",
     "console": "npm run repl",
     "repl": "cross-env NODE_ENV=development npm run ts-node src/server/repl.ts",
-    "prisma:generate": "prisma generate",
-    "prisma:pull": "prisma db pull",
     "openapi:build:generate-operation-ids": "vite build -c bin/openapi/generate-operation-ids/vite.config.ts",
     "openapi:generate-spec:apiv3": "sh bin/openapi/generate-spec-apiv3.sh",
     "openapi:generate-spec:apiv1": "sh bin/openapi/generate-spec-apiv1.sh",
@@ -302,7 +297,6 @@
     "@growi/editor": "workspace:^",
     "@growi/ui": "workspace:^",
     "@popperjs/core": "^2.11.8",
-    "@prisma/client": "6.19",
     "@testing-library/jest-dom": "^6.5.0",
     "@testing-library/user-event": "^14.5.2",
     "@types/archiver": "^6.0.2",
@@ -346,7 +340,6 @@
     "socket.io-client": "^4.7.5",
     "supertest": "^7.1.4",
     "swagger2openapi": "^7.0.8",
-    "umzug": "^3.8.2",
     "tinykeys": "^3.0.0",
     "unist-util-is": "^6.0.0",
     "unist-util-visit-parents": "^6.0.0"

+ 0 - 16
apps/app/prisma.config.ts

@@ -1,16 +0,0 @@
-import { config } from 'dotenv-flow';
-import { defineConfig } from 'prisma/config';
-
-config();
-
-// biome-ignore lint/style/noDefaultExport: prisma requires a default export
-export default defineConfig({
-  schema: 'prisma/schema.prisma',
-  migrations: {
-    path: 'prisma/migrations',
-  },
-  engine: 'classic',
-  datasource: {
-    url: process.env.MONGO_URI,
-  },
-});

+ 0 - 0
apps/app/prisma/migrations/.keep


+ 0 - 516
apps/app/prisma/schema.prisma

@@ -1,516 +0,0 @@
-generator client {
-  provider = "prisma-client"
-  output   = "../src/generated/prisma"
-}
-
-datasource db {
-  provider = "mongodb"
-  url      = env("MONGO_URI")
-}
-
-type ActivitiesSnapshot {
-  id       String @map("_id") @db.ObjectId
-  username String
-}
-
-type AiassistantsGrantedGroupsForAccessScope {
-  /// Field referred in an index, but found no data to define the type.
-  item Json?
-}
-
-type AiassistantsGrantedGroupsForShareScope {
-  /// Field referred in an index, but found no data to define the type.
-  item Json?
-}
-
-type PageoperationsExPage {
-  /// Field referred in an index, but found no data to define the type.
-  id   Json? @map("_id")
-  /// Field referred in an index, but found no data to define the type.
-  path Json?
-}
-
-type PageoperationsPage {
-  /// Field referred in an index, but found no data to define the type.
-  id   Json? @map("_id")
-  /// Field referred in an index, but found no data to define the type.
-  path Json?
-}
-
-type PagesGrantedGroups {
-  /// Field referred in an index, but found no data to define the type.
-  item Json?
-}
-
-model accesstokens {
-  id        String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  expiredAt Json?
-  /// Field referred in an index, but found no data to define the type.
-  tokenHash Json?  @unique(map: "tokenHash_1")
-
-  @@index([expiredAt], map: "expiredAt_1")
-}
-
-model activities {
-  id          String             @id @default(auto()) @map("_id") @db.ObjectId
-  v           Int                @map("__v")
-  action      String
-  createdAt   DateTime           @db.Date
-  endpoint    String
-  ip          String
-  snapshot    ActivitiesSnapshot
-  target      String?            @db.ObjectId
-  targetModel String?
-  user        String?            @db.ObjectId
-
-  @@unique([user, target, action, createdAt], map: "user_1_target_1_action_1_createdAt_1")
-  @@index([user], map: "user_1")
-  @@index([snapshot.username], map: "snapshot.username_1")
-  @@index([target, action], map: "target_1_action_1")
-  @@index([createdAt], map: "createdAt_1")
-}
-
-model aiassistants {
-  id                          String                                   @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  grantedGroupsForAccessScope AiassistantsGrantedGroupsForAccessScope?
-  /// Field referred in an index, but found no data to define the type.
-  grantedGroupsForShareScope  AiassistantsGrantedGroupsForShareScope?
-
-  @@index([grantedGroupsForShareScope.item], map: "grantedGroupsForShareScope.item_1")
-  @@index([grantedGroupsForAccessScope.item], map: "grantedGroupsForAccessScope.item_1")
-}
-
-model attachments {
-  id       String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  creator  Json?
-  /// Field referred in an index, but found no data to define the type.
-  fileName Json?  @unique(map: "fileName_1")
-  /// Field referred in an index, but found no data to define the type.
-  page     Json?
-
-  @@index([page], map: "page_1")
-  @@index([creator], map: "creator_1")
-}
-
-model bookmarkfolders {
-  id    String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  owner Json?
-
-  @@index([owner], map: "owner_1")
-}
-
-model bookmarks {
-  id   String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  page Json?
-  /// Field referred in an index, but found no data to define the type.
-  user Json?
-
-  @@unique([page, user], map: "page_1_user_1")
-  @@index([page], map: "page_1")
-  @@index([user], map: "user_1")
-}
-
-model comments {
-  id       String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  creator  Json?
-  /// Field referred in an index, but found no data to define the type.
-  page     Json?
-  /// Field referred in an index, but found no data to define the type.
-  revision Json?
-
-  @@index([page], map: "page_1")
-  @@index([creator], map: "creator_1")
-  @@index([revision], map: "revision_1")
-}
-
-model configs {
-  id        String   @id @default(auto()) @map("_id") @db.ObjectId
-  v         Int?     @map("__v")
-  createdAt DateTime @db.Date
-  key       String   @unique(map: "key_1")
-  updatedAt DateTime @db.Date
-  value     String
-}
-
-model editorsettings {
-  id String @id @default(auto()) @map("_id") @db.ObjectId
-}
-
-model externalaccounts {
-  id           String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  accountId    Json?
-  /// Field referred in an index, but found no data to define the type.
-  providerType Json?
-
-  @@unique([providerType, accountId], map: "providerType_1_accountId_1")
-}
-
-model externalusergrouprelations {
-  id String @id @default(auto()) @map("_id") @db.ObjectId
-}
-
-model externalusergroups {
-  id         String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  externalId Json?  @unique(map: "externalId_1")
-  /// Field referred in an index, but found no data to define the type.
-  name       Json?
-  /// Field referred in an index, but found no data to define the type.
-  parent     Json?
-  /// Field referred in an index, but found no data to define the type.
-  provider   Json?
-
-  @@unique([name, provider], map: "name_1_provider_1")
-  @@index([parent], map: "parent_1")
-}
-
-model failedemails {
-  id        String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  createdAt Json?
-
-  @@index([createdAt], map: "createdAt_1")
-}
-
-model globalnotificationsettings {
-  id String @id @default(auto()) @map("_id") @db.ObjectId
-}
-
-model growiplugins {
-  id String @id @default(auto()) @map("_id") @db.ObjectId
-}
-
-model inappnotifications {
-  id        String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  action    Json?
-  /// Field referred in an index, but found no data to define the type.
-  createdAt Json?
-  /// Field referred in an index, but found no data to define the type.
-  status    Json?
-  /// Field referred in an index, but found no data to define the type.
-  target    Json?
-  /// Field referred in an index, but found no data to define the type.
-  user      Json?
-
-  @@index([user], map: "user_1")
-  @@index([status], map: "status_1")
-  @@index([createdAt], map: "createdAt_1")
-  @@index([user, target, action, createdAt], map: "user_1_target_1_action_1_createdAt_1")
-}
-
-model inappnotificationsettings {
-  id String @id @default(auto()) @map("_id") @db.ObjectId
-}
-
-model migrations {
-  id        String   @id @default(auto()) @map("_id") @db.ObjectId
-  appliedAt DateTime @db.Date
-  fileName  String
-}
-
-model namedqueries {
-  id            String @id @default(auto()) @map("_id") @db.ObjectId
-  v             Int    @map("__v")
-  /// Could not determine type: the field only had null or empty values in the sample set.
-  creator       Json?
-  delegatorName String
-  name          String @unique(map: "name_1")
-
-  @@index([creator], map: "creator_1")
-}
-
-model pagebulkexportjobs {
-  id String @id @default(auto()) @map("_id") @db.ObjectId
-}
-
-model pagebulkexportpagesnapshots {
-  id String @id @default(auto()) @map("_id") @db.ObjectId
-}
-
-model pageoperations {
-  id          String                @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  actionStage Json?
-  /// Field referred in an index, but found no data to define the type.
-  actionType  Json?
-  /// Field referred in an index, but found no data to define the type.
-  exPage      PageoperationsExPage?
-  /// Field referred in an index, but found no data to define the type.
-  fromPath    Json?
-  /// Field referred in an index, but found no data to define the type.
-  page        PageoperationsPage?
-  /// Field referred in an index, but found no data to define the type.
-  toPath      Json?
-
-  @@index([actionType], map: "actionType_1")
-  @@index([actionStage], map: "actionStage_1")
-  @@index([fromPath], map: "fromPath_1")
-  @@index([toPath], map: "toPath_1")
-  @@index([page.id], map: "page._id_1")
-  @@index([page.path], map: "page.path_1")
-  @@index([exPage.id], map: "exPage._id_1")
-  @@index([exPage.path], map: "exPage.path_1")
-}
-
-model pageredirects {
-  id       String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  fromPath Json?  @unique(map: "fromPath_1")
-}
-
-model pages {
-  id                       String      @id @default(auto()) @map("_id") @db.ObjectId
-  v                        Int         @map("__v")
-  commentCount             Int
-  createdAt                DateTime    @db.Date
-  creator                  String?     @db.ObjectId
-  descendantCount          Int
-  grant                    Int
-  /// Nested objects had no data in the sample dataset to introspect a nested type.
-  grantedGroups            Json?
-  /// Could not determine type: the field only had null or empty values in the sample set.
-  grantedUsers             Json?
-  isEmpty                  Boolean
-  lastUpdateUser           String?     @db.ObjectId
-  latestRevisionBodyLength Int?
-  /// Could not determine type: the field only had null or empty values in the sample set.
-  liker                    Json?
-  parent                   String?     @db.ObjectId
-  path                     String
-  revision                 String?     @db.ObjectId
-  seenUsers                String[]
-  status                   String
-  ttlTimestamp             DateTime?   @db.Date
-  updatedAt                DateTime    @db.Date
-  wip                      Boolean?
-  revisions                revisions[]
-
-  @@index([parent], map: "parent_1")
-  @@index([path], map: "path_1")
-  @@index([status], map: "status_1")
-  @@index([grant], map: "grant_1")
-  @@index([creator], map: "creator_1")
-  @@index([createdAt], map: "createdAt_1")
-  @@index([updatedAt], map: "updatedAt_1")
-  @@index([ttlTimestamp], map: "ttlTimestamp_1")
-}
-
-model pagetagrelations {
-  id            String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  isPageTrashed Json?
-  /// Field referred in an index, but found no data to define the type.
-  relatedPage   Json?
-  /// Field referred in an index, but found no data to define the type.
-  relatedTag    Json?
-
-  @@unique([relatedPage, relatedTag], map: "relatedPage_1_relatedTag_1")
-  @@index([relatedPage], map: "relatedPage_1")
-  @@index([relatedTag], map: "relatedTag_1")
-  @@index([isPageTrashed], map: "isPageTrashed_1")
-}
-
-model passwordresetorders {
-  id    String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  token Json?  @unique(map: "token_1")
-}
-
-model revisions {
-  id        String   @id @default(auto()) @map("_id") @db.ObjectId
-  v         Int      @map("__v")
-  author    String   @db.ObjectId
-  body      String
-  createdAt DateTime @db.Date
-  format    String
-  origin    String?
-  pageId    String   @db.ObjectId
-
-  page pages @relation(fields: [pageId], references: [id])
-
-  @@index([pageId], map: "pageId_1")
-}
-
-model rlflx {
-  id     String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  expire Json?
-  /// Field referred in an index, but found no data to define the type.
-  key    Json?  @unique(map: "key_1")
-
-  @@index([expire(sort: Desc)], map: "expire_-1")
-}
-
-model sessions {
-  id      String   @id @map("_id")
-  expires DateTime @db.Date
-  session String
-
-  @@index([expires], map: "expires_1")
-}
-
-model sharelinks {
-  id          String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  relatedPage Json?
-
-  @@index([relatedPage], map: "relatedPage_1")
-}
-
-model slackappintegrations {
-  id        String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  isPrimary Json?  @unique(map: "isPrimary_1")
-  /// Field referred in an index, but found no data to define the type.
-  tokenGtoP Json?  @unique(map: "tokenGtoP_1")
-  /// Field referred in an index, but found no data to define the type.
-  tokenPtoG Json?  @unique(map: "tokenPtoG_1")
-}
-
-model subscriptions {
-  id   String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  user Json?
-
-  @@index([user], map: "user_1")
-}
-
-model tags {
-  id   String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  name Json?  @unique(map: "name_1")
-}
-
-model threadrelations {
-  id       String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  threadId Json?  @unique(map: "threadId_1")
-}
-
-model transferkeys {
-  id        String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  expireAt  Json?
-  /// Field referred in an index, but found no data to define the type.
-  key       Json?  @unique(map: "key_1")
-  /// Field referred in an index, but found no data to define the type.
-  keyString Json?  @unique(map: "keyString_1")
-
-  @@index([expireAt], map: "expireAt_1")
-}
-
-model updateposts {
-  id      String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  creator Json?
-
-  @@index([creator], map: "creator_1")
-}
-
-model usergrouprelations {
-  id           String   @id @default(auto()) @map("_id") @db.ObjectId
-  v            Int      @map("__v")
-  createdAt    DateTime @db.Date
-  relatedGroup String   @db.ObjectId
-  relatedUser  String   @db.ObjectId
-}
-
-model usergroups {
-  id          String   @id @default(auto()) @map("_id") @db.ObjectId
-  v           Int      @map("__v")
-  createdAt   DateTime @db.Date
-  description String
-  name        String   @unique(map: "name_1")
-  /// Could not determine type: the field only had null or empty values in the sample set.
-  parent      Json?
-  updatedAt   DateTime @db.Date
-
-  @@index([parent], map: "parent_1")
-}
-
-model userregistrationorders {
-  id    String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  token Json?  @unique(map: "token_1")
-}
-
-model users {
-  id                      String   @id @default(auto()) @map("_id") @db.ObjectId
-  v                       Int      @map("__v")
-  admin                   Boolean
-  /// Field referred in an index, but found no data to define the type.
-  apiToken                Json?
-  createdAt               DateTime @db.Date
-  email                   String   @unique(map: "email_1")
-  imageUrlCached          String
-  isEmailPublished        Boolean
-  isGravatarEnabled       Boolean
-  isInvitationEmailSended Boolean
-  lang                    String
-  /// Field referred in an index, but found no data to define the type.
-  lastLoginAt             Json?
-  name                    String
-  password                String
-  readOnly                Boolean
-  /// Field referred in an index, but found no data to define the type.
-  slackMemberId           Json?    @unique(map: "slackMemberId_1")
-  status                  Int
-  updatedAt               DateTime @db.Date
-  username                String   @unique(map: "username_1")
-
-  @@index([name], map: "name_1")
-  @@index([apiToken], map: "apiToken_1")
-  @@index([status], map: "status_1")
-  @@index([lastLoginAt], map: "lastLoginAt_1")
-  @@index([admin], map: "admin_1")
-}
-
-model useruisettings {
-  id   String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  user Json?  @unique(map: "user_1")
-}
-
-model vectorstorefilerelations {
-  id                    String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  attachment            Json?
-  /// Field referred in an index, but found no data to define the type.
-  page                  Json?
-  /// Field referred in an index, but found no data to define the type.
-  vectorStoreRelationId Json?
-
-  @@unique([vectorStoreRelationId, page, attachment], map: "vectorStoreRelationId_1_page_1_attachment_1")
-}
-
-model vectorstores {
-  id            String @id @default(auto()) @map("_id") @db.ObjectId
-  /// Field referred in an index, but found no data to define the type.
-  vectorStoreId Json?  @unique(map: "vectorStoreId_1")
-}
-
-model yjs_writings {
-  id      String  @id @default(auto()) @map("_id") @db.ObjectId
-  action  String?
-  clock   Int?
-  docName String
-  metaKey String?
-  /// Field referred in an index, but found no data to define the type.
-  part    Json?
-  /// Multiple data types found: Float: 33.3%, Binary: 66.7% out of 3 sampled entries
-  value   Json
-  version String
-
-  @@index([version, docName, action, clock, part], map: "version_1_docName_1_action_1_clock_1_part_1")
-  @@index([version, docName, metaKey], map: "version_1_docName_1_metaKey_1")
-  @@index([docName, clock], map: "docName_1_clock_1")
-  @@map("yjs-writings")
-}

+ 0 - 6
apps/app/prisma/types.ts

@@ -1,6 +0,0 @@
-import type { PrismaClient } from '~/generated/prisma/client';
-
-/**
- * Migration function type
- */
-export type Migration = (args: { context: PrismaClient }) => Promise<void>;

+ 0 - 1
apps/app/src/features/page/index.ts

@@ -1 +0,0 @@
-export * from './models';

+ 0 - 1
apps/app/src/features/page/models/index.ts

@@ -1 +0,0 @@
-export * from './revision';

+ 0 - 5
apps/app/src/features/page/models/revision.ts

@@ -1,5 +0,0 @@
-import { Prisma } from '~/generated/prisma/client';
-
-export const extension = Prisma.defineExtension((client) =>
-  client.$extends({}),
-);

+ 0 - 5
apps/app/src/utils/prisma.ts

@@ -1,5 +0,0 @@
-import { extension as RevisionExtension } from '~/features/page';
-import { PrismaClient as OriginalPrismaClient } from '~/generated/prisma/client';
-
-export const prisma = new OriginalPrismaClient().$extends(RevisionExtension);
-export type PrismaClient = typeof prisma;

+ 1 - 1
apps/app/tsconfig.json

@@ -26,7 +26,7 @@
       { "transform": "typescript-transform-paths", "afterDeclarations": true }
     ]
   },
-  "include": ["next-env.d.ts", "bin", "config", "prisma", "src"],
+  "include": ["next-env.d.ts", "config", "src"],
   "exclude": ["src/**/*.vendor-styles.*"],
   "ts-node": {
     "transpileOnly": true,

+ 25 - 379
pnpm-lock.yaml

@@ -68,7 +68,7 @@ importers:
         version: 7.0.0-dev.20260114.1
       '@vitejs/plugin-react':
         specifier: ^4.7.0
-        version: 4.7.0(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
+        version: 4.7.0(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
       '@vitest/coverage-v8':
         specifier: ^3.2.4
         version: 3.2.4(vitest@3.2.4)
@@ -140,16 +140,16 @@ importers:
         version: 3.5.6(typescript@5.9.3)
       vite:
         specifier: ^6.4.2
-        version: 6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+        version: 6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
       vite-plugin-dts:
         specifier: ^4.5.4
-        version: 4.5.4(@types/node@24.12.0)(rollup@4.39.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
+        version: 4.5.4(@types/node@24.12.0)(rollup@4.39.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
+        version: 5.1.4(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
       vitest:
         specifier: ^3.2.4
-        version: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@2.6.1)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+        version: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@1.21.6)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
       vitest-mock-extended:
         specifier: ^3.1.0
         version: 3.1.0(typescript@5.9.3)(vitest@3.2.4)
@@ -853,9 +853,6 @@ importers:
       '@popperjs/core':
         specifier: ^2.11.8
         version: 2.11.8
-      '@prisma/client':
-        specifier: '6.19'
-        version: 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3)
       '@testing-library/jest-dom':
         specifier: ^6.5.0
         version: 6.9.1
@@ -988,9 +985,6 @@ importers:
       tinykeys:
         specifier: ^3.0.0
         version: 3.0.0
-      umzug:
-        specifier: ^3.8.2
-        version: 3.8.2(@types/node@25.5.0)
       unist-util-is:
         specifier: ^6.0.0
         version: 6.0.0
@@ -4202,36 +4196,6 @@ packages:
   '@popperjs/core@2.11.8':
     resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
 
-  '@prisma/client@6.19.2':
-    resolution: {integrity: sha512-gR2EMvfK/aTxsuooaDA32D8v+us/8AAet+C3J1cc04SW35FPdZYgLF+iN4NDLUgAaUGTKdAB0CYenu1TAgGdMg==}
-    engines: {node: '>=18.18'}
-    peerDependencies:
-      prisma: '*'
-      typescript: '>=5.1.0'
-    peerDependenciesMeta:
-      prisma:
-        optional: true
-      typescript:
-        optional: true
-
-  '@prisma/config@6.19.2':
-    resolution: {integrity: sha512-kadBGDl+aUswv/zZMk9Mx0C8UZs1kjao8H9/JpI4Wh4SHZaM7zkTwiKn/iFLfRg+XtOAo/Z/c6pAYhijKl0nzQ==}
-
-  '@prisma/debug@6.19.2':
-    resolution: {integrity: sha512-lFnEZsLdFLmEVCVNdskLDCL8Uup41GDfU0LUfquw+ercJC8ODTuL0WNKgOKmYxCJVvFwf0OuZBzW99DuWmoH2A==}
-
-  '@prisma/engines-version@7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7':
-    resolution: {integrity: sha512-03bgb1VD5gvuumNf+7fVGBzfpJPjmqV423l/WxsWk2cNQ42JD0/SsFBPhN6z8iAvdHs07/7ei77SKu7aZfq8bA==}
-
-  '@prisma/engines@6.19.2':
-    resolution: {integrity: sha512-TTkJ8r+uk/uqczX40wb+ODG0E0icVsMgwCTyTHXehaEfb0uo80M9g1aW1tEJrxmFHeOZFXdI2sTA1j1AgcHi4A==}
-
-  '@prisma/fetch-engine@6.19.2':
-    resolution: {integrity: sha512-h4Ff4Pho+SR1S8XerMCC12X//oY2bG3Iug/fUnudfcXEUnIeRiBdXHFdGlGOgQ3HqKgosTEhkZMvGM9tWtYC+Q==}
-
-  '@prisma/get-platform@6.19.2':
-    resolution: {integrity: sha512-PGLr06JUSTqIvztJtAzIxOwtWKtJm5WwOG6xpsgD37Rc84FpfUBGLKz65YpJBGtkRQGXTYEFie7pYALocC3MtA==}
-
   '@protobufjs/aspromise@1.1.2':
     resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
 
@@ -4448,14 +4412,6 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@rushstack/node-core-library@4.0.2':
-    resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==}
-    peerDependencies:
-      '@types/node': '*'
-    peerDependenciesMeta:
-      '@types/node':
-        optional: true
-
   '@rushstack/node-core-library@5.21.0':
     resolution: {integrity: sha512-LFzN+1lyWROit/P8Md6yxAth7lLYKn37oCKJHirEE2TQB25NDUM7bALf0ar+JAtwFfRCH+D+DGOA7DAzIi2r+g==}
     peerDependencies:
@@ -4475,14 +4431,6 @@ packages:
   '@rushstack/rig-package@0.7.2':
     resolution: {integrity: sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==}
 
-  '@rushstack/terminal@0.10.0':
-    resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==}
-    peerDependencies:
-      '@types/node': '*'
-    peerDependenciesMeta:
-      '@types/node':
-        optional: true
-
   '@rushstack/terminal@0.22.4':
     resolution: {integrity: sha512-fhtLjnXCc/4WleVbVl6aoc7jcWnU6yqjS1S8WoaNREG3ycu/viZ9R/9QM7Y/b4CDvcXoiDyMNIay7JMwBptM3g==}
     peerDependencies:
@@ -4491,9 +4439,6 @@ packages:
       '@types/node':
         optional: true
 
-  '@rushstack/ts-command-line@4.19.1':
-    resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==}
-
   '@rushstack/ts-command-line@5.3.4':
     resolution: {integrity: sha512-MLkVKVEN6/2clKTrjN2B2KqKCuPxRwnNsWY7a+FCAq2EMdkj10cM8YgiBSMeGFfzM0mDMzargpHNnNzaBi9Whg==}
 
@@ -4935,9 +4880,6 @@ packages:
   '@sqltools/formatter@1.2.5':
     resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
 
-  '@standard-schema/spec@1.1.0':
-    resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
-
   '@stoplight/better-ajv-errors@1.0.3':
     resolution: {integrity: sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==}
     engines: {node: ^12.20 || >= 14.13}
@@ -6533,14 +6475,6 @@ packages:
     resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
     engines: {node: '>= 0.8'}
 
-  c12@3.1.0:
-    resolution: {integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==}
-    peerDependencies:
-      magicast: ^0.3.5
-    peerDependenciesMeta:
-      magicast:
-        optional: true
-
   c8@8.0.1:
     resolution: {integrity: sha512-EINpopxZNH1mETuI0DzRA4MZpAUH+IFiRhnmFD3vFr3vdrgxqi3VfE3KL0AIL+zDq8rC9bZqwM/VDmmoe04y7w==}
     engines: {node: '>=12'}
@@ -6709,10 +6643,6 @@ packages:
     resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==}
     engines: {node: '>= 14.16.0'}
 
-  chokidar@4.0.3:
-    resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
-    engines: {node: '>= 14.16.0'}
-
   chownr@2.0.0:
     resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
     engines: {node: '>=10'}
@@ -6726,12 +6656,6 @@ packages:
     resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
     engines: {node: '>=8'}
 
-  citty@0.1.6:
-    resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
-
-  citty@0.2.1:
-    resolution: {integrity: sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==}
-
   cjs-module-lexer@1.3.1:
     resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==}
 
@@ -7006,10 +6930,6 @@ packages:
     resolution: {integrity: sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==}
     engines: {node: '>= 0.10.0'}
 
-  consola@3.4.2:
-    resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
-    engines: {node: ^14.18.0 || >=16.10.0}
-
   console-control-strings@1.1.0:
     resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
 
@@ -7809,10 +7729,6 @@ packages:
     resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
     engines: {node: '>=4.0.0'}
 
-  deepmerge-ts@7.1.5:
-    resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==}
-    engines: {node: '>=16.0.0'}
-
   defaults@1.0.3:
     resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==}
 
@@ -7837,9 +7753,6 @@ packages:
     resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
     engines: {node: '>=0.10.0'}
 
-  defu@6.1.4:
-    resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
-
   degenerator@5.0.1:
     resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
     engines: {node: '>= 14'}
@@ -7882,9 +7795,6 @@ packages:
     resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
     engines: {node: '>=6'}
 
-  destr@2.0.5:
-    resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
-
   destroy@1.0.4:
     resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==}
 
@@ -8016,10 +7926,6 @@ packages:
     resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
     engines: {node: '>=12'}
 
-  dotenv@16.6.1:
-    resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
-    engines: {node: '>=12'}
-
   dotenv@8.6.0:
     resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
     engines: {node: '>=10'}
@@ -8057,9 +7963,6 @@ packages:
   ee-first@1.1.1:
     resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
 
-  effect@3.18.4:
-    resolution: {integrity: sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==}
-
   ejs@3.1.10:
     resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
     engines: {node: '>=0.10.0'}
@@ -8068,10 +7971,6 @@ packages:
   electron-to-chromium@1.5.267:
     resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
 
-  emittery@0.13.1:
-    resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
-    engines: {node: '>=12'}
-
   emoji-mart@5.6.0:
     resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==}
 
@@ -8084,10 +7983,6 @@ packages:
   emoji-regex@9.2.2:
     resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
 
-  empathic@2.0.0:
-    resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==}
-    engines: {node: '>=14'}
-
   encodeurl@1.0.2:
     resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
     engines: {node: '>= 0.8'}
@@ -8353,10 +8248,6 @@ packages:
     resolution: {integrity: sha512-6NW8DZ8pWBc5NbGYUiqqccj9dXnuSzilZYqprdKJBZsQodGH9IyUoFOGxIWVDcBzHMb8ET24aqx9p66tZEWZkA==}
     engines: {'0': node >=0.6.0}
 
-  fast-check@3.23.2:
-    resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==}
-    engines: {node: '>=8.0.0'}
-
   fast-copy@4.0.2:
     resolution: {integrity: sha512-ybA6PDXIXOXivLJK/z9e+Otk7ve13I4ckBvGO5I2RRmBU1gMHLVDJYEuJYhGwez7YNlYji2M2DvVU+a9mSFDlw==}
 
@@ -8725,10 +8616,6 @@ packages:
     resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==}
     engines: {node: '>= 14'}
 
-  giget@2.0.0:
-    resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==}
-    hasBin: true
-
   github-slugger@2.0.0:
     resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
 
@@ -9564,10 +9451,6 @@ packages:
     resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
     hasBin: true
 
-  jiti@2.6.1:
-    resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
-    hasBin: true
-
   jju@1.4.0:
     resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
 
@@ -10896,9 +10779,6 @@ packages:
     resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==}
     engines: {node: 4.x || >=6.0.0}
 
-  node-fetch-native@1.6.7:
-    resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
-
   node-fetch@2.7.0:
     resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
     engines: {node: 4.x || >=6.0.0}
@@ -11029,11 +10909,6 @@ packages:
   nwsapi@2.2.22:
     resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==}
 
-  nypm@0.6.5:
-    resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==}
-    engines: {node: '>=18'}
-    hasBin: true
-
   oas-kit-common@1.0.8:
     resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==}
 
@@ -11073,9 +10948,6 @@ packages:
     resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
     engines: {node: '>= 0.4'}
 
-  ohash@2.0.11:
-    resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
-
   oidc-token-hash@5.0.3:
     resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==}
     engines: {node: ^10.13.0 || >=12.0.0}
@@ -11399,9 +11271,6 @@ packages:
   pend@1.2.0:
     resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
 
-  perfect-debounce@1.0.0:
-    resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
-
   performance-now@2.1.0:
     resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
 
@@ -11508,10 +11377,6 @@ packages:
     resolution: {integrity: sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==}
     engines: {node: '>=12.0.0'}
 
-  pony-cause@2.1.11:
-    resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==}
-    engines: {node: '>=12.0.0'}
-
   portscanner@2.2.0:
     resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==}
     engines: {node: '>=0.4', npm: '>=1.0.0'}
@@ -11595,16 +11460,6 @@ packages:
     resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
 
-  prisma@6.19.2:
-    resolution: {integrity: sha512-XTKeKxtQElcq3U9/jHyxSPgiRgeYDKxWTPOf6NkXA0dNj5j40MfEsZkMbyNpwDWCUv7YBFUl7I2VK/6ALbmhEg==}
-    engines: {node: '>=18.18'}
-    hasBin: true
-    peerDependencies:
-      typescript: '>=5.1.0'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-
   prismjs@1.30.0:
     resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
     engines: {node: '>=6'}
@@ -11713,14 +11568,12 @@ packages:
     deprecated: < 24.15.0 is no longer supported
     hasBin: true
 
-  pure-rand@6.1.0:
-    resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
-
   q@1.5.1:
     resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
     engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
     deprecated: |-
       You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
+
       (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
 
   qs@6.13.0:
@@ -11784,9 +11637,6 @@ packages:
     resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
     engines: {node: '>= 0.8'}
 
-  rc9@2.1.2:
-    resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
-
   rc@1.2.8:
     resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
     hasBin: true
@@ -13118,10 +12968,6 @@ packages:
   tinyexec@1.0.1:
     resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
 
-  tinyexec@1.0.2:
-    resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
-    engines: {node: '>=18'}
-
   tinyglobby@0.2.15:
     resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
     engines: {node: '>=12.0.0'}
@@ -13533,10 +13379,6 @@ packages:
   uid2@0.0.4:
     resolution: {integrity: sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==}
 
-  umzug@3.8.2:
-    resolution: {integrity: sha512-BEWEF8OJjTYVC56GjELeHl/1XjFejrD7aHzn+HldRJTx+pL1siBrKHZC8n4K/xL3bEzVA9o++qD1tK2CpZu4KA==}
-    engines: {node: '>=12'}
-
   unbox-primitive@1.0.2:
     resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
 
@@ -17875,47 +17717,6 @@ snapshots:
 
   '@popperjs/core@2.11.8': {}
 
-  '@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3)':
-    optionalDependencies:
-      prisma: 6.19.2(magicast@0.3.5)(typescript@5.9.3)
-      typescript: 5.9.3
-
-  '@prisma/config@6.19.2(magicast@0.3.5)':
-    dependencies:
-      c12: 3.1.0(magicast@0.3.5)
-      deepmerge-ts: 7.1.5
-      effect: 3.18.4
-      empathic: 2.0.0
-    transitivePeerDependencies:
-      - magicast
-    optional: true
-
-  '@prisma/debug@6.19.2':
-    optional: true
-
-  '@prisma/engines-version@7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7':
-    optional: true
-
-  '@prisma/engines@6.19.2':
-    dependencies:
-      '@prisma/debug': 6.19.2
-      '@prisma/engines-version': 7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7
-      '@prisma/fetch-engine': 6.19.2
-      '@prisma/get-platform': 6.19.2
-    optional: true
-
-  '@prisma/fetch-engine@6.19.2':
-    dependencies:
-      '@prisma/debug': 6.19.2
-      '@prisma/engines-version': 7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7
-      '@prisma/get-platform': 6.19.2
-    optional: true
-
-  '@prisma/get-platform@6.19.2':
-    dependencies:
-      '@prisma/debug': 6.19.2
-    optional: true
-
   '@protobufjs/aspromise@1.1.2': {}
 
   '@protobufjs/base64@1.1.2': {}
@@ -18088,17 +17889,6 @@ snapshots:
   '@rollup/rollup-win32-x64-msvc@4.39.0':
     optional: true
 
-  '@rushstack/node-core-library@4.0.2(@types/node@25.5.0)':
-    dependencies:
-      fs-extra: 7.0.1
-      import-lazy: 4.0.0
-      jju: 1.4.0
-      resolve: 1.22.8
-      semver: 7.5.4
-      z-schema: 5.0.6
-    optionalDependencies:
-      '@types/node': 25.5.0
-
   '@rushstack/node-core-library@5.21.0(@types/node@24.12.0)':
     dependencies:
       ajv: 8.18.0
@@ -18121,13 +17911,6 @@ snapshots:
       resolve: 1.22.8
       strip-json-comments: 3.1.1
 
-  '@rushstack/terminal@0.10.0(@types/node@25.5.0)':
-    dependencies:
-      '@rushstack/node-core-library': 4.0.2(@types/node@25.5.0)
-      supports-color: 8.1.1
-    optionalDependencies:
-      '@types/node': 25.5.0
-
   '@rushstack/terminal@0.22.4(@types/node@24.12.0)':
     dependencies:
       '@rushstack/node-core-library': 5.21.0(@types/node@24.12.0)
@@ -18136,15 +17919,6 @@ snapshots:
     optionalDependencies:
       '@types/node': 24.12.0
 
-  '@rushstack/ts-command-line@4.19.1(@types/node@25.5.0)':
-    dependencies:
-      '@rushstack/terminal': 0.10.0(@types/node@25.5.0)
-      '@types/argparse': 1.0.38
-      argparse: 1.0.10
-      string-argv: 0.3.2
-    transitivePeerDependencies:
-      - '@types/node'
-
   '@rushstack/ts-command-line@5.3.4(@types/node@24.12.0)':
     dependencies:
       '@rushstack/terminal': 0.22.4(@types/node@24.12.0)
@@ -18915,9 +18689,6 @@ snapshots:
 
   '@sqltools/formatter@1.2.5': {}
 
-  '@standard-schema/spec@1.1.0':
-    optional: true
-
   '@stoplight/better-ajv-errors@1.0.3(ajv@8.18.0)':
     dependencies:
       ajv: 8.18.0
@@ -20241,7 +20012,7 @@ snapshots:
 
   '@ungap/structured-clone@1.2.0': {}
 
-  '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))':
+  '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))':
     dependencies:
       '@babel/core': 7.29.0
       '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0)
@@ -20249,7 +20020,7 @@ snapshots:
       '@rolldown/pluginutils': 1.0.0-beta.27
       '@types/babel__core': 7.20.5
       react-refresh: 0.17.0
-      vite: 6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vite: 6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
     transitivePeerDependencies:
       - supports-color
 
@@ -20268,7 +20039,7 @@ snapshots:
       std-env: 3.10.0
       test-exclude: 7.0.1
       tinyrainbow: 2.0.0
-      vitest: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@2.6.1)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vitest: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@1.21.6)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
     transitivePeerDependencies:
       - supports-color
 
@@ -20280,13 +20051,13 @@ snapshots:
       chai: 5.3.3
       tinyrainbow: 2.0.0
 
-  '@vitest/mocker@3.2.4(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))':
+  '@vitest/mocker@3.2.4(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))':
     dependencies:
       '@vitest/spy': 3.2.4
       estree-walker: 3.0.3
       magic-string: 0.30.21
     optionalDependencies:
-      vite: 6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vite: 6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
 
   '@vitest/pretty-format@3.2.4':
     dependencies:
@@ -20317,7 +20088,7 @@ snapshots:
       sirv: 3.0.2
       tinyglobby: 0.2.15
       tinyrainbow: 2.0.0
-      vitest: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@2.6.1)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vitest: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@1.21.6)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
 
   '@vitest/utils@3.2.4':
     dependencies:
@@ -21022,24 +20793,6 @@ snapshots:
 
   bytes@3.1.2: {}
 
-  c12@3.1.0(magicast@0.3.5):
-    dependencies:
-      chokidar: 4.0.3
-      confbox: 0.2.2
-      defu: 6.1.4
-      dotenv: 16.6.1
-      exsolve: 1.0.7
-      giget: 2.0.0
-      jiti: 2.6.1
-      ohash: 2.0.11
-      pathe: 2.0.3
-      perfect-debounce: 1.0.0
-      pkg-types: 2.2.0
-      rc9: 2.1.2
-    optionalDependencies:
-      magicast: 0.3.5
-    optional: true
-
   c8@8.0.1:
     dependencies:
       '@bcoe/v8-coverage': 0.2.3
@@ -21287,11 +21040,6 @@ snapshots:
     dependencies:
       readdirp: 4.0.2
 
-  chokidar@4.0.3:
-    dependencies:
-      readdirp: 4.0.2
-    optional: true
-
   chownr@2.0.0: {}
 
   chromium-bidi@0.8.0(devtools-protocol@0.0.1354347):
@@ -21303,14 +21051,6 @@ snapshots:
 
   ci-info@3.9.0: {}
 
-  citty@0.1.6:
-    dependencies:
-      consola: 3.4.2
-    optional: true
-
-  citty@0.2.1:
-    optional: true
-
   cjs-module-lexer@1.3.1: {}
 
   classnames@2.5.1: {}
@@ -21588,9 +21328,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  consola@3.4.2:
-    optional: true
-
   console-control-strings@1.1.0: {}
 
   consolidate@0.16.0(ejs@3.1.10)(handlebars@4.7.8)(hogan.js@3.0.2)(lodash@4.17.23)(mustache@4.2.0):
@@ -22095,9 +21832,6 @@ snapshots:
 
   deep-extend@0.6.0: {}
 
-  deepmerge-ts@7.1.5:
-    optional: true
-
   defaults@1.0.3:
     dependencies:
       clone: 1.0.4
@@ -22126,9 +21860,6 @@ snapshots:
     dependencies:
       is-descriptor: 0.1.7
 
-  defu@6.1.4:
-    optional: true
-
   degenerator@5.0.1:
     dependencies:
       ast-types: 0.13.4
@@ -22166,9 +21897,6 @@ snapshots:
 
   dequal@2.0.3: {}
 
-  destr@2.0.5:
-    optional: true
-
   destroy@1.0.4: {}
 
   destroy@1.2.0: {}
@@ -22289,9 +22017,6 @@ snapshots:
 
   dotenv@16.4.5: {}
 
-  dotenv@16.6.1:
-    optional: true
-
   dotenv@8.6.0: {}
 
   downshift@8.5.0(react@18.2.0):
@@ -22336,20 +22061,12 @@ snapshots:
 
   ee-first@1.1.1: {}
 
-  effect@3.18.4:
-    dependencies:
-      '@standard-schema/spec': 1.1.0
-      fast-check: 3.23.2
-    optional: true
-
   ejs@3.1.10:
     dependencies:
       jake: 10.9.1
 
   electron-to-chromium@1.5.267: {}
 
-  emittery@0.13.1: {}
-
   emoji-mart@5.6.0: {}
 
   emoji-regex@10.4.0: {}
@@ -22358,9 +22075,6 @@ snapshots:
 
   emoji-regex@9.2.2: {}
 
-  empathic@2.0.0:
-    optional: true
-
   encodeurl@1.0.2: {}
 
   encodeurl@2.0.0: {}
@@ -22761,11 +22475,6 @@ snapshots:
 
   extsprintf@1.4.0: {}
 
-  fast-check@3.23.2:
-    dependencies:
-      pure-rand: 6.1.0
-    optional: true
-
   fast-copy@4.0.2: {}
 
   fast-deep-equal@3.1.3: {}
@@ -23175,16 +22884,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  giget@2.0.0:
-    dependencies:
-      citty: 0.1.6
-      consola: 3.4.2
-      defu: 6.1.4
-      node-fetch-native: 1.6.7
-      nypm: 0.6.5
-      pathe: 2.0.3
-    optional: true
-
   github-slugger@2.0.0: {}
 
   glob-parent@5.1.2:
@@ -24108,9 +23807,6 @@ snapshots:
 
   jiti@1.21.6: {}
 
-  jiti@2.6.1:
-    optional: true
-
   jju@1.4.0: {}
 
   jmespath@0.15.0: {}
@@ -25752,9 +25448,6 @@ snapshots:
     dependencies:
       http2-client: 1.3.5
 
-  node-fetch-native@1.6.7:
-    optional: true
-
   node-fetch@2.7.0(encoding@0.1.13):
     dependencies:
       whatwg-url: 5.0.0
@@ -25918,13 +25611,6 @@ snapshots:
 
   nwsapi@2.2.22: {}
 
-  nypm@0.6.5:
-    dependencies:
-      citty: 0.2.1
-      pathe: 2.0.3
-      tinyexec: 1.0.2
-    optional: true
-
   oas-kit-common@1.0.8:
     dependencies:
       fast-safe-stringify: 2.1.1
@@ -25973,9 +25659,6 @@ snapshots:
       has-symbols: 1.1.0
       object-keys: 1.1.1
 
-  ohash@2.0.11:
-    optional: true
-
   oidc-token-hash@5.0.3: {}
 
   on-exit-leak-free@2.1.2: {}
@@ -26363,9 +26046,6 @@ snapshots:
 
   pend@1.2.0: {}
 
-  perfect-debounce@1.0.0:
-    optional: true
-
   performance-now@2.1.0: {}
 
   pg-int8@1.0.1: {}
@@ -26496,8 +26176,6 @@ snapshots:
 
   pony-cause@1.1.1: {}
 
-  pony-cause@2.1.11: {}
-
   portscanner@2.2.0:
     dependencies:
       async: 2.6.4
@@ -26569,16 +26247,6 @@ snapshots:
       ansi-styles: 5.2.0
       react-is: 17.0.2
 
-  prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3):
-    dependencies:
-      '@prisma/config': 6.19.2(magicast@0.3.5)
-      '@prisma/engines': 6.19.2
-    optionalDependencies:
-      typescript: 5.9.3
-    transitivePeerDependencies:
-      - magicast
-    optional: true
-
   prismjs@1.30.0: {}
 
   proc-log@4.2.0: {}
@@ -26712,9 +26380,6 @@ snapshots:
       - typescript
       - utf-8-validate
 
-  pure-rand@6.1.0:
-    optional: true
-
   q@1.5.1: {}
 
   qs@6.13.0:
@@ -26772,12 +26437,6 @@ snapshots:
       iconv-lite: 0.4.24
       unpipe: 1.0.0
 
-  rc9@2.1.2:
-    dependencies:
-      defu: 6.1.4
-      destr: 2.0.5
-    optional: true
-
   rc@1.2.8:
     dependencies:
       deep-extend: 0.6.0
@@ -28516,9 +28175,6 @@ snapshots:
 
   tinyexec@1.0.1: {}
 
-  tinyexec@1.0.2:
-    optional: true
-
   tinyglobby@0.2.15:
     dependencies:
       fdir: 6.5.0(picomatch@4.0.4)
@@ -28866,16 +28522,6 @@ snapshots:
 
   uid2@0.0.4: {}
 
-  umzug@3.8.2(@types/node@25.5.0):
-    dependencies:
-      '@rushstack/ts-command-line': 4.19.1(@types/node@25.5.0)
-      emittery: 0.13.1
-      fast-glob: 3.3.2
-      pony-cause: 2.1.11
-      type-fest: 4.41.0
-    transitivePeerDependencies:
-      - '@types/node'
-
   unbox-primitive@1.0.2:
     dependencies:
       call-bind: 1.0.7
@@ -29205,13 +28851,13 @@ snapshots:
       '@types/unist': 3.0.3
       vfile-message: 4.0.2
 
-  vite-node@3.2.4(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5):
+  vite-node@3.2.4(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5):
     dependencies:
       cac: 6.7.14
       debug: 4.4.3(supports-color@10.0.0)
       es-module-lexer: 1.7.0
       pathe: 2.0.3
-      vite: 6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vite: 6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
     transitivePeerDependencies:
       - '@types/node'
       - jiti
@@ -29226,7 +28872,7 @@ snapshots:
       - tsx
       - yaml
 
-  vite-plugin-dts@4.5.4(@types/node@24.12.0)(rollup@4.39.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)):
+  vite-plugin-dts@4.5.4(@types/node@24.12.0)(rollup@4.39.0)(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)):
     dependencies:
       '@microsoft/api-extractor': 7.58.0(@types/node@24.12.0)
       '@rollup/pluginutils': 5.2.0(rollup@4.39.0)
@@ -29239,24 +28885,24 @@ snapshots:
       magic-string: 0.30.21
       typescript: 5.9.3
     optionalDependencies:
-      vite: 6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vite: 6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
     transitivePeerDependencies:
       - '@types/node'
       - rollup
       - supports-color
 
-  vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)):
+  vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)):
     dependencies:
       debug: 4.4.3(supports-color@10.0.0)
       globrex: 0.1.2
       tsconfck: 3.0.3(typescript@5.9.3)
     optionalDependencies:
-      vite: 6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vite: 6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
     transitivePeerDependencies:
       - supports-color
       - typescript
 
-  vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5):
+  vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5):
     dependencies:
       esbuild: 0.25.12
       fdir: 6.5.0(picomatch@4.0.4)
@@ -29267,7 +28913,7 @@ snapshots:
     optionalDependencies:
       '@types/node': 24.12.0
       fsevents: 2.3.3
-      jiti: 2.6.1
+      jiti: 1.21.6
       sass: 1.77.6
       terser: 5.46.1
       yaml: 2.4.5
@@ -29276,13 +28922,13 @@ snapshots:
     dependencies:
       ts-essentials: 10.0.2(typescript@5.9.3)
       typescript: 5.9.3
-      vitest: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@2.6.1)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vitest: 3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@1.21.6)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
 
-  vitest@3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@2.6.1)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5):
+  vitest@3.2.4(@types/node@24.12.0)(@vitest/ui@3.2.4)(happy-dom@15.7.4)(jiti@1.21.6)(jsdom@26.1.0)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5):
     dependencies:
       '@types/chai': 5.2.3
       '@vitest/expect': 3.2.4
-      '@vitest/mocker': 3.2.4(vite@6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
+      '@vitest/mocker': 3.2.4(vite@6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5))
       '@vitest/pretty-format': 3.2.4
       '@vitest/runner': 3.2.4
       '@vitest/snapshot': 3.2.4
@@ -29300,8 +28946,8 @@ snapshots:
       tinyglobby: 0.2.15
       tinypool: 1.1.1
       tinyrainbow: 2.0.0
-      vite: 6.4.2(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
-      vite-node: 3.2.4(@types/node@24.12.0)(jiti@2.6.1)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vite: 6.4.2(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
+      vite-node: 3.2.4(@types/node@24.12.0)(jiti@1.21.6)(sass@1.77.6)(terser@5.46.1)(yaml@2.4.5)
       why-is-node-running: 2.3.0
     optionalDependencies:
       '@types/node': 24.12.0