diff --git a/examples/actor-actions/src/frontend/App.tsx b/examples/actor-actions/frontend/App.tsx similarity index 98% rename from examples/actor-actions/src/frontend/App.tsx rename to examples/actor-actions/frontend/App.tsx index 98ca216895..4323f3468c 100644 --- a/examples/actor-actions/src/frontend/App.tsx +++ b/examples/actor-actions/frontend/App.tsx @@ -4,9 +4,9 @@ import type { CompanyProfile, EmployeeProfile, registry, -} from "../backend/registry"; +} from "../src/registry"; -const client = createClient("http://localhost:6420"); +const client = createClient(`${window.location.origin}/api/rivet`); export function App() { const [companyEin, setCompanyEin] = useState("12-3456789"); diff --git a/examples/actor-actions/src/frontend/index.html b/examples/actor-actions/frontend/index.html similarity index 100% rename from examples/actor-actions/src/frontend/index.html rename to examples/actor-actions/frontend/index.html diff --git a/examples/actor-actions/src/frontend/main.tsx b/examples/actor-actions/frontend/main.tsx similarity index 100% rename from examples/actor-actions/src/frontend/main.tsx rename to examples/actor-actions/frontend/main.tsx diff --git a/examples/actor-actions/package.json b/examples/actor-actions/package.json index 00ddbe6026..a0d92bfa9b 100644 --- a/examples/actor-actions/package.json +++ b/examples/actor-actions/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -16,15 +20,17 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "template": { diff --git a/examples/actor-actions/src/backend/registry.ts b/examples/actor-actions/src/registry.ts similarity index 100% rename from examples/actor-actions/src/backend/registry.ts rename to examples/actor-actions/src/registry.ts diff --git a/examples/actor-actions/src/backend/server.ts b/examples/actor-actions/src/server.ts similarity index 54% rename from examples/actor-actions/src/backend/server.ts rename to examples/actor-actions/src/server.ts index aa0ee6ed61..508b28a999 100644 --- a/examples/actor-actions/src/backend/server.ts +++ b/examples/actor-actions/src/server.ts @@ -1,3 +1,3 @@ import { registry } from "./registry"; -registry.start(); +export default registry.serve(); diff --git a/examples/actor-actions/tests/actions.test.ts b/examples/actor-actions/tests/actions.test.ts index 9f80399a83..74f1b122b9 100644 --- a/examples/actor-actions/tests/actions.test.ts +++ b/examples/actor-actions/tests/actions.test.ts @@ -1,6 +1,6 @@ import { setupTest } from "rivetkit/test"; import { describe, expect, test } from "vitest"; -import { registry } from "../src/backend/registry"; +import { registry } from "../src/registry"; describe("company and employee actors", () => { test("create company actor with input and get profile", async (ctx) => { diff --git a/examples/actor-actions/tsconfig.build.json b/examples/actor-actions/tsconfig.build.json new file mode 100644 index 0000000000..78a4a178db --- /dev/null +++ b/examples/actor-actions/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false, + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*"] +} diff --git a/examples/actor-actions/tsup.config.ts b/examples/actor-actions/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/actor-actions/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/actor-actions/vite.config.ts b/examples/actor-actions/vite.config.ts index 19155bde35..ef2f55a297 100644 --- a/examples/actor-actions/vite.config.ts +++ b/examples/actor-actions/vite.config.ts @@ -3,9 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/ai-agent/src/frontend/App.tsx b/examples/ai-agent/frontend/App.tsx similarity index 91% rename from examples/ai-agent/src/frontend/App.tsx rename to examples/ai-agent/frontend/App.tsx index 3633f38f22..a109941a10 100644 --- a/examples/ai-agent/src/frontend/App.tsx +++ b/examples/ai-agent/frontend/App.tsx @@ -1,9 +1,9 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useState } from "react"; -import { registry } from "../backend/registry"; -import type { Message } from "../backend/types"; +import { registry } from "../src/registry"; +import type { Message } from "../src/types"; -const { useActor } = createRivetKit("http://localhost:8080"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); export function App() { const aiAgent = useActor({ diff --git a/examples/ai-agent/src/frontend/index.html b/examples/ai-agent/frontend/index.html similarity index 100% rename from examples/ai-agent/src/frontend/index.html rename to examples/ai-agent/frontend/index.html diff --git a/examples/ai-agent/src/frontend/main.tsx b/examples/ai-agent/frontend/main.tsx similarity index 100% rename from examples/ai-agent/src/frontend/main.tsx rename to examples/ai-agent/frontend/main.tsx diff --git a/examples/ai-agent/package.json b/examples/ai-agent/package.json index 2dd200df13..01a69ccb08 100644 --- a/examples/ai-agent/package.json +++ b/examples/ai-agent/package.json @@ -4,12 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", - "build": "vite build", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -17,7 +20,8 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", - "rivetkit": "workspace:*", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", @@ -29,6 +33,7 @@ "ai": "^4.0.38", "react": "^18.2.0", "react-dom": "^18.2.0", + "rivetkit": "workspace:*", "zod": "^3.25.69" }, "stableVersion": "0.8.0", @@ -41,7 +46,7 @@ "real-time" ], "priority": 100, - "frontendPort": 3000 + "frontendPort": 5173 }, "license": "MIT" } diff --git a/examples/ai-agent/src/backend/my-tools.ts b/examples/ai-agent/src/my-tools.ts similarity index 100% rename from examples/ai-agent/src/backend/my-tools.ts rename to examples/ai-agent/src/my-tools.ts diff --git a/examples/ai-agent/src/backend/registry.ts b/examples/ai-agent/src/registry.ts similarity index 100% rename from examples/ai-agent/src/backend/registry.ts rename to examples/ai-agent/src/registry.ts diff --git a/examples/cursors-raw-websocket/src/backend/server.ts b/examples/ai-agent/src/server.ts similarity index 54% rename from examples/cursors-raw-websocket/src/backend/server.ts rename to examples/ai-agent/src/server.ts index aa0ee6ed61..508b28a999 100644 --- a/examples/cursors-raw-websocket/src/backend/server.ts +++ b/examples/ai-agent/src/server.ts @@ -1,3 +1,3 @@ import { registry } from "./registry"; -registry.start(); +export default registry.serve(); diff --git a/examples/ai-agent/src/backend/types.ts b/examples/ai-agent/src/types.ts similarity index 100% rename from examples/ai-agent/src/backend/types.ts rename to examples/ai-agent/src/types.ts diff --git a/examples/ai-agent/tsup.config.ts b/examples/ai-agent/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/ai-agent/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/ai-agent/vite.config.ts b/examples/ai-agent/vite.config.ts index 67a99069f4..ef2f55a297 100644 --- a/examples/ai-agent/vite.config.ts +++ b/examples/ai-agent/vite.config.ts @@ -3,9 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", - port: 3000, + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.css b/examples/ai-and-user-generated-actors-freestyle/frontend/App.css similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/src/frontend/App.css rename to examples/ai-and-user-generated-actors-freestyle/frontend/App.css diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.tsx b/examples/ai-and-user-generated-actors-freestyle/frontend/App.tsx similarity index 97% rename from examples/ai-and-user-generated-actors-freestyle/src/frontend/App.tsx rename to examples/ai-and-user-generated-actors-freestyle/frontend/App.tsx index 8c73808fc3..ad06e25663 100644 --- a/examples/ai-and-user-generated-actors-freestyle/src/frontend/App.tsx +++ b/examples/ai-and-user-generated-actors-freestyle/frontend/App.tsx @@ -1,9 +1,9 @@ import { useState } from "react"; import Editor, { type OnMount } from "@monaco-editor/react"; import "./App.css"; -import DEFAULT_REGISTRY from "../../template/src/backend/registry.ts?raw"; -import DEFAULT_APP from "../../template/src/frontend/App.tsx?raw"; -import { DeployRequest } from "../backend/utils"; +import DEFAULT_REGISTRY from "../template/src/registry.ts?raw"; +import DEFAULT_APP from "../template/frontend/App.tsx?raw"; +import { DeployRequest } from "../src/utils"; type DeploymentTarget = "cloud" | "selfHosted"; diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/index.html b/examples/ai-and-user-generated-actors-freestyle/frontend/index.html similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/src/frontend/index.html rename to examples/ai-and-user-generated-actors-freestyle/frontend/index.html diff --git a/examples/ai-and-user-generated-actors-freestyle/src/frontend/main.tsx b/examples/ai-and-user-generated-actors-freestyle/frontend/main.tsx similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/src/frontend/main.tsx rename to examples/ai-and-user-generated-actors-freestyle/frontend/main.tsx diff --git a/examples/ai-and-user-generated-actors-freestyle/package.json b/examples/ai-and-user-generated-actors-freestyle/package.json index aab38d1760..50d390fca1 100644 --- a/examples/ai-and-user-generated-actors-freestyle/package.json +++ b/examples/ai-and-user-generated-actors-freestyle/package.json @@ -5,10 +5,12 @@ "type": "module", "scripts": { "dev": "concurrently \"pnpm run dev:backend\" \"pnpm run dev:frontend\"", - "dev:backend": "tsx src/backend/index.ts", + "dev:backend": "tsx src/index.ts", "dev:frontend": "vite", - "build": "tsc && vite build", + "build:frontend": "vite build", + "build:backend": "tsup", "preview": "vite preview", + "build": "npm run build:backend && npm run build:frontend", "check-types": "tsc --noEmit", "test": "vitest", "test:run": "vitest run" diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-cloud.ts b/examples/ai-and-user-generated-actors-freestyle/src/deploy-with-rivet-cloud.ts similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-cloud.ts rename to examples/ai-and-user-generated-actors-freestyle/src/deploy-with-rivet-cloud.ts diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-self-hosted.ts b/examples/ai-and-user-generated-actors-freestyle/src/deploy-with-rivet-self-hosted.ts similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/src/backend/deploy-with-rivet-self-hosted.ts rename to examples/ai-and-user-generated-actors-freestyle/src/deploy-with-rivet-self-hosted.ts diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/index.ts b/examples/ai-and-user-generated-actors-freestyle/src/index.ts similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/src/backend/index.ts rename to examples/ai-and-user-generated-actors-freestyle/src/index.ts diff --git a/examples/ai-and-user-generated-actors-freestyle/src/backend/utils.ts b/examples/ai-and-user-generated-actors-freestyle/src/utils.ts similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/src/backend/utils.ts rename to examples/ai-and-user-generated-actors-freestyle/src/utils.ts diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/App.tsx b/examples/ai-and-user-generated-actors-freestyle/template/frontend/App.tsx similarity index 97% rename from examples/ai-and-user-generated-actors-freestyle/template/src/frontend/App.tsx rename to examples/ai-and-user-generated-actors-freestyle/template/frontend/App.tsx index 446cfeb559..d2ae558d2c 100644 --- a/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/App.tsx +++ b/examples/ai-and-user-generated-actors-freestyle/template/frontend/App.tsx @@ -1,6 +1,6 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useState } from "react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; console.log("Environment variables:", { VITE_RIVET_ENDPOINT: import.meta.env.VITE_RIVET_ENDPOINT, diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/index.html b/examples/ai-and-user-generated-actors-freestyle/template/frontend/index.html similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/template/src/frontend/index.html rename to examples/ai-and-user-generated-actors-freestyle/template/frontend/index.html diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/frontend/main.tsx b/examples/ai-and-user-generated-actors-freestyle/template/frontend/main.tsx similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/template/src/frontend/main.tsx rename to examples/ai-and-user-generated-actors-freestyle/template/frontend/main.tsx diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/backend/server.ts b/examples/ai-and-user-generated-actors-freestyle/template/src/backend/server.ts deleted file mode 100644 index 3f7712b695..0000000000 --- a/examples/ai-and-user-generated-actors-freestyle/template/src/backend/server.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Hono } from "hono"; -import { serveStatic, upgradeWebSocket } from "hono/deno"; -import { registry } from "./registry.ts"; - -globalThis.addEventListener("unhandledrejection", (event) => { - console.error("Unhandled promise rejection:", event.reason); - event.preventDefault(); -}); - -const serverOutput = registry.start({ - inspector: { - enabled: true, - }, - runnerKind: "serverless", - disableDefaultServer: true, - noWelcome: true, - runEngine: false, - autoConfigureServerless: false, - basePath: "/api/rivet", - getUpgradeWebSocket: () => upgradeWebSocket, -}); - -const app = new Hono(); - -app.use("/api/rivet/*", async (c) => { - return await serverOutput.fetch(c.req.raw); -}); - -app.use("*", serveStatic({ root: "./public" })); - -// @ts-expect-error -Deno.serve(app.fetch); diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/backend/registry.ts b/examples/ai-and-user-generated-actors-freestyle/template/src/registry.ts similarity index 100% rename from examples/ai-and-user-generated-actors-freestyle/template/src/backend/registry.ts rename to examples/ai-and-user-generated-actors-freestyle/template/src/registry.ts diff --git a/examples/ai-and-user-generated-actors-freestyle/template/src/server.ts b/examples/ai-and-user-generated-actors-freestyle/template/src/server.ts new file mode 100644 index 0000000000..aae713ea36 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/template/src/server.ts @@ -0,0 +1,19 @@ +import { Hono } from "hono"; +import { serveStatic } from "hono/deno"; +import { registry } from "./registry"; + +globalThis.addEventListener("unhandledrejection", (event) => { + console.error("Unhandled promise rejection:", event.reason); + event.preventDefault(); +}); + +const app = new Hono(); + +app.use("/api/rivet/*", async (c) => { + return await registry.fetch(c.req.raw); +}); + +app.use("*", serveStatic({ root: "./public" })); + +// @ts-expect-error +Deno.serve(app.fetch); diff --git a/examples/ai-and-user-generated-actors-freestyle/template/vite.config.ts b/examples/ai-and-user-generated-actors-freestyle/template/vite.config.ts index ac1e033460..17770cce32 100644 --- a/examples/ai-and-user-generated-actors-freestyle/template/vite.config.ts +++ b/examples/ai-and-user-generated-actors-freestyle/template/vite.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { outDir: "../../public", }, diff --git a/examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts b/examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts index 39093f2705..263a4680a7 100644 --- a/examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts +++ b/examples/ai-and-user-generated-actors-freestyle/tests/deploy.test.ts @@ -1,9 +1,9 @@ import { readFileSync } from "node:fs"; import { join } from "node:path"; import { beforeAll, describe, expect, it } from "vitest"; -import { deployWithRivetCloud } from "../src/backend/deploy-with-rivet-cloud"; -import { deployWithRivetSelfHosted } from "../src/backend/deploy-with-rivet-self-hosted"; -import type { DeployRequest, LogCallback } from "../src/backend/utils"; +import { deployWithRivetCloud } from "../src/deploy-with-rivet-cloud"; +import { deployWithRivetSelfHosted } from "../src/deploy-with-rivet-self-hosted"; +import type { DeployRequest, LogCallback } from "../src/utils"; // Simple log callback for tests const testLog: LogCallback = async (message: string) => { diff --git a/examples/ai-and-user-generated-actors-freestyle/tsup.config.ts b/examples/ai-and-user-generated-actors-freestyle/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/ai-and-user-generated-actors-freestyle/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/ai-and-user-generated-actors-freestyle/vite.config.ts b/examples/ai-and-user-generated-actors-freestyle/vite.config.ts index 75cbbebbaa..de60758d9a 100644 --- a/examples/ai-and-user-generated-actors-freestyle/vite.config.ts +++ b/examples/ai-and-user-generated-actors-freestyle/vite.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { emptyOutDir: true, }, @@ -11,10 +11,7 @@ export default defineConfig({ host: "0.0.0.0", port: 5173, proxy: { - "/api": { - target: "http://localhost:3001", - changeOrigin: true, - }, + "/api/": "http://localhost:3001", }, }, }); diff --git a/examples/chat-room/frontend/App.tsx b/examples/chat-room/frontend/App.tsx index 53313c7e06..2e2f2d3c6e 100644 --- a/examples/chat-room/frontend/App.tsx +++ b/examples/chat-room/frontend/App.tsx @@ -1,6 +1,6 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useState } from "react"; -import type { Message, registry } from "../src/server"; +import type { Message, registry } from "../src/actors"; const { useActor } = createRivetKit("http://localhost:5173/api/rivet"); diff --git a/examples/chat-room/package.json b/examples/chat-room/package.json index e99c200f48..0451375661 100644 --- a/examples/chat-room/package.json +++ b/examples/chat-room/package.json @@ -4,15 +4,18 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "npx srvx --import tsx src/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", "dev:cli": "tsx src/scripts/cli.ts", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend", + "start": "srvx --static=dist dist/server.js" }, "devDependencies": { - "@rivetkit/react": "workspace:*", "@types/node": "^22.13.9", "@types/prompts": "^2", "@types/react": "^18.2.0", @@ -20,15 +23,18 @@ "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", "prompts": "^2.4.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", "hono": "^4.11.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "stableVersion": "0.8.0", diff --git a/examples/chat-room/tsconfig.json b/examples/chat-room/tsconfig.json index d4efe57114..ebf8f3a6e1 100644 --- a/examples/chat-room/tsconfig.json +++ b/examples/chat-room/tsconfig.json @@ -39,5 +39,5 @@ /* Skip type checking all .d.ts files. */ "skipLibCheck": true }, - "include": ["src/**/*", "actors/**/*", "tests/**/*"] + "include": ["src/**/*", "tests/**/*"] } diff --git a/examples/chat-room/tsup.config.ts b/examples/chat-room/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/chat-room/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/chat-room/vite.config.ts b/examples/chat-room/vite.config.ts index 7f083fddf8..dd96ac2cdf 100644 --- a/examples/chat-room/vite.config.ts +++ b/examples/chat-room/vite.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ host: "0.0.0.0", port: 5173, proxy: { - "/api": "http://localhost:3000", + "/api/rivet/": "http://localhost:3000", }, }, }); diff --git a/examples/cloudflare-workers-hono/package.json b/examples/cloudflare-workers-hono/package.json index eb3379765d..fe80b913ef 100644 --- a/examples/cloudflare-workers-hono/package.json +++ b/examples/cloudflare-workers-hono/package.json @@ -7,7 +7,8 @@ "dev": "wrangler dev", "deploy": "wrangler deploy", "check-types": "tsc --noEmit", - "client": "tsx scripts/client.ts" + "client": "tsx scripts/client.ts", + "build": "tsc" }, "devDependencies": { "@cloudflare/workers-types": "^4.20250129.0", diff --git a/examples/cloudflare-workers-inline-client/package.json b/examples/cloudflare-workers-inline-client/package.json index 43b52b24be..1e5697bf7f 100644 --- a/examples/cloudflare-workers-inline-client/package.json +++ b/examples/cloudflare-workers-inline-client/package.json @@ -8,7 +8,8 @@ "deploy": "wrangler deploy", "check-types": "tsc --noEmit", "client-http": "tsx scripts/client-http.ts", - "client-rivetkit": "tsx scripts/client-rivetkit.ts" + "client-rivetkit": "tsx scripts/client-rivetkit.ts", + "build": "tsc" }, "devDependencies": { "@cloudflare/workers-types": "^4.20250129.0", diff --git a/examples/cloudflare-workers/package.json b/examples/cloudflare-workers/package.json index a6f3749b04..194fdf17df 100644 --- a/examples/cloudflare-workers/package.json +++ b/examples/cloudflare-workers/package.json @@ -7,7 +7,8 @@ "dev": "wrangler dev", "deploy": "wrangler deploy", "check-types": "tsc --noEmit", - "client": "tsx scripts/client.ts" + "client": "tsx scripts/client.ts", + "build": "tsc" }, "devDependencies": { "@cloudflare/workers-types": "^4.20250129.0", diff --git a/examples/cross-actor-actions/src/frontend/App.tsx b/examples/cross-actor-actions/frontend/App.tsx similarity index 97% rename from examples/cross-actor-actions/src/frontend/App.tsx rename to examples/cross-actor-actions/frontend/App.tsx index 64a643addf..0e85bd01dd 100644 --- a/examples/cross-actor-actions/src/frontend/App.tsx +++ b/examples/cross-actor-actions/frontend/App.tsx @@ -1,8 +1,8 @@ import { createClient } from "rivetkit/client"; import { useEffect, useState } from "react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; -const client = createClient("http://localhost:6420"); +const client = createClient(`${window.location.origin}/api/rivet`); interface ItemStock { itemName: string; diff --git a/examples/cross-actor-actions/src/frontend/index.html b/examples/cross-actor-actions/frontend/index.html similarity index 100% rename from examples/cross-actor-actions/src/frontend/index.html rename to examples/cross-actor-actions/frontend/index.html diff --git a/examples/cross-actor-actions/src/frontend/main.tsx b/examples/cross-actor-actions/frontend/main.tsx similarity index 100% rename from examples/cross-actor-actions/src/frontend/main.tsx rename to examples/cross-actor-actions/frontend/main.tsx diff --git a/examples/cross-actor-actions/package.json b/examples/cross-actor-actions/package.json index 1eaea1dc1c..1b06935335 100644 --- a/examples/cross-actor-actions/package.json +++ b/examples/cross-actor-actions/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -16,15 +20,17 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "template": { diff --git a/examples/cross-actor-actions/src/backend/registry.ts b/examples/cross-actor-actions/src/registry.ts similarity index 100% rename from examples/cross-actor-actions/src/backend/registry.ts rename to examples/cross-actor-actions/src/registry.ts diff --git a/examples/ai-agent/src/backend/server.ts b/examples/cross-actor-actions/src/server.ts similarity index 54% rename from examples/ai-agent/src/backend/server.ts rename to examples/cross-actor-actions/src/server.ts index aa0ee6ed61..508b28a999 100644 --- a/examples/ai-agent/src/backend/server.ts +++ b/examples/cross-actor-actions/src/server.ts @@ -1,3 +1,3 @@ import { registry } from "./registry"; -registry.start(); +export default registry.serve(); diff --git a/examples/cross-actor-actions/tsup.config.ts b/examples/cross-actor-actions/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/cross-actor-actions/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/cross-actor-actions/vite.config.ts b/examples/cross-actor-actions/vite.config.ts index 19155bde35..ef2f55a297 100644 --- a/examples/cross-actor-actions/vite.config.ts +++ b/examples/cross-actor-actions/vite.config.ts @@ -3,9 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/cursors-raw-websocket/src/frontend/App.tsx b/examples/cursors-raw-websocket/frontend/App.tsx similarity index 99% rename from examples/cursors-raw-websocket/src/frontend/App.tsx rename to examples/cursors-raw-websocket/frontend/App.tsx index c79fbb3573..923fc77d22 100644 --- a/examples/cursors-raw-websocket/src/frontend/App.tsx +++ b/examples/cursors-raw-websocket/frontend/App.tsx @@ -4,7 +4,7 @@ import type { CursorPosition, TextLabel, registry, -} from "../backend/registry"; +} from "../src/registry"; const rivetUrl = "http://localhost:6420"; @@ -89,6 +89,7 @@ export function App() { const actorId = await client.cursorRoom.getOrCreate(roomId).resolve(); console.log("found actor", actorId); + // FIXME: derive ws url from rivet url, should use metadata and `clientEndpoint` const wsOrigin = rivetUrl.replace(/^http/, "ws"); const wsUrl = `${wsOrigin}/gateway/${actorId}/websocket?sessionId=${encodeURIComponent(sessionId)}`; diff --git a/examples/cursors-raw-websocket/src/frontend/index.html b/examples/cursors-raw-websocket/frontend/index.html similarity index 100% rename from examples/cursors-raw-websocket/src/frontend/index.html rename to examples/cursors-raw-websocket/frontend/index.html diff --git a/examples/cursors-raw-websocket/src/frontend/main.tsx b/examples/cursors-raw-websocket/frontend/main.tsx similarity index 100% rename from examples/cursors-raw-websocket/src/frontend/main.tsx rename to examples/cursors-raw-websocket/frontend/main.tsx diff --git a/examples/cursors-raw-websocket/package.json b/examples/cursors-raw-websocket/package.json index 30c53409b3..66efbeaeff 100644 --- a/examples/cursors-raw-websocket/package.json +++ b/examples/cursors-raw-websocket/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -18,15 +22,17 @@ "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", "prompts": "^2.4.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "stableVersion": "0.8.0", diff --git a/examples/cursors-raw-websocket/src/backend/registry.ts b/examples/cursors-raw-websocket/src/registry.ts similarity index 100% rename from examples/cursors-raw-websocket/src/backend/registry.ts rename to examples/cursors-raw-websocket/src/registry.ts diff --git a/examples/cross-actor-actions/src/backend/server.ts b/examples/cursors-raw-websocket/src/server.ts similarity index 54% rename from examples/cross-actor-actions/src/backend/server.ts rename to examples/cursors-raw-websocket/src/server.ts index aa0ee6ed61..508b28a999 100644 --- a/examples/cross-actor-actions/src/backend/server.ts +++ b/examples/cursors-raw-websocket/src/server.ts @@ -1,3 +1,3 @@ import { registry } from "./registry"; -registry.start(); +export default registry.serve(); diff --git a/examples/cursors-raw-websocket/tsup.config.ts b/examples/cursors-raw-websocket/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/cursors-raw-websocket/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/cursors-raw-websocket/vite.config.ts b/examples/cursors-raw-websocket/vite.config.ts index 19155bde35..3fcb847cde 100644 --- a/examples/cursors-raw-websocket/vite.config.ts +++ b/examples/cursors-raw-websocket/vite.config.ts @@ -3,9 +3,22 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/gateway/": { + target: "http://localhost:3000", + rewriteWsOrigin: true, + ws: true, + }, + "/api/rivet/": "http://localhost:3000", + + }, }, }); diff --git a/examples/cursors/src/frontend/App.tsx b/examples/cursors/frontend/App.tsx similarity index 98% rename from examples/cursors/src/frontend/App.tsx rename to examples/cursors/frontend/App.tsx index fc7d5eb72a..6285f42ed4 100644 --- a/examples/cursors/src/frontend/App.tsx +++ b/examples/cursors/frontend/App.tsx @@ -4,9 +4,9 @@ import type { CursorPosition, TextLabel, registry, -} from "../backend/registry"; +} from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:6420"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); // Generate a random user ID const generateUserId = () => diff --git a/examples/cursors/src/frontend/index.html b/examples/cursors/frontend/index.html similarity index 100% rename from examples/cursors/src/frontend/index.html rename to examples/cursors/frontend/index.html diff --git a/examples/cursors/src/frontend/main.tsx b/examples/cursors/frontend/main.tsx similarity index 100% rename from examples/cursors/src/frontend/main.tsx rename to examples/cursors/frontend/main.tsx diff --git a/examples/cursors/package.json b/examples/cursors/package.json index d61b8b4ac3..8d7227ab40 100644 --- a/examples/cursors/package.json +++ b/examples/cursors/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -18,15 +22,17 @@ "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", "prompts": "^2.4.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "stableVersion": "0.8.0", diff --git a/examples/cursors/src/backend/server.ts b/examples/cursors/src/backend/server.ts deleted file mode 100644 index 4fc37cf4bc..0000000000 --- a/examples/cursors/src/backend/server.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); - diff --git a/examples/cursors/src/backend/registry.ts b/examples/cursors/src/registry.ts similarity index 100% rename from examples/cursors/src/backend/registry.ts rename to examples/cursors/src/registry.ts diff --git a/examples/cursors/src/server.ts b/examples/cursors/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/cursors/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/cursors/tsup.config.ts b/examples/cursors/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/cursors/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/cursors/vite.config.ts b/examples/cursors/vite.config.ts index 19155bde35..ef2f55a297 100644 --- a/examples/cursors/vite.config.ts +++ b/examples/cursors/vite.config.ts @@ -3,9 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/custom-serverless/package.json b/examples/custom-serverless/package.json index b6d96e0b27..ffc6b0eea7 100644 --- a/examples/custom-serverless/package.json +++ b/examples/custom-serverless/package.json @@ -4,18 +4,23 @@ "private": true, "type": "module", "scripts": { - "dev": "tsx src/server.ts", + "dev": "srvx --import tsx src/server.ts", "check-types": "tsc --noEmit", "connect": "tsx scripts/connect.ts", - "test": "vitest run" + "test": "vitest run", + "build": "tsup", + "start": "srvx dist/server.js" }, "devDependencies": { - "rivetkit": "workspace:*", "@types/node": "^22.13.9", + "srvx": "^0.10.0", "tsx": "^3.12.7", "typescript": "^5.7.3", "vitest": "^3.1.1" }, + "dependencies": { + "rivetkit": "workspace:*" + }, "stableVersion": "0.8.0", "template": { "technologies": [ diff --git a/examples/custom-serverless/scripts/connect.ts b/examples/custom-serverless/scripts/connect.ts index 5137d6f759..2d19e1699a 100644 --- a/examples/custom-serverless/scripts/connect.ts +++ b/examples/custom-serverless/scripts/connect.ts @@ -2,7 +2,7 @@ import { createClient } from "rivetkit/client"; import type { Registry } from "../src/registry"; async function main() { - const client = createClient("http://localhost:6420"); + const client = createClient("http://localhost:3000/api/rivet"); const counter = client.counter.getOrCreate(); diff --git a/examples/custom-serverless/src/server.ts b/examples/custom-serverless/src/server.ts index 9dc17c0304..508b28a999 100644 --- a/examples/custom-serverless/src/server.ts +++ b/examples/custom-serverless/src/server.ts @@ -1,6 +1,3 @@ import { registry } from "./registry"; -registry.start({ - runnerKind: "serverless", - autoConfigureServerless: { url: "http://localhost:8080" }, -}); +export default registry.serve(); diff --git a/examples/custom-serverless/tsup.config.ts b/examples/custom-serverless/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/custom-serverless/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/deno/package.json b/examples/deno/package.json index d324e9c6d0..4f167974e9 100644 --- a/examples/deno/package.json +++ b/examples/deno/package.json @@ -7,7 +7,8 @@ "scripts": { "dev": "deno run --allow-all src/server.ts", "check-types": "command -v deno >/dev/null 2>&1 && deno task check-types || echo 'Skipping deno check-types (deno not installed)'", - "connect": "deno run --allow-all scripts/connect.ts" + "connect": "deno run --allow-all scripts/connect.ts", + "build": "tsc" }, "devDependencies": { "@types/deno": "^2.3.0", diff --git a/examples/deno/src/server.ts b/examples/deno/src/server.ts index 40f8a5440c..5f15f80492 100644 --- a/examples/deno/src/server.ts +++ b/examples/deno/src/server.ts @@ -1,13 +1,3 @@ -import { upgradeWebSocket } from "hono/deno"; import { registry } from "./registry.ts"; -const { fetch } = registry.start({ - // Deno requires using Deno.serve - disableDefaultServer: true, - overrideServerAddress: "http://localhost:8080", - // Specify Deno-specific upgradeWebSocket - getUpgradeWebSocket: () => upgradeWebSocket, -}); - -// Start server -Deno.serve({ port: 8080 }, fetch); +export default registry.serve(); diff --git a/examples/drizzle/package.json b/examples/drizzle/package.json index 15baec4417..c15dcdf9c3 100644 --- a/examples/drizzle/package.json +++ b/examples/drizzle/package.json @@ -5,7 +5,8 @@ "type": "module", "scripts": { "dev": "tsx --watch src/server.ts", - "check-types": "tsc --noEmit" + "check-types": "tsc --noEmit", + "build": "tsc" }, "devDependencies": { "@types/node": "^22.13.9", diff --git a/examples/elysia/package.json b/examples/elysia/package.json index 71158c3aa2..65651910e0 100644 --- a/examples/elysia/package.json +++ b/examples/elysia/package.json @@ -5,7 +5,9 @@ "type": "module", "scripts": { "dev": "bun --watch src/server.ts", - "check-types": "tsc --noEmit" + "start": "bun src/server.ts", + "check-types": "tsc --noEmit", + "build": "tsc" }, "devDependencies": { "@types/node": "^22.13.9", diff --git a/examples/elysia/src/server.ts b/examples/elysia/src/server.ts index a8a48b60d8..e11d1fb1b4 100644 --- a/examples/elysia/src/server.ts +++ b/examples/elysia/src/server.ts @@ -1,7 +1,9 @@ import { Elysia } from "elysia"; +import { createClient } from "rivetkit/client"; import { registry } from "./registry"; -const { client } = registry.start(); +registry.startRunner(); +const client = createClient(); // Setup router new Elysia() diff --git a/examples/experimental-durable-streams-ai-agent/src/frontend/App.css b/examples/experimental-durable-streams-ai-agent/frontend/App.css similarity index 100% rename from examples/experimental-durable-streams-ai-agent/src/frontend/App.css rename to examples/experimental-durable-streams-ai-agent/frontend/App.css diff --git a/examples/experimental-durable-streams-ai-agent/src/frontend/App.tsx b/examples/experimental-durable-streams-ai-agent/frontend/App.tsx similarity index 98% rename from examples/experimental-durable-streams-ai-agent/src/frontend/App.tsx rename to examples/experimental-durable-streams-ai-agent/frontend/App.tsx index 8f95389faf..8c0f3e2c94 100644 --- a/examples/experimental-durable-streams-ai-agent/src/frontend/App.tsx +++ b/examples/experimental-durable-streams-ai-agent/frontend/App.tsx @@ -1,11 +1,11 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useState, useRef, useCallback } from "react"; -import { registry } from "../backend/registry"; -import { type PromptMessage, type ResponseChunk } from "../shared/types"; -import { getStreams, getStreamPaths } from "../shared/streams"; +import { registry } from "../src/registry"; +import { type PromptMessage, type ResponseChunk } from "../src/shared/types"; +import { getStreams, getStreamPaths } from "../src/shared/streams"; import "./App.css"; -const { useActor } = createRivetKit("http://localhost:6420"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); interface Message { id: string; diff --git a/examples/experimental-durable-streams-ai-agent/src/frontend/index.html b/examples/experimental-durable-streams-ai-agent/frontend/index.html similarity index 100% rename from examples/experimental-durable-streams-ai-agent/src/frontend/index.html rename to examples/experimental-durable-streams-ai-agent/frontend/index.html diff --git a/examples/experimental-durable-streams-ai-agent/src/frontend/main.tsx b/examples/experimental-durable-streams-ai-agent/frontend/main.tsx similarity index 100% rename from examples/experimental-durable-streams-ai-agent/src/frontend/main.tsx rename to examples/experimental-durable-streams-ai-agent/frontend/main.tsx diff --git a/examples/experimental-durable-streams-ai-agent/package.json b/examples/experimental-durable-streams-ai-agent/package.json index 3c32a48880..ff4e6fcbb8 100644 --- a/examples/experimental-durable-streams-ai-agent/package.json +++ b/examples/experimental-durable-streams-ai-agent/package.json @@ -4,13 +4,16 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:streams\" \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:streams": "tsx --watch src/streams-server/server.ts", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", - "build": "vite build", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "dev:streams": "tsx --watch src/streams-server/server.ts", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -18,7 +21,8 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", - "rivetkit": "workspace:*", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", @@ -33,6 +37,7 @@ "ai": "^4.0.38", "react": "^18.2.0", "react-dom": "^18.2.0", + "rivetkit": "workspace:*", "zod": "^4.1.0" }, "template": { diff --git a/examples/experimental-durable-streams-ai-agent/src/backend/registry.ts b/examples/experimental-durable-streams-ai-agent/src/registry.ts similarity index 97% rename from examples/experimental-durable-streams-ai-agent/src/backend/registry.ts rename to examples/experimental-durable-streams-ai-agent/src/registry.ts index 62e36838f8..7c5936878a 100644 --- a/examples/experimental-durable-streams-ai-agent/src/backend/registry.ts +++ b/examples/experimental-durable-streams-ai-agent/src/registry.ts @@ -2,8 +2,8 @@ import { anthropic } from "@ai-sdk/anthropic"; import type { DurableStream } from "@durable-streams/client"; import { streamText } from "ai"; import { type ActorContextOf, actor, setup } from "rivetkit"; -import { getStreams } from "../shared/streams"; -import type { PromptMessage, ResponseChunk } from "../shared/types"; +import { getStreams } from "./shared/streams"; +import type { PromptMessage, ResponseChunk } from "./shared/types"; export const aiAgent = actor({ createState: (_c, input: { conversationId: string }) => ({ diff --git a/examples/experimental-durable-streams-ai-agent/src/backend/server.ts b/examples/experimental-durable-streams-ai-agent/src/server.ts similarity index 82% rename from examples/experimental-durable-streams-ai-agent/src/backend/server.ts rename to examples/experimental-durable-streams-ai-agent/src/server.ts index bedbb22ec2..19d3331f77 100644 --- a/examples/experimental-durable-streams-ai-agent/src/backend/server.ts +++ b/examples/experimental-durable-streams-ai-agent/src/server.ts @@ -4,4 +4,4 @@ if (!process.env.ANTHROPIC_API_KEY) { throw new Error("ANTHROPIC_API_KEY environment variable is required"); } -registry.start(); +export default registry.serve(); diff --git a/examples/experimental-durable-streams-ai-agent/tsup.config.ts b/examples/experimental-durable-streams-ai-agent/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/experimental-durable-streams-ai-agent/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/experimental-durable-streams-ai-agent/vite.config.ts b/examples/experimental-durable-streams-ai-agent/vite.config.ts index 97081aa8f2..ef2f55a297 100644 --- a/examples/experimental-durable-streams-ai-agent/vite.config.ts +++ b/examples/experimental-durable-streams-ai-agent/vite.config.ts @@ -3,8 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/express/package.json b/examples/express/package.json index e99a61756a..befcca9020 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -6,6 +6,7 @@ "scripts": { "build": "tsc", "dev": "tsx --watch src/server.ts", + "start": "tsx src/server.ts", "check-types": "tsc --noEmit" }, "devDependencies": { diff --git a/examples/express/src/server.ts b/examples/express/src/server.ts index a53eccbefb..481442cee7 100644 --- a/examples/express/src/server.ts +++ b/examples/express/src/server.ts @@ -1,8 +1,10 @@ import express from "express"; +import { createClient } from "rivetkit/client"; import { registry } from "./registry"; // Start RivetKit -const { client } = registry.start(); +registry.startRunner(); +const client = createClient(); // Setup router const app = express(); diff --git a/examples/react/src/frontend/App.tsx b/examples/hono-bun/frontend/App.tsx similarity index 83% rename from examples/react/src/frontend/App.tsx rename to examples/hono-bun/frontend/App.tsx index 0fbc28b278..5deaf0d08c 100644 --- a/examples/react/src/frontend/App.tsx +++ b/examples/hono-bun/frontend/App.tsx @@ -1,8 +1,8 @@ import { createRivetKit } from "@rivetkit/react"; import { useState } from "react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:8080"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); function App() { const [count, setCount] = useState(0); diff --git a/examples/hono-bun/src/frontend/index.html b/examples/hono-bun/frontend/index.html similarity index 100% rename from examples/hono-bun/src/frontend/index.html rename to examples/hono-bun/frontend/index.html diff --git a/examples/hono-bun/src/frontend/main.tsx b/examples/hono-bun/frontend/main.tsx similarity index 100% rename from examples/hono-bun/src/frontend/main.tsx rename to examples/hono-bun/frontend/main.tsx diff --git a/examples/hono-bun/package.json b/examples/hono-bun/package.json index 9ade9d1eb7..6893534cc5 100644 --- a/examples/hono-bun/package.json +++ b/examples/hono-bun/package.json @@ -4,12 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "bun --watch src/backend/server.ts", + "dev:backend": "bun --watch src/server.ts", "dev:frontend": "vite", - "build": "vite build", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "connect": "tsx scripts/connect.ts" + "connect": "tsx scripts/connect.ts", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/bun": "^1.1.15", @@ -17,7 +20,8 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", - "rivetkit": "workspace:*", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0" @@ -26,7 +30,8 @@ "@rivetkit/react": "workspace:*", "hono": "^4.7.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "rivetkit": "workspace:*" }, "keywords": [ "rivetkit", @@ -46,7 +51,8 @@ "tags": [ "starter" ], - "noFrontend": true + "noFrontend": false, + "frontendPort": 5173 }, "license": "MIT" } diff --git a/examples/hono-bun/scripts/connect.ts b/examples/hono-bun/scripts/connect.ts index 8ce6b7516f..fa43fac613 100644 --- a/examples/hono-bun/scripts/connect.ts +++ b/examples/hono-bun/scripts/connect.ts @@ -1,8 +1,10 @@ import { createClient } from "rivetkit/client"; -import type { Registry } from "../src/registry"; +import type { registry } from "../src/registry"; async function main() { - const client = createClient("http://localhost:8080/rivet"); + const client = createClient( + "http://localhost:8080/api/rivet", + ); const counter = client.counter.getOrCreate().connect(); diff --git a/examples/hono-bun/src/backend/server.ts b/examples/hono-bun/src/backend/server.ts deleted file mode 100644 index 959a9f89b5..0000000000 --- a/examples/hono-bun/src/backend/server.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Hono } from "hono"; -import { upgradeWebSocket, websocket } from "hono/bun"; -import { cors } from "hono/cors"; -import { registry } from "./registry"; - -const { client, fetch } = registry.start({ - basePath: "/rivet", - // Hono requires using Hono.serve - disableDefaultServer: true, - // Override endpoint - overrideServerAddress: "http://localhost:8080/rivet", - // Specify Hono-specific upgradeWebSocket - getUpgradeWebSocket: () => upgradeWebSocket, -}); - -// Setup router -const app = new Hono(); - -app.use( - "*", - cors({ - origin: "http://localhost:5173", - credentials: true, - }), -); - -app.use("/rivet/*", async (c) => { - return await fetch(c.req.raw, c.env); -}); - -// Example HTTP endpoint -app.post("/increment/:name", async (c) => { - const name = c.req.param("name"); - - const counter = client.counter.getOrCreate(name); - const newCount = await counter.increment(1); - - return c.text(`New Count: ${newCount}`); -}); - -Bun.serve({ - port: 8080, - fetch: app.fetch, - websocket, -}); - -console.log("Listening at http://localhost:8080"); diff --git a/examples/hono-bun/src/backend/registry.ts b/examples/hono-bun/src/registry.ts similarity index 100% rename from examples/hono-bun/src/backend/registry.ts rename to examples/hono-bun/src/registry.ts diff --git a/examples/hono-bun/src/server.ts b/examples/hono-bun/src/server.ts new file mode 100644 index 0000000000..680f2f517d --- /dev/null +++ b/examples/hono-bun/src/server.ts @@ -0,0 +1,33 @@ +import { Hono } from "hono"; +import { cors } from "hono/cors"; +import { createClient } from "rivetkit/client"; +import { registry } from "./registry"; + +const client = createClient(); + +// Setup router +const app = new Hono(); + +app.use( + "*", + cors({ + origin: "http://localhost:5173", + credentials: true, + }), +); + +app.all("/api/rivet/*", (c) => registry.handler(c.req.raw)); + +// Example HTTP endpoint +app.post("/increment/:name", async (c) => { + const name = c.req.param("name"); + + const counter = client.counter.getOrCreate(name); + const newCount = await counter.increment(1); + + return c.text(`New Count: ${newCount}`); +}); + +export default app; + +console.log("Listening at http://localhost:6420"); diff --git a/examples/hono-bun/tsup.config.ts b/examples/hono-bun/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/hono-bun/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/hono-bun/vite.config.ts b/examples/hono-bun/vite.config.ts index 2abc7c6f82..ef2f55a297 100644 --- a/examples/hono-bun/vite.config.ts +++ b/examples/hono-bun/vite.config.ts @@ -3,11 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { - outDir: "../../dist", + outDir: "dist", + emptyOutDir: true, }, server: { host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/hono-bun/src/frontend/App.tsx b/examples/hono-react/frontend/App.tsx similarity index 83% rename from examples/hono-bun/src/frontend/App.tsx rename to examples/hono-react/frontend/App.tsx index d53ca6a0e3..5deaf0d08c 100644 --- a/examples/hono-bun/src/frontend/App.tsx +++ b/examples/hono-react/frontend/App.tsx @@ -1,8 +1,8 @@ import { createRivetKit } from "@rivetkit/react"; import { useState } from "react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:8080/rivet"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); function App() { const [count, setCount] = useState(0); diff --git a/examples/hono-react/src/frontend/index.html b/examples/hono-react/frontend/index.html similarity index 100% rename from examples/hono-react/src/frontend/index.html rename to examples/hono-react/frontend/index.html diff --git a/examples/hono-react/src/frontend/main.tsx b/examples/hono-react/frontend/main.tsx similarity index 100% rename from examples/hono-react/src/frontend/main.tsx rename to examples/hono-react/frontend/main.tsx diff --git a/examples/hono-react/package.json b/examples/hono-react/package.json index 6cfdbb4b6e..0a107c1324 100644 --- a/examples/hono-react/package.json +++ b/examples/hono-react/package.json @@ -4,12 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", - "build": "vite build", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -17,7 +20,8 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", - "rivetkit": "workspace:*", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", @@ -28,7 +32,8 @@ "@rivetkit/react": "workspace:*", "hono": "^4.7.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "rivetkit": "workspace:*" }, "stableVersion": "0.8.0", "template": { diff --git a/examples/hono-react/src/backend/registry.ts b/examples/hono-react/src/registry.ts similarity index 100% rename from examples/hono-react/src/backend/registry.ts rename to examples/hono-react/src/registry.ts diff --git a/examples/hono-react/src/backend/server.ts b/examples/hono-react/src/server.ts similarity index 57% rename from examples/hono-react/src/backend/server.ts rename to examples/hono-react/src/server.ts index b41bff93e1..4652dccc8c 100644 --- a/examples/hono-react/src/backend/server.ts +++ b/examples/hono-react/src/server.ts @@ -1,8 +1,9 @@ -import { serve } from "@hono/node-server"; import { Hono } from "hono"; +import { createClient } from "rivetkit/client"; import { registry } from "./registry"; -const { client } = registry.start(); +registry.startRunner(); +const client = createClient(); // Setup router const app = new Hono(); @@ -14,8 +15,9 @@ app.post("/increment/:name", async (c) => { const counter = client.counter.getOrCreate(name); const newCount = await counter.increment(1); - return c.text(`New Count: ${newCount}`); + return c.text(String(newCount)); }); -serve({ fetch: app.fetch, port: 8080 }); -console.log("Listening on port 8080"); +app.all("/api/rivet/*", (c) => registry.handler(c.req.raw)); + +export default app; diff --git a/examples/hono-react/tsup.config.ts b/examples/hono-react/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/hono-react/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/hono-react/vite.config.ts b/examples/hono-react/vite.config.ts index 2abc7c6f82..ef2f55a297 100644 --- a/examples/hono-react/vite.config.ts +++ b/examples/hono-react/vite.config.ts @@ -3,11 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { - outDir: "../../dist", + outDir: "dist", + emptyOutDir: true, }, server: { host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/hono/package.json b/examples/hono/package.json index 33208085c4..4d3ff9939b 100644 --- a/examples/hono/package.json +++ b/examples/hono/package.json @@ -5,8 +5,10 @@ "type": "module", "scripts": { "dev": "tsx --watch src/server.ts", + "start": "tsx src/server.ts", "check-types": "tsc --noEmit", - "client": "tsx scripts/client.ts" + "client": "tsx scripts/client.ts", + "build": "tsc" }, "devDependencies": { "@hono/node-server": "^1.19.1", diff --git a/examples/hono/src/server.ts b/examples/hono/src/server.ts index b33527431f..1a01b91538 100644 --- a/examples/hono/src/server.ts +++ b/examples/hono/src/server.ts @@ -1,9 +1,11 @@ import { serve } from "@hono/node-server"; import { Hono } from "hono"; +import { createClient } from "rivetkit/client"; import { registry } from "./registry"; // Start RivetKit -const { client } = registry.start(); +registry.startRunner(); +const client = createClient(); // Setup router const app = new Hono(); diff --git a/examples/kitchen-sink/src/frontend/App.tsx b/examples/kitchen-sink/frontend/App.tsx similarity index 96% rename from examples/kitchen-sink/src/frontend/App.tsx rename to examples/kitchen-sink/frontend/App.tsx index df59ac96c2..cb0a25ee2e 100644 --- a/examples/kitchen-sink/src/frontend/App.tsx +++ b/examples/kitchen-sink/frontend/App.tsx @@ -1,6 +1,6 @@ import { createClient } from "@rivetkit/react"; import { useState, useMemo, useEffect } from "react"; -import type { Registry } from "../backend/registry"; +import type { Registry } from "../src/registry"; import ConnectionScreen from "./components/ConnectionScreen"; import InteractionScreen from "./components/InteractionScreen"; @@ -42,7 +42,7 @@ function App() { if (!state) return null; return createClient({ - endpoint: "http://localhost:6420", + endpoint: `${window.location.origin}/api/rivet`, encoding: state.encoding, }); }, [state?.encoding]); diff --git a/examples/kitchen-sink/src/frontend/components/ConnectionScreen.tsx b/examples/kitchen-sink/frontend/components/ConnectionScreen.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/ConnectionScreen.tsx rename to examples/kitchen-sink/frontend/components/ConnectionScreen.tsx diff --git a/examples/kitchen-sink/src/frontend/components/InteractionScreen.tsx b/examples/kitchen-sink/frontend/components/InteractionScreen.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/InteractionScreen.tsx rename to examples/kitchen-sink/frontend/components/InteractionScreen.tsx diff --git a/examples/kitchen-sink/src/frontend/components/tabs/ActionsTab.tsx b/examples/kitchen-sink/frontend/components/tabs/ActionsTab.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/tabs/ActionsTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/ActionsTab.tsx diff --git a/examples/kitchen-sink/src/frontend/components/tabs/ConnectionsTab.tsx b/examples/kitchen-sink/frontend/components/tabs/ConnectionsTab.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/tabs/ConnectionsTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/ConnectionsTab.tsx diff --git a/examples/kitchen-sink/src/frontend/components/tabs/EventsTab.tsx b/examples/kitchen-sink/frontend/components/tabs/EventsTab.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/tabs/EventsTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/EventsTab.tsx diff --git a/examples/kitchen-sink/src/frontend/components/tabs/MetadataTab.tsx b/examples/kitchen-sink/frontend/components/tabs/MetadataTab.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/tabs/MetadataTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/MetadataTab.tsx diff --git a/examples/kitchen-sink/src/frontend/components/tabs/RawHttpTab.tsx b/examples/kitchen-sink/frontend/components/tabs/RawHttpTab.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/tabs/RawHttpTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/RawHttpTab.tsx diff --git a/examples/kitchen-sink/src/frontend/components/tabs/RawWebSocketTab.tsx b/examples/kitchen-sink/frontend/components/tabs/RawWebSocketTab.tsx similarity index 99% rename from examples/kitchen-sink/src/frontend/components/tabs/RawWebSocketTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/RawWebSocketTab.tsx index fb7a7bdce6..db6e3fd211 100644 --- a/examples/kitchen-sink/src/frontend/components/tabs/RawWebSocketTab.tsx +++ b/examples/kitchen-sink/frontend/components/tabs/RawWebSocketTab.tsx @@ -32,6 +32,7 @@ export default function RawWebSocketTab({ state }: TabProps) { const actorPath = state.actorKey ? `/actors/${state.actorName}/${encodeURIComponent(state.actorKey)}/ws` : `/actors/${state.actorName}/ws`; + // FIXME: use clientEndpoint from metadata return `${wsProtocol}//localhost:8080${actorPath}`; }; diff --git a/examples/kitchen-sink/src/frontend/components/tabs/ScheduleTab.tsx b/examples/kitchen-sink/frontend/components/tabs/ScheduleTab.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/tabs/ScheduleTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/ScheduleTab.tsx diff --git a/examples/kitchen-sink/src/frontend/components/tabs/SleepTab.tsx b/examples/kitchen-sink/frontend/components/tabs/SleepTab.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/components/tabs/SleepTab.tsx rename to examples/kitchen-sink/frontend/components/tabs/SleepTab.tsx diff --git a/examples/kitchen-sink/src/frontend/index.css b/examples/kitchen-sink/frontend/index.css similarity index 100% rename from examples/kitchen-sink/src/frontend/index.css rename to examples/kitchen-sink/frontend/index.css diff --git a/examples/kitchen-sink/index.html b/examples/kitchen-sink/frontend/index.html similarity index 82% rename from examples/kitchen-sink/index.html rename to examples/kitchen-sink/frontend/index.html index 04d64ac542..d85e56fc34 100644 --- a/examples/kitchen-sink/index.html +++ b/examples/kitchen-sink/frontend/index.html @@ -8,6 +8,6 @@
- + \ No newline at end of file diff --git a/examples/kitchen-sink/src/frontend/main.tsx b/examples/kitchen-sink/frontend/main.tsx similarity index 100% rename from examples/kitchen-sink/src/frontend/main.tsx rename to examples/kitchen-sink/frontend/main.tsx diff --git a/examples/kitchen-sink/package.json b/examples/kitchen-sink/package.json index 0eb7e8969c..ebe0c6479d 100644 --- a/examples/kitchen-sink/package.json +++ b/examples/kitchen-sink/package.json @@ -4,24 +4,29 @@ "version": "2.0.21", "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", - "build": "tsc && vite build", - "preview": "vite preview", - "check-types": "tsc --noEmit" + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=dist dist/server.js", + "check-types": "tsc --noEmit", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "dependencies": { "@rivetkit/react": "workspace:*", - "rivetkit": "workspace:*", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "rivetkit": "workspace:*" }, "devDependencies": { "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", "@vitejs/plugin-react": "^4.2.1", + "@types/node": "^22.13.9", "concurrently": "^8.2.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^4.7.1", "typescript": "^5.2.2", "vite": "^5.2.0" diff --git a/examples/kitchen-sink/src/backend/actors/demo.ts b/examples/kitchen-sink/src/actors/demo.ts similarity index 100% rename from examples/kitchen-sink/src/backend/actors/demo.ts rename to examples/kitchen-sink/src/actors/demo.ts diff --git a/examples/kitchen-sink/src/backend/actors/http.ts b/examples/kitchen-sink/src/actors/http.ts similarity index 100% rename from examples/kitchen-sink/src/backend/actors/http.ts rename to examples/kitchen-sink/src/actors/http.ts diff --git a/examples/kitchen-sink/src/backend/actors/websocket.ts b/examples/kitchen-sink/src/actors/websocket.ts similarity index 100% rename from examples/kitchen-sink/src/backend/actors/websocket.ts rename to examples/kitchen-sink/src/actors/websocket.ts diff --git a/examples/kitchen-sink/src/backend/server.ts b/examples/kitchen-sink/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/kitchen-sink/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/kitchen-sink/src/backend/registry.ts b/examples/kitchen-sink/src/registry.ts similarity index 100% rename from examples/kitchen-sink/src/backend/registry.ts rename to examples/kitchen-sink/src/registry.ts diff --git a/examples/kitchen-sink/src/server.ts b/examples/kitchen-sink/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/kitchen-sink/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/kitchen-sink/tsup.config.ts b/examples/kitchen-sink/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/kitchen-sink/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/kitchen-sink/vite.config.ts b/examples/kitchen-sink/vite.config.ts index d1fef97172..ef2f55a297 100644 --- a/examples/kitchen-sink/vite.config.ts +++ b/examples/kitchen-sink/vite.config.ts @@ -3,8 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/multi-region/src/frontend/App.tsx b/examples/multi-region/frontend/App.tsx similarity index 97% rename from examples/multi-region/src/frontend/App.tsx rename to examples/multi-region/frontend/App.tsx index 3ad874459f..079126621d 100644 --- a/examples/multi-region/src/frontend/App.tsx +++ b/examples/multi-region/frontend/App.tsx @@ -1,8 +1,8 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useState } from "react"; -import type { Player, registry } from "../backend/registry"; +import type { Player, registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:8080"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); export function App() { const [region, setRegion] = useState("us-east"); diff --git a/examples/multi-region/src/frontend/index.html b/examples/multi-region/frontend/index.html similarity index 100% rename from examples/multi-region/src/frontend/index.html rename to examples/multi-region/frontend/index.html diff --git a/examples/multi-region/src/frontend/main.tsx b/examples/multi-region/frontend/main.tsx similarity index 100% rename from examples/multi-region/src/frontend/main.tsx rename to examples/multi-region/frontend/main.tsx diff --git a/examples/multi-region/package.json b/examples/multi-region/package.json index 01d9aaf56d..dddef0cb78 100644 --- a/examples/multi-region/package.json +++ b/examples/multi-region/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -16,15 +20,17 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "template": { @@ -33,7 +39,7 @@ ], "tags": [], "priority": 1000, - "frontendPort": 3000 + "frontendPort": 5173 }, "license": "MIT" } diff --git a/examples/multi-region/src/backend/server.ts b/examples/multi-region/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/multi-region/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/multi-region/src/backend/registry.ts b/examples/multi-region/src/registry.ts similarity index 100% rename from examples/multi-region/src/backend/registry.ts rename to examples/multi-region/src/registry.ts diff --git a/examples/multi-region/src/server.ts b/examples/multi-region/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/multi-region/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/multi-region/src/backend/types.ts b/examples/multi-region/src/types.ts similarity index 100% rename from examples/multi-region/src/backend/types.ts rename to examples/multi-region/src/types.ts diff --git a/examples/multi-region/tsup.config.ts b/examples/multi-region/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/multi-region/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/multi-region/vite.config.ts b/examples/multi-region/vite.config.ts index 5a22891184..ef2f55a297 100644 --- a/examples/multi-region/vite.config.ts +++ b/examples/multi-region/vite.config.ts @@ -3,13 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", - server: { - host: "0.0.0.0", - port: 3000, - }, + root: "frontend", build: { - outDir: "../../dist", + outDir: "dist", emptyOutDir: true, }, + server: { + host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, + }, }); diff --git a/examples/native-websockets/src/frontend/App.tsx b/examples/native-websockets/frontend/App.tsx similarity index 97% rename from examples/native-websockets/src/frontend/App.tsx rename to examples/native-websockets/frontend/App.tsx index 3190adc17b..492aeccdbd 100644 --- a/examples/native-websockets/src/frontend/App.tsx +++ b/examples/native-websockets/frontend/App.tsx @@ -1,8 +1,9 @@ import { createClient } from "@rivetkit/react"; import { useEffect, useState } from "react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; -const rivetUrl = "http://localhost:6420"; +// FIXME: use metadata's clientEndpoint +const rivetUrl = `${window.location.origin}/api/rivet`; const client = createClient(rivetUrl); diff --git a/examples/native-websockets/src/frontend/index.html b/examples/native-websockets/frontend/index.html similarity index 100% rename from examples/native-websockets/src/frontend/index.html rename to examples/native-websockets/frontend/index.html diff --git a/examples/native-websockets/src/frontend/main.tsx b/examples/native-websockets/frontend/main.tsx similarity index 100% rename from examples/native-websockets/src/frontend/main.tsx rename to examples/native-websockets/frontend/main.tsx diff --git a/examples/native-websockets/package.json b/examples/native-websockets/package.json index 9c8088a444..a43b6ed54e 100644 --- a/examples/native-websockets/package.json +++ b/examples/native-websockets/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -17,16 +21,18 @@ "@types/ws": "^8.5.10", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", "vitest": "^3.1.1", - "ws": "^8.16.0", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "ws": "^8.16.0" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "template": { diff --git a/examples/native-websockets/src/backend/server.ts b/examples/native-websockets/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/native-websockets/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/native-websockets/src/backend/registry.ts b/examples/native-websockets/src/registry.ts similarity index 100% rename from examples/native-websockets/src/backend/registry.ts rename to examples/native-websockets/src/registry.ts diff --git a/examples/native-websockets/src/server.ts b/examples/native-websockets/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/native-websockets/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/native-websockets/tsup.config.ts b/examples/native-websockets/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/native-websockets/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/native-websockets/vite.config.ts b/examples/native-websockets/vite.config.ts index 19155bde35..ef2f55a297 100644 --- a/examples/native-websockets/vite.config.ts +++ b/examples/native-websockets/vite.config.ts @@ -3,9 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/node/package.json b/examples/node/package.json index 321f5183f3..dda309a2d5 100644 --- a/examples/node/package.json +++ b/examples/node/package.json @@ -4,13 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "tsx --watch src/server.ts", + "dev": "npx srvx --import tsx src/server.ts", + "start": "npx srvx --import tsx src/server.ts", "check-types": "tsc --noEmit", - "build": "tsc", + "build": "tsup", "client": "tsx scripts/client.ts" }, "devDependencies": { "@types/node": "^22.13.9", + "srvx": "^0.10.0", "tsx": "^3.12.7", "typescript": "^5.5.2" }, diff --git a/examples/node/src/server.ts b/examples/node/src/server.ts index 4fc37cf4bc..508b28a999 100644 --- a/examples/node/src/server.ts +++ b/examples/node/src/server.ts @@ -1,4 +1,3 @@ import { registry } from "./registry"; -registry.start(); - +export default registry.serve(); diff --git a/examples/node/tsup.config.ts b/examples/node/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/node/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/raw-fetch-handler/src/frontend/App.tsx b/examples/raw-fetch-handler/frontend/App.tsx similarity index 93% rename from examples/raw-fetch-handler/src/frontend/App.tsx rename to examples/raw-fetch-handler/frontend/App.tsx index fef7c1bcd4..cff918e2c1 100644 --- a/examples/raw-fetch-handler/src/frontend/App.tsx +++ b/examples/raw-fetch-handler/frontend/App.tsx @@ -1,9 +1,9 @@ import { useState, useEffect } from "react"; import { createClient } from "@rivetkit/react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; // Create a client that connects to the running server -const client = createClient("http://localhost:8080"); +const client = createClient(`${window.location.origin}/api/rivet`); function Counter({ name }: { name: string }) { const [count, setCount] = useState(null); @@ -33,6 +33,7 @@ function Counter({ name }: { name: string }) { setLoading(true); try { // Method 2: Using the forward endpoint + // FIXME: Use metadata's clientEndpoint const response = await fetch(`http://localhost:8080/forward/${name}/increment`, { method: "POST", }); diff --git a/examples/raw-fetch-handler/src/frontend/index.html b/examples/raw-fetch-handler/frontend/index.html similarity index 100% rename from examples/raw-fetch-handler/src/frontend/index.html rename to examples/raw-fetch-handler/frontend/index.html diff --git a/examples/raw-fetch-handler/src/frontend/main.tsx b/examples/raw-fetch-handler/frontend/main.tsx similarity index 100% rename from examples/raw-fetch-handler/src/frontend/main.tsx rename to examples/raw-fetch-handler/frontend/main.tsx diff --git a/examples/raw-fetch-handler/package.json b/examples/raw-fetch-handler/package.json index b5020d127a..5707faae90 100644 --- a/examples/raw-fetch-handler/package.json +++ b/examples/raw-fetch-handler/package.json @@ -4,21 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"tsx --watch src/backend/server.ts\" \"vite\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", - "build": "vite build", - "preview": "vite preview", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest" - }, - "dependencies": { - "@hono/node-server": "^1.14.0", - "rivetkit": "workspace:*", - "@rivetkit/react": "workspace:*", - "hono": "^4.6.18", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "test": "vitest", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.10.6", @@ -26,11 +20,21 @@ "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", "concurrently": "^9.1.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^4.20.0", "typescript": "^5.7.3", "vite": "^5.4.19", "vitest": "^3.1.1" }, + "dependencies": { + "@hono/node-server": "^1.14.0", + "@rivetkit/react": "workspace:*", + "hono": "^4.6.18", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "rivetkit": "workspace:*" + }, "template": { "technologies": [ "typescript" diff --git a/examples/raw-fetch-handler/src/backend/registry.ts b/examples/raw-fetch-handler/src/registry.ts similarity index 100% rename from examples/raw-fetch-handler/src/backend/registry.ts rename to examples/raw-fetch-handler/src/registry.ts diff --git a/examples/raw-fetch-handler/src/backend/server.ts b/examples/raw-fetch-handler/src/server.ts similarity index 84% rename from examples/raw-fetch-handler/src/backend/server.ts rename to examples/raw-fetch-handler/src/server.ts index d0a02cf664..78004a3cbf 100644 --- a/examples/raw-fetch-handler/src/backend/server.ts +++ b/examples/raw-fetch-handler/src/server.ts @@ -1,10 +1,11 @@ -import { serve } from "@hono/node-server"; import { Hono } from "hono"; import { cors } from "hono/cors"; +import { createClient } from "rivetkit/client"; import { registry } from "./registry"; // Start RivetKit -const { client } = registry.start(); +registry.startRunner(); +const client = createClient(); // Setup router const app = new Hono(); @@ -36,7 +37,6 @@ app.all("/forward/:name/*", async (c) => { return response; }); -serve({ fetch: app.fetch, port: 8080 }); -console.log("Listening on port 8080"); +export default app; export { client }; diff --git a/examples/raw-fetch-handler/tsup.config.ts b/examples/raw-fetch-handler/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/raw-fetch-handler/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/raw-fetch-handler/vite.config.ts b/examples/raw-fetch-handler/vite.config.ts index 2abc7c6f82..ef2f55a297 100644 --- a/examples/raw-fetch-handler/vite.config.ts +++ b/examples/raw-fetch-handler/vite.config.ts @@ -3,11 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { - outDir: "../../dist", + outDir: "dist", + emptyOutDir: true, }, server: { host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/raw-websocket-handler-proxy/src/frontend/App.tsx b/examples/raw-websocket-handler-proxy/frontend/App.tsx similarity index 95% rename from examples/raw-websocket-handler-proxy/src/frontend/App.tsx rename to examples/raw-websocket-handler-proxy/frontend/App.tsx index ba25e4d295..01431a546e 100644 --- a/examples/raw-websocket-handler-proxy/src/frontend/App.tsx +++ b/examples/raw-websocket-handler-proxy/frontend/App.tsx @@ -16,7 +16,8 @@ export default function App() { `conn_params.${encodeURIComponent(JSON.stringify({ apiKey: "your-api-key" }))}` ]; - const ws = new WebSocket("ws://localhost:8080/registry/actors/chatRoom/ws/", protocols); + // FIXME: Use metadata's clientEndpoint + const ws = new WebSocket("ws://localhost:6420/api/rivet/actors/chatRoom/ws/", protocols); ws.onopen = () => { setIsConnected(true); diff --git a/examples/raw-websocket-handler-proxy/src/frontend/index.html b/examples/raw-websocket-handler-proxy/frontend/index.html similarity index 100% rename from examples/raw-websocket-handler-proxy/src/frontend/index.html rename to examples/raw-websocket-handler-proxy/frontend/index.html diff --git a/examples/raw-websocket-handler-proxy/src/frontend/main.tsx b/examples/raw-websocket-handler-proxy/frontend/main.tsx similarity index 100% rename from examples/raw-websocket-handler-proxy/src/frontend/main.tsx rename to examples/raw-websocket-handler-proxy/frontend/main.tsx diff --git a/examples/raw-websocket-handler-proxy/package.json b/examples/raw-websocket-handler-proxy/package.json index f8c6b836f7..52b3b3dbdb 100644 --- a/examples/raw-websocket-handler-proxy/package.json +++ b/examples/raw-websocket-handler-proxy/package.json @@ -11,20 +11,15 @@ "realtime" ], "scripts": { - "dev": "concurrently \"npm:dev:*\"", - "dev:backend": "tsx watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" - }, - "dependencies": { - "@hono/node-server": "^1.14.0", - "@hono/node-ws": "^1.1.1", - "rivetkit": "workspace:*", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "hono": "^4.7.0", - "ws": "^8.18.0" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.10.2", @@ -33,11 +28,23 @@ "@types/ws": "^8.5.10", "@vitejs/plugin-react": "^4.3.4", "concurrently": "^9.1.0", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^4.19.2", "typescript": "^5.7.2", "vite": "^6.0.5", "vitest": "^3.1.1" }, + "dependencies": { + "@hono/node-server": "^1.14.0", + "@hono/node-ws": "^1.1.1", + "@rivetkit/react": "workspace:*", + "hono": "^4.7.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "rivetkit": "workspace:*", + "ws": "^8.18.0" + }, "template": { "technologies": [ "websocket", diff --git a/examples/raw-websocket-handler-proxy/src/backend/registry.ts b/examples/raw-websocket-handler-proxy/src/registry.ts similarity index 100% rename from examples/raw-websocket-handler-proxy/src/backend/registry.ts rename to examples/raw-websocket-handler-proxy/src/registry.ts diff --git a/examples/raw-websocket-handler-proxy/src/backend/server.ts b/examples/raw-websocket-handler-proxy/src/server.ts similarity index 77% rename from examples/raw-websocket-handler-proxy/src/backend/server.ts rename to examples/raw-websocket-handler-proxy/src/server.ts index da7038e1b8..31bccf710f 100644 --- a/examples/raw-websocket-handler-proxy/src/backend/server.ts +++ b/examples/raw-websocket-handler-proxy/src/server.ts @@ -1,14 +1,15 @@ -import { serve } from "@hono/node-server"; import { createNodeWebSocket } from "@hono/node-ws"; import type { Context } from "hono"; import { Hono } from "hono"; import type { WSContext } from "hono/ws"; -import { registry } from "./registry.js"; +import { createClient } from "rivetkit/client"; +import { registry } from "./registry"; -const { client } = registry.start(); +registry.startRunner(); +const client = createClient(); const app = new Hono(); -const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({ app }); +const { upgradeWebSocket } = createNodeWebSocket({ app }); // Forward WebSocket connections to actor's WebSocket handler app.get( @@ -47,6 +48,4 @@ app.get( }), ); -const server = serve({ fetch: app.fetch, port: 8080 }); -injectWebSocket(server); -console.log("Listening on port 8080"); +export default app; diff --git a/examples/raw-websocket-handler-proxy/tsup.config.ts b/examples/raw-websocket-handler-proxy/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/raw-websocket-handler-proxy/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/raw-websocket-handler-proxy/vite.config.ts b/examples/raw-websocket-handler-proxy/vite.config.ts index 2abc7c6f82..ef2f55a297 100644 --- a/examples/raw-websocket-handler-proxy/vite.config.ts +++ b/examples/raw-websocket-handler-proxy/vite.config.ts @@ -3,11 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { - outDir: "../../dist", + outDir: "dist", + emptyOutDir: true, }, server: { host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/raw-websocket-handler/src/frontend/App.tsx b/examples/raw-websocket-handler/frontend/App.tsx similarity index 95% rename from examples/raw-websocket-handler/src/frontend/App.tsx rename to examples/raw-websocket-handler/frontend/App.tsx index 167bef54ef..f5ee8446a5 100644 --- a/examples/raw-websocket-handler/src/frontend/App.tsx +++ b/examples/raw-websocket-handler/frontend/App.tsx @@ -1,8 +1,8 @@ import React, { useState, useEffect, useRef } from "react"; import { createRivetKit } from "@rivetkit/react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:8080"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); export default function App() { const [messages, setMessages] = useState>([]); diff --git a/examples/raw-websocket-handler/src/frontend/index.html b/examples/raw-websocket-handler/frontend/index.html similarity index 100% rename from examples/raw-websocket-handler/src/frontend/index.html rename to examples/raw-websocket-handler/frontend/index.html diff --git a/examples/raw-websocket-handler/src/frontend/main.tsx b/examples/raw-websocket-handler/frontend/main.tsx similarity index 100% rename from examples/raw-websocket-handler/src/frontend/main.tsx rename to examples/raw-websocket-handler/frontend/main.tsx diff --git a/examples/raw-websocket-handler/package.json b/examples/raw-websocket-handler/package.json index 7970002ff2..d0ff27fec1 100644 --- a/examples/raw-websocket-handler/package.json +++ b/examples/raw-websocket-handler/package.json @@ -12,18 +12,15 @@ "realtime" ], "scripts": { - "dev": "concurrently \"npm:dev:*\"", - "dev:backend": "tsx watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" - }, - "dependencies": { - "rivetkit": "workspace:*", - "@rivetkit/react": "workspace:*", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "hono": "^4.7.0" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.10.2", @@ -31,11 +28,20 @@ "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", "concurrently": "^9.1.0", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^4.19.2", "typescript": "^5.7.2", "vite": "^6.0.5", "vitest": "^3.1.1" }, + "dependencies": { + "@rivetkit/react": "workspace:*", + "hono": "^4.7.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "rivetkit": "workspace:*" + }, "template": { "technologies": [ "websocket", diff --git a/examples/raw-websocket-handler/src/backend/registry.ts b/examples/raw-websocket-handler/src/registry.ts similarity index 100% rename from examples/raw-websocket-handler/src/backend/registry.ts rename to examples/raw-websocket-handler/src/registry.ts diff --git a/examples/raw-websocket-handler/src/backend/server.ts b/examples/raw-websocket-handler/src/server.ts similarity index 56% rename from examples/raw-websocket-handler/src/backend/server.ts rename to examples/raw-websocket-handler/src/server.ts index 3bf4bc4128..fdfed9e29c 100644 --- a/examples/raw-websocket-handler/src/backend/server.ts +++ b/examples/raw-websocket-handler/src/server.ts @@ -1,3 +1,3 @@ import { registry } from "./registry.js"; -registry.start(); +export default registry.serve(); diff --git a/examples/raw-websocket-handler/tsup.config.ts b/examples/raw-websocket-handler/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/raw-websocket-handler/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/raw-websocket-handler/vite.config.ts b/examples/raw-websocket-handler/vite.config.ts index 2abc7c6f82..ef2f55a297 100644 --- a/examples/raw-websocket-handler/vite.config.ts +++ b/examples/raw-websocket-handler/vite.config.ts @@ -3,11 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { - outDir: "../../dist", + outDir: "dist", + emptyOutDir: true, }, server: { host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/hono-react/src/frontend/App.tsx b/examples/react/frontend/App.tsx similarity index 83% rename from examples/hono-react/src/frontend/App.tsx rename to examples/react/frontend/App.tsx index 0fbc28b278..5deaf0d08c 100644 --- a/examples/hono-react/src/frontend/App.tsx +++ b/examples/react/frontend/App.tsx @@ -1,8 +1,8 @@ import { createRivetKit } from "@rivetkit/react"; import { useState } from "react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:8080"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); function App() { const [count, setCount] = useState(0); diff --git a/examples/react/src/frontend/index.html b/examples/react/frontend/index.html similarity index 100% rename from examples/react/src/frontend/index.html rename to examples/react/frontend/index.html diff --git a/examples/react/src/frontend/main.tsx b/examples/react/frontend/main.tsx similarity index 100% rename from examples/react/src/frontend/main.tsx rename to examples/react/frontend/main.tsx diff --git a/examples/react/package.json b/examples/react/package.json index 6062169efb..03cf5c1ad5 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -4,12 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", - "build": "vite build", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -17,7 +20,8 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", - "rivetkit": "workspace:*", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", @@ -26,7 +30,8 @@ "dependencies": { "@rivetkit/react": "workspace:*", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "rivetkit": "workspace:*" }, "stableVersion": "0.8.0", "template": { diff --git a/examples/react/src/backend/server.ts b/examples/react/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/react/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/react/src/backend/registry.ts b/examples/react/src/registry.ts similarity index 100% rename from examples/react/src/backend/registry.ts rename to examples/react/src/registry.ts diff --git a/examples/react/src/server.ts b/examples/react/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/react/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/react/tsup.config.ts b/examples/react/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/react/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/react/vite.config.ts b/examples/react/vite.config.ts index 2abc7c6f82..ef2f55a297 100644 --- a/examples/react/vite.config.ts +++ b/examples/react/vite.config.ts @@ -3,11 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", build: { - outDir: "../../dist", + outDir: "dist", + emptyOutDir: true, }, server: { host: "0.0.0.0", + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/scheduling/src/frontend/App.tsx b/examples/scheduling/frontend/App.tsx similarity index 98% rename from examples/scheduling/src/frontend/App.tsx rename to examples/scheduling/frontend/App.tsx index 431f818cfd..8b4c36bbf7 100644 --- a/examples/scheduling/src/frontend/App.tsx +++ b/examples/scheduling/frontend/App.tsx @@ -1,8 +1,8 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useState } from "react"; -import type { Reminder, Registry } from "../backend/registry"; +import type { Reminder, Registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:6420"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); export function App() { const [reminders, setReminders] = useState([]); diff --git a/examples/scheduling/src/frontend/index.html b/examples/scheduling/frontend/index.html similarity index 100% rename from examples/scheduling/src/frontend/index.html rename to examples/scheduling/frontend/index.html diff --git a/examples/scheduling/src/frontend/main.tsx b/examples/scheduling/frontend/main.tsx similarity index 100% rename from examples/scheduling/src/frontend/main.tsx rename to examples/scheduling/frontend/main.tsx diff --git a/examples/scheduling/package.json b/examples/scheduling/package.json index 2e7145579a..24defb2640 100644 --- a/examples/scheduling/package.json +++ b/examples/scheduling/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -16,15 +20,17 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "template": { diff --git a/examples/scheduling/src/backend/server.ts b/examples/scheduling/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/scheduling/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/scheduling/src/backend/registry.ts b/examples/scheduling/src/registry.ts similarity index 100% rename from examples/scheduling/src/backend/registry.ts rename to examples/scheduling/src/registry.ts diff --git a/examples/scheduling/src/server.ts b/examples/scheduling/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/scheduling/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/scheduling/tsup.config.ts b/examples/scheduling/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/scheduling/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/scheduling/vite.config.ts b/examples/scheduling/vite.config.ts index 19155bde35..ef2f55a297 100644 --- a/examples/scheduling/vite.config.ts +++ b/examples/scheduling/vite.config.ts @@ -3,9 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/state/src/frontend/App.tsx b/examples/state/frontend/App.tsx similarity index 95% rename from examples/state/src/frontend/App.tsx rename to examples/state/frontend/App.tsx index b11ebb8e24..7e29c8e0c6 100644 --- a/examples/state/src/frontend/App.tsx +++ b/examples/state/frontend/App.tsx @@ -1,8 +1,8 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useRef, useState } from "react"; -import type { Message, registry } from "../backend/registry"; +import type { Message, registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:6420"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); export function App() { const [username, setUsername] = useState("User"); diff --git a/examples/state/src/frontend/index.html b/examples/state/frontend/index.html similarity index 100% rename from examples/state/src/frontend/index.html rename to examples/state/frontend/index.html diff --git a/examples/state/src/frontend/main.tsx b/examples/state/frontend/main.tsx similarity index 100% rename from examples/state/src/frontend/main.tsx rename to examples/state/frontend/main.tsx diff --git a/examples/state/package.json b/examples/state/package.json index f2fa018540..e6b02cd161 100644 --- a/examples/state/package.json +++ b/examples/state/package.json @@ -4,11 +4,15 @@ "private": true, "type": "module", "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", + "dev:backend": "srvx --import tsx src/server.ts", "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest run" + "test": "vitest run", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^22.13.9", @@ -16,15 +20,17 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.2.0", "concurrently": "^8.2.2", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^3.12.7", "typescript": "^5.5.2", "vite": "^5.0.0", - "vitest": "^3.1.1", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "vitest": "^3.1.1" }, "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rivetkit": "workspace:*" }, "template": { diff --git a/examples/state/src/backend/server.ts b/examples/state/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/state/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/state/src/backend/registry.ts b/examples/state/src/registry.ts similarity index 100% rename from examples/state/src/backend/registry.ts rename to examples/state/src/registry.ts diff --git a/examples/state/src/server.ts b/examples/state/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/state/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/state/tsup.config.ts b/examples/state/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/state/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/state/vite.config.ts b/examples/state/vite.config.ts index 19155bde35..ef2f55a297 100644 --- a/examples/state/vite.config.ts +++ b/examples/state/vite.config.ts @@ -3,9 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", + build: { + outDir: "dist", + emptyOutDir: true, + }, server: { host: "0.0.0.0", port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, }); diff --git a/examples/stream/src/frontend/App.tsx b/examples/stream/frontend/App.tsx similarity index 97% rename from examples/stream/src/frontend/App.tsx rename to examples/stream/frontend/App.tsx index 7dc73e6ea6..3abfe51ff7 100644 --- a/examples/stream/src/frontend/App.tsx +++ b/examples/stream/frontend/App.tsx @@ -1,8 +1,8 @@ import { createRivetKit } from "@rivetkit/react"; import { useEffect, useState } from "react"; -import type { registry } from "../backend/registry"; +import type { registry } from "../src/registry"; -const { useActor } = createRivetKit("http://localhost:8080"); +const { useActor } = createRivetKit(`${window.location.origin}/api/rivet`); export function App() { const [topValues, setTopValues] = useState([]); diff --git a/examples/stream/src/frontend/index.html b/examples/stream/frontend/index.html similarity index 100% rename from examples/stream/src/frontend/index.html rename to examples/stream/frontend/index.html diff --git a/examples/stream/src/frontend/main.tsx b/examples/stream/frontend/main.tsx similarity index 100% rename from examples/stream/src/frontend/main.tsx rename to examples/stream/frontend/main.tsx diff --git a/examples/stream/package.json b/examples/stream/package.json index 6c73363271..2b3d8535e8 100644 --- a/examples/stream/package.json +++ b/examples/stream/package.json @@ -3,17 +3,15 @@ "version": "2.0.21", "type": "module", "scripts": { - "dev": "concurrently \"tsx --watch src/backend/server.ts\" \"vite\"", - "build": "vite build", - "preview": "vite preview", + "dev:backend": "srvx --import tsx src/server.ts", + "dev:frontend": "vite", + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "start": "srvx --static=../frontend/dist dist/server.js", "check-types": "tsc --noEmit", - "test": "vitest" - }, - "dependencies": { - "rivetkit": "workspace:*", - "@rivetkit/react": "workspace:*", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "test": "vitest", + "build:frontend": "vite build", + "build:backend": "tsup", + "build": "npm run build:backend && npm run build:frontend" }, "devDependencies": { "@types/node": "^20.0.0", @@ -21,11 +19,19 @@ "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.0.0", "concurrently": "^8.2.0", + "srvx": "^0.10.0", + "tsup": "^8.5.1", "tsx": "^4.0.0", "typescript": "^5.0.0", "vite": "^5.0.0", "vitest": "^3.1.1" }, + "dependencies": { + "@rivetkit/react": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "rivetkit": "workspace:*" + }, "template": { "technologies": [ "typescript" @@ -33,7 +39,7 @@ "tags": [ "real-time" ], - "frontendPort": 3000 + "frontendPort": 5173 }, "license": "MIT" } diff --git a/examples/stream/src/backend/server.ts b/examples/stream/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/stream/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/stream/src/backend/registry.ts b/examples/stream/src/registry.ts similarity index 100% rename from examples/stream/src/backend/registry.ts rename to examples/stream/src/registry.ts diff --git a/examples/stream/src/server.ts b/examples/stream/src/server.ts new file mode 100644 index 0000000000..508b28a999 --- /dev/null +++ b/examples/stream/src/server.ts @@ -0,0 +1,3 @@ +import { registry } from "./registry"; + +export default registry.serve(); diff --git a/examples/stream/tsup.config.ts b/examples/stream/tsup.config.ts new file mode 100644 index 0000000000..18240b4aa0 --- /dev/null +++ b/examples/stream/tsup.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + server: "src/server.ts", + }, + format: ["esm"], + outDir: "dist", + bundle: true, + splitting: false, + shims: true, +}); diff --git a/examples/stream/vite.config.ts b/examples/stream/vite.config.ts index 5a22891184..dfade40735 100644 --- a/examples/stream/vite.config.ts +++ b/examples/stream/vite.config.ts @@ -3,13 +3,16 @@ import { defineConfig } from "vite"; export default defineConfig({ plugins: [react()], - root: "src/frontend", + root: "frontend", server: { host: "0.0.0.0", - port: 3000, + port: 5173, + proxy: { + "/api/rivet/": "http://localhost:3000", + }, }, build: { - outDir: "../../dist", + outDir: "dist", emptyOutDir: true, }, }); diff --git a/examples/trpc/package.json b/examples/trpc/package.json index 321fcefbe5..2388c41209 100644 --- a/examples/trpc/package.json +++ b/examples/trpc/package.json @@ -5,8 +5,10 @@ "type": "module", "scripts": { "dev": "tsx --watch src/server.ts", + "start": "tsx src/server.ts", "client": "tsx scripts/client.ts", - "check-types": "tsc --noEmit" + "check-types": "tsc --noEmit", + "build": "tsc" }, "devDependencies": { "rivetkit": "workspace:*", diff --git a/examples/trpc/src/server.ts b/examples/trpc/src/server.ts index 412be282a1..e191e84c4f 100644 --- a/examples/trpc/src/server.ts +++ b/examples/trpc/src/server.ts @@ -1,10 +1,12 @@ import { initTRPC } from "@trpc/server"; import { createHTTPServer } from "@trpc/server/adapters/standalone"; +import { createClient } from "rivetkit/client"; import { z } from "zod"; import { registry } from "./registry.js"; // Start RivetKit -const { client } = registry.start(); +registry.startRunner(); +const client = createClient(); // Initialize tRPC const t = initTRPC.create(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe2826ccb2..99efdda297 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -247,13 +247,19 @@ importers: examples/actor-actions: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.19.1 @@ -269,12 +275,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -305,6 +311,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit zod: specifier: ^3.25.69 version: 3.25.76 @@ -324,9 +333,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -362,7 +374,7 @@ importers: version: 9.6.1 freestyle-sandboxes: specifier: ^0.0.95 - version: 0.0.95(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3) + version: 0.0.95(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3) hono: specifier: ^4.6.0 version: 4.9.8 @@ -403,16 +415,22 @@ importers: examples/chat-room: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react hono: specifier: ^4.11.3 version: 4.11.3 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.18.1 @@ -434,12 +452,12 @@ importers: prompts: specifier: ^2.4.2 version: 2.4.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -564,13 +582,19 @@ importers: examples/cross-actor-actions: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.19.1 @@ -586,12 +610,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -607,13 +631,19 @@ importers: examples/cursors: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.18.1 @@ -635,12 +665,12 @@ importers: prompts: specifier: ^2.4.2 version: 2.4.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -656,13 +686,19 @@ importers: examples/cursors-raw-websocket: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.18.1 @@ -684,12 +720,12 @@ importers: prompts: specifier: ^2.4.2 version: 2.4.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -704,13 +740,17 @@ importers: version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.1.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) examples/custom-serverless: + dependencies: + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: '@types/node': specifier: ^22.13.9 version: 22.19.1 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit + srvx: + specifier: ^0.10.0 + version: 0.10.0 tsx: specifier: ^3.12.7 version: 3.14.0 @@ -816,6 +856,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit zod: specifier: ^4.1.0 version: 4.1.13 @@ -835,9 +878,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -918,6 +964,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: '@types/bun': specifier: ^1.1.15 @@ -934,9 +983,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@24.10.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -964,6 +1016,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: '@types/node': specifier: ^22.13.9 @@ -980,9 +1035,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -1011,6 +1069,9 @@ importers: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: + '@types/node': + specifier: ^22.13.9 + version: 22.19.1 '@types/react': specifier: ^19 version: 19.2.2 @@ -1019,10 +1080,16 @@ importers: version: 19.2.2(@types/react@19.2.2) '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.7.0(vite@5.4.20(@types/node@24.10.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)) + version: 4.7.0(vite@5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)) concurrently: specifier: ^8.2.2 version: 8.2.2 + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^4.7.1 version: 4.20.5 @@ -1031,17 +1098,23 @@ importers: version: 5.9.2 vite: specifier: ^5.2.0 - version: 5.4.20(@types/node@24.10.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + version: 5.4.20(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) examples/multi-region: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.19.1 @@ -1057,12 +1130,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -1078,13 +1151,19 @@ importers: examples/native-websockets: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.19.1 @@ -1103,12 +1182,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -1168,6 +1247,9 @@ importers: '@types/node': specifier: ^22.13.9 version: 22.19.1 + srvx: + specifier: ^0.10.0 + version: 0.10.0 tsx: specifier: ^3.12.7 version: 3.14.0 @@ -1211,6 +1293,12 @@ importers: concurrently: specifier: ^9.1.2 version: 9.2.1 + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^4.20.0 version: 4.20.5 @@ -1257,6 +1345,12 @@ importers: concurrently: specifier: ^9.1.0 version: 9.2.1 + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^4.19.2 version: 4.20.5 @@ -1278,6 +1372,9 @@ importers: '@hono/node-ws': specifier: ^1.1.1 version: 1.2.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8) + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react hono: specifier: ^4.7.0 version: 4.9.8 @@ -1312,6 +1409,12 @@ importers: concurrently: specifier: ^9.1.0 version: 9.2.1 + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^4.19.2 version: 4.20.5 @@ -1336,6 +1439,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: '@types/node': specifier: ^22.13.9 @@ -1352,9 +1458,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -1370,13 +1479,19 @@ importers: examples/scheduling: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.19.1 @@ -1392,12 +1507,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -1413,13 +1528,19 @@ importers: examples/state: dependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: - '@rivetkit/react': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react '@types/node': specifier: ^22.13.9 version: 22.19.1 @@ -1435,12 +1556,12 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1) tsx: specifier: ^3.12.7 version: 3.14.0 @@ -1484,6 +1605,12 @@ importers: concurrently: specifier: ^8.2.0 version: 8.2.2 + srvx: + specifier: ^0.10.0 + version: 0.10.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@20.19.13))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^4.0.0 version: 4.20.5 @@ -1703,7 +1830,7 @@ importers: version: 1.131.36(@tanstack/react-router@1.131.36(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.131.36)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)(tiny-invariant@1.3.3) '@tanstack/router-plugin': specifier: ^1.131.36 - version: 1.131.36(@tanstack/react-router@1.131.36(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.12)) + version: 1.131.36(@tanstack/react-router@1.131.36(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.27.2)) '@tanstack/store': specifier: ^0.7.5 version: 0.7.5 @@ -1790,7 +1917,7 @@ importers: version: 3.1.1 favigo: specifier: ^1.1.0 - version: 1.1.0(esbuild@0.25.12)(rollup@4.53.3)(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.12)) + version: 1.1.0(esbuild@0.27.2)(rollup@4.53.3)(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.27.2)) file-saver: specifier: ^2.0.5 version: 2.0.5 @@ -1985,7 +2112,7 @@ importers: version: 3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@uiw/codemirror-extensions-basic-setup': specifier: ^4.25.1 - version: 4.25.1(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.9.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2) + version: 4.25.1(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2) '@uiw/codemirror-theme-github': specifier: ^4.25.1 version: 4.25.1(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2) @@ -2386,7 +2513,7 @@ importers: version: 5.9.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.2)(vite@7.2.2(@types/node@22.18.1)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 5.1.4(typescript@5.9.2)(vite@5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)) vitest: specifier: ^3.1.1 version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.1.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) @@ -2474,13 +2601,13 @@ importers: version: 8.0.1(@types/node@24.10.1) '@mdx-js/loader': specifier: ^3.1.1 - version: 3.1.1(webpack@5.101.3(esbuild@0.25.9)) + version: 3.1.1(webpack@5.101.3(esbuild@0.25.12)) '@mdx-js/react': specifier: ^3.1.1 version: 3.1.1(@types/react@19.2.2)(react@19.2.0) '@next/mdx': specifier: ^15.5.6 - version: 15.5.6(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.25.9)))(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0)) + version: 15.5.6(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.25.12)))(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0)) '@next/third-parties': specifier: latest version: 16.1.1(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0) @@ -2679,7 +2806,7 @@ importers: version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.3(esbuild@0.25.9)) + version: 6.2.0(webpack@5.101.3(esbuild@0.25.12)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -3762,6 +3889,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -3798,6 +3931,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -3834,6 +3973,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -3870,6 +4015,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -3906,6 +4057,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -3942,6 +4099,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -3978,6 +4141,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -4014,6 +4183,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -4050,6 +4225,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -4086,6 +4267,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -4122,6 +4309,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -4158,6 +4351,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -4194,6 +4393,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -4230,6 +4435,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -4266,6 +4477,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -4302,6 +4519,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -4338,6 +4561,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -4356,6 +4585,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -4386,8 +4621,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.9': - resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -4410,6 +4651,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -4446,6 +4693,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -4458,6 +4711,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -4494,6 +4753,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -4530,6 +4795,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -4566,6 +4837,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -4602,6 +4879,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9380,6 +9663,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -13207,6 +13495,11 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + srvx@0.10.0: + resolution: {integrity: sha512-NqIsR+wQCfkvvwczBh8J8uM4wTZx41K2lLSEp/3oMp917ODVVMtW5Me4epCmQ3gH8D+0b+/t4xxkUKutyhimTA==} + engines: {node: '>=20.16.0'} + hasBin: true + stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} @@ -13676,6 +13969,25 @@ packages: typescript: optional: true + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tsx@3.14.0: resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==} hasBin: true @@ -14870,29 +15182,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/traverse': 7.28.5 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.3 @@ -14948,9 +15260,9 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.3 '@babel/traverse': 7.28.5 @@ -14966,15 +15278,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 - transitivePeerDependencies: - - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.4 @@ -15018,73 +15321,73 @@ snapshots: dependencies: '@babel/types': 7.28.5 - '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.5)': + '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': @@ -15092,49 +15395,44 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': @@ -15142,117 +15440,112 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': @@ -15263,85 +15556,77 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)': + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color @@ -15350,71 +15635,61 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4)': dependencies: - '@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/core': 7.28.4 '@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/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': @@ -15428,32 +15703,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-react@7.28.5(@babel/core@7.28.5)': + '@babel/preset-react@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@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) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color @@ -15468,14 +15743,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': + '@babel/preset-typescript@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.4) transitivePeerDependencies: - supports-color @@ -16021,6 +16296,9 @@ snapshots: '@esbuild/aix-ppc64@0.25.9': optional: true + '@esbuild/aix-ppc64@0.27.2': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true @@ -16039,6 +16317,9 @@ snapshots: '@esbuild/android-arm64@0.25.9': optional: true + '@esbuild/android-arm64@0.27.2': + optional: true + '@esbuild/android-arm@0.18.20': optional: true @@ -16057,6 +16338,9 @@ snapshots: '@esbuild/android-arm@0.25.9': optional: true + '@esbuild/android-arm@0.27.2': + optional: true + '@esbuild/android-x64@0.18.20': optional: true @@ -16075,6 +16359,9 @@ snapshots: '@esbuild/android-x64@0.25.9': optional: true + '@esbuild/android-x64@0.27.2': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true @@ -16093,6 +16380,9 @@ snapshots: '@esbuild/darwin-arm64@0.25.9': optional: true + '@esbuild/darwin-arm64@0.27.2': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true @@ -16111,6 +16401,9 @@ snapshots: '@esbuild/darwin-x64@0.25.9': optional: true + '@esbuild/darwin-x64@0.27.2': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true @@ -16129,6 +16422,9 @@ snapshots: '@esbuild/freebsd-arm64@0.25.9': optional: true + '@esbuild/freebsd-arm64@0.27.2': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true @@ -16147,6 +16443,9 @@ snapshots: '@esbuild/freebsd-x64@0.25.9': optional: true + '@esbuild/freebsd-x64@0.27.2': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true @@ -16165,6 +16464,9 @@ snapshots: '@esbuild/linux-arm64@0.25.9': optional: true + '@esbuild/linux-arm64@0.27.2': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true @@ -16183,6 +16485,9 @@ snapshots: '@esbuild/linux-arm@0.25.9': optional: true + '@esbuild/linux-arm@0.27.2': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true @@ -16201,6 +16506,9 @@ snapshots: '@esbuild/linux-ia32@0.25.9': optional: true + '@esbuild/linux-ia32@0.27.2': + optional: true + '@esbuild/linux-loong64@0.18.20': optional: true @@ -16219,6 +16527,9 @@ snapshots: '@esbuild/linux-loong64@0.25.9': optional: true + '@esbuild/linux-loong64@0.27.2': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true @@ -16237,6 +16548,9 @@ snapshots: '@esbuild/linux-mips64el@0.25.9': optional: true + '@esbuild/linux-mips64el@0.27.2': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true @@ -16255,6 +16569,9 @@ snapshots: '@esbuild/linux-ppc64@0.25.9': optional: true + '@esbuild/linux-ppc64@0.27.2': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true @@ -16273,6 +16590,9 @@ snapshots: '@esbuild/linux-riscv64@0.25.9': optional: true + '@esbuild/linux-riscv64@0.27.2': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true @@ -16291,6 +16611,9 @@ snapshots: '@esbuild/linux-s390x@0.25.9': optional: true + '@esbuild/linux-s390x@0.27.2': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true @@ -16309,6 +16632,9 @@ snapshots: '@esbuild/linux-x64@0.25.9': optional: true + '@esbuild/linux-x64@0.27.2': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true @@ -16318,6 +16644,9 @@ snapshots: '@esbuild/netbsd-arm64@0.25.9': optional: true + '@esbuild/netbsd-arm64@0.27.2': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true @@ -16336,6 +16665,9 @@ snapshots: '@esbuild/netbsd-x64@0.25.9': optional: true + '@esbuild/netbsd-x64@0.27.2': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true @@ -16345,6 +16677,9 @@ snapshots: '@esbuild/openbsd-arm64@0.25.9': optional: true + '@esbuild/openbsd-arm64@0.27.2': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true @@ -16363,12 +16698,18 @@ snapshots: '@esbuild/openbsd-x64@0.25.9': optional: true + '@esbuild/openbsd-x64@0.27.2': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.25.9': optional: true + '@esbuild/openharmony-arm64@0.27.2': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true @@ -16387,6 +16728,9 @@ snapshots: '@esbuild/sunos-x64@0.25.9': optional: true + '@esbuild/sunos-x64@0.27.2': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true @@ -16405,6 +16749,9 @@ snapshots: '@esbuild/win32-arm64@0.25.9': optional: true + '@esbuild/win32-arm64@0.27.2': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true @@ -16423,6 +16770,9 @@ snapshots: '@esbuild/win32-ia32@0.25.9': optional: true + '@esbuild/win32-ia32@0.27.2': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true @@ -16441,6 +16791,9 @@ snapshots: '@esbuild/win32-x64@0.25.9': optional: true + '@esbuild/win32-x64@0.27.2': + optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@1.21.7))': dependencies: eslint: 9.39.1(jiti@1.21.7) @@ -16487,7 +16840,7 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@expo/cli@54.0.13(expo-router@4.0.21)(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))': + '@expo/cli@54.0.13(expo-router@4.0.21)(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))': dependencies: '@0no-co/graphql.web': 1.2.0 '@expo/code-signing-certificates': 0.0.5 @@ -16522,7 +16875,7 @@ snapshots: connect: 3.7.0 debug: 4.4.3 env-editor: 0.4.2 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) expo-server: 1.0.4 freeport-async: 2.0.0 getenv: 2.0.0 @@ -16555,8 +16908,8 @@ snapshots: wrap-ansi: 7.0.0 ws: 8.18.3 optionalDependencies: - expo-router: 4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + expo-router: 4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - bufferutil @@ -16655,12 +17008,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/devtools@0.1.7(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': + '@expo/devtools@0.1.7(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': dependencies: chalk: 4.1.2 optionalDependencies: react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) '@expo/env@0.4.2': dependencies: @@ -16760,15 +17113,15 @@ snapshots: postcss: 8.4.49 resolve-from: 5.0.0 optionalDependencies: - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))': + '@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))': dependencies: - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) '@expo/metro@54.1.0': dependencies: @@ -16824,7 +17177,7 @@ snapshots: '@expo/json-file': 10.0.7 '@react-native/normalize-colors': 0.81.5 debug: 4.4.3 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) resolve-from: 5.0.0 semver: 7.7.3 xml2js: 0.6.0 @@ -16850,11 +17203,11 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@15.0.3(expo-font@14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': + '@expo/vector-icons@15.0.3(expo-font@14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': dependencies: - expo-font: 14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo-font: 14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) '@expo/ws-tunnel@1.0.6': {} @@ -17498,12 +17851,12 @@ snapshots: '@marijn/find-cluster-break@1.0.2': {} - '@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.25.9))': + '@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.25.12))': dependencies: '@mdx-js/mdx': 3.1.1 source-map: 0.7.6 optionalDependencies: - webpack: 5.101.3(esbuild@0.25.9) + webpack: 5.101.3(esbuild@0.25.12) transitivePeerDependencies: - supports-color @@ -17779,11 +18132,11 @@ snapshots: dependencies: fast-glob: 3.3.1 - '@next/mdx@15.5.6(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.25.9)))(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))': + '@next/mdx@15.5.6(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.25.12)))(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))': dependencies: source-map: 0.7.6 optionalDependencies: - '@mdx-js/loader': 3.1.1(webpack@5.101.3(esbuild@0.25.9)) + '@mdx-js/loader': 3.1.1(webpack@5.101.3(esbuild@0.25.12)) '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.0) '@next/swc-darwin-arm64@15.4.5': @@ -18619,67 +18972,67 @@ snapshots: '@react-native/assets-registry@0.82.1': {} - '@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.28.5)': + '@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.28.4)': dependencies: '@babel/traverse': 7.28.5 - '@react-native/codegen': 0.81.5(@babel/core@7.28.5) + '@react-native/codegen': 0.81.5(@babel/core@7.28.4) transitivePeerDependencies: - '@babel/core' - supports-color - '@react-native/babel-preset@0.81.5(@babel/core@7.28.5)': + '@react-native/babel-preset@0.81.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) - '@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-self': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) '@babel/template': 7.27.2 - '@react-native/babel-plugin-codegen': 0.81.5(@babel/core@7.28.5) + '@react-native/babel-plugin-codegen': 0.81.5(@babel/core@7.28.4) babel-plugin-syntax-hermes-parser: 0.29.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.5) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.4) react-refresh: 0.14.2 transitivePeerDependencies: - supports-color - '@react-native/codegen@0.81.5(@babel/core@7.28.5)': + '@react-native/codegen@0.81.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/parser': 7.28.5 glob: 7.2.3 hermes-parser: 0.29.1 @@ -18687,9 +19040,9 @@ snapshots: nullthrows: 1.1.1 yargs: 17.7.2 - '@react-native/codegen@0.82.1(@babel/core@7.28.5)': + '@react-native/codegen@0.82.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@babel/parser': 7.28.5 glob: 7.2.3 hermes-parser: 0.32.0 @@ -18765,37 +19118,37 @@ snapshots: '@react-native/normalize-colors@0.82.1': {} - '@react-native/virtualized-lists@0.82.1(@types/react@19.2.2)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': + '@react-native/virtualized-lists@0.82.1(@types/react@19.2.2)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) optionalDependencies: '@types/react': 19.2.2 - '@react-navigation/bottom-tabs@7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': + '@react-navigation/bottom-tabs@7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': dependencies: - '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) color: 4.2.3 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@react-native-masked-view/masked-view' optional: true - '@react-navigation/bottom-tabs@7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)': + '@react-navigation/bottom-tabs@7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)': dependencies: - '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) color: 4.2.3 react: 19.2.0 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@react-native-masked-view/masked-view' @@ -18810,60 +19163,60 @@ snapshots: use-latest-callback: 0.2.6(react@19.2.0) use-sync-external-store: 1.6.0(react@19.2.0) - '@react-navigation/elements@2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': + '@react-navigation/elements@2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': dependencies: - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) color: 4.2.3 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) use-latest-callback: 0.2.6(react@18.3.1) use-sync-external-store: 1.6.0(react@18.3.1) optional: true - '@react-navigation/elements@2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)': + '@react-navigation/elements@2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)': dependencies: - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) color: 4.2.3 react: 19.2.0 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) use-latest-callback: 0.2.6(react@19.2.0) use-sync-external-store: 1.6.0(react@19.2.0) - '@react-navigation/native-stack@7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': + '@react-navigation/native-stack@7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': dependencies: - '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' optional: true - '@react-navigation/native-stack@7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)': + '@react-navigation/native-stack@7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)': dependencies: - '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/elements': 2.6.5(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) react: 19.2.0 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': + '@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)': dependencies: '@react-navigation/core': 7.12.4(react@19.2.0) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.11 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) use-latest-callback: 0.2.6(react@19.2.0) '@react-navigation/routers@7.5.1': @@ -19704,7 +20057,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.131.36(@tanstack/react-router@1.131.36(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.12))': + '@tanstack/router-plugin@1.131.36(@tanstack/react-router@1.131.36(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.27.2))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) @@ -19723,7 +20076,7 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.131.36(react-dom@19.1.1(react@19.1.1))(react@19.1.1) vite: 5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) - webpack: 5.101.3(esbuild@0.25.12) + webpack: 5.101.3(esbuild@0.27.2) transitivePeerDependencies: - supports-color @@ -20179,16 +20532,6 @@ snapshots: '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.2 - '@uiw/codemirror-extensions-basic-setup@4.25.1(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.9.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)': - dependencies: - '@codemirror/autocomplete': 6.19.0 - '@codemirror/commands': 6.9.0 - '@codemirror/language': 6.11.3 - '@codemirror/lint': 6.9.0 - '@codemirror/search': 6.5.11 - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.2 - '@uiw/codemirror-theme-github@4.25.1(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)': dependencies: '@uiw/codemirror-themes': 4.25.1(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2) @@ -20998,13 +21341,13 @@ snapshots: transitivePeerDependencies: - supports-color - babel-jest@29.7.0(@babel/core@7.28.5): + babel-jest@29.7.0(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.28.5) + babel-preset-jest: 29.6.3(@babel/core@7.28.4) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -21034,27 +21377,27 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.11 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): dependencies: '@babel/compat-data': 7.28.5 - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) transitivePeerDependencies: - supports-color @@ -21072,68 +21415,68 @@ snapshots: dependencies: hermes-parser: 0.32.0 - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.5): + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.4): dependencies: - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - '@babel/core' - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) - - babel-preset-expo@54.0.7(@babel/core@7.28.5)(@babel/runtime@7.28.4)(expo@54.0.18)(react-refresh@0.14.2): + '@babel/core': 7.28.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4) + + babel-preset-expo@54.0.7(@babel/core@7.28.4)(@babel/runtime@7.28.4)(expo@54.0.18)(react-refresh@0.14.2): dependencies: '@babel/helper-module-imports': 7.27.1 - '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) - '@babel/preset-react': 7.28.5(@babel/core@7.28.5) - '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) - '@react-native/babel-preset': 0.81.5(@babel/core@7.28.5) + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.4) + '@babel/preset-react': 7.28.5(@babel/core@7.28.4) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.4) + '@react-native/babel-preset': 0.81.5(@babel/core@7.28.4) babel-plugin-react-compiler: 1.0.0 babel-plugin-react-native-web: 0.21.2 babel-plugin-syntax-hermes-parser: 0.29.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.5) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.4) debug: 4.4.3 react-refresh: 0.14.2 resolve-from: 5.0.0 optionalDependencies: '@babel/runtime': 7.28.4 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@babel/core' - supports-color - babel-preset-jest@29.6.3(@babel/core@7.28.5): + babel-preset-jest@29.6.3(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.4 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) bail@2.0.2: {} @@ -21217,7 +21560,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1 + debug: 4.4.3 http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -21294,9 +21637,14 @@ snapshots: '@types/node': 22.19.1 '@types/react': 19.2.2 - bundle-require@5.1.0(esbuild@0.25.9): + bundle-require@5.1.0(esbuild@0.25.12): + dependencies: + esbuild: 0.25.12 + load-tsconfig: 0.2.5 + + bundle-require@5.1.0(esbuild@0.27.2): dependencies: - esbuild: 0.25.9 + esbuild: 0.27.2 load-tsconfig: 0.2.5 bytes@3.1.2: {} @@ -21944,8 +22292,8 @@ snapshots: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 - esbuild: 0.25.9 - esbuild-register: 3.6.0(esbuild@0.25.9) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) transitivePeerDependencies: - supports-color @@ -22174,10 +22522,10 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild-register@3.6.0(esbuild@0.25.9): + esbuild-register@3.6.0(esbuild@0.25.12): dependencies: debug: 4.4.3 - esbuild: 0.25.9 + esbuild: 0.25.12 transitivePeerDependencies: - supports-color @@ -22344,6 +22692,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.9 '@esbuild/win32-x64': 0.25.9 + esbuild@0.27.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -22370,7 +22747,7 @@ snapshots: eslint: 9.39.1(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@1.21.7)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@1.21.7)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@1.21.7)) @@ -22403,7 +22780,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) transitivePeerDependencies: - supports-color @@ -22418,7 +22795,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -22679,57 +23056,57 @@ snapshots: expect-type@1.2.2: {} - expo-asset@12.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + expo-asset@12.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: '@expo/image-utils': 0.8.7 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) transitivePeerDependencies: - supports-color - expo-constants@17.0.8(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)): + expo-constants@17.0.8(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)): dependencies: '@expo/config': 10.0.11 '@expo/env': 0.4.2 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) transitivePeerDependencies: - supports-color - expo-constants@18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)): + expo-constants@18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)): dependencies: '@expo/config': 12.0.10 '@expo/env': 2.0.7 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) transitivePeerDependencies: - supports-color - expo-file-system@19.0.19(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)): + expo-file-system@19.0.19(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)): dependencies: - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) - expo-font@14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + expo-font@14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) fontfaceobserver: 2.3.0 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) expo-keep-awake@15.0.7(expo@54.0.18)(react@18.3.1): dependencies: - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) react: 18.3.1 - expo-linking@7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + expo-linking@7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: - expo-constants: 17.0.8(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) + expo-constants: 17.0.8(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) invariant: 2.2.4 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) transitivePeerDependencies: - expo - supports-color @@ -22743,29 +23120,29 @@ snapshots: require-from-string: 2.0.2 resolve-from: 5.0.0 - expo-modules-core@3.0.22(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + expo-modules-core@3.0.22(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: invariant: 2.2.4 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) - expo-router@4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + expo-router@4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: - '@expo/metro-runtime': 4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) + '@expo/metro-runtime': 4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) '@expo/server': 0.5.3 '@radix-ui/react-slot': 1.0.1(react@18.3.1) - '@react-navigation/bottom-tabs': 7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - '@react-navigation/native-stack': 7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/bottom-tabs': 7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/native-stack': 7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) client-only: 0.0.1 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) - expo-linking: 7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) + expo-linking: 7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-native-helmet-async: 2.0.4(react@18.3.1) - react-native-is-edge-to-edge: 1.2.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-is-edge-to-edge: 1.2.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) schema-utils: 4.3.3 semver: 7.6.3 server-only: 0.0.1 @@ -22777,23 +23154,23 @@ snapshots: - supports-color optional: true - expo-router@4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0): + expo-router@4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0): dependencies: - '@expo/metro-runtime': 4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) + '@expo/metro-runtime': 4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) '@expo/server': 0.5.3 '@radix-ui/react-slot': 1.0.1(react@19.2.0) - '@react-navigation/bottom-tabs': 7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) - '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - '@react-navigation/native-stack': 7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) + '@react-navigation/bottom-tabs': 7.4.9(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) + '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-navigation/native-stack': 7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) client-only: 0.0.1 - expo: 54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) - expo-linking: 7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo: 54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) + expo-linking: 7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@19.2.0) react-native-helmet-async: 2.0.4(react@19.2.0) - react-native-is-edge-to-edge: 1.2.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) - react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-is-edge-to-edge: 1.2.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) + react-native-safe-area-context: 5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) schema-utils: 4.3.3 semver: 7.6.3 server-only: 0.0.1 @@ -22806,33 +23183,33 @@ snapshots: expo-server@1.0.4: {} - expo@54.0.18(@babel/core@7.28.5)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + expo@54.0.18(@babel/core@7.28.4)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)))(expo-router@4.0.21)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.28.4 - '@expo/cli': 54.0.13(expo-router@4.0.21)(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) + '@expo/cli': 54.0.13(expo-router@4.0.21)(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) '@expo/config': 12.0.10 '@expo/config-plugins': 54.0.2 - '@expo/devtools': 0.1.7(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@expo/devtools': 0.1.7(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) '@expo/fingerprint': 0.15.2 '@expo/metro': 54.1.0 '@expo/metro-config': 54.0.7(expo@54.0.18) - '@expo/vector-icons': 15.0.3(expo-font@14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@expo/vector-icons': 15.0.3(expo-font@14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) '@ungap/structured-clone': 1.3.0 - babel-preset-expo: 54.0.7(@babel/core@7.28.5)(@babel/runtime@7.28.4)(expo@54.0.18)(react-refresh@0.14.2) - expo-asset: 12.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) - expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) - expo-file-system: 19.0.19(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) - expo-font: 14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + babel-preset-expo: 54.0.7(@babel/core@7.28.4)(@babel/runtime@7.28.4)(expo@54.0.18)(react-refresh@0.14.2) + expo-asset: 12.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo-constants: 18.0.10(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) + expo-file-system: 19.0.19(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) + expo-font: 14.0.9(expo@54.0.18)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) expo-keep-awake: 15.0.7(expo@54.0.18)(react@18.3.1) expo-modules-autolinking: 3.0.18 - expo-modules-core: 3.0.22(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + expo-modules-core: 3.0.22(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) pretty-format: 29.7.0 react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) react-refresh: 0.14.2 whatwg-url-without-unicode: 8.0.0-3 optionalDependencies: - '@expo/metro-runtime': 4.0.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1)) + '@expo/metro-runtime': 4.0.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1)) transitivePeerDependencies: - '@babel/core' - '@modelcontextprotocol/sdk' @@ -22940,16 +23317,16 @@ snapshots: sharp: 0.33.5 xml2js: 0.6.2 - favigo@1.1.0(esbuild@0.25.12)(rollup@4.53.3)(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.12)): + favigo@1.1.0(esbuild@0.27.2)(rollup@4.53.3)(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.27.2)): dependencies: favicons: 7.2.0 sharp: 0.33.5 unplugin: 1.16.1 optionalDependencies: - esbuild: 0.25.12 + esbuild: 0.27.2 rollup: 4.53.3 vite: 5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) - webpack: 5.101.3(esbuild@0.25.12) + webpack: 5.101.3(esbuild@0.27.2) fb-dotslash@0.5.8: {} @@ -22981,11 +23358,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.101.3(esbuild@0.25.9)): + file-loader@6.2.0(webpack@5.101.3(esbuild@0.25.12)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.3(esbuild@0.25.9) + webpack: 5.101.3(esbuild@0.25.12) file-saver@2.0.5: {} @@ -23022,7 +23399,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -23122,11 +23499,11 @@ snapshots: freeport-async@2.0.0: {} - freestyle-sandboxes@0.0.66(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3): + freestyle-sandboxes@0.0.66(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3): dependencies: '@hey-api/client-fetch': 0.5.7 '@tanstack/react-query': 5.87.1(react@19.2.0) - expo-router: 4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) + expo-router: 4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) glob: 11.0.3 hono: 4.9.8 openai: 4.104.0(ws@8.18.3)(zod@3.25.76) @@ -23149,13 +23526,13 @@ snapshots: - supports-color - ws - freestyle-sandboxes@0.0.95(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3): + freestyle-sandboxes@0.0.95(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3): dependencies: '@hey-api/client-fetch': 0.5.7 '@tanstack/react-query': 5.87.1(react@19.2.0) '@types/react': 19.2.2 - expo-router: 4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) - freestyle-sandboxes: 0.0.66(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3) + expo-router: 4.0.21(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0) + freestyle-sandboxes: 0.0.66(expo-constants@18.0.10)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(ws@8.18.3) glob: 11.0.3 hono: 4.9.8 openai: 4.104.0(ws@8.18.3)(zod@3.25.76) @@ -25957,6 +26334,15 @@ snapshots: optionalDependencies: postcss: 8.5.6 + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(yaml@2.8.1): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 1.21.7 + postcss: 8.5.6 + tsx: 3.14.0 + yaml: 2.8.1 + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1): dependencies: lilconfig: 3.1.3 @@ -26362,43 +26748,43 @@ snapshots: react-fast-compare: 3.2.2 shallowequal: 1.1.0 - react-native-is-edge-to-edge@1.2.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + react-native-is-edge-to-edge@1.2.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) optional: true - react-native-is-edge-to-edge@1.2.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0): + react-native-is-edge-to-edge@1.2.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0): dependencies: react: 19.2.0 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) - react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) - react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): + react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-freeze: 1.0.4(react@18.3.1) - react-native: 0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1) + react-native: 0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1) warn-once: 0.1.1 - react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1): + react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.82.1 - '@react-native/codegen': 0.82.1(@babel/core@7.28.5) + '@react-native/codegen': 0.82.1(@babel/core@7.28.4) '@react-native/community-cli-plugin': 0.82.1 '@react-native/gradle-plugin': 0.82.1 '@react-native/js-polyfills': 0.82.1 '@react-native/normalize-colors': 0.82.1 - '@react-native/virtualized-lists': 0.82.1(@types/react@19.2.2)(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) + '@react-native/virtualized-lists': 0.82.1(@types/react@19.2.2)(react-native@0.82.1(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.28.5) + babel-jest: 29.7.0(@babel/core@7.28.4) babel-plugin-syntax-hermes-parser: 0.32.0 base64-js: 1.5.1 commander: 12.1.0 @@ -26860,7 +27246,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -26994,7 +27380,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -27328,6 +27714,8 @@ snapshots: sprintf-js@1.0.3: {} + srvx@0.10.0: {} + stable-hash@0.0.5: {} stack-utils@2.0.6: @@ -27720,18 +28108,18 @@ snapshots: webpack: 5.101.3(esbuild@0.25.12) optionalDependencies: esbuild: 0.25.12 - optional: true - terser-webpack-plugin@5.3.14(esbuild@0.25.9)(webpack@5.101.3(esbuild@0.25.9)): + terser-webpack-plugin@5.3.14(esbuild@0.27.2)(webpack@5.101.3(esbuild@0.27.2)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.101.3(esbuild@0.25.9) + webpack: 5.101.3(esbuild@0.27.2) optionalDependencies: - esbuild: 0.25.9 + esbuild: 0.27.2 + optional: true terser@5.44.0: dependencies: @@ -27864,12 +28252,12 @@ snapshots: tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@20.19.13))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.2)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.9) + bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.1 - esbuild: 0.25.9 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 @@ -27893,12 +28281,12 @@ snapshots: tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.9) + bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.1 - esbuild: 0.25.9 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 @@ -27922,12 +28310,12 @@ snapshots: tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.9) + bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.1 - esbuild: 0.25.9 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 @@ -27951,12 +28339,12 @@ snapshots: tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.9) + bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.1 - esbuild: 0.25.9 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 @@ -27980,12 +28368,12 @@ snapshots: tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@24.10.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.2)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.9) + bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.1 - esbuild: 0.25.9 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 @@ -28009,12 +28397,12 @@ snapshots: tsup@8.5.0(@microsoft/api-extractor@7.53.2(@types/node@24.7.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.2)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.9) + bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.1 - esbuild: 0.25.9 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 @@ -28036,6 +28424,180 @@ snapshots: - tsx - yaml + tsup@8.5.1(@microsoft/api-extractor@7.53.2(@types/node@20.19.13))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1) + resolve-from: 5.0.0 + rollup: 4.53.3 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.53.2(@types/node@20.19.13) + postcss: 8.5.6 + typescript: 5.9.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(yaml@2.8.1) + resolve-from: 5.0.0 + rollup: 4.53.3 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.53.2(@types/node@22.18.1) + postcss: 8.5.6 + typescript: 5.9.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1) + resolve-from: 5.0.0 + rollup: 4.53.3 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.53.2(@types/node@22.18.1) + postcss: 8.5.6 + typescript: 5.9.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.1): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(yaml@2.8.1) + resolve-from: 5.0.0 + rollup: 4.53.3 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.53.2(@types/node@22.19.1) + postcss: 8.5.6 + typescript: 5.9.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1) + resolve-from: 5.0.0 + rollup: 4.53.3 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.53.2(@types/node@22.19.1) + postcss: 8.5.6 + typescript: 5.9.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.1(@microsoft/api-extractor@7.53.2(@types/node@24.10.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.1): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(yaml@2.8.1) + resolve-from: 5.0.0 + rollup: 4.53.3 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.53.2(@types/node@24.10.1) + postcss: 8.5.6 + typescript: 5.9.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tsx@3.14.0: dependencies: esbuild: 0.18.20 @@ -28046,7 +28608,7 @@ snapshots: tsx@4.20.5: dependencies: - esbuild: 0.25.9 + esbuild: 0.25.12 get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 @@ -28698,13 +29260,13 @@ snapshots: - supports-color - typescript - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.2.2(@types/node@22.18.1)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.2) optionalDependencies: - vite: 7.2.2(@types/node@22.18.1)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) transitivePeerDependencies: - supports-color - typescript @@ -28780,32 +29342,12 @@ snapshots: terser: 5.44.0 vite@6.4.1(@types/node@22.18.1)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): - dependencies: - esbuild: 0.25.9 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.50.1 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 22.18.1 - fsevents: 2.3.3 - jiti: 1.21.7 - less: 4.4.1 - lightningcss: 1.30.2 - sass: 1.93.2 - stylus: 0.62.0 - terser: 5.44.0 - tsx: 4.20.5 - yaml: 2.8.1 - - vite@7.2.2(@types/node@22.18.1)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.3 + rollup: 4.50.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.18.1 @@ -28818,7 +29360,6 @@ snapshots: terser: 5.44.0 tsx: 4.20.5 yaml: 2.8.1 - optional: true vite@7.2.2(@types/node@24.10.1)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: @@ -29148,9 +29689,8 @@ snapshots: - '@swc/core' - esbuild - uglify-js - optional: true - webpack@5.101.3(esbuild@0.25.9): + webpack@5.101.3(esbuild@0.27.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -29174,13 +29714,14 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.9)(webpack@5.101.3(esbuild@0.25.9)) + terser-webpack-plugin: 5.3.14(esbuild@0.27.2)(webpack@5.101.3(esbuild@0.27.2)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js + optional: true whatwg-fetch@3.6.20: {} diff --git a/rivetkit-asyncapi/asyncapi.json b/rivetkit-asyncapi/asyncapi.json index f590e85df4..61eee576f6 100644 --- a/rivetkit-asyncapi/asyncapi.json +++ b/rivetkit-asyncapi/asyncapi.json @@ -2,7 +2,7 @@ "asyncapi": "3.0.0", "info": { "title": "RivetKit WebSocket Protocol", - "version": "2.0.32", + "version": "2.0.33", "description": "WebSocket protocol for bidirectional communication between RivetKit clients and actors" }, "channels": { diff --git a/rivetkit-openapi/openapi.json b/rivetkit-openapi/openapi.json index 4cbe29da87..63419e2093 100644 --- a/rivetkit-openapi/openapi.json +++ b/rivetkit-openapi/openapi.json @@ -1,7 +1,7 @@ { "openapi": "3.0.0", "info": { - "version": "2.0.32", + "version": "2.0.33", "title": "RivetKit API" }, "components": { diff --git a/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts b/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts index 89646a5e79..206b8954cc 100644 --- a/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts +++ b/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts @@ -1,22 +1,17 @@ +import invariant from "invariant"; import { z } from "zod"; -import { - getRivetEndpoint, - getRivetToken, - getRivetNamespace, - isDev, -} from "@/utils/env-vars"; -import { Logger, LogLevelSchema } from "@/common/log"; -import { InspectorConfigSchema } from "@/inspector/config"; import type { ActorDefinition, AnyActorDefinition } from "@/actor/definition"; -import { DriverConfigSchema, type DriverConfig } from "./driver"; -import invariant from "invariant"; -import { RunnerConfigSchema } from "./runner"; -import { ServerlessConfigSchema } from "./serverless"; +import { resolveEndpoint } from "@/client/config"; +import { type Logger, LogLevelSchema } from "@/common/log"; +import { InspectorConfigSchema } from "@/inspector/config"; import { EndpointSchema, zodCheckDuplicateCredentials, } from "@/utils/endpoint-parser"; -import { resolveEndpoint } from "@/client/config"; +import { getRivetNamespace, getRivetToken, isDev } from "@/utils/env-vars"; +import { type DriverConfig, DriverConfigSchema } from "./driver"; +import { RunnerConfigSchema } from "./runner"; +import { ServerlessConfigSchema } from "./serverless"; export { DriverConfigSchema, type DriverConfig }; @@ -233,6 +228,10 @@ export const RegistryConfigSchema = z serveManager, advertiseEndpoint, inspector, + serverless: { + ...config.serverless, + advertiseEndpoint, + }, }; } else { // Runner logic: diff --git a/rivetkit-typescript/packages/rivetkit/src/registry/index.ts b/rivetkit-typescript/packages/rivetkit/src/registry/index.ts index 5bfccf41f3..e06589cb17 100644 --- a/rivetkit-typescript/packages/rivetkit/src/registry/index.ts +++ b/rivetkit-typescript/packages/rivetkit/src/registry/index.ts @@ -1,5 +1,7 @@ import invariant from "invariant"; +import type { Client } from "@/client/client"; import { createClientWithDriver } from "@/client/client"; +import { createClient } from "@/client/mod"; import { configureBaseLogger, configureDefaultLogger } from "@/common/log"; import { chooseDefaultDriver } from "@/drivers/default"; import { ENGINE_ENDPOINT, ensureEngineProcess } from "@/engine-process/mod"; @@ -8,27 +10,26 @@ import { getInspectorUrl, isInspectorEnabled, } from "@/inspector/utils"; +import { buildManagerRouter } from "@/manager/router"; +import { configureServerlessRunner } from "@/serverless/configure"; +import { buildServerlessRouter } from "@/serverless/router"; +import type { GetUpgradeWebSocket } from "@/utils"; +import { isDev } from "@/utils/env-vars"; import pkg from "../../package.json" with { type: "json" }; import { + type DriverConfig, type RegistryActors, + type RegistryConfig, type RegistryConfigInput, - type DriverConfig, + RegistryConfigSchema, } from "./config"; -import { type RegistryConfig, RegistryConfigSchema } from "./config"; import { type LegacyRunnerConfig, type LegacyRunnerConfigInput, LegacyRunnerConfigSchema, } from "./config/legacy-runner"; import { logger } from "./log"; -import { buildServerlessRouter } from "@/serverless/router"; -import { buildManagerRouter } from "@/manager/router"; import { crossPlatformServe, findFreePort } from "./serve"; -import { GetUpgradeWebSocket } from "@/utils"; -import { configureServerlessRunner } from "@/serverless/configure"; -import type { Client } from "@/client/client"; -import { createClient } from "@/client/mod"; -import { isDev } from "@/utils/env-vars"; export type FetchHandler = ( request: Request, @@ -92,7 +93,7 @@ export class Registry { * ``` */ public serve(): ServerlessHandler { - return { fetch: this.handler }; + return { fetch: this.handler.bind(this) }; } /**