From 1d5eab6c637d53583a8083bbfd432f9cf3f83581 Mon Sep 17 00:00:00 2001 From: AF_Askar <68832286+abo3skr2019@users.noreply.github.com> Date: Tue, 3 Feb 2026 10:48:11 +0300 Subject: [PATCH 01/12] starting migration --- apps/tanstack-start/src/env.ts | 5 +++-- packages/auth/env.ts | 2 ++ packages/auth/package.json | 4 +--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/tanstack-start/src/env.ts b/apps/tanstack-start/src/env.ts index 66f6f20..a2ff648 100644 --- a/apps/tanstack-start/src/env.ts +++ b/apps/tanstack-start/src/env.ts @@ -1,9 +1,8 @@ +import { authEnv } from "@governance/auth/env"; import { createEnv } from "@t3-oss/env-core"; import { vercel } from "@t3-oss/env-core/presets-zod"; import { z } from "zod/v4"; -import { authEnv } from "@governance/auth/env"; - export const env = createEnv({ clientPrefix: "VITE_", extends: [authEnv(), vercel()], @@ -18,6 +17,8 @@ export const env = createEnv({ */ server: { POSTGRES_URL: z.url(), + WORKOS_API_KEY: z.string().min(1), + WORKOS_CLIENT_ID: z.string().min(1), }, /** diff --git a/packages/auth/env.ts b/packages/auth/env.ts index 6b40d33..a516e85 100644 --- a/packages/auth/env.ts +++ b/packages/auth/env.ts @@ -8,6 +8,8 @@ export function authEnv() { process.env.NODE_ENV === "production" ? z.string().min(1) : z.string().min(1).optional(), + WORKOS_API_KEY: z.string().min(1), + WORKOS_CLIENT_ID: z.string().min(1), NODE_ENV: z.enum(["development", "production"]).optional(), }, runtimeEnv: process.env, diff --git a/packages/auth/package.json b/packages/auth/package.json index 7b30360..e38fcbd 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -13,17 +13,15 @@ "clean": "git clean -xdf .cache .turbo dist node_modules", "format": "prettier --check . --ignore-path ../../.gitignore", "lint": "eslint --flag unstable_native_nodejs_ts_config", - "generate": "dotenv -e ../../.env -- pnpx @better-auth/cli generate --config script/auth-cli.ts --output ../db/src/auth-schema.ts", "typecheck": "tsc --noEmit" }, "dependencies": { "@governance/db": "workspace:*", "@t3-oss/env-core": "^0.13.8", - "better-auth": "catalog:", + "@workos-inc/node": "^7.27.0", "zod": "catalog:" }, "devDependencies": { - "@better-auth/cli": "catalog:", "@governance/eslint-config": "workspace:*", "@governance/prettier-config": "workspace:*", "@governance/tsconfig": "workspace:*", From 759a2117a92909840bcc029c2f98fe997538a24f Mon Sep 17 00:00:00 2001 From: AF_Askar <68832286+abo3skr2019@users.noreply.github.com> Date: Tue, 3 Feb 2026 10:59:21 +0300 Subject: [PATCH 02/12] package --- apps/tanstack-start/package.json | 1 + pnpm-lock.yaml | 925 +++++++++++-------------------- 2 files changed, 332 insertions(+), 594 deletions(-) diff --git a/apps/tanstack-start/package.json b/apps/tanstack-start/package.json index 4f8ceb5..0915a66 100644 --- a/apps/tanstack-start/package.json +++ b/apps/tanstack-start/package.json @@ -46,6 +46,7 @@ "@types/react": "catalog:react19", "@types/react-dom": "catalog:react19", "@vitejs/plugin-react": "catalog:", + "@workos/authkit-tanstack-react-start": "^0.5.0", "eslint": "catalog:", "prettier": "catalog:", "tailwindcss": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7eb1ba1..8270123 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,9 +6,6 @@ settings: catalogs: default: - '@better-auth/cli': - specifier: 1.4.0-beta.9 - version: 1.4.0-beta.9 '@eslint/js': specifier: ^9.38.0 version: 9.38.0 @@ -195,6 +192,9 @@ importers: '@vitejs/plugin-react': specifier: 'catalog:' version: 5.1.0(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@workos/authkit-tanstack-react-start': + specifier: ^0.5.0 + version: 0.5.0(@tanstack/react-router@1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4))(@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(react-dom@19.1.4(react@19.1.4))(react@19.1.4) eslint: specifier: 'catalog:' version: 9.38.0(jiti@2.6.1) @@ -262,16 +262,13 @@ importers: '@t3-oss/env-core': specifier: ^0.13.8 version: 0.13.8(arktype@2.1.20)(typescript@5.9.3)(valibot@1.0.0-beta.15(typescript@5.9.3))(zod@4.1.12) - better-auth: - specifier: 'catalog:' - version: 1.4.0-beta.9(better-sqlite3@12.2.0)(react@19.2.3) + '@workos-inc/node': + specifier: ^7.27.0 + version: 7.82.0 zod: specifier: 'catalog:' version: 4.1.12 devDependencies: - '@better-auth/cli': - specifier: 'catalog:' - version: 1.4.0-beta.9(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@types/pg@8.11.10)(@types/react@19.1.12)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(react@19.2.3) '@governance/eslint-config': specifier: workspace:* version: link:../../tooling/eslint @@ -629,18 +626,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.28.0': - resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.27.1': - resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -653,30 +638,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.27.1': - resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.28.5': resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-react@7.27.1': - resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.28.5': resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} engines: {node: '>=6.9.0'} @@ -699,10 +666,6 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} - '@better-auth/cli@1.4.0-beta.9': - resolution: {integrity: sha512-N7poVoYqC+pj4oUabUQN3qz+vnHJEOArPcm00qf9qRJJEGhOa252NX34/utvtfsnvvyXWE7n2U6WQz1lf6JH1w==} - hasBin: true - '@better-auth/core@1.4.0-beta.9': resolution: {integrity: sha512-4YanGHTihKhKamN2T4ndjYTR5By162kk88DPt2xwwVc2t/MnSO7TiVBB0V5gZ6JM6YMX2aSPTfMbk89AEjpvCQ==} peerDependencies: @@ -725,24 +688,6 @@ packages: '@better-fetch/fetch@1.1.18': resolution: {integrity: sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA==} - '@chevrotain/cst-dts-gen@10.5.0': - resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==} - - '@chevrotain/gast@10.5.0': - resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==} - - '@chevrotain/types@10.5.0': - resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==} - - '@chevrotain/utils@10.5.0': - resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} - - '@clack/core@0.5.0': - resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} - - '@clack/prompts@0.11.0': - resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} - '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -761,9 +706,11 @@ packages: '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' '@esbuild-kit/esm-loader@2.6.5': resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' '@esbuild/aix-ppc64@0.25.11': resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} @@ -1192,10 +1139,6 @@ packages: '@levischuck/tiny-cbor@0.2.11': resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} - '@mrleebo/prisma-ast@0.13.0': - resolution: {integrity: sha512-VxS+okLpNp6YUDLz3rAXv6sE8G4W5cX039bumkPub65xRr9BFxjHaT5ebX4DsiixIGaBwitjWTvx3mAbyI2EUQ==} - engines: {node: '>=16'} - '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -1536,6 +1479,14 @@ packages: '@peculiar/asn1-x509@2.4.0': resolution: {integrity: sha512-F7mIZY2Eao2TaoVqigGMLv+NDdpwuBKU1fucHPONfzaBS4JXXCNCmfO0Z3dsy7JzKGqtDcYC1mr9JjaZQZNiuw==} + '@peculiar/json-schema@1.1.12': + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + + '@peculiar/webcrypto@1.5.0': + resolution: {integrity: sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==} + engines: {node: '>=10.12.0'} + '@petamoriken/float16@3.9.3': resolution: {integrity: sha512-8awtpHXCx/bNpFt4mt2xdkgtgVvKqty8VbjHI/WWWQuEw+KLzFot3f4+LkQY9YmOtq7A5GdOnqoIC8Pdygjk2g==} @@ -2730,6 +2681,9 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/accepts@1.3.7': + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -2745,12 +2699,39 @@ packages: '@types/better-sqlite3@7.6.13': resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/content-disposition@0.5.9': + resolution: {integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==} + + '@types/cookie@0.5.4': + resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} + + '@types/cookies@0.9.2': + resolution: {integrity: sha512-1AvkDdZM2dbyFybL4fxpuNCaWyv//0AwsuUk2DWeXyM1/5ZKm6W3z6mQi24RZ4l2ucY+bkSHzbDVpySqPGuV8A==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} + + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/http-assert@1.5.6': + resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + '@types/inquirer@6.5.0': resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} @@ -2760,9 +2741,24 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/keygrip@1.0.6': + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + + '@types/koa-compose@3.2.9': + resolution: {integrity: sha512-BroAZ9FTvPiCy0Pi8tjD1OfJ7bgU1gQf0eR6e1Vm+JJATy9eKOG3hQMFtMciMawiSOVnLMdmUOC46s7HBhSTsA==} + + '@types/koa@2.15.0': + resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/node@20.19.30': resolution: {integrity: sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==} @@ -2778,8 +2774,11 @@ packages: '@types/pg@8.11.6': resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} - '@types/prompts@2.4.9': - resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} '@types/react-dom@19.1.9': resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} @@ -2789,6 +2788,15 @@ packages: '@types/react@19.1.12': resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} + + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + '@types/through@0.0.33': resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} @@ -2857,6 +2865,7 @@ packages: '@vercel/postgres@0.10.0': resolution: {integrity: sha512-fSD23DxGND40IzSkXjcFcxr53t3Tiym59Is0jSYIFpG4/0f0KO9SGtcp1sXiebvPaGe7N/tU05cH4yt2S6/IPg==} engines: {node: '>=18.14'} + deprecated: '@vercel/postgres is deprecated. You can either choose an alternate storage solution from the Vercel Marketplace if you want to set up a new database. Or you can follow this guide to migrate your existing Vercel Postgres db: https://neon.com/docs/guides/vercel-postgres-transition-guide' '@vitejs/plugin-react@5.1.0': resolution: {integrity: sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==} @@ -2879,6 +2888,27 @@ packages: '@vue/shared@3.5.16': resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==} + '@workos-inc/node@7.82.0': + resolution: {integrity: sha512-8h6XjIJf8nqNGYQMkWsjZ72WXMtzqrb4Azz39schXWoSRmwoK6tK+GpeAviJ9slddiJdOcp0Ht9/r+L6pGQMCg==} + engines: {node: '>=16'} + + '@workos-inc/node@8.0.0': + resolution: {integrity: sha512-D8VDfx0GXeiVm8vccAl0rElW7taebRnrteKPJzZwehwzI9W/Usa4qKfmwxj+7Lh1Z1deEocDRCpZpV7ml4GpWQ==} + engines: {node: '>=20.15.0'} + + '@workos/authkit-session@0.3.4': + resolution: {integrity: sha512-lbLP1y8MHWL1Op9athZ3SrzKLcL0+xBVpADCMQLI39mPgSQj+/lopVdOx0Cku96hYnJBOJTLVTK3Zox4FbZl4A==} + engines: {node: '>=20.0.0'} + + '@workos/authkit-tanstack-react-start@0.5.0': + resolution: {integrity: sha512-W2Ot5QJLj1Kw2uzbs7VJk2vbkvwDXW9w7wLBFgUdmeu7JDmbW5VkI8tw4IU0fbA1PMBEt9ecj+h//B/BbKrPFg==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@tanstack/react-router': '>=1.0.0' + '@tanstack/react-start': '>=1.0.0' + react: ^18.0 || ^19.0 + react-dom: ^18.0 || ^19.0 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3106,22 +3136,13 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + bufferutil@4.0.8: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} - - c12@3.2.0: - resolution: {integrity: sha512-ixkEtbYafL56E6HiFuonMm1ZjoKtIo7TH68/uiEq4DAwv9NcUX2nJ95F8TrbMeNjqIkZpruo3ojXQJ+MGG5gcQ==} - peerDependencies: - magicast: ^0.3.5 - peerDependenciesMeta: - magicast: - optional: true - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -3156,10 +3177,6 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@3.1.0: resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} @@ -3176,9 +3193,6 @@ packages: resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} engines: {node: '>=20.18.1'} - chevrotain@10.5.0: - resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -3190,9 +3204,6 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -3237,19 +3248,12 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -3266,6 +3270,10 @@ packages: cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + copy-anything@4.0.5: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} @@ -3371,14 +3379,6 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} - - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} - engines: {node: '>=18'} - defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -3386,10 +3386,6 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -3409,9 +3405,6 @@ packages: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} - destr@2.0.5: - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -3478,95 +3471,6 @@ packages: resolution: {integrity: sha512-+CHgPFzuoTQTt7cOYCV6MOw2w8vqEn/ap1yv4bpZOWL03u7rlVRQhUY0WYT3rHsgVTXwYQDZaSUJSQrMBUKuWg==} hasBin: true - drizzle-orm@0.33.0: - resolution: {integrity: sha512-SHy72R2Rdkz0LEq0PSG/IdvnT3nGiWuRk+2tXZQ90GVq/XQhpCzu/EFT3V2rox+w8MlkBQxifF8pCStNYnERfA==} - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' - '@electric-sql/pglite': '>=0.1.1' - '@libsql/client': '*' - '@neondatabase/serverless': '>=0.1' - '@op-engineering/op-sqlite': '>=2' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@prisma/client': '*' - '@tidbcloud/serverless': '*' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/react': '>=18' - '@types/sql.js': '*' - '@vercel/postgres': '>=0.8.0' - '@xata.io/client': '*' - better-sqlite3: '>=7' - bun-types: '*' - expo-sqlite: '>=13.2.0' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - prisma: '*' - react: '>=18' - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@electric-sql/pglite': - optional: true - '@libsql/client': - optional: true - '@neondatabase/serverless': - optional: true - '@op-engineering/op-sqlite': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@prisma/client': - optional: true - '@tidbcloud/serverless': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/react': - optional: true - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - '@xata.io/client': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - expo-sqlite: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - prisma: - optional: true - react: - optional: true - sql.js: - optional: true - sqlite3: - optional: true - drizzle-orm@0.44.7: resolution: {integrity: sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==} peerDependencies: @@ -4013,10 +3917,6 @@ packages: resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} engines: {node: '>= 14'} - giget@2.0.0: - resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} - hasBin: true - github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -4030,6 +3930,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} @@ -4180,6 +4081,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4203,6 +4105,27 @@ packages: resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} + iron-session@6.3.1: + resolution: {integrity: sha512-3UJ7y2vk/WomAtEySmPgM6qtYF1cZ3tXuWX5GsVX4PJXAcs5y/sV9HuSfpjKS6HkTL/OhZcTDWJNLZ7w+Erx3A==} + engines: {node: '>=12'} + peerDependencies: + express: '>=4' + koa: '>=2' + next: '>=10' + peerDependenciesMeta: + express: + optional: true + koa: + optional: true + next: + optional: true + + iron-webcrypto@0.2.8: + resolution: {integrity: sha512-YPdCvjFMOBjXaYuDj5tiHst5CEk6Xw84Jo8Y2+jzhMceclAnb3+vNPP/CTtb5fO2ZEuXEaO4N+w62Vfko757KA==} + + iron-webcrypto@2.0.0: + resolution: {integrity: sha512-rtffZKDUHciZElM8mjFCufBC7nVhCxHYyWHESqs89OioEDz4parOofd8/uhrejh/INhQFfYQfByS22LlezR9sQ==} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -4239,11 +4162,6 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4264,11 +4182,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -4354,10 +4267,6 @@ packages: resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} engines: {node: '>=18'} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -4384,9 +4293,15 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jose@5.6.3: + resolution: {integrity: sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==} + jose@6.1.0: resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==} + jose@6.1.3: + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4431,10 +4346,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - kysely@0.28.5: resolution: {integrity: sha512-rlB0I/c6FBDWPcQoDtkxi9zIvpmnV5xoIalfCMSMCa7nuA6VGA3F54TW9mEgX4DVf10sXAWCF5fDbamI/5ZpKA==} engines: {node: '>=20.0.0'} @@ -4446,6 +4357,9 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} + leb@1.0.0: + resolution: {integrity: sha512-Y3c3QZfvKWHX60BVOQPhLCvVGmDYWyJEiINE3drOog6KCyN2AOwvuQQzlS3uJg1J85kzpILXIUwRXULWavir+w==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -4514,16 +4428,13 @@ packages: resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -4674,9 +4585,6 @@ packages: resolution: {integrity: sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==} engines: {node: '>=10'} - node-fetch-native@1.6.7: - resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true @@ -4699,11 +4607,6 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nypm@0.6.1: - resolution: {integrity: sha512-hlacBiRiv1k9hZFiphPUkfSQ/ZfQzZDzC+8z0wL3lvDAOUu/2NnChkKuMoMjNur/9OpKuz2QsIeiPVN0xM5Q0w==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -4752,10 +4655,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - open@10.2.0: - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} - engines: {node: '>=18'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -4852,9 +4751,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} @@ -4884,9 +4780,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -4998,10 +4891,6 @@ packages: engines: {node: '>=16.13'} hasBin: true - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -5026,6 +4915,10 @@ packages: resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} engines: {node: '>=6.0.0'} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} + engines: {node: '>=0.6'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5042,9 +4935,6 @@ packages: '@types/react-dom': optional: true - rc9@2.1.2: - resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -5100,10 +4990,6 @@ packages: resolution: {integrity: sha512-DHINL3PAmPUiK1uszfbKiXqfE03eszdt5BpVSuEAHb5nfmNPwnsy7g39h2t8aXFc/Bv99GH81s+j8dobtD+jOw==} engines: {node: '>=0.10.0'} - react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} - engines: {node: '>=0.10.0'} - readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -5124,9 +5010,6 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} - regexp-to-ast@0.5.0: - resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} - regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -5164,6 +5047,7 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rollup@4.52.5: @@ -5177,10 +5061,6 @@ packages: rou3@0.7.10: resolution: {integrity: sha512-aoFj6f7MJZ5muJ+Of79nrhs9N3oLGqi2VEMe94Zbkjb6Wupha46EuoYgpWSOZlXww3bbd8ojgXTAA2mzimX5Ww==} - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} - engines: {node: '>=18'} - run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -5301,9 +5181,6 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -5471,12 +5348,6 @@ packages: tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -5620,6 +5491,10 @@ packages: engines: {node: '>=0.8.0'} hasBin: true + uint8array-extras@1.5.0: + resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} + engines: {node: '>=18'} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -5846,6 +5721,9 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + webcrypto-core@1.8.1: + resolution: {integrity: sha512-P+x1MvlNCXlKbLSOY4cYrdreqPG5hbzkmawbcXLKN/mf6DZW0SdNNkZ+sjwsqVkI4A4Ko2sPZmkZtCKY58w83A==} + webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -5909,10 +5787,6 @@ packages: utf-8-validate: optional: true - wsl-utils@0.1.0: - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} - engines: {node: '>=18'} - xmlbuilder2@3.1.1: resolution: {integrity: sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==} engines: {node: '>=12.0'} @@ -5933,14 +5807,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-spinner@0.2.3: - resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} - engines: {node: '>=18.19'} - - yoctocolors@2.1.2: - resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} - engines: {node: '>=18'} - zod-validation-error@4.0.2: resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} @@ -6112,18 +5978,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -6134,23 +5988,6 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/types': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -6162,18 +5999,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-react@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -6212,69 +6037,6 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@better-auth/cli@1.4.0-beta.9(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@types/pg@8.11.10)(@types/react@19.1.12)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(react@19.2.3)': - dependencies: - '@babel/core': 7.28.5 - '@babel/preset-react': 7.27.1(@babel/core@7.28.5) - '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) - '@better-auth/utils': 0.3.0 - '@clack/prompts': 0.11.0 - '@mrleebo/prisma-ast': 0.13.0 - '@prisma/client': 5.22.0(prisma@5.22.0) - '@types/better-sqlite3': 7.6.13 - '@types/prompts': 2.4.9 - better-auth: 1.4.0-beta.9(better-sqlite3@12.2.0)(react@19.2.3) - better-sqlite3: 12.2.0 - c12: 3.2.0 - chalk: 5.6.2 - commander: 12.1.0 - dotenv: 17.2.2 - drizzle-orm: 0.33.0(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@types/react@19.1.12)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0)(react@19.2.3) - get-tsconfig: 4.12.0 - jiti: 2.6.1 - open: 10.2.0 - prettier: 3.6.2 - prisma: 5.22.0 - prompts: 2.4.2 - semver: 7.7.3 - tinyexec: 0.3.2 - yocto-spinner: 0.2.3 - zod: 4.1.12 - transitivePeerDependencies: - - '@aws-sdk/client-rds-data' - - '@cloudflare/workers-types' - - '@electric-sql/pglite' - - '@libsql/client' - - '@lynx-js/react' - - '@neondatabase/serverless' - - '@op-engineering/op-sqlite' - - '@opentelemetry/api' - - '@planetscale/database' - - '@sveltejs/kit' - - '@tidbcloud/serverless' - - '@types/pg' - - '@types/react' - - '@types/sql.js' - - '@vercel/postgres' - - '@xata.io/client' - - bun-types - - expo-sqlite - - knex - - kysely - - magicast - - mysql2 - - next - - pg - - postgres - - react - - react-dom - - solid-js - - sql.js - - sqlite3 - - supports-color - - svelte - - vue - '@better-auth/core@1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1)': dependencies: '@better-auth/utils': 0.3.0 @@ -6296,32 +6058,6 @@ snapshots: '@better-fetch/fetch@1.1.18': {} - '@chevrotain/cst-dts-gen@10.5.0': - dependencies: - '@chevrotain/gast': 10.5.0 - '@chevrotain/types': 10.5.0 - lodash: 4.17.21 - - '@chevrotain/gast@10.5.0': - dependencies: - '@chevrotain/types': 10.5.0 - lodash: 4.17.21 - - '@chevrotain/types@10.5.0': {} - - '@chevrotain/utils@10.5.0': {} - - '@clack/core@0.5.0': - dependencies: - picocolors: 1.1.1 - sisteransi: 1.0.5 - - '@clack/prompts@0.11.0': - dependencies: - '@clack/core': 0.5.0 - picocolors: 1.1.1 - sisteransi: 1.0.5 - '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -6639,11 +6375,6 @@ snapshots: '@levischuck/tiny-cbor@0.2.11': {} - '@mrleebo/prisma-ast@0.13.0': - dependencies: - chevrotain: 10.5.0 - lilconfig: 2.1.0 - '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.6.0 @@ -6884,6 +6615,18 @@ snapshots: pvtsutils: 1.3.6 tslib: 2.8.1 + '@peculiar/json-schema@1.1.12': + dependencies: + tslib: 2.8.1 + + '@peculiar/webcrypto@1.5.0': + dependencies: + '@peculiar/asn1-schema': 2.4.0 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.6 + tslib: 2.8.1 + webcrypto-core: 1.8.1 + '@petamoriken/float16@3.9.3': optional: true @@ -6898,10 +6641,13 @@ snapshots: '@prisma/client@5.22.0(prisma@5.22.0)': optionalDependencies: prisma: 5.22.0 + optional: true - '@prisma/debug@5.22.0': {} + '@prisma/debug@5.22.0': + optional: true - '@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2': {} + '@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2': + optional: true '@prisma/engines@5.22.0': dependencies: @@ -6909,16 +6655,19 @@ snapshots: '@prisma/engines-version': 5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2 '@prisma/fetch-engine': 5.22.0 '@prisma/get-platform': 5.22.0 + optional: true '@prisma/fetch-engine@5.22.0': dependencies: '@prisma/debug': 5.22.0 '@prisma/engines-version': 5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2 '@prisma/get-platform': 5.22.0 + optional: true '@prisma/get-platform@5.22.0': dependencies: '@prisma/debug': 5.22.0 + optional: true '@radix-ui/number@1.1.1': {} @@ -8221,6 +7970,10 @@ snapshots: tslib: 2.8.1 optional: true + '@types/accepts@1.3.7': + dependencies: + '@types/node': 24.9.1 + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.5 @@ -8244,15 +7997,54 @@ snapshots: '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 20.19.30 + '@types/node': 24.9.1 + optional: true + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 24.9.1 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 24.9.1 + + '@types/content-disposition@0.5.9': {} + + '@types/cookie@0.5.4': {} + + '@types/cookies@0.9.2': + dependencies: + '@types/connect': 3.4.38 + '@types/express': 4.17.25 + '@types/keygrip': 1.0.6 + '@types/node': 24.9.1 '@types/estree@1.0.8': {} + '@types/express-serve-static-core@4.19.8': + dependencies: + '@types/node': 24.9.1 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express@4.17.25': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.8 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.10 + '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 '@types/node': 20.19.30 + '@types/http-assert@1.5.6': {} + + '@types/http-errors@2.0.5': {} + '@types/inquirer@6.5.0': dependencies: '@types/through': 0.0.33 @@ -8262,8 +8054,29 @@ snapshots: '@types/json5@0.0.29': {} + '@types/keygrip@1.0.6': {} + + '@types/koa-compose@3.2.9': + dependencies: + '@types/koa': 2.15.0 + + '@types/koa@2.15.0': + dependencies: + '@types/accepts': 1.3.7 + '@types/content-disposition': 0.5.9 + '@types/cookies': 0.9.2 + '@types/http-assert': 1.5.6 + '@types/http-errors': 2.0.5 + '@types/keygrip': 1.0.6 + '@types/koa-compose': 3.2.9 + '@types/node': 24.9.1 + + '@types/mime@1.3.5': {} + '@types/minimatch@5.1.2': {} + '@types/node@17.0.45': {} + '@types/node@20.19.30': dependencies: undici-types: 6.21.0 @@ -8289,10 +8102,9 @@ snapshots: pg-protocol: 1.10.3 pg-types: 4.1.0 - '@types/prompts@2.4.9': - dependencies: - '@types/node': 20.19.30 - kleur: 3.0.3 + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} '@types/react-dom@19.1.9(@types/react@19.1.12)': dependencies: @@ -8302,6 +8114,21 @@ snapshots: dependencies: csstype: 3.1.3 + '@types/send@0.17.6': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 24.9.1 + + '@types/send@1.2.1': + dependencies: + '@types/node': 24.9.1 + + '@types/serve-static@1.15.10': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 24.9.1 + '@types/send': 0.17.6 + '@types/through@0.0.33': dependencies: '@types/node': 20.19.30 @@ -8458,6 +8285,36 @@ snapshots: '@vue/shared@3.5.16': optional: true + '@workos-inc/node@7.82.0': + dependencies: + iron-session: 6.3.1 + jose: 5.6.3 + leb: 1.0.0 + qs: 6.14.1 + transitivePeerDependencies: + - express + - koa + - next + + '@workos-inc/node@8.0.0': + dependencies: + iron-webcrypto: 2.0.0 + jose: 6.1.3 + + '@workos/authkit-session@0.3.4': + dependencies: + '@workos-inc/node': 8.0.0 + iron-webcrypto: 2.0.0 + jose: 6.1.3 + + '@workos/authkit-tanstack-react-start@0.5.0(@tanstack/react-router@1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4))(@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': + dependencies: + '@tanstack/react-router': 1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4) + '@tanstack/react-start': 1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@workos/authkit-session': 0.3.4 + react: 19.1.4 + react-dom: 19.1.4(react@19.1.4) + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -8661,27 +8518,6 @@ snapshots: transitivePeerDependencies: - better-sqlite3 - better-auth@1.4.0-beta.9(better-sqlite3@12.2.0)(react@19.2.3): - dependencies: - '@better-auth/core': 1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1) - '@better-auth/telemetry': 1.4.0-beta.9(@better-auth/core@1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1)) - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.18 - '@noble/ciphers': 2.0.0 - '@noble/hashes': 2.0.0 - '@simplewebauthn/browser': 13.1.2 - '@simplewebauthn/server': 13.1.2 - better-call: 1.0.19 - defu: 6.1.4 - jose: 6.1.0 - kysely: 0.28.5 - nanostores: 1.0.1 - zod: 4.1.12 - optionalDependencies: - react: 19.2.3 - transitivePeerDependencies: - - better-sqlite3 - better-call@1.0.19: dependencies: '@better-auth/utils': 0.3.0 @@ -8737,28 +8573,14 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bufferutil@4.0.8: + buffer@6.0.3: dependencies: - node-gyp-build: 4.8.4 - - bundle-name@4.1.0: - dependencies: - run-applescript: 7.0.0 + base64-js: 1.5.1 + ieee754: 1.2.1 - c12@3.2.0: + bufferutil@4.0.8: dependencies: - chokidar: 4.0.3 - confbox: 0.2.2 - defu: 6.1.4 - dotenv: 17.2.2 - 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.3.0 - rc9: 2.1.2 + node-gyp-build: 4.8.4 call-bind-apply-helpers@1.0.2: dependencies: @@ -8802,8 +8624,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.6.2: {} - change-case@3.1.0: dependencies: camel-case: 3.0.0 @@ -8852,15 +8672,6 @@ snapshots: undici: 7.16.0 whatwg-mimetype: 4.0.0 - chevrotain@10.5.0: - dependencies: - '@chevrotain/cst-dts-gen': 10.5.0 - '@chevrotain/gast': 10.5.0 - '@chevrotain/types': 10.5.0 - '@chevrotain/utils': 10.5.0 - lodash: 4.17.21 - regexp-to-ast: 0.5.0 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -8876,13 +8687,10 @@ snapshots: chokidar@4.0.3: dependencies: readdirp: 4.1.2 + optional: true chownr@1.1.4: {} - citty@0.1.6: - dependencies: - consola: 3.4.2 - class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -8915,15 +8723,11 @@ snapshots: commander@10.0.1: {} - commander@12.1.0: {} - commander@2.20.3: optional: true concat-map@0.0.1: {} - confbox@0.2.2: {} - consola@3.4.2: {} constant-case@2.0.0: @@ -8938,6 +8742,8 @@ snapshots: cookie-es@2.0.0: {} + cookie@0.5.0: {} + copy-anything@4.0.5: dependencies: is-what: 5.5.0 @@ -9014,13 +8820,6 @@ snapshots: deep-is@0.1.4: {} - default-browser-id@5.0.0: {} - - default-browser@5.2.1: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 - defaults@1.0.4: dependencies: clone: 1.0.4 @@ -9031,8 +8830,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@3.0.0: {} - define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -9061,8 +8858,6 @@ snapshots: denque@2.1.0: optional: true - destr@2.0.5: {} - detect-libc@2.1.2: {} detect-node-es@1.1.0: {} @@ -9129,23 +8924,6 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.33.0(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@types/react@19.1.12)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0)(react@19.2.3): - optionalDependencies: - '@neondatabase/serverless': 0.10.0 - '@opentelemetry/api': 1.9.0 - '@planetscale/database': 1.19.0 - '@prisma/client': 5.22.0(prisma@5.22.0) - '@types/better-sqlite3': 7.6.13 - '@types/pg': 8.11.10 - '@types/react': 19.1.12 - '@vercel/postgres': 0.10.0(utf-8-validate@6.0.4) - better-sqlite3: 12.2.0 - kysely: 0.28.5 - mysql2: 3.11.3 - postgres: 3.4.4 - prisma: 5.22.0 - react: 19.2.3 - drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0): optionalDependencies: '@neondatabase/serverless': 0.10.0 @@ -9723,15 +9501,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.1 - pathe: 2.0.3 - github-from-package@0.0.0: {} glob-parent@5.1.2: @@ -9949,6 +9718,24 @@ snapshots: ip-address@10.0.1: {} + iron-session@6.3.1: + dependencies: + '@peculiar/webcrypto': 1.5.0 + '@types/cookie': 0.5.4 + '@types/express': 4.17.25 + '@types/koa': 2.15.0 + '@types/node': 17.0.45 + cookie: 0.5.0 + iron-webcrypto: 0.2.8 + + iron-webcrypto@0.2.8: + dependencies: + buffer: 6.0.3 + + iron-webcrypto@2.0.0: + dependencies: + uint8array-extras: 1.5.0 + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -9993,8 +9780,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-docker@3.0.0: {} - is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -10014,10 +9799,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - is-interactive@1.0.0: {} is-lower-case@1.1.3: @@ -10091,10 +9872,6 @@ snapshots: is-what@5.5.0: {} - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - isarray@2.0.5: {} isbinaryfile@4.0.10: {} @@ -10117,8 +9894,12 @@ snapshots: jiti@2.6.1: {} + jose@5.6.3: {} + jose@6.1.0: {} + jose@6.1.3: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -10161,8 +9942,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - kleur@3.0.3: {} - kysely@0.28.5: {} language-subtag-registry@0.3.23: {} @@ -10171,6 +9950,8 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 + leb@1.0.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -10221,8 +10002,6 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.1 lightningcss-win32-x64-msvc: 1.30.1 - lilconfig@2.1.0: {} - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -10393,8 +10172,6 @@ snapshots: dependencies: semver: 7.7.3 - node-fetch-native@1.6.7: {} - node-gyp-build@4.8.4: {} node-plop@0.26.3: @@ -10423,14 +10200,6 @@ snapshots: dependencies: boolbase: 1.0.0 - nypm@0.6.1: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - pathe: 2.0.3 - pkg-types: 2.3.0 - tinyexec: 1.0.1 - object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -10487,13 +10256,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - open@10.2.0: - dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - wsl-utils: 0.1.0 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -10663,8 +10425,6 @@ snapshots: pathe@2.0.3: {} - perfect-debounce@1.0.0: {} - pg-int8@1.0.1: {} pg-numeric@1.0.2: {} @@ -10689,12 +10449,6 @@ snapshots: picomatch@4.0.3: {} - pkg-types@2.3.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.7 - pathe: 2.0.3 - possible-typed-array-names@1.0.0: {} postcss@8.5.6: @@ -10758,11 +10512,7 @@ snapshots: '@prisma/engines': 5.22.0 optionalDependencies: fsevents: 2.3.3 - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 + optional: true prop-types@15.8.1: dependencies: @@ -10798,6 +10548,10 @@ snapshots: pvutils@1.1.3: {} + qs@6.14.1: + dependencies: + side-channel: 1.1.0 + queue-microtask@1.2.3: {} radix-ui@1.4.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.2.3(react@19.1.4))(react@19.1.4): @@ -10863,11 +10617,6 @@ snapshots: '@types/react': 19.1.12 '@types/react-dom': 19.1.9(@types/react@19.1.12) - rc9@2.1.2: - dependencies: - defu: 6.1.4 - destr: 2.0.5 - rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -10918,9 +10667,6 @@ snapshots: react@19.1.4: {} - react@19.2.3: - optional: true - readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -10931,7 +10677,8 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.1.2: {} + readdirp@4.1.2: + optional: true recast@0.23.11: dependencies: @@ -10952,8 +10699,6 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 - regexp-to-ast@0.5.0: {} - regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -11031,8 +10776,6 @@ snapshots: rou3@0.7.10: {} - run-applescript@7.0.0: {} - run-async@2.4.1: {} run-parallel@1.2.0: @@ -11165,8 +10908,6 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - sisteransi@1.0.5: {} - slash@3.0.0: {} smart-buffer@4.2.0: {} @@ -11352,10 +11093,6 @@ snapshots: tinycolor2@1.6.0: {} - tinyexec@0.3.2: {} - - tinyexec@1.0.1: {} - tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -11511,6 +11248,8 @@ snapshots: uglify-js@3.19.3: optional: true + uint8array-extras@1.5.0: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -11638,6 +11377,14 @@ snapshots: dependencies: defaults: 1.0.4 + webcrypto-core@1.8.1: + dependencies: + '@peculiar/asn1-schema': 2.4.0 + '@peculiar/json-schema': 1.1.12 + asn1js: 3.0.6 + pvtsutils: 1.3.6 + tslib: 2.8.1 + webpack-virtual-modules@0.6.2: {} whatwg-encoding@3.1.1: @@ -11713,10 +11460,6 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 6.0.4 - wsl-utils@0.1.0: - dependencies: - is-wsl: 3.1.0 - xmlbuilder2@3.1.1: dependencies: '@oozcitak/dom': 1.15.10 @@ -11733,12 +11476,6 @@ snapshots: yocto-queue@0.1.0: {} - yocto-spinner@0.2.3: - dependencies: - yoctocolors: 2.1.2 - - yoctocolors@2.1.2: {} - zod-validation-error@4.0.2(zod@4.1.12): dependencies: zod: 4.1.12 From ddd1915923eac7f746dd7c8af581fa024ed16b11 Mon Sep 17 00:00:00 2001 From: AF_Askar <68832286+abo3skr2019@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:02:06 +0300 Subject: [PATCH 03/12] antigravity --- .agent/rules/project-rules.md | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .agent/rules/project-rules.md diff --git a/.agent/rules/project-rules.md b/.agent/rules/project-rules.md new file mode 100644 index 0000000..7ca7ba6 --- /dev/null +++ b/.agent/rules/project-rules.md @@ -0,0 +1,65 @@ +--- +trigger: always_on +--- + +## Architecture & Priorities + +- This is a PoC: prioritize developer speed and clarity over abstraction. +- Treat all backends as APIs; do not couple services together. +- The AI service is stateless and must not call application APIs directly. + +## Monorepo Structure + +- This is a TurboRepo monorepo with pnpm workspaces +- Apps live in `apps/` (currently only tanstack-start) +- Shared packages live in `packages/` +- External services live in `services/` +- Use `turbo.json` for task definitions and caching + +## Environment & Configuration + +- Use Zod for environment validation in TypeScript packages +- Follow the pattern in `packages/auth/env.ts` for type-safe env vars +- Never commit sensitive values; use `example.env` as a template +- Prefix AI service env vars with `AI_` to avoid conflicts + +## Authentication + +- Use [WorkOS](https://workos.com/docs/llms.txt) for authentication and organization context. +- Do not invent custom auth flows. +- User identity and org context must be passed explicitly to services. + +## Frontend & UI + +- All reusable UI components must live in the `packages/ui` package. +- Use Tailwind CSS for styling. +- Prefer shadcn/ui components where applicable. +- Do not create ad-hoc UI components in app folders. + +## Forms & State + +- Use `@tanstack/react-form` for all forms. +- Use `@tanstack/react-query` for data fetching, caching, and mutations. +- Use `@tanstack/react-router` for routing. + +## APIs & Data Fetching + +- Use tRPC for type-safe application API calls (user data, metrics, app state). +- Use OpenAPI Generator to generate a typed client for the FastAPI AI service. +- Do not mix tRPC and OpenAPI clients. +- Do not have the AI service call the application API. + +## Database & Validation + +- Use Drizzle ORM for database access. +- Use Zod for validation. +- Use `drizzle-zod` for deriving Zod schemas from Drizzle models. +- Do not duplicate schema definitions manually. +- Place non-database Zod schemas in the `packages/validators` package. + +## AI Service Integration + +- The AI service receives all required inputs (user context, metrics, documents). +- The AI service must not fetch user or metrics data on its own. +- Inputs should be explicit, minimal, and versionable. +- AI service shouldn't have a seperate auth flow it should instead use the AI_SERVICE_KEY env var to authenticate requests from the main app which will have that variable sent using a secure header. From 450caaaf04e98be62678d63002db4b33b45bb72d Mon Sep 17 00:00:00 2001 From: AF_Askar <68832286+abo3skr2019@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:26:26 +0300 Subject: [PATCH 04/12] documentation --- .agent/rules/project-rules.md | 4 ++-- example.env | 25 +++++++++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/.agent/rules/project-rules.md b/.agent/rules/project-rules.md index 7ca7ba6..72b0e5e 100644 --- a/.agent/rules/project-rules.md +++ b/.agent/rules/project-rules.md @@ -37,7 +37,7 @@ trigger: always_on - Do not create ad-hoc UI components in app folders. ## Forms & State - +- Here are the Tanstack [docs](https://tanstack.com/llms.txt) - Use `@tanstack/react-form` for all forms. - Use `@tanstack/react-query` for data fetching, caching, and mutations. - Use `@tanstack/react-router` for routing. @@ -62,4 +62,4 @@ trigger: always_on - The AI service receives all required inputs (user context, metrics, documents). - The AI service must not fetch user or metrics data on its own. - Inputs should be explicit, minimal, and versionable. -- AI service shouldn't have a seperate auth flow it should instead use the AI_SERVICE_KEY env var to authenticate requests from the main app which will have that variable sent using a secure header. +- AI service shouldn't have a seperate auth flow it should instead use the AI_SERVICE_KEY env var to authenticate requests from the main app which will have that variable sent using a secure header. \ No newline at end of file diff --git a/example.env b/example.env index c381413..8826c7a 100644 --- a/example.env +++ b/example.env @@ -1,5 +1,5 @@ # Docker environment variables -# Copy this file to .env.local and update with your values +# Copy this file to .env and update with your values # AI Service Configuration OPENAI_API_KEY=your_openai_api_key_here @@ -9,15 +9,24 @@ AI_SERVICE_KEY="super-secret-internal-key" # Database Configuration -DATABASE_URL=postgresql://user:password@application_db:5432/app_db +POSTGRES_URL=postgresql://user:password@application_db:5432/app_db -# Next.js Configuration -NEXT_PUBLIC_API_URL=http://localhost:5000 -NEXTAUTH_SECRET=your_nextauth_secret_here -NEXTAUTH_URL=http://localhost:5001 -AUTH_SECRET='supersecret' +# WorkOS AuthKit Configuration +# Get these from the WorkOS Dashboard: https://dashboard.workos.com +WORKOS_CLIENT_ID="client_..." +WORKOS_API_KEY="sk_test_..." +WORKOS_REDIRECT_URI="http://localhost:3001/api/auth/callback" +# Generate a secure 32+ character password: openssl rand -base64 24 +WORKOS_COOKIE_PASSWORD="your-secure-cookie-password-here" + +# Optional WorkOS Configuration +# WORKOS_COOKIE_MAX_AGE=34560000 +# WORKOS_COOKIE_NAME=wos-session +# WORKOS_COOKIE_DOMAIN= +# WORKOS_COOKIE_SAMESITE=lax + +# AI Service URL AI_SERVICE_URL=http://localhost:5000 -AI_SERVICE_KEY="super-secret-internal-key" # Development settings NODE_ENV=development From c556d7306d6b4e7d9e497653e83bdf26625db6d7 Mon Sep 17 00:00:00 2001 From: AF_Askar <68832286+abo3skr2019@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:26:56 +0300 Subject: [PATCH 05/12] workos migration --- apps/tanstack-start/package.json | 3 +- apps/tanstack-start/src/auth/client.ts | 3 - apps/tanstack-start/src/auth/server.ts | 16 - .../src/component/auth-showcase.tsx | 42 +- apps/tanstack-start/src/env.ts | 6 +- apps/tanstack-start/src/lib/trpc.ts | 5 +- apps/tanstack-start/src/routeTree.gen.ts | 37 +- apps/tanstack-start/src/routes/__root.tsx | 9 +- apps/tanstack-start/src/routes/api/auth.$.ts | 12 - .../src/routes/api/auth/callback.tsx | 10 + apps/tanstack-start/src/routes/api/trpc.$.ts | 10 +- apps/tanstack-start/src/start.ts | 6 + packages/api/src/trpc.ts | 12 +- packages/auth/env.ts | 11 +- packages/auth/package.json | 6 +- packages/auth/script/auth-cli.ts | 25 - packages/auth/src/index.ts | 58 +- pnpm-lock.yaml | 701 +++++------------- 18 files changed, 270 insertions(+), 702 deletions(-) delete mode 100644 apps/tanstack-start/src/auth/client.ts delete mode 100644 apps/tanstack-start/src/auth/server.ts delete mode 100644 apps/tanstack-start/src/routes/api/auth.$.ts create mode 100644 apps/tanstack-start/src/routes/api/auth/callback.tsx create mode 100644 apps/tanstack-start/src/start.ts delete mode 100644 packages/auth/script/auth-cli.ts diff --git a/apps/tanstack-start/package.json b/apps/tanstack-start/package.json index 0915a66..e26f9de 100644 --- a/apps/tanstack-start/package.json +++ b/apps/tanstack-start/package.json @@ -29,7 +29,7 @@ "@trpc/client": "catalog:", "@trpc/server": "catalog:", "@trpc/tanstack-react-query": "catalog:", - "better-auth": "catalog:", + "@workos/authkit-tanstack-react-start": "^0.5.0", "nitro": "3.0.1-alpha.1", "react": "catalog:react19", "react-dom": "catalog:react19", @@ -46,7 +46,6 @@ "@types/react": "catalog:react19", "@types/react-dom": "catalog:react19", "@vitejs/plugin-react": "catalog:", - "@workos/authkit-tanstack-react-start": "^0.5.0", "eslint": "catalog:", "prettier": "catalog:", "tailwindcss": "catalog:", diff --git a/apps/tanstack-start/src/auth/client.ts b/apps/tanstack-start/src/auth/client.ts deleted file mode 100644 index f1012dd..0000000 --- a/apps/tanstack-start/src/auth/client.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { createAuthClient } from "better-auth/react"; - -export const authClient = createAuthClient(); diff --git a/apps/tanstack-start/src/auth/server.ts b/apps/tanstack-start/src/auth/server.ts deleted file mode 100644 index 5d59fe6..0000000 --- a/apps/tanstack-start/src/auth/server.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { reactStartCookies } from "better-auth/react-start"; - -import { initAuth } from "@governance/auth"; - -import { env } from "~/env"; -import { getBaseUrl } from "~/lib/url"; - -export const auth = initAuth({ - baseUrl: getBaseUrl(), - productionUrl: `https://${env.VERCEL_PROJECT_PRODUCTION_URL ?? "turbo.t3.gg"}`, - secret: env.AUTH_SECRET, - discordClientId: env.AUTH_DISCORD_ID, - discordClientSecret: env.AUTH_DISCORD_SECRET, - - extraPlugins: [reactStartCookies()], -}); diff --git a/apps/tanstack-start/src/component/auth-showcase.tsx b/apps/tanstack-start/src/component/auth-showcase.tsx index 86a45c2..ff887d0 100644 --- a/apps/tanstack-start/src/component/auth-showcase.tsx +++ b/apps/tanstack-start/src/component/auth-showcase.tsx @@ -1,29 +1,30 @@ -import { useNavigate } from "@tanstack/react-router"; +import { useAuth } from "@workos/authkit-tanstack-react-start/client"; +import { getSignInUrl } from "@workos/authkit-tanstack-react-start"; +import { createServerFn } from "@tanstack/react-start"; import { Button } from "@governance/ui/button"; -import { authClient } from "~/auth/client"; +const getSignInUrlFn = createServerFn({ method: "GET" }).handler(async () => { + return await getSignInUrl(); +}); export function AuthShowcase() { - const { data: session } = authClient.useSession(); - const navigate = useNavigate(); + const { user, loading, signOut } = useAuth(); - if (!session) { + if (loading) { + return
Loading...
; + } + + if (!user) { return ( ); } @@ -31,16 +32,13 @@ export function AuthShowcase() { return (

- Logged in as {session.user.name} + + Logged in as {user.firstName} {user.lastName} +

+

{user.email}

-
diff --git a/apps/tanstack-start/src/env.ts b/apps/tanstack-start/src/env.ts index a2ff648..32477d3 100644 --- a/apps/tanstack-start/src/env.ts +++ b/apps/tanstack-start/src/env.ts @@ -17,16 +17,14 @@ export const env = createEnv({ */ server: { POSTGRES_URL: z.url(), - WORKOS_API_KEY: z.string().min(1), - WORKOS_CLIENT_ID: z.string().min(1), }, /** * Specify your client-side environment variables schema here. - * For them to be exposed to the client, prefix them with `NEXT_PUBLIC_`. + * For them to be exposed to the client, prefix them with `VITE_`. */ client: { - // NEXT_PUBLIC_CLIENTVAR: z.string(), + // VITE_CLIENTVAR: z.string(), }, /** * Destructure all variables from `process.env` to make sure they aren't tree-shaken away. diff --git a/apps/tanstack-start/src/lib/trpc.ts b/apps/tanstack-start/src/lib/trpc.ts index 70df5fb..c066fde 100644 --- a/apps/tanstack-start/src/lib/trpc.ts +++ b/apps/tanstack-start/src/lib/trpc.ts @@ -8,10 +8,10 @@ import { } from "@trpc/client"; import { createTRPCContext } from "@trpc/tanstack-react-query"; import SuperJSON from "superjson"; +import { getAuth } from "@workos/authkit-tanstack-react-start"; import * as Api from "@governance/api"; -import { auth } from "~/auth/server"; import { env } from "~/env"; import { getBaseUrl } from "~/lib/url"; @@ -22,9 +22,10 @@ export const makeTRPCClient = createIsomorphicFn() unstable_localLink({ router: Api.appRouter, transformer: SuperJSON, - createContext: () => { + createContext: async () => { const headers = new Headers(getRequestHeaders()); headers.set("x-trpc-source", "tanstack-start-server"); + const auth = await getAuth(); return Api.createTRPCContext({ auth, headers }); }, }), diff --git a/apps/tanstack-start/src/routeTree.gen.ts b/apps/tanstack-start/src/routeTree.gen.ts index 14b20b8..3428522 100644 --- a/apps/tanstack-start/src/routeTree.gen.ts +++ b/apps/tanstack-start/src/routeTree.gen.ts @@ -11,7 +11,7 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as IndexRouteImport } from './routes/index' import { Route as ApiTrpcSplatRouteImport } from './routes/api/trpc.$' -import { Route as ApiAuthSplatRouteImport } from './routes/api/auth.$' +import { Route as ApiAuthCallbackRouteImport } from './routes/api/auth/callback' const IndexRoute = IndexRouteImport.update({ id: '/', @@ -23,39 +23,39 @@ const ApiTrpcSplatRoute = ApiTrpcSplatRouteImport.update({ path: '/api/trpc/$', getParentRoute: () => rootRouteImport, } as any) -const ApiAuthSplatRoute = ApiAuthSplatRouteImport.update({ - id: '/api/auth/$', - path: '/api/auth/$', +const ApiAuthCallbackRoute = ApiAuthCallbackRouteImport.update({ + id: '/api/auth/callback', + path: '/api/auth/callback', getParentRoute: () => rootRouteImport, } as any) export interface FileRoutesByFullPath { '/': typeof IndexRoute - '/api/auth/$': typeof ApiAuthSplatRoute + '/api/auth/callback': typeof ApiAuthCallbackRoute '/api/trpc/$': typeof ApiTrpcSplatRoute } export interface FileRoutesByTo { '/': typeof IndexRoute - '/api/auth/$': typeof ApiAuthSplatRoute + '/api/auth/callback': typeof ApiAuthCallbackRoute '/api/trpc/$': typeof ApiTrpcSplatRoute } export interface FileRoutesById { __root__: typeof rootRouteImport '/': typeof IndexRoute - '/api/auth/$': typeof ApiAuthSplatRoute + '/api/auth/callback': typeof ApiAuthCallbackRoute '/api/trpc/$': typeof ApiTrpcSplatRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' | '/api/auth/$' | '/api/trpc/$' + fullPaths: '/' | '/api/auth/callback' | '/api/trpc/$' fileRoutesByTo: FileRoutesByTo - to: '/' | '/api/auth/$' | '/api/trpc/$' - id: '__root__' | '/' | '/api/auth/$' | '/api/trpc/$' + to: '/' | '/api/auth/callback' | '/api/trpc/$' + id: '__root__' | '/' | '/api/auth/callback' | '/api/trpc/$' fileRoutesById: FileRoutesById } export interface RootRouteChildren { IndexRoute: typeof IndexRoute - ApiAuthSplatRoute: typeof ApiAuthSplatRoute + ApiAuthCallbackRoute: typeof ApiAuthCallbackRoute ApiTrpcSplatRoute: typeof ApiTrpcSplatRoute } @@ -75,11 +75,11 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof ApiTrpcSplatRouteImport parentRoute: typeof rootRouteImport } - '/api/auth/$': { - id: '/api/auth/$' - path: '/api/auth/$' - fullPath: '/api/auth/$' - preLoaderRoute: typeof ApiAuthSplatRouteImport + '/api/auth/callback': { + id: '/api/auth/callback' + path: '/api/auth/callback' + fullPath: '/api/auth/callback' + preLoaderRoute: typeof ApiAuthCallbackRouteImport parentRoute: typeof rootRouteImport } } @@ -87,7 +87,7 @@ declare module '@tanstack/react-router' { const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, - ApiAuthSplatRoute: ApiAuthSplatRoute, + ApiAuthCallbackRoute: ApiAuthCallbackRoute, ApiTrpcSplatRoute: ApiTrpcSplatRoute, } export const routeTree = rootRouteImport @@ -95,10 +95,11 @@ export const routeTree = rootRouteImport ._addFileTypes() import type { getRouter } from './router.tsx' -import type { createStart } from '@tanstack/react-start' +import type { startInstance } from './start.ts' declare module '@tanstack/react-start' { interface Register { ssr: true router: Awaited> + config: Awaited> } } diff --git a/apps/tanstack-start/src/routes/__root.tsx b/apps/tanstack-start/src/routes/__root.tsx index 66bb2a5..bbf9073 100644 --- a/apps/tanstack-start/src/routes/__root.tsx +++ b/apps/tanstack-start/src/routes/__root.tsx @@ -9,6 +9,7 @@ import { Scripts, } from "@tanstack/react-router"; import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"; +import { AuthKitProvider } from "@workos/authkit-tanstack-react-start/client"; import type { AppRouter } from "@governance/api"; import { ThemeProvider, ThemeToggle } from "@governance/ui/theme"; @@ -28,9 +29,11 @@ export const Route = createRootRouteWithContext<{ function RootComponent() { return ( - - - + + + + + ); } diff --git a/apps/tanstack-start/src/routes/api/auth.$.ts b/apps/tanstack-start/src/routes/api/auth.$.ts deleted file mode 100644 index 5c88113..0000000 --- a/apps/tanstack-start/src/routes/api/auth.$.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { createFileRoute } from "@tanstack/react-router"; - -import { auth } from "~/auth/server"; - -export const Route = createFileRoute("/api/auth/$")({ - server: { - handlers: { - GET: ({ request }) => auth.handler(request), - POST: ({ request }) => auth.handler(request), - }, - }, -}); diff --git a/apps/tanstack-start/src/routes/api/auth/callback.tsx b/apps/tanstack-start/src/routes/api/auth/callback.tsx new file mode 100644 index 0000000..faf3097 --- /dev/null +++ b/apps/tanstack-start/src/routes/api/auth/callback.tsx @@ -0,0 +1,10 @@ +import { createFileRoute } from "@tanstack/react-router"; +import { handleCallbackRoute } from "@workos/authkit-tanstack-react-start"; + +export const Route = createFileRoute("/api/auth/callback")({ + server: { + handlers: { + GET: handleCallbackRoute(), + }, + }, +}); diff --git a/apps/tanstack-start/src/routes/api/trpc.$.ts b/apps/tanstack-start/src/routes/api/trpc.$.ts index 4abaa71..1ebb57e 100644 --- a/apps/tanstack-start/src/routes/api/trpc.$.ts +++ b/apps/tanstack-start/src/routes/api/trpc.$.ts @@ -1,24 +1,26 @@ import { createFileRoute } from "@tanstack/react-router"; import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; +import { getAuth } from "@workos/authkit-tanstack-react-start"; import { appRouter, createTRPCContext } from "@governance/api"; -import { auth } from "~/auth/server"; +const handler = async (req: Request) => { + const auth = await getAuth(); -const handler = (req: Request) => - fetchRequestHandler({ + return fetchRequestHandler({ endpoint: "/api/trpc", router: appRouter, req, createContext: () => createTRPCContext({ - auth: auth, + auth, headers: req.headers, }), onError({ error, path }) { console.error(`>>> tRPC Error on '${path}'`, error); }, }); +}; export const Route = createFileRoute("/api/trpc/$")({ server: { diff --git a/apps/tanstack-start/src/start.ts b/apps/tanstack-start/src/start.ts new file mode 100644 index 0000000..5a7d1c8 --- /dev/null +++ b/apps/tanstack-start/src/start.ts @@ -0,0 +1,6 @@ +import { createStart } from "@tanstack/react-start"; +import { authkitMiddleware } from "@workos/authkit-tanstack-react-start"; + +export const startInstance = createStart(() => ({ + requestMiddleware: [authkitMiddleware()], +})); diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts index dafc12c..7a1734c 100644 --- a/packages/api/src/trpc.ts +++ b/packages/api/src/trpc.ts @@ -10,7 +10,7 @@ import { initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; import { z, ZodError } from "zod/v4"; -import type { Auth } from "@governance/auth"; +import type { UserInfo, NoUserInfo } from "@governance/auth"; import { db } from "@governance/db/client"; /** @@ -28,14 +28,10 @@ import { db } from "@governance/db/client"; export const createTRPCContext = async (opts: { headers: Headers; - auth: Auth; + auth: UserInfo | NoUserInfo; }) => { - const authApi = opts.auth.api; - const session = await authApi.getSession({ - headers: opts.headers, - }); + const session = opts.auth; return { - authApi, session, db, }; @@ -122,7 +118,7 @@ export const protectedProcedure = t.procedure return next({ ctx: { // infers the `session` as non-nullable - session: { ...ctx.session, user: ctx.session.user }, + session: ctx.session as UserInfo, }, }); }); diff --git a/packages/auth/env.ts b/packages/auth/env.ts index a516e85..722623b 100644 --- a/packages/auth/env.ts +++ b/packages/auth/env.ts @@ -4,12 +4,15 @@ import { z } from "zod/v4"; export function authEnv() { return createEnv({ server: { - AUTH_SECRET: - process.env.NODE_ENV === "production" - ? z.string().min(1) - : z.string().min(1).optional(), WORKOS_API_KEY: z.string().min(1), WORKOS_CLIENT_ID: z.string().min(1), + WORKOS_REDIRECT_URI: z.string().url(), + WORKOS_COOKIE_PASSWORD: z.string().min(32), + // Optional WorkOS configuration + WORKOS_COOKIE_MAX_AGE: z.coerce.number().optional(), + WORKOS_COOKIE_NAME: z.string().optional(), + WORKOS_COOKIE_DOMAIN: z.string().optional(), + WORKOS_COOKIE_SAMESITE: z.enum(["lax", "strict", "none"]).optional(), NODE_ENV: z.enum(["development", "production"]).optional(), }, runtimeEnv: process.env, diff --git a/packages/auth/package.json b/packages/auth/package.json index e38fcbd..2e4ce4a 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -4,8 +4,6 @@ "type": "module", "exports": { ".": "./src/index.ts", - "./middleware": "./src/middleware.ts", - "./client": "./src/client.ts", "./env": "./env.ts" }, "license": "MIT", @@ -16,15 +14,15 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@governance/db": "workspace:*", "@t3-oss/env-core": "^0.13.8", - "@workos-inc/node": "^7.27.0", + "@workos/authkit-tanstack-react-start": "^0.5.0", "zod": "catalog:" }, "devDependencies": { "@governance/eslint-config": "workspace:*", "@governance/prettier-config": "workspace:*", "@governance/tsconfig": "workspace:*", + "@types/node": "catalog:", "eslint": "catalog:", "prettier": "catalog:", "typescript": "catalog:" diff --git a/packages/auth/script/auth-cli.ts b/packages/auth/script/auth-cli.ts deleted file mode 100644 index fec9d34..0000000 --- a/packages/auth/script/auth-cli.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @fileoverview Better Auth CLI Configuration - * - * This file is used exclusively by the Better Auth CLI to generate database schemas. - * DO NOT USE THIS FILE DIRECTLY IN YOUR APPLICATION. - * - * This configuration is consumed by the CLI command: - * `pnpx @better-auth/cli generate --config script/auth-cli.ts --output ../db/src/auth-schema.ts` - * - * For actual authentication usage, import from "../src/index.ts" instead. - */ - -import { initAuth } from "../src/index"; - -/** - * CLI-only authentication configuration for schema generation. - * - * @warning This configuration is NOT intended for runtime use. - * @warning Use the main auth configuration from "../src/index.ts" for your application. - */ -export const auth = initAuth({ - baseUrl: "http://localhost:3000", - productionUrl: "http://localhost:3000", - secret: "secret", -}); diff --git a/packages/auth/src/index.ts b/packages/auth/src/index.ts index f173692..8a33801 100644 --- a/packages/auth/src/index.ts +++ b/packages/auth/src/index.ts @@ -1,40 +1,20 @@ -import type { BetterAuthOptions, BetterAuthPlugin } from "better-auth"; -import { db } from "@governance/db/client"; -import { betterAuth } from "better-auth"; -import { drizzleAdapter } from "better-auth/adapters/drizzle"; -import { oAuthProxy } from "better-auth/plugins"; +/** + * WorkOS AuthKit session types for TanStack Start + * + * This module re-exports the authentication types from the WorkOS AuthKit SDK + * for use throughout the application. + */ +export type { + UserInfo, + NoUserInfo, +} from "@workos/authkit-tanstack-react-start"; -export function initAuth< - TExtraPlugins extends BetterAuthPlugin[] = [], ->(options: { - baseUrl: string; - productionUrl: string; - secret: string | undefined; - extraPlugins?: TExtraPlugins; -}) { - const config = { - database: drizzleAdapter(db, { - provider: "pg", - }), - baseURL: options.baseUrl, - secret: options.secret, - plugins: [ - oAuthProxy({ - productionURL: options.productionUrl, - }), - - ...(options.extraPlugins ?? []), - ], - socialProviders: {}, - onAPIError: { - onError(error, ctx) { - console.error("BETTER AUTH API ERROR", error, ctx); - }, - }, - } satisfies BetterAuthOptions; - - return betterAuth(config); -} - -export type Auth = ReturnType; -export type Session = Auth["$Infer"]["Session"]; +// Re-export server functions for convenience +export { + getAuth, + signOut, + getSignInUrl, + getSignUpUrl, + getAuthorizationUrl, + switchToOrganization, +} from "@workos/authkit-tanstack-react-start"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8270123..ddd96dd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,9 +36,6 @@ catalogs: '@vitejs/plugin-react': specifier: 5.1.0 version: 5.1.0 - better-auth: - specifier: 1.4.0-beta.9 - version: 1.4.0-beta.9 eslint: specifier: ^9.38.0 version: 9.38.0 @@ -146,9 +143,9 @@ importers: '@trpc/tanstack-react-query': specifier: 'catalog:' version: 11.7.1(@tanstack/react-query@5.90.8(react@19.1.4))(@trpc/client@11.7.1(@trpc/server@11.7.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.7.1(typescript@5.9.3))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(typescript@5.9.3) - better-auth: - specifier: 'catalog:' - version: 1.4.0-beta.9(better-sqlite3@12.2.0)(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(solid-js@1.9.9) + '@workos/authkit-tanstack-react-start': + specifier: ^0.5.0 + version: 0.5.0(@tanstack/react-router@1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4))(@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(react-dom@19.1.4(react@19.1.4))(react@19.1.4) nitro: specifier: 3.0.1-alpha.1 version: 3.0.1-alpha.1(@planetscale/database@1.19.0)(better-sqlite3@12.2.0)(chokidar@4.0.3)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3)(rollup@4.52.5)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) @@ -192,9 +189,6 @@ importers: '@vitejs/plugin-react': specifier: 'catalog:' version: 5.1.0(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@workos/authkit-tanstack-react-start': - specifier: ^0.5.0 - version: 0.5.0(@tanstack/react-router@1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4))(@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(react-dom@19.1.4(react@19.1.4))(react@19.1.4) eslint: specifier: 'catalog:' version: 9.38.0(jiti@2.6.1) @@ -256,15 +250,12 @@ importers: packages/auth: dependencies: - '@governance/db': - specifier: workspace:* - version: link:../db '@t3-oss/env-core': specifier: ^0.13.8 version: 0.13.8(arktype@2.1.20)(typescript@5.9.3)(valibot@1.0.0-beta.15(typescript@5.9.3))(zod@4.1.12) - '@workos-inc/node': - specifier: ^7.27.0 - version: 7.82.0 + '@workos/authkit-tanstack-react-start': + specifier: ^0.5.0 + version: 0.5.0(@tanstack/react-router@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4))(@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.2.3(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(react-dom@19.2.3(react@19.1.4))(react@19.1.4) zod: specifier: 'catalog:' version: 4.1.12 @@ -278,6 +269,9 @@ importers: '@governance/tsconfig': specifier: workspace:* version: link:../../tooling/typescript + '@types/node': + specifier: 'catalog:' + version: 22.18.12 eslint: specifier: 'catalog:' version: 9.38.0(jiti@2.6.1) @@ -666,28 +660,6 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} - '@better-auth/core@1.4.0-beta.9': - resolution: {integrity: sha512-4YanGHTihKhKamN2T4ndjYTR5By162kk88DPt2xwwVc2t/MnSO7TiVBB0V5gZ6JM6YMX2aSPTfMbk89AEjpvCQ==} - peerDependencies: - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.18 - better-call: 1.0.19 - better-sqlite3: ^12.4.1 - jose: ^6.1.0 - kysely: ^0.28.5 - nanostores: ^1.0.1 - - '@better-auth/telemetry@1.4.0-beta.9': - resolution: {integrity: sha512-lvl3nq648uAt3ACpjtBBW1Nhec1lxciWYKy+9wgkQRKuE+l4NyxVdfCnDAxxUPAScQNJ+6zMXgt9ZRW5cJJ8bQ==} - peerDependencies: - '@better-auth/core': 1.4.0-beta.9 - - '@better-auth/utils@0.3.0': - resolution: {integrity: sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==} - - '@better-fetch/fetch@1.1.18': - resolution: {integrity: sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA==} - '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -1068,9 +1040,6 @@ packages: '@fontsource-variable/geist@5.2.8': resolution: {integrity: sha512-cJ6m9e+8MQ5dCYJsLylfZrgBh6KkG4bOLckB35Tr9J/EqdkEM6QllH5PxqP1dhTvFup+HtMRPuz9xOjxXJggxw==} - '@hexagon/base64@1.1.28': - resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} - '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -1136,9 +1105,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@levischuck/tiny-cbor@0.2.11': - resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} - '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -1154,14 +1120,6 @@ packages: '@next/eslint-plugin-next@16.0.0': resolution: {integrity: sha512-IB7RzmmtrPOrpAgEBR1PIQPD0yea5lggh5cq54m51jHjjljU80Ia+czfxJYMlSDl1DPvpzb8S9TalCc0VMo9Hw==} - '@noble/ciphers@2.0.0': - resolution: {integrity: sha512-j/l6jpnpaIBM87cAYPJzi/6TgqmBv9spkqPyCXvRYsu5uxqh6tPJZDnD85yo8VWqzTuTQPgfv7NgT63u7kbwAQ==} - engines: {node: '>= 20.19.0'} - - '@noble/hashes@2.0.0': - resolution: {integrity: sha512-h8VUBlE8R42+XIDO229cgisD287im3kdY6nbNZJFjc6ZvKIXPYXe6Vc/t+kyjFdMFyt5JpapzTsEg8n63w5/lw==} - engines: {node: '>= 20.19.0'} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1464,29 +1422,6 @@ packages: cpu: [x64] os: [win32] - '@peculiar/asn1-android@2.4.0': - resolution: {integrity: sha512-YFueREq97CLslZZBI8dKzis7jMfEHSLxM+nr0Zdx1POiXFLjqqwoY5s0F1UimdBiEw/iKlHey2m56MRDv7Jtyg==} - - '@peculiar/asn1-ecc@2.4.0': - resolution: {integrity: sha512-fJiYUBCJBDkjh347zZe5H81BdJ0+OGIg0X9z06v8xXUoql3MFeENUX0JsjCaVaU9A0L85PefLPGYkIoGpTnXLQ==} - - '@peculiar/asn1-rsa@2.4.0': - resolution: {integrity: sha512-6PP75voaEnOSlWR9sD25iCQyLgFZHXbmxvUfnnDcfL6Zh5h2iHW38+bve4LfH7a60x7fkhZZNmiYqAlAff9Img==} - - '@peculiar/asn1-schema@2.4.0': - resolution: {integrity: sha512-umbembjIWOrPSOzEGG5vxFLkeM8kzIhLkgigtsOrfLKnuzxWxejAcUX+q/SoZCdemlODOcr5WiYa7+dIEzBXZQ==} - - '@peculiar/asn1-x509@2.4.0': - resolution: {integrity: sha512-F7mIZY2Eao2TaoVqigGMLv+NDdpwuBKU1fucHPONfzaBS4JXXCNCmfO0Z3dsy7JzKGqtDcYC1mr9JjaZQZNiuw==} - - '@peculiar/json-schema@1.1.12': - resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} - engines: {node: '>=8.0.0'} - - '@peculiar/webcrypto@1.5.0': - resolution: {integrity: sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==} - engines: {node: '>=10.12.0'} - '@petamoriken/float16@3.9.3': resolution: {integrity: sha512-8awtpHXCx/bNpFt4mt2xdkgtgVvKqty8VbjHI/WWWQuEw+KLzFot3f4+LkQY9YmOtq7A5GdOnqoIC8Pdygjk2g==} @@ -2336,13 +2271,6 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@simplewebauthn/browser@13.1.2': - resolution: {integrity: sha512-aZnW0KawAM83fSBUgglP5WofbrLbLyr7CoPqYr66Eppm7zO86YX6rrCjRB3hQKPrL7ATvY4FVXlykZ6w6FwYYw==} - - '@simplewebauthn/server@13.1.2': - resolution: {integrity: sha512-VwoDfvLXSCaRiD+xCIuyslU0HLxVggeE5BL06+GbsP2l1fGf5op8e0c3ZtKoi+vSg1q4ikjtAghC23ze2Q3H9g==} - engines: {node: '>=20.0.0'} - '@t3-oss/env-core@0.13.8': resolution: {integrity: sha512-L1inmpzLQyYu4+Q1DyrXsGJYCXbtXjC4cICw1uAKv0ppYPQv656lhZPU91Qd1VS6SO/bou1/q5ufVzBGbNsUpw==} peerDependencies: @@ -2681,9 +2609,6 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/accepts@1.3.7': - resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -2699,39 +2624,12 @@ packages: '@types/better-sqlite3@7.6.13': resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} - '@types/body-parser@1.19.6': - resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/content-disposition@0.5.9': - resolution: {integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==} - - '@types/cookie@0.5.4': - resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} - - '@types/cookies@0.9.2': - resolution: {integrity: sha512-1AvkDdZM2dbyFybL4fxpuNCaWyv//0AwsuUk2DWeXyM1/5ZKm6W3z6mQi24RZ4l2ucY+bkSHzbDVpySqPGuV8A==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.8': - resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} - - '@types/express@4.17.25': - resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} - '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/http-assert@1.5.6': - resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==} - - '@types/http-errors@2.0.5': - resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/inquirer@6.5.0': resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} @@ -2741,27 +2639,9 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/keygrip@1.0.6': - resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} - - '@types/koa-compose@3.2.9': - resolution: {integrity: sha512-BroAZ9FTvPiCy0Pi8tjD1OfJ7bgU1gQf0eR6e1Vm+JJATy9eKOG3hQMFtMciMawiSOVnLMdmUOC46s7HBhSTsA==} - - '@types/koa@2.15.0': - resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@20.19.30': - resolution: {integrity: sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==} - '@types/node@22.18.12': resolution: {integrity: sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==} @@ -2774,12 +2654,6 @@ packages: '@types/pg@8.11.6': resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@19.1.9': resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} peerDependencies: @@ -2788,15 +2662,6 @@ packages: '@types/react@19.1.12': resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} - '@types/send@0.17.6': - resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} - - '@types/send@1.2.1': - resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - - '@types/serve-static@1.15.10': - resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} - '@types/through@0.0.33': resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} @@ -2888,10 +2753,6 @@ packages: '@vue/shared@3.5.16': resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==} - '@workos-inc/node@7.82.0': - resolution: {integrity: sha512-8h6XjIJf8nqNGYQMkWsjZ72WXMtzqrb4Azz39schXWoSRmwoK6tK+GpeAviJ9slddiJdOcp0Ht9/r+L6pGQMCg==} - engines: {node: '>=16'} - '@workos-inc/node@8.0.0': resolution: {integrity: sha512-D8VDfx0GXeiVm8vccAl0rElW7taebRnrteKPJzZwehwzI9W/Usa4qKfmwxj+7Lh1Z1deEocDRCpZpV7ml4GpWQ==} engines: {node: '>=20.15.0'} @@ -3014,10 +2875,6 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - asn1js@3.0.6: - resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==} - engines: {node: '>=12.0.0'} - ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -3066,38 +2923,6 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - better-auth@1.4.0-beta.9: - resolution: {integrity: sha512-JmVvaC/VCtFtI/sUGkoaLnzV/nnMn13XR6Vrkf4zGxah6g38S0GPvD7iZlBHehTN6Fb5aUwWPKgqFowxyOm2xw==} - peerDependencies: - '@lynx-js/react': '*' - '@sveltejs/kit': '*' - next: '*' - react: '*' - react-dom: '*' - solid-js: '*' - svelte: '*' - vue: '*' - peerDependenciesMeta: - '@lynx-js/react': - optional: true - '@sveltejs/kit': - optional: true - next: - optional: true - react: - optional: true - react-dom: - optional: true - solid-js: - optional: true - svelte: - optional: true - vue: - optional: true - - better-call@1.0.19: - resolution: {integrity: sha512-sI3GcA1SCVa3H+CDHl8W8qzhlrckwXOTKhqq3OOPXjgn5aTOMIqGY34zLY/pHA6tRRMjTUC3lz5Mi7EbDA24Kw==} - better-sqlite3@12.2.0: resolution: {integrity: sha512-eGbYq2CT+tos1fBwLQ/tkBt9J5M3JEHjku4hbvQUePCckkvVf14xWj+1m7dGoK81M/fOjFT7yM9UMeKT/+vFLQ==} engines: {node: 20.x || 22.x || 23.x || 24.x} @@ -3136,9 +2961,6 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bufferutil@4.0.8: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} @@ -3270,10 +3092,6 @@ packages: cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - copy-anything@4.0.5: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} @@ -3390,9 +3208,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - degenerator@5.0.1: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} @@ -4105,24 +3920,6 @@ packages: resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} - iron-session@6.3.1: - resolution: {integrity: sha512-3UJ7y2vk/WomAtEySmPgM6qtYF1cZ3tXuWX5GsVX4PJXAcs5y/sV9HuSfpjKS6HkTL/OhZcTDWJNLZ7w+Erx3A==} - engines: {node: '>=12'} - peerDependencies: - express: '>=4' - koa: '>=2' - next: '>=10' - peerDependenciesMeta: - express: - optional: true - koa: - optional: true - next: - optional: true - - iron-webcrypto@0.2.8: - resolution: {integrity: sha512-YPdCvjFMOBjXaYuDj5tiHst5CEk6Xw84Jo8Y2+jzhMceclAnb3+vNPP/CTtb5fO2ZEuXEaO4N+w62Vfko757KA==} - iron-webcrypto@2.0.0: resolution: {integrity: sha512-rtffZKDUHciZElM8mjFCufBC7nVhCxHYyWHESqs89OioEDz4parOofd8/uhrejh/INhQFfYQfByS22LlezR9sQ==} @@ -4293,12 +4090,6 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jose@5.6.3: - resolution: {integrity: sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==} - - jose@6.1.0: - resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==} - jose@6.1.3: resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} @@ -4357,9 +4148,6 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} - leb@1.0.0: - resolution: {integrity: sha512-Y3c3QZfvKWHX60BVOQPhLCvVGmDYWyJEiINE3drOog6KCyN2AOwvuQQzlS3uJg1J85kzpILXIUwRXULWavir+w==} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -4539,10 +4327,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanostores@1.0.1: - resolution: {integrity: sha512-kNZ9xnoJYKg/AfxjrVL4SS0fKX++4awQReGqWnwTRHxeHGZ1FJFVgTqr/eMrNQdp0Tz7M7tG/TDaX8QfHDwVCw==} - engines: {node: ^20.0.0 || >=22.0.0} - napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} @@ -4908,17 +4692,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pvtsutils@1.3.6: - resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} - - pvutils@1.1.3: - resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} - engines: {node: '>=6.0.0'} - - qs@6.14.1: - resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} - engines: {node: '>=0.6'} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5055,9 +4828,6 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rou3@0.5.1: - resolution: {integrity: sha512-OXMmJ3zRk2xeXFGfA3K+EOPHC5u7RDFG7lIOx0X1pdnhUkI8MdVrbV+sNsD80ElpUZ+MRHdyxPnFthq9VHs8uQ==} - rou3@0.7.10: resolution: {integrity: sha512-aoFj6f7MJZ5muJ+Of79nrhs9N3oLGqi2VEMe94Zbkjb6Wupha46EuoYgpWSOZlXww3bbd8ojgXTAA2mzimX5Ww==} @@ -5129,9 +4899,6 @@ packages: resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} engines: {node: '>=10'} - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -5499,9 +5266,6 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -5721,9 +5485,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - webcrypto-core@1.8.1: - resolution: {integrity: sha512-P+x1MvlNCXlKbLSOY4cYrdreqPG5hbzkmawbcXLKN/mf6DZW0SdNNkZ+sjwsqVkI4A4Ko2sPZmkZtCKY58w83A==} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -6037,27 +5798,6 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@better-auth/core@1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1)': - dependencies: - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.18 - better-call: 1.0.19 - better-sqlite3: 12.2.0 - jose: 6.1.0 - kysely: 0.28.5 - nanostores: 1.0.1 - zod: 4.1.12 - - '@better-auth/telemetry@1.4.0-beta.9(@better-auth/core@1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1))': - dependencies: - '@better-auth/core': 1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1) - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.18 - - '@better-auth/utils@0.3.0': {} - - '@better-fetch/fetch@1.1.18': {} - '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -6307,8 +6047,6 @@ snapshots: '@fontsource-variable/geist@5.2.8': {} - '@hexagon/base64@1.1.28': {} - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -6373,8 +6111,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@levischuck/tiny-cbor@0.2.11': {} - '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.6.0 @@ -6402,10 +6138,6 @@ snapshots: dependencies: fast-glob: 3.3.1 - '@noble/ciphers@2.0.0': {} - - '@noble/hashes@2.0.0': {} - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -6582,51 +6314,6 @@ snapshots: '@oxc-transform/binding-win32-x64-msvc@0.96.0': optional: true - '@peculiar/asn1-android@2.4.0': - dependencies: - '@peculiar/asn1-schema': 2.4.0 - asn1js: 3.0.6 - tslib: 2.8.1 - - '@peculiar/asn1-ecc@2.4.0': - dependencies: - '@peculiar/asn1-schema': 2.4.0 - '@peculiar/asn1-x509': 2.4.0 - asn1js: 3.0.6 - tslib: 2.8.1 - - '@peculiar/asn1-rsa@2.4.0': - dependencies: - '@peculiar/asn1-schema': 2.4.0 - '@peculiar/asn1-x509': 2.4.0 - asn1js: 3.0.6 - tslib: 2.8.1 - - '@peculiar/asn1-schema@2.4.0': - dependencies: - asn1js: 3.0.6 - pvtsutils: 1.3.6 - tslib: 2.8.1 - - '@peculiar/asn1-x509@2.4.0': - dependencies: - '@peculiar/asn1-schema': 2.4.0 - asn1js: 3.0.6 - pvtsutils: 1.3.6 - tslib: 2.8.1 - - '@peculiar/json-schema@1.1.12': - dependencies: - tslib: 2.8.1 - - '@peculiar/webcrypto@1.5.0': - dependencies: - '@peculiar/asn1-schema': 2.4.0 - '@peculiar/json-schema': 1.1.12 - pvtsutils: 1.3.6 - tslib: 2.8.1 - webcrypto-core: 1.8.1 - '@petamoriken/float16@3.9.3': optional: true @@ -7492,18 +7179,6 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@simplewebauthn/browser@13.1.2': {} - - '@simplewebauthn/server@13.1.2': - dependencies: - '@hexagon/base64': 1.1.28 - '@levischuck/tiny-cbor': 0.2.11 - '@peculiar/asn1-android': 2.4.0 - '@peculiar/asn1-ecc': 2.4.0 - '@peculiar/asn1-rsa': 2.4.0 - '@peculiar/asn1-schema': 2.4.0 - '@peculiar/asn1-x509': 2.4.0 - '@t3-oss/env-core@0.13.8(arktype@2.1.20)(typescript@5.9.3)(valibot@1.0.0-beta.15(typescript@5.9.3))(zod@4.1.12)': optionalDependencies: arktype: 2.1.20 @@ -7681,6 +7356,17 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 + '@tanstack/react-router@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4)': + dependencies: + '@tanstack/history': 1.133.28 + '@tanstack/react-store': 0.8.0(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + '@tanstack/router-core': 1.135.2 + isbot: 5.1.31 + react: 19.1.4 + react-dom: 19.2.3(react@19.1.4) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + '@tanstack/react-start-client@1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': dependencies: '@tanstack/react-router': 1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4) @@ -7691,6 +7377,16 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 + '@tanstack/react-start-client@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4)': + dependencies: + '@tanstack/react-router': 1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + '@tanstack/router-core': 1.135.2 + '@tanstack/start-client-core': 1.135.2 + react: 19.1.4 + react-dom: 19.2.3(react@19.1.4) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + '@tanstack/react-start-server@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': dependencies: '@tanstack/history': 1.133.28 @@ -7703,6 +7399,18 @@ snapshots: transitivePeerDependencies: - crossws + '@tanstack/react-start-server@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.2.3(react@19.1.4))(react@19.1.4)': + dependencies: + '@tanstack/history': 1.133.28 + '@tanstack/react-router': 1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + '@tanstack/router-core': 1.135.2 + '@tanstack/start-client-core': 1.135.2 + '@tanstack/start-server-core': 1.135.2(crossws@0.4.1(srvx@0.9.6)) + react: 19.1.4 + react-dom: 19.2.3(react@19.1.4) + transitivePeerDependencies: + - crossws + '@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@tanstack/react-router': 1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4) @@ -7723,6 +7431,26 @@ snapshots: - vite-plugin-solid - webpack + '@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.2.3(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + dependencies: + '@tanstack/react-router': 1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + '@tanstack/react-start-client': 1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + '@tanstack/react-start-server': 1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + '@tanstack/router-utils': 1.133.19 + '@tanstack/start-client-core': 1.135.2 + '@tanstack/start-plugin-core': 1.135.2(@tanstack/react-router@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4))(crossws@0.4.1(srvx@0.9.6))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@tanstack/start-server-core': 1.135.2(crossws@0.4.1(srvx@0.9.6)) + pathe: 2.0.3 + react: 19.1.4 + react-dom: 19.2.3(react@19.1.4) + vite: 7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - '@rsbuild/core' + - crossws + - supports-color + - vite-plugin-solid + - webpack + '@tanstack/react-store@0.7.7(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': dependencies: '@tanstack/store': 0.7.7 @@ -7737,6 +7465,13 @@ snapshots: react-dom: 19.1.4(react@19.1.4) use-sync-external-store: 1.6.0(react@19.1.4) + '@tanstack/react-store@0.8.0(react-dom@19.2.3(react@19.1.4))(react@19.1.4)': + dependencies: + '@tanstack/store': 0.8.0 + react: 19.1.4 + react-dom: 19.2.3(react@19.1.4) + use-sync-external-store: 1.6.0(react@19.1.4) + '@tanstack/router-core@1.135.2': dependencies: '@tanstack/history': 1.133.28 @@ -7805,6 +7540,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@tanstack/router-plugin@1.135.2(@tanstack/react-router@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@tanstack/router-core': 1.135.2 + '@tanstack/router-generator': 1.135.2 + '@tanstack/router-utils': 1.133.19 + '@tanstack/virtual-file-routes': 1.133.19 + babel-dead-code-elimination: 1.0.10 + chokidar: 3.6.0 + unplugin: 2.3.10 + zod: 3.25.76 + optionalDependencies: + '@tanstack/react-router': 1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + vite: 7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - supports-color + '@tanstack/router-ssr-query-core@1.135.2(@tanstack/query-core@5.90.8)(@tanstack/router-core@1.135.2)': dependencies: '@tanstack/query-core': 5.90.8 @@ -7879,6 +7636,38 @@ snapshots: - vite-plugin-solid - webpack + '@tanstack/start-plugin-core@1.135.2(@tanstack/react-router@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4))(crossws@0.4.1(srvx@0.9.6))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/core': 7.28.5 + '@babel/types': 7.28.5 + '@rolldown/pluginutils': 1.0.0-beta.40 + '@tanstack/router-core': 1.135.2 + '@tanstack/router-generator': 1.135.2 + '@tanstack/router-plugin': 1.135.2(@tanstack/react-router@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@tanstack/router-utils': 1.133.19 + '@tanstack/server-functions-plugin': 1.134.5(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@tanstack/start-client-core': 1.135.2 + '@tanstack/start-server-core': 1.135.2(crossws@0.4.1(srvx@0.9.6)) + babel-dead-code-elimination: 1.0.10 + cheerio: 1.1.2 + exsolve: 1.0.7 + pathe: 2.0.3 + srvx: 0.8.16 + tinyglobby: 0.2.15 + ufo: 1.6.1 + vite: 7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitefu: 1.1.1(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + xmlbuilder2: 3.1.1 + zod: 3.25.76 + transitivePeerDependencies: + - '@rsbuild/core' + - '@tanstack/react-router' + - crossws + - supports-color + - vite-plugin-solid + - webpack + '@tanstack/start-server-core@1.135.2(crossws@0.4.1(srvx@0.9.6))': dependencies: '@tanstack/history': 1.133.28 @@ -7970,10 +7759,6 @@ snapshots: tslib: 2.8.1 optional: true - '@types/accepts@1.3.7': - dependencies: - '@types/node': 24.9.1 - '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.5 @@ -8000,50 +7785,12 @@ snapshots: '@types/node': 24.9.1 optional: true - '@types/body-parser@1.19.6': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 24.9.1 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 24.9.1 - - '@types/content-disposition@0.5.9': {} - - '@types/cookie@0.5.4': {} - - '@types/cookies@0.9.2': - dependencies: - '@types/connect': 3.4.38 - '@types/express': 4.17.25 - '@types/keygrip': 1.0.6 - '@types/node': 24.9.1 - '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.8': - dependencies: - '@types/node': 24.9.1 - '@types/qs': 6.14.0 - '@types/range-parser': 1.2.7 - '@types/send': 1.2.1 - - '@types/express@4.17.25': - dependencies: - '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.8 - '@types/qs': 6.14.0 - '@types/serve-static': 1.15.10 - '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.19.30 - - '@types/http-assert@1.5.6': {} - - '@types/http-errors@2.0.5': {} + '@types/node': 24.9.1 '@types/inquirer@6.5.0': dependencies: @@ -8054,33 +7801,8 @@ snapshots: '@types/json5@0.0.29': {} - '@types/keygrip@1.0.6': {} - - '@types/koa-compose@3.2.9': - dependencies: - '@types/koa': 2.15.0 - - '@types/koa@2.15.0': - dependencies: - '@types/accepts': 1.3.7 - '@types/content-disposition': 0.5.9 - '@types/cookies': 0.9.2 - '@types/http-assert': 1.5.6 - '@types/http-errors': 2.0.5 - '@types/keygrip': 1.0.6 - '@types/koa-compose': 3.2.9 - '@types/node': 24.9.1 - - '@types/mime@1.3.5': {} - '@types/minimatch@5.1.2': {} - '@types/node@17.0.45': {} - - '@types/node@20.19.30': - dependencies: - undici-types: 6.21.0 - '@types/node@22.18.12': dependencies: undici-types: 6.21.0 @@ -8098,14 +7820,10 @@ snapshots: '@types/pg@8.11.6': dependencies: - '@types/node': 20.19.30 + '@types/node': 24.9.1 pg-protocol: 1.10.3 pg-types: 4.1.0 - '@types/qs@6.14.0': {} - - '@types/range-parser@1.2.7': {} - '@types/react-dom@19.1.9(@types/react@19.1.12)': dependencies: '@types/react': 19.1.12 @@ -8114,24 +7832,9 @@ snapshots: dependencies: csstype: 3.1.3 - '@types/send@0.17.6': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 24.9.1 - - '@types/send@1.2.1': - dependencies: - '@types/node': 24.9.1 - - '@types/serve-static@1.15.10': - dependencies: - '@types/http-errors': 2.0.5 - '@types/node': 24.9.1 - '@types/send': 0.17.6 - '@types/through@0.0.33': dependencies: - '@types/node': 20.19.30 + '@types/node': 24.9.1 '@types/tinycolor2@1.4.6': {} @@ -8285,17 +7988,6 @@ snapshots: '@vue/shared@3.5.16': optional: true - '@workos-inc/node@7.82.0': - dependencies: - iron-session: 6.3.1 - jose: 5.6.3 - leb: 1.0.0 - qs: 6.14.1 - transitivePeerDependencies: - - express - - koa - - next - '@workos-inc/node@8.0.0': dependencies: iron-webcrypto: 2.0.0 @@ -8315,6 +8007,14 @@ snapshots: react: 19.1.4 react-dom: 19.1.4(react@19.1.4) + '@workos/authkit-tanstack-react-start@0.5.0(@tanstack/react-router@1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4))(@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.2.3(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(react-dom@19.2.3(react@19.1.4))(react@19.1.4)': + dependencies: + '@tanstack/react-router': 1.135.2(react-dom@19.2.3(react@19.1.4))(react@19.1.4) + '@tanstack/react-start': 1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.2.3(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@workos/authkit-session': 0.3.4 + react: 19.1.4 + react-dom: 19.2.3(react@19.1.4) + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -8449,12 +8149,6 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - asn1js@3.0.6: - dependencies: - pvtsutils: 1.3.6 - pvutils: 1.1.3 - tslib: 2.8.1 - ast-types-flow@0.0.8: {} ast-types@0.13.4: @@ -8495,47 +8189,18 @@ snapshots: basic-ftp@5.0.5: {} - better-auth@1.4.0-beta.9(better-sqlite3@12.2.0)(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(solid-js@1.9.9): - dependencies: - '@better-auth/core': 1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1) - '@better-auth/telemetry': 1.4.0-beta.9(@better-auth/core@1.4.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.0.19)(better-sqlite3@12.2.0)(jose@6.1.0)(kysely@0.28.5)(nanostores@1.0.1)) - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.18 - '@noble/ciphers': 2.0.0 - '@noble/hashes': 2.0.0 - '@simplewebauthn/browser': 13.1.2 - '@simplewebauthn/server': 13.1.2 - better-call: 1.0.19 - defu: 6.1.4 - jose: 6.1.0 - kysely: 0.28.5 - nanostores: 1.0.1 - zod: 4.1.12 - optionalDependencies: - react: 19.1.4 - react-dom: 19.1.4(react@19.1.4) - solid-js: 1.9.9 - transitivePeerDependencies: - - better-sqlite3 - - better-call@1.0.19: - dependencies: - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.18 - rou3: 0.5.1 - set-cookie-parser: 2.7.1 - uncrypto: 0.1.3 - better-sqlite3@12.2.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 + optional: true binary-extensions@2.3.0: {} bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 + optional: true bl@4.1.0: dependencies: @@ -8573,11 +8238,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - bufferutil@4.0.8: dependencies: node-gyp-build: 4.8.4 @@ -8689,7 +8349,8 @@ snapshots: readdirp: 4.1.2 optional: true - chownr@1.1.4: {} + chownr@1.1.4: + optional: true class-variance-authority@0.7.1: dependencies: @@ -8742,8 +8403,6 @@ snapshots: cookie-es@2.0.0: {} - cookie@0.5.0: {} - copy-anything@4.0.5: dependencies: is-what: 5.5.0 @@ -8815,6 +8474,7 @@ snapshots: decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + optional: true deep-extend@0.6.0: {} @@ -8836,8 +8496,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} - degenerator@5.0.1: dependencies: ast-types: 0.13.4 @@ -8965,6 +8623,7 @@ snapshots: end-of-stream@1.4.5: dependencies: once: 1.4.0 + optional: true enhanced-resolve@5.18.3: dependencies: @@ -9344,7 +9003,8 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expand-template@2.0.3: {} + expand-template@2.0.3: + optional: true exsolve@1.0.7: {} @@ -9394,7 +9054,8 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} + file-uri-to-path@1.0.0: + optional: true fill-range@7.1.1: dependencies: @@ -9416,7 +9077,8 @@ snapshots: dependencies: is-callable: 1.2.7 - fs-constants@1.0.0: {} + fs-constants@1.0.0: + optional: true fs-extra@10.1.0: dependencies: @@ -9501,7 +9163,8 @@ snapshots: transitivePeerDependencies: - supports-color - github-from-package@0.0.0: {} + github-from-package@0.0.0: + optional: true glob-parent@5.1.2: dependencies: @@ -9718,20 +9381,6 @@ snapshots: ip-address@10.0.1: {} - iron-session@6.3.1: - dependencies: - '@peculiar/webcrypto': 1.5.0 - '@types/cookie': 0.5.4 - '@types/express': 4.17.25 - '@types/koa': 2.15.0 - '@types/node': 17.0.45 - cookie: 0.5.0 - iron-webcrypto: 0.2.8 - - iron-webcrypto@0.2.8: - dependencies: - buffer: 6.0.3 - iron-webcrypto@2.0.0: dependencies: uint8array-extras: 1.5.0 @@ -9894,10 +9543,6 @@ snapshots: jiti@2.6.1: {} - jose@5.6.3: {} - - jose@6.1.0: {} - jose@6.1.3: {} js-tokens@4.0.0: {} @@ -9942,7 +9587,8 @@ snapshots: dependencies: json-buffer: 3.0.1 - kysely@0.28.5: {} + kysely@0.28.5: + optional: true language-subtag-registry@0.3.23: {} @@ -9950,8 +9596,6 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 - leb@1.0.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -10062,7 +9706,8 @@ snapshots: mimic-fn@2.1.0: {} - mimic-response@3.1.0: {} + mimic-response@3.1.0: + optional: true minimatch@3.1.2: dependencies: @@ -10074,7 +9719,8 @@ snapshots: minimist@1.2.8: {} - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true mkdirp@0.5.6: dependencies: @@ -10104,9 +9750,8 @@ snapshots: nanoid@3.3.11: {} - nanostores@1.0.1: {} - - napi-build-utils@2.0.0: {} + napi-build-utils@2.0.0: + optional: true natural-compare@1.4.0: {} @@ -10171,6 +9816,7 @@ snapshots: node-abi@3.77.0: dependencies: semver: 7.7.3 + optional: true node-gyp-build@4.8.4: {} @@ -10486,6 +10132,7 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.3 tunnel-agent: 0.6.0 + optional: true prelude-ls@1.2.1: {} @@ -10539,19 +10186,10 @@ snapshots: dependencies: end-of-stream: 1.4.5 once: 1.4.0 + optional: true punycode@2.3.1: {} - pvtsutils@1.3.6: - dependencies: - tslib: 2.8.1 - - pvutils@1.1.3: {} - - qs@6.14.1: - dependencies: - side-channel: 1.1.0 - queue-microtask@1.2.3: {} radix-ui@1.4.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.2.3(react@19.1.4))(react@19.1.4): @@ -10772,8 +10410,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 - rou3@0.5.1: {} - rou3@0.7.10: {} run-async@2.4.1: {} @@ -10837,8 +10473,6 @@ snapshots: seroval@1.3.2: {} - set-cookie-parser@2.7.1: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -10900,13 +10534,15 @@ snapshots: signal-exit@3.0.7: {} - simple-concat@1.0.1: {} + simple-concat@1.0.1: + optional: true simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 + optional: true slash@3.0.0: {} @@ -11068,6 +10704,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.3 tar-stream: 2.2.0 + optional: true tar-stream@2.2.0: dependencies: @@ -11076,6 +10713,7 @@ snapshots: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true terser@5.44.0: dependencies: @@ -11163,6 +10801,7 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true turbo-darwin-64@2.5.8: optional: true @@ -11257,8 +10896,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - uncrypto@0.1.3: {} - undici-types@6.21.0: {} undici-types@7.16.0: {} @@ -11377,14 +11014,6 @@ snapshots: dependencies: defaults: 1.0.4 - webcrypto-core@1.8.1: - dependencies: - '@peculiar/asn1-schema': 2.4.0 - '@peculiar/json-schema': 1.1.12 - asn1js: 3.0.6 - pvtsutils: 1.3.6 - tslib: 2.8.1 - webpack-virtual-modules@0.6.2: {} whatwg-encoding@3.1.1: From a5381fc424b90093a9b2d7d0f3747fa3dff9bf79 Mon Sep 17 00:00:00 2001 From: AF_Askar <68832286+abo3skr2019@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:45:58 +0300 Subject: [PATCH 06/12] database fixes --- docker-compose.yml | 4 +- packages/api/package.json | 1 + packages/db/drizzle.config.ts | 4 +- packages/db/package.json | 3 +- packages/db/src/client.ts | 19 ++++++-- pnpm-lock.yaml | 81 ++++++++++++++++++++++------------- 6 files changed, 72 insertions(+), 40 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8c1a48b..35e01ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,8 +19,8 @@ services: - "5001:3000" environment: - NODE_ENV=production - - NEXT_TELEMETRY_DISABLED=1 - AI_HOST=ai_service + - POSTGRES_URL=postgresql://postgres:password@application_db:5432/app_db depends_on: application_db: condition: service_healthy @@ -51,7 +51,7 @@ services: environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password - POSTGRES_DB: postgres + POSTGRES_DB: app_db ports: - "5432:5432" volumes: diff --git a/packages/api/package.json b/packages/api/package.json index d6ad022..79f4f40 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -29,6 +29,7 @@ "@governance/eslint-config": "workspace:*", "@governance/prettier-config": "workspace:*", "@governance/tsconfig": "workspace:*", + "@types/node": "catalog:", "eslint": "catalog:", "prettier": "catalog:", "typescript": "catalog:" diff --git a/packages/db/drizzle.config.ts b/packages/db/drizzle.config.ts index 5b18085..1a85e1c 100644 --- a/packages/db/drizzle.config.ts +++ b/packages/db/drizzle.config.ts @@ -4,11 +4,9 @@ if (!process.env.POSTGRES_URL) { throw new Error("Missing POSTGRES_URL"); } -const nonPoolingUrl = process.env.POSTGRES_URL.replace(":6543", ":5432"); - export default { schema: "./src/schema.ts", dialect: "postgresql", - dbCredentials: { url: nonPoolingUrl }, + dbCredentials: { url: process.env.POSTGRES_URL }, casing: "snake_case", } satisfies Config; diff --git a/packages/db/package.json b/packages/db/package.json index f3d4928..42579b1 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -29,15 +29,16 @@ "with-env": "dotenv -e ../../.env --" }, "dependencies": { - "@vercel/postgres": "^0.10.0", "drizzle-orm": "^0.44.7", "drizzle-zod": "^0.8.3", + "postgres": "^3.4.5", "zod": "catalog:" }, "devDependencies": { "@governance/eslint-config": "workspace:*", "@governance/prettier-config": "workspace:*", "@governance/tsconfig": "workspace:*", + "@types/node": "catalog:", "drizzle-kit": "^0.31.5", "eslint": "catalog:", "prettier": "catalog:", diff --git a/packages/db/src/client.ts b/packages/db/src/client.ts index e23181e..5460ebd 100644 --- a/packages/db/src/client.ts +++ b/packages/db/src/client.ts @@ -1,10 +1,21 @@ -import { sql } from "@vercel/postgres"; -import { drizzle } from "drizzle-orm/vercel-postgres"; +import { drizzle } from "drizzle-orm/postgres-js"; +import postgres from "postgres"; import * as schema from "./schema"; -export const db = drizzle({ - client: sql, +const connectionString = process.env.POSTGRES_URL; + +if (!connectionString) { + throw new Error("Missing POSTGRES_URL environment variable"); +} + +/** + * Database client using postgres.js + * Works with both local Docker containers and Neon (via standard connection string) + */ +const client = postgres(connectionString); + +export const db = drizzle(client, { schema, casing: "snake_case", }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddd96dd..625d27e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -148,7 +148,7 @@ importers: version: 0.5.0(@tanstack/react-router@1.135.2(react-dom@19.1.4(react@19.1.4))(react@19.1.4))(@tanstack/react-start@1.135.2(crossws@0.4.1(srvx@0.9.6))(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(react-dom@19.1.4(react@19.1.4))(react@19.1.4) nitro: specifier: 3.0.1-alpha.1 - version: 3.0.1-alpha.1(@planetscale/database@1.19.0)(better-sqlite3@12.2.0)(chokidar@4.0.3)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3)(rollup@4.52.5)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.0.1-alpha.1(@planetscale/database@1.19.0)(better-sqlite3@12.2.0)(chokidar@4.0.3)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(mysql2@3.11.3)(rollup@4.52.5)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) react: specifier: catalog:react19 version: 19.1.4 @@ -238,6 +238,9 @@ importers: '@governance/tsconfig': specifier: workspace:* version: link:../../tooling/typescript + '@types/node': + specifier: 'catalog:' + version: 22.18.12 eslint: specifier: 'catalog:' version: 9.38.0(jiti@2.6.1) @@ -284,15 +287,15 @@ importers: packages/db: dependencies: - '@vercel/postgres': - specifier: ^0.10.0 - version: 0.10.0(utf-8-validate@6.0.4) drizzle-orm: specifier: ^0.44.7 - version: 0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0) + version: 0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(zod@4.1.12) + version: 0.8.3(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(zod@4.1.12) + postgres: + specifier: ^3.4.5 + version: 3.4.8 zod: specifier: 'catalog:' version: 4.1.12 @@ -306,6 +309,9 @@ importers: '@governance/tsconfig': specifier: workspace:* version: link:../../tooling/typescript + '@types/node': + specifier: 'catalog:' + version: 22.18.12 drizzle-kit: specifier: ^0.31.5 version: 0.31.5 @@ -4591,8 +4597,8 @@ packages: postgres-range@1.1.4: resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} - postgres@3.4.4: - resolution: {integrity: sha512-IbyN+9KslkqcXa8AO9fxpk97PA4pzewvpi2B3Dwy9u4zpV32QicaEdgmF3eSQUzdRk7ttDHQejNgAEr4XoeH4A==} + postgres@3.4.8: + resolution: {integrity: sha512-d+JFcLM17njZaOLkv6SCev7uoLaBtfK86vMUXhW1Z4glPWh4jozno9APvW/XKFJ3CCxVoC7OL38BqRydtu5nGg==} engines: {node: '>=12'} prebuild-install@7.1.3: @@ -6133,6 +6139,7 @@ snapshots: '@neondatabase/serverless@0.9.5': dependencies: '@types/pg': 8.11.6 + optional: true '@next/eslint-plugin-next@16.0.0': dependencies: @@ -7823,6 +7830,7 @@ snapshots: '@types/node': 24.9.1 pg-protocol: 1.10.3 pg-types: 4.1.0 + optional: true '@types/react-dom@19.1.9(@types/react@19.1.12)': dependencies: @@ -7938,6 +7946,7 @@ snapshots: ws: 8.18.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) transitivePeerDependencies: - utf-8-validate + optional: true '@vitejs/plugin-react@5.1.0(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: @@ -8241,6 +8250,7 @@ snapshots: bufferutil@4.0.8: dependencies: node-gyp-build: 4.8.4 + optional: true call-bind-apply-helpers@1.0.2: dependencies: @@ -8455,10 +8465,10 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - db0@0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3): + db0@0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(mysql2@3.11.3): optionalDependencies: better-sqlite3: 12.2.0 - drizzle-orm: 0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0) + drizzle-orm: 0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0) mysql2: 3.11.3 debug@3.2.7: @@ -8582,7 +8592,7 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0): + drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0): optionalDependencies: '@neondatabase/serverless': 0.10.0 '@opentelemetry/api': 1.9.0 @@ -8595,12 +8605,12 @@ snapshots: gel: 2.0.0 kysely: 0.28.5 mysql2: 3.11.3 - postgres: 3.4.4 + postgres: 3.4.8 prisma: 5.22.0 - drizzle-zod@0.8.3(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(zod@4.1.12): + drizzle-zod@0.8.3(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(zod@4.1.12): dependencies: - drizzle-orm: 0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0) + drizzle-orm: 0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0) zod: 4.1.12 dunder-proto@1.0.1: @@ -9761,11 +9771,11 @@ snapshots: nf3@0.1.10: {} - nitro@3.0.1-alpha.1(@planetscale/database@1.19.0)(better-sqlite3@12.2.0)(chokidar@4.0.3)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3)(rollup@4.52.5)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + nitro@3.0.1-alpha.1(@planetscale/database@1.19.0)(better-sqlite3@12.2.0)(chokidar@4.0.3)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(mysql2@3.11.3)(rollup@4.52.5)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: consola: 3.4.2 crossws: 0.4.1(srvx@0.9.6) - db0: 0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3) + db0: 0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(mysql2@3.11.3) h3: 2.0.1-rc.5(crossws@0.4.1(srvx@0.9.6)) jiti: 2.6.1 nf3: 0.1.10 @@ -9776,7 +9786,7 @@ snapshots: srvx: 0.9.6 undici: 7.16.0 unenv: 2.0.0-rc.24 - unstorage: 2.0.0-alpha.4(@planetscale/database@1.19.0)(chokidar@4.0.3)(db0@0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3))(ofetch@2.0.0-alpha.3) + unstorage: 2.0.0-alpha.4(@planetscale/database@1.19.0)(chokidar@4.0.3)(db0@0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(mysql2@3.11.3))(ofetch@2.0.0-alpha.3) optionalDependencies: rollup: 4.52.5 vite: 7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) @@ -9818,7 +9828,8 @@ snapshots: semver: 7.7.3 optional: true - node-gyp-build@4.8.4: {} + node-gyp-build@4.8.4: + optional: true node-plop@0.26.3: dependencies: @@ -9888,7 +9899,8 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - obuf@1.1.2: {} + obuf@1.1.2: + optional: true ofetch@2.0.0-alpha.3: {} @@ -10071,11 +10083,14 @@ snapshots: pathe@2.0.3: {} - pg-int8@1.0.1: {} + pg-int8@1.0.1: + optional: true - pg-numeric@1.0.2: {} + pg-numeric@1.0.2: + optional: true - pg-protocol@1.10.3: {} + pg-protocol@1.10.3: + optional: true pg-types@4.1.0: dependencies: @@ -10086,6 +10101,7 @@ snapshots: postgres-date: 2.1.0 postgres-interval: 3.0.0 postgres-range: 1.1.4 + optional: true picocolors@1.0.1: {} @@ -10103,21 +10119,25 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@3.0.4: {} + postgres-array@3.0.4: + optional: true postgres-bytea@3.0.0: dependencies: obuf: 1.1.2 + optional: true - postgres-date@2.1.0: {} - - postgres-interval@3.0.0: {} + postgres-date@2.1.0: + optional: true - postgres-range@1.1.4: {} + postgres-interval@3.0.0: + optional: true - postgres@3.4.4: + postgres-range@1.1.4: optional: true + postgres@3.4.8: {} + prebuild-install@7.1.3: dependencies: detect-libc: 2.1.2 @@ -10915,11 +10935,11 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - unstorage@2.0.0-alpha.4(@planetscale/database@1.19.0)(chokidar@4.0.3)(db0@0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3))(ofetch@2.0.0-alpha.3): + unstorage@2.0.0-alpha.4(@planetscale/database@1.19.0)(chokidar@4.0.3)(db0@0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(mysql2@3.11.3))(ofetch@2.0.0-alpha.3): optionalDependencies: '@planetscale/database': 1.19.0 chokidar: 4.0.3 - db0: 0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.4)(prisma@5.22.0))(mysql2@3.11.3) + db0: 0.3.4(better-sqlite3@12.2.0)(drizzle-orm@0.44.7(@neondatabase/serverless@0.10.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.11.10)(@vercel/postgres@0.10.0(utf-8-validate@6.0.4))(better-sqlite3@12.2.0)(gel@2.0.0)(kysely@0.28.5)(mysql2@3.11.3)(postgres@3.4.8)(prisma@5.22.0))(mysql2@3.11.3) ofetch: 2.0.0-alpha.3 update-browserslist-db@1.1.3(browserslist@4.26.3): @@ -11088,6 +11108,7 @@ snapshots: optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 6.0.4 + optional: true xmlbuilder2@3.1.1: dependencies: From 01d371f535c2fe7774727febf2790673f62dad07 Mon Sep 17 00:00:00 2001 From: AF_Askar <68832286+abo3skr2019@users.noreply.github.com> Date: Tue, 3 Feb 2026 12:05:11 +0300 Subject: [PATCH 07/12] fixed console error --- apps/tanstack-start/src/routes/__root.tsx | 12 ++++++++++-- packages/ui/src/theme.tsx | 5 +---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/tanstack-start/src/routes/__root.tsx b/apps/tanstack-start/src/routes/__root.tsx index bbf9073..3aef9f6 100644 --- a/apps/tanstack-start/src/routes/__root.tsx +++ b/apps/tanstack-start/src/routes/__root.tsx @@ -12,7 +12,11 @@ import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"; import { AuthKitProvider } from "@workos/authkit-tanstack-react-start/client"; import type { AppRouter } from "@governance/api"; -import { ThemeProvider, ThemeToggle } from "@governance/ui/theme"; +import { + themeDetectorScript, + ThemeProvider, + ThemeToggle, +} from "@governance/ui/theme"; import { Toaster } from "@governance/ui/toast"; import appCss from "~/styles.css?url"; @@ -43,6 +47,10 @@ function RootDocument({ children }: { children: React.ReactNode }) { +