From 96df75972af05161d5e58bbddee6e0798ab7c7aa Mon Sep 17 00:00:00 2001 From: Daniel McCrystal Date: Fri, 8 Aug 2025 22:44:39 -0400 Subject: [PATCH] elysia is the truth --- packages/client/package.json | 1 + packages/client/src/api.ts | 7 +- packages/client/src/components/Game.tsx | 38 ++-- packages/client/src/routes/[game]/index.tsx | 3 +- packages/client/src/routes/index.tsx | 2 +- packages/server/package.json | 7 +- packages/server/src/api.ts | 74 +++----- packages/server/src/index.ts | 41 ++--- pnpm-lock.yaml | 190 +++++++++++++++++++- 9 files changed, 252 insertions(+), 111 deletions(-) diff --git a/packages/client/package.json b/packages/client/package.json index d75c2fd..a67b627 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -7,6 +7,7 @@ "build": "vite build" }, "dependencies": { + "@elysiajs/eden": "^1.3.2", "@solidjs/router": "^0.15.3", "hono": "^4.8.12", "solid-js": "^1.9.5" diff --git a/packages/client/src/api.ts b/packages/client/src/api.ts index 6b4efdf..8638102 100644 --- a/packages/client/src/api.ts +++ b/packages/client/src/api.ts @@ -1,4 +1,5 @@ -import { hc } from "hono/client"; -import { type ApiType } from "../../server/src/api"; +import { type Api } from "../../server/src/api"; +import { treaty } from "@elysiajs/eden"; -export default hc("http://localhost:5001/api"); +const { api } = treaty("http://localhost:5001"); +export default api; diff --git a/packages/client/src/components/Game.tsx b/packages/client/src/components/Game.tsx index 597dcc5..92aa74d 100644 --- a/packages/client/src/components/Game.tsx +++ b/packages/client/src/components/Game.tsx @@ -1,23 +1,8 @@ -import { - Accessor, - createContext, - createEffect, - createResource, - JSX, - Show, - Suspense, -} from "solid-js"; -import Card from "./Card"; +import { Accessor, createContext, createResource, Show } from "solid-js"; +import { GameState } from "../../../shared/types/cards"; +import api from "../api"; import Hand from "./Hand"; import Pile from "./Pile"; -import { - GameState, - newDeck, - shuffle, - Hand as THand, -} from "../../../shared/types/cards"; -import { createStore, produce, SetStoreFunction, Store } from "solid-js/store"; -import api from "../api"; export const GameContext = createContext<{ gameState: Accessor; @@ -25,17 +10,18 @@ export const GameContext = createContext<{ }>(); export default (props: { instanceId: number }) => { - const [gameState, { refetch }] = createResource(() => - api.gameState[":gameId"] - .$get({ param: { gameId: props.instanceId.toString() } }) - .then((res) => res.json()) + const [gameState, { refetch }] = createResource(() => + api + .gameState({ gameId: props.instanceId.toString() }) + .get() + .then((res) => res.data as GameState) ); const setGameState = (state: GameState) => - api.gameState[":gameId"] - .$put({ - param: { gameId: props.instanceId.toString() }, - json: state, + api + .gameState({ gameId: props.instanceId.toString() }) + .put({ + gameState: state, }) .then(refetch); diff --git a/packages/client/src/routes/[game]/index.tsx b/packages/client/src/routes/[game]/index.tsx index a3d6118..6d4501e 100644 --- a/packages/client/src/routes/[game]/index.tsx +++ b/packages/client/src/routes/[game]/index.tsx @@ -8,8 +8,7 @@ export default () => { const [instances, { refetch }] = createResource( () => param.game, - async () => - api.instances.$get({ query: param }).then((res) => res.json()) + async () => api.instances.get({ query: param }).then((res) => res.data) ); return ( diff --git a/packages/client/src/routes/index.tsx b/packages/client/src/routes/index.tsx index 8dd4487..bbc9b8a 100644 --- a/packages/client/src/routes/index.tsx +++ b/packages/client/src/routes/index.tsx @@ -4,7 +4,7 @@ import api from "../api"; export default () => { const [games] = createResource(async () => - api.games.$get().then((res) => res.json()) + api.games.get().then((res) => res.data) ); return ( diff --git a/packages/server/package.json b/packages/server/package.json index 83019b4..b2ac74a 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -2,15 +2,18 @@ "name": "server", "scripts": { "dev": "concurrently 'pnpm run devserver' 'pnpm run dbstudio'", - "devserver": "NODE_ENV=development bun run --hot --port 5001 src/index.ts", + "devserver": "NODE_ENV=development PORT=5001 bun run --hot src/index.ts", "dbstudio": "pnpm dlx prisma studio --browser none", "dbdeploy": "pnpm dlx prisma migrate deploy", "dbsync": "concurrently 'pnpm dlx prisma generate' 'pnpm dlx prisma migrate dev'", - "start": "NODE_ENV=production bun run --port 5001 src/index.ts" + "start": "NODE_ENV=production PORT=5001 bun run src/index.ts" }, "dependencies": { + "@elysiajs/cors": "^1.3.3", + "@elysiajs/static": "^1.3.0", "@hono/zod-validator": "^0.7.2", "@prisma/client": "6.13.0", + "elysia": "^1.3.8", "hono": "^4.8.12", "zod": "^4.0.15" }, diff --git a/packages/server/src/api.ts b/packages/server/src/api.ts index 5e5a2da..dd7a597 100644 --- a/packages/server/src/api.ts +++ b/packages/server/src/api.ts @@ -1,68 +1,46 @@ -import { Hono } from "hono"; import { prisma } from "./db/db"; -import { zValidator } from "@hono/zod-validator"; -import { z } from "zod"; +import { Elysia, t } from "elysia"; -const api = new Hono() - .get("/ping", (c) => c.text("pong")) +const api = new Elysia({ prefix: "/api" }) + .get("/games", () => prisma.game.findMany()) - .get("/games", async (c) => { - const games = await prisma.game.findMany(); - return c.json(games); - }) - - .get( - "/instances", - zValidator("query", z.object({ game: z.string() })), - async (c) => { - const { game } = c.req.valid("query"); - const instances = await prisma.instance.findMany({ - where: { - game: { - name: game, - }, + .get("/instances", ({ query: { game } }) => + prisma.instance.findMany({ + where: { + game: { + name: game, }, - select: { - id: true, - }, - }); - return c.json(instances); - } + }, + select: { + id: true, + }, + }) ) - .get( - "/gameState/:gameId", - zValidator("param", z.object({ gameId: z.string() })), - async (c) => { - const { gameId } = c.req.valid("param"); - const instance = await prisma.instance.findUnique({ + .get("/gameState/:gameId", ({ params: { gameId } }) => + prisma.instance + .findUnique({ where: { id: Number(gameId), }, - }); - return c.json(instance?.gameState); - } + }) + .then((game) => game?.gameState) ) .put( "/gameState/:gameId", - zValidator("param", z.object({ gameId: z.string() }), (result) => { - console.log(JSON.stringify(result, null, 2)); - }), - zValidator("json", z.any()), - async (c) => { - const { gameId } = c.req.valid("param"); - const gameState = c.req.valid("json"); - - await prisma.instance.update({ + ({ params: { gameId }, body: { gameState } }) => + prisma.instance.update({ data: { gameState }, where: { id: Number(gameId), }, - }); - - return c.text("", 200); + }), + { + body: t.Object({ + gameState: t.Any(), + }), } ); export default api; -export type ApiType = typeof api; +export type Api = typeof api; diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index d9936ca..9204901 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -1,28 +1,21 @@ -import { Hono } from "hono"; -import { serveStatic } from "hono/bun"; import api from "./api"; -import { cors } from "hono/cors"; -import { createBunWebSocket } from "hono/bun"; +import { Elysia, env } from "elysia"; +import { cors } from "@elysiajs/cors"; +import { staticPlugin } from "@elysiajs/static"; -const app = new Hono(); -app.use("*", async (c, next) => { - console.log(c.req.method, c.req.url); - await next(); - console.log(">>", c.res.status); -}); +const port = env.PORT || 5001; -const isDev = Bun.env.NODE_ENV === "development"; -const isProd = Bun.env.NODE_ENV === "production"; +const app = new Elysia() + .use(cors()) + .onRequest(({ request }) => { + console.log(request.method, request.url); + }) + .onError(({ code, error }) => { + console.error(code, error); + }) + .get("/ping", () => "pong") + .use(api) + .use(staticPlugin({ assets: "./dist", prefix: "" })) + .listen(port); -isProd && - app.use( - "*", - serveStatic({ - root: "./dist", - }) - ); - -app.use("*", cors()); -app.route("/api", api); - -export default app; +console.log("server started on", port); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 726c12b..d038132 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,9 @@ importers: packages/client: dependencies: + '@elysiajs/eden': + specifier: ^1.3.2 + version: 1.3.2(elysia@1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2)) '@solidjs/router': specifier: ^0.15.3 version: 0.15.3(solid-js@1.9.8) @@ -29,12 +32,21 @@ importers: packages/server: dependencies: + '@elysiajs/cors': + specifier: ^1.3.3 + version: 1.3.3(elysia@1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2)) + '@elysiajs/static': + specifier: ^1.3.0 + version: 1.3.0(elysia@1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2)) '@hono/zod-validator': specifier: ^0.7.2 version: 0.7.2(hono@4.8.12)(zod@4.0.15) '@prisma/client': specifier: 6.13.0 - version: 6.13.0(prisma@6.13.0) + version: 6.13.0(prisma@6.13.0(typescript@5.9.2))(typescript@5.9.2) + elysia: + specifier: ^1.3.8 + version: 1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2) hono: specifier: ^4.8.12 version: 4.8.12 @@ -50,7 +62,7 @@ importers: version: 9.2.0 prisma: specifier: 6.13.0 - version: 6.13.0 + version: 6.13.0(typescript@5.9.2) packages: @@ -139,6 +151,21 @@ packages: resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} + '@elysiajs/cors@1.3.3': + resolution: {integrity: sha512-mYIU6PyMM6xIJuj7d27Vt0/wuzVKIEnFPjcvlkyd7t/m9xspAG37cwNjFxVOnyvY43oOd2I/oW2DB85utXpA2Q==} + peerDependencies: + elysia: '>= 1.3.0' + + '@elysiajs/eden@1.3.2': + resolution: {integrity: sha512-0bCU5DO7J7hQfS2y3O3399GtoxMWRDMgQNMTHOnf70/F2nF8SwGHvzwh3+wO62Ko5FMF7EYqTN9Csw/g/Q7qwg==} + peerDependencies: + elysia: '>= 1.3.0' + + '@elysiajs/static@1.3.0': + resolution: {integrity: sha512-7mWlj2U/AZvH27IfRKqpUjDP1W9ZRldF9NmdnatFEtx0AOy7YYgyk0rt5hXrH6wPcR//2gO2Qy+k5rwswpEhJA==} + peerDependencies: + elysia: '>= 1.3.0' + '@esbuild/aix-ppc64@0.25.8': resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} engines: {node: '>=18'} @@ -444,6 +471,9 @@ packages: cpu: [x64] os: [win32] + '@sinclair/typebox@0.34.38': + resolution: {integrity: sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==} + '@solidjs/router@0.15.3': resolution: {integrity: sha512-iEbW8UKok2Oio7o6Y4VTzLj+KFCmQPGEpm1fS3xixwFBdclFVBvaQVeibl1jys4cujfAK5Kn6+uG2uBm3lxOMw==} peerDependencies: @@ -452,6 +482,13 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@tokenizer/inflate@0.2.7': + resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==} + engines: {node: '>=18'} + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -537,6 +574,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -559,6 +600,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -591,6 +636,13 @@ packages: electron-to-chromium@1.5.198: resolution: {integrity: sha512-G5COfnp3w+ydVu80yprgWSfmfQaYRh9DOxfhAxstLyetKaLyl55QrNjx8C38Pc/C+RaDmb1M0Lk8wPEMQ+bGgQ==} + elysia@1.3.8: + resolution: {integrity: sha512-kxYFhegJbUEf5otzmisEvGt3R7d/dPBNVERO2nHo0kFqKBHyj5slArc90mSRKLfi1vamMtPcz67rL6Zeg5F2yg==} + peerDependencies: + exact-mirror: '>= 0.0.9' + file-type: '>= 20.0.0' + typescript: '>= 5.0.0' + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -607,6 +659,14 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + exact-mirror@0.1.5: + resolution: {integrity: sha512-NKLenPSYjWPoj2+IL3+NSXDTfddZMBAclnLPPZCEtWcSZYOVlKwedNpCCVQkdyIo6UYAMTiLd4wgtuQMPs4C/A==} + peerDependencies: + '@sinclair/typebox': ^0.34.15 + peerDependenciesMeta: + '@sinclair/typebox': + optional: true + exsolve@1.0.7: resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} @@ -614,6 +674,9 @@ packages: resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} engines: {node: '>=8.0.0'} + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + fdir@6.4.6: resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: @@ -622,6 +685,13 @@ packages: picomatch: optional: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + file-type@21.0.0: + resolution: {integrity: sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==} + engines: {node: '>=20'} + find-up-simple@1.0.1: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} @@ -658,6 +728,9 @@ packages: html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + index-to-position@1.1.0: resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} engines: {node: '>=18'} @@ -708,6 +781,10 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + node-cache@5.1.2: + resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} + engines: {node: '>= 8.0.0'} + node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} @@ -726,6 +803,9 @@ packages: ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + parse-json@8.3.0: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} @@ -848,6 +928,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strtok3@10.3.4: + resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} + engines: {node: '>=18'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -863,6 +947,10 @@ packages: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + token-types@6.0.4: + resolution: {integrity: sha512-MD9MjpVNhVyH4fyd5rKphjvt/1qj+PtQUz65aFqAZA6XniWAuSFRjLk3e2VALEFlh9OwBpXUN7rfeqSnT/Fmkw==} + engines: {node: '>=14.16'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -874,6 +962,15 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + uint8array-extras@1.4.0: + resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==} + engines: {node: '>=18'} + undici-types@7.10.0: resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} @@ -1091,6 +1188,19 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@elysiajs/cors@1.3.3(elysia@1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2))': + dependencies: + elysia: 1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2) + + '@elysiajs/eden@1.3.2(elysia@1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2))': + dependencies: + elysia: 1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2) + + '@elysiajs/static@1.3.0(elysia@1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2))': + dependencies: + elysia: 1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2) + node-cache: 5.1.2 + '@esbuild/aix-ppc64@0.25.8': optional: true @@ -1188,9 +1298,10 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 - '@prisma/client@6.13.0(prisma@6.13.0)': + '@prisma/client@6.13.0(prisma@6.13.0(typescript@5.9.2))(typescript@5.9.2)': optionalDependencies: - prisma: 6.13.0 + prisma: 6.13.0(typescript@5.9.2) + typescript: 5.9.2 '@prisma/config@6.13.0': dependencies: @@ -1282,12 +1393,25 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.46.2': optional: true + '@sinclair/typebox@0.34.38': + optional: true + '@solidjs/router@0.15.3(solid-js@1.9.8)': dependencies: solid-js: 1.9.8 '@standard-schema/spec@1.0.0': {} + '@tokenizer/inflate@0.2.7': + dependencies: + debug: 4.4.1 + fflate: 0.8.2 + token-types: 6.0.4 + transitivePeerDependencies: + - supports-color + + '@tokenizer/token@0.3.0': {} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.0 @@ -1398,6 +1522,8 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone@2.1.2: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -1420,6 +1546,8 @@ snapshots: convert-source-map@2.0.0: {} + cookie@1.0.2: {} + csstype@3.1.3: {} debug@4.4.1: @@ -1441,6 +1569,17 @@ snapshots: electron-to-chromium@1.5.198: {} + elysia@1.3.8(exact-mirror@0.1.5(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.9.2): + dependencies: + cookie: 1.0.2 + exact-mirror: 0.1.5(@sinclair/typebox@0.34.38) + fast-decode-uri-component: 1.0.1 + file-type: 21.0.0 + typescript: 5.9.2 + optionalDependencies: + '@sinclair/typebox': 0.34.38 + openapi-types: 12.1.3 + emoji-regex@8.0.0: {} entities@6.0.1: {} @@ -1476,16 +1615,33 @@ snapshots: escalade@3.2.0: {} + exact-mirror@0.1.5(@sinclair/typebox@0.34.38): + optionalDependencies: + '@sinclair/typebox': 0.34.38 + exsolve@1.0.7: {} fast-check@3.23.2: dependencies: pure-rand: 6.1.0 + fast-decode-uri-component@1.0.1: {} + fdir@6.4.6(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 + fflate@0.8.2: {} + + file-type@21.0.0: + dependencies: + '@tokenizer/inflate': 0.2.7 + strtok3: 10.3.4 + token-types: 6.0.4 + uint8array-extras: 1.4.0 + transitivePeerDependencies: + - supports-color + find-up-simple@1.0.1: {} fsevents@2.3.3: @@ -1514,6 +1670,8 @@ snapshots: html-entities@2.3.3: {} + ieee754@1.2.1: {} + index-to-position@1.1.0: {} is-fullwidth-code-point@3.0.0: {} @@ -1544,6 +1702,10 @@ snapshots: nanoid@3.3.11: {} + node-cache@5.1.2: + dependencies: + clone: 2.1.2 + node-fetch-native@1.6.7: {} node-releases@2.0.19: {} @@ -1564,6 +1726,9 @@ snapshots: ohash@2.0.11: {} + openapi-types@12.1.3: + optional: true + parse-json@8.3.0: dependencies: '@babel/code-frame': 7.27.1 @@ -1594,10 +1759,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prisma@6.13.0: + prisma@6.13.0(typescript@5.9.2): dependencies: '@prisma/config': 6.13.0 '@prisma/engines': 6.13.0 + optionalDependencies: + typescript: 5.9.2 transitivePeerDependencies: - magicast @@ -1709,6 +1876,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strtok3@10.3.4: + dependencies: + '@tokenizer/token': 0.3.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -1724,12 +1895,21 @@ snapshots: fdir: 6.4.6(picomatch@4.0.3) picomatch: 4.0.3 + token-types@6.0.4: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + tree-kill@1.2.2: {} tslib@2.8.1: {} type-fest@4.41.0: {} + typescript@5.9.2: {} + + uint8array-extras@1.4.0: {} + undici-types@7.10.0: {} unicorn-magic@0.1.0: {}