From cd25950b6a81b85e15bd9dcf9ecee16fa088c831 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Fri, 5 Dec 2025 15:38:07 -0800 Subject: [PATCH] feat(site): auto-generate templates from examples dir --- examples/actor-actions/README.md | 17 + .../package.json | 8 +- .../src/backend/registry.ts | 0 .../src/backend}/server.ts | 0 .../src/frontend/App.tsx | 0 .../src/frontend/index.html | 0 .../src/frontend/main.tsx | 0 .../tests/actions.test.ts | 0 .../tsconfig.json | 0 .../turbo.json | 0 .../vite.config.ts | 0 .../vitest.config.ts | 0 examples/ai-agent/README.md | 33 +- examples/ai-agent/package.json | 6 +- .../README.md | 42 +- .../package.json | 16 +- .../turbo.json | 0 .../.gitignore | 0 examples/chat-room-next-js/README.md | 17 + .../next.config.ts | 0 .../package.json | 11 +- .../src/app/api/rivet/[...all]/route.ts | 0 .../src/app/favicon.ico | Bin .../chat-room-next-js/src/app/globals.css | 463 ++++++++ .../src/app/layout.tsx | 4 +- .../src/app/page.module.css | 0 examples/chat-room-next-js/src/app/page.tsx | 5 + .../src/components/ChatRoom.tsx | 0 .../chat-room-next-js/src/rivet/registry.ts | 32 + .../tsconfig.json | 0 .../{starter => chat-room-next-js}/turbo.json | 0 examples/chat-room/README.md | 37 +- examples/chat-room/package.json | 6 +- examples/cloudflare-workers-hono/README.md | 56 +- examples/cloudflare-workers-hono/package.json | 6 +- .../README.md | 26 +- .../package.json | 6 +- examples/cloudflare-workers/README.md | 50 +- examples/cloudflare-workers/package.json | 6 +- examples/counter-next-js/README.md | 54 - examples/counter-next-js/src/app/globals.css | 220 ---- examples/counter-next-js/src/app/page.tsx | 5 - .../counter-next-js/src/rivet/registry.ts | 21 - examples/counter-serverless/README.md | 41 - examples/counter-serverless/package.json | 26 - examples/counter/.gitignore | 2 - examples/counter/README.md | 37 - examples/counter/scripts/connect.ts | 19 - examples/counter/src/registry.ts | 23 - examples/counter/tests/counter.test.ts | 35 - examples/counter/tsconfig.json | 43 - examples/cross-actor-actions/README.md | 17 + examples/cross-actor-actions/package.json | 40 + .../src/backend/registry.ts | 0 .../src/backend/server.ts | 0 .../src/frontend/App.tsx | 0 .../src/frontend/index.html | 0 .../src/frontend/main.tsx | 0 .../tests/cross-actor.test.ts | 0 .../tsconfig.json | 0 examples/cross-actor-actions/turbo.json | 4 + .../vite.config.ts | 0 .../vitest.config.ts | 0 examples/cursors-raw-websocket/README.md | 28 +- examples/cursors-raw-websocket/package.json | 3 +- examples/cursors/README.md | 26 +- examples/cursors/package.json | 6 +- examples/custom-serverless/README.md | 17 + .../package.json | 10 +- .../scripts/connect.ts | 0 .../src/registry.ts | 0 .../src/server.ts | 0 .../tests/counter.test.ts | 0 .../tsconfig.json | 0 examples/custom-serverless/turbo.json | 4 + examples/deno/README.md | 36 +- examples/deno/package.json | 6 +- examples/deno/turbo.json | 4 + examples/drizzle/README.md | 26 +- examples/drizzle/package.json | 6 +- examples/elysia/README.md | 26 +- examples/elysia/package.json | 7 +- examples/express/README.md | 26 +- examples/express/package.json | 6 +- examples/hono-bun/README.md | 34 +- examples/hono-bun/package.json | 10 +- examples/hono-react/README.md | 26 +- examples/hono-react/package.json | 7 +- examples/hono/README.md | 26 +- examples/hono/package.json | 6 +- examples/kitchen-sink/README.md | 29 +- examples/kitchen-sink/package.json | 3 +- examples/multi-region/README.md | 17 + .../package.json | 8 +- .../src/backend/registry.ts | 0 .../src/backend/server.ts | 0 .../src/backend/types.ts | 0 .../src/frontend/App.tsx | 0 .../src/frontend/index.html | 0 .../src/frontend/main.tsx | 0 .../tests/regions.test.ts | 0 .../tsconfig.json | 0 examples/multi-region/turbo.json | 4 + .../vite.config.ts | 0 .../vitest.config.ts | 0 examples/native-websockets/README.md | 17 + .../package.json | 5 +- .../src/backend/registry.ts | 0 .../src/backend/server.ts | 0 .../src/frontend/App.tsx | 0 .../src/frontend/index.html | 0 .../src/frontend/main.tsx | 0 .../tests/websocket.test.ts | 0 .../tsconfig.json | 0 examples/native-websockets/turbo.json | 4 + .../vite.config.ts | 0 .../vitest.config.ts | 0 examples/next-js/README.md | 40 +- examples/next-js/package.json | 17 +- .../scripts/connect.ts | 0 examples/next-js/src/app/globals.css | 443 ++------ examples/next-js/src/app/layout.tsx | 4 +- examples/next-js/src/app/page.tsx | 4 +- .../src/components/Counter.tsx | 0 examples/next-js/src/rivet/registry.ts | 31 +- examples/next-js/turbo.json | 4 + examples/node/README.md | 17 + examples/{starter => node}/package.json | 10 +- examples/{starter => node}/scripts/client.ts | 0 examples/{starter => node}/src/registry.ts | 0 .../src/backend => node/src}/server.ts | 0 examples/{starter => node}/tsconfig.json | 0 examples/node/turbo.json | 4 + examples/quickstart-realtime/package.json | 39 - .../src/backend/registry.ts | 50 - .../quickstart-realtime/src/frontend/App.tsx | 78 -- .../src/frontend/index.html | 90 -- .../quickstart-realtime/tests/cursors.test.ts | 87 -- examples/quickstart-realtime/tsconfig.json | 43 - .../quickstart-scheduling/vitest.config.ts | 7 - examples/quickstart-state/package.json | 38 - .../quickstart-state/src/backend/server.ts | 3 - .../quickstart-state/src/frontend/main.tsx | 12 - examples/quickstart-state/vite.config.ts | 10 - examples/raw-fetch-handler/README.md | 54 +- examples/raw-fetch-handler/package.json | 6 +- .../raw-websocket-handler-proxy/README.md | 35 +- .../raw-websocket-handler-proxy/package.json | 3 +- examples/raw-websocket-handler/README.md | 35 +- examples/raw-websocket-handler/package.json | 6 +- examples/react/README.md | 26 +- examples/react/package.json | 3 +- examples/scheduling/README.md | 17 + .../package.json | 8 +- .../src/backend/registry.ts | 0 .../src/backend/server.ts | 0 .../src/frontend/App.tsx | 0 .../src/frontend/index.html | 0 .../src/frontend/main.tsx | 0 .../tests/scheduling.test.ts | 0 .../tsconfig.json | 0 examples/scheduling/turbo.json | 4 + .../vite.config.ts | 0 .../vitest.config.ts | 0 examples/starter/README.md | 64 -- examples/starter/src/server.ts | 3 - examples/state/README.md | 17 + .../package.json | 8 +- .../src/backend/registry.ts | 0 .../src/backend/server.ts | 0 .../src/frontend/App.tsx | 0 .../src/frontend/index.html | 0 .../src/frontend/main.tsx | 0 .../tests/chat.test.ts | 0 .../{quickstart-state => state}/tsconfig.json | 0 examples/state/turbo.json | 4 + .../vite.config.ts | 0 .../vitest.config.ts | 0 examples/stream/README.md | 26 +- examples/stream/package.json | 3 +- examples/trpc/README.md | 30 +- examples/trpc/package.json | 6 +- .../packages/example-registry/package.json | 5 +- .../example-registry/scripts/build.ts | 121 -- .../example-registry/scripts/build/index.ts | 298 +++++ .../scripts/build/screenshots.ts | 230 ++++ .../scripts/build/validate.ts | 152 +++ .../scripts/migrate-templates.ts | 225 ---- .../scripts/remove-rivet-tech.ts | 61 - .../packages/example-registry/src/_gen.ts | 388 ++++--- frontend/packages/example-registry/turbo.json | 15 + pnpm-lock.yaml | 1004 ++++++++++++----- website/package.json | 4 +- .../public/examples/actor-actions/image.png | Bin 0 -> 137822 bytes website/public/examples/ai-agent/image.png | Bin 0 -> 34721 bytes .../image.png | Bin 0 -> 82097 bytes .../examples/chat-room-next-js/image.png | Bin 0 -> 78925 bytes website/public/examples/chat-room/image.png | Bin 0 -> 51993 bytes .../examples/cross-actor-actions/image.png | Bin 0 -> 82898 bytes .../examples/cursors-raw-websocket/image.png | Bin 0 -> 27439 bytes website/public/examples/cursors/image.png | Bin 0 -> 27887 bytes website/public/examples/hono-react/image.png | Bin 0 -> 25048 bytes .../public/examples/kitchen-sink/image.png | Bin 0 -> 82097 bytes .../public/examples/multi-region/image.png | Bin 0 -> 113191 bytes .../examples/native-websockets/image.png | Bin 0 -> 43647 bytes website/public/examples/next-js/image.png | Bin 0 -> 65576 bytes .../examples/raw-fetch-handler/image.png | Bin 0 -> 51993 bytes .../raw-websocket-handler-proxy/image.png | Bin 0 -> 62256 bytes .../examples/raw-websocket-handler/image.png | Bin 0 -> 62256 bytes website/public/examples/react/image.png | Bin 0 -> 62256 bytes website/public/examples/scheduling/image.png | Bin 0 -> 195640 bytes website/public/examples/state/image.png | Bin 0 -> 54543 bytes website/public/examples/stream/image.png | Bin 0 -> 155164 bytes .../templates/TemplatesPageClient.tsx | 4 +- .../templates/[slug]/TemplateDetailClient.tsx | 193 +++- .../templates/components/TemplateCard.tsx | 91 +- .../templates/components/TemplateImage.tsx | 33 + .../templates/components/TemplatesSidebar.tsx | 70 +- website/src/components/CodeBlock.tsx | 4 +- website/src/components/v2/Code.tsx | 17 +- website/src/components/v2/Header.tsx | 6 +- website/src/data/templates/shared.ts | 2 +- website/src/mdx/rehype.ts | 38 +- 223 files changed, 3093 insertions(+), 3124 deletions(-) create mode 100644 examples/actor-actions/README.md rename examples/{quickstart-actions => actor-actions}/package.json (91%) rename examples/{quickstart-actions => actor-actions}/src/backend/registry.ts (100%) rename examples/{counter/src => actor-actions/src/backend}/server.ts (100%) rename examples/{quickstart-actions => actor-actions}/src/frontend/App.tsx (100%) rename examples/{quickstart-actions => actor-actions}/src/frontend/index.html (100%) rename examples/{quickstart-actions => actor-actions}/src/frontend/main.tsx (100%) rename examples/{quickstart-actions => actor-actions}/tests/actions.test.ts (100%) rename examples/{quickstart-actions => actor-actions}/tsconfig.json (100%) rename examples/{counter-serverless => actor-actions}/turbo.json (100%) rename examples/{quickstart-actions => actor-actions}/vite.config.ts (100%) rename examples/{quickstart-actions => actor-actions}/vitest.config.ts (100%) rename examples/{counter => ai-and-user-generated-actors-freestyle}/turbo.json (100%) rename examples/{counter-next-js => chat-room-next-js}/.gitignore (100%) create mode 100644 examples/chat-room-next-js/README.md rename examples/{counter-next-js => chat-room-next-js}/next.config.ts (100%) rename examples/{counter-next-js => chat-room-next-js}/package.json (77%) rename examples/{counter-next-js => chat-room-next-js}/src/app/api/rivet/[...all]/route.ts (100%) rename examples/{next-js => chat-room-next-js}/src/app/favicon.ico (100%) create mode 100644 examples/chat-room-next-js/src/app/globals.css rename examples/{counter-next-js => chat-room-next-js}/src/app/layout.tsx (87%) rename examples/{next-js => chat-room-next-js}/src/app/page.module.css (100%) create mode 100644 examples/chat-room-next-js/src/app/page.tsx rename examples/{next-js => chat-room-next-js}/src/components/ChatRoom.tsx (100%) create mode 100644 examples/chat-room-next-js/src/rivet/registry.ts rename examples/{counter-next-js => chat-room-next-js}/tsconfig.json (100%) rename examples/{starter => chat-room-next-js}/turbo.json (100%) delete mode 100644 examples/counter-next-js/README.md delete mode 100644 examples/counter-next-js/src/app/globals.css delete mode 100644 examples/counter-next-js/src/app/page.tsx delete mode 100644 examples/counter-next-js/src/rivet/registry.ts delete mode 100644 examples/counter-serverless/README.md delete mode 100644 examples/counter-serverless/package.json delete mode 100644 examples/counter/.gitignore delete mode 100644 examples/counter/README.md delete mode 100644 examples/counter/scripts/connect.ts delete mode 100644 examples/counter/src/registry.ts delete mode 100644 examples/counter/tests/counter.test.ts delete mode 100644 examples/counter/tsconfig.json create mode 100644 examples/cross-actor-actions/README.md create mode 100644 examples/cross-actor-actions/package.json rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/src/backend/registry.ts (100%) rename examples/{quickstart-actions => cross-actor-actions}/src/backend/server.ts (100%) rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/src/frontend/App.tsx (100%) rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/src/frontend/index.html (100%) rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/src/frontend/main.tsx (100%) rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/tests/cross-actor.test.ts (100%) rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/tsconfig.json (100%) create mode 100644 examples/cross-actor-actions/turbo.json rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/vite.config.ts (100%) rename examples/{quickstart-cross-actor-actions => cross-actor-actions}/vitest.config.ts (100%) create mode 100644 examples/custom-serverless/README.md rename examples/{counter => custom-serverless}/package.json (83%) rename examples/{counter-serverless => custom-serverless}/scripts/connect.ts (100%) rename examples/{counter-serverless => custom-serverless}/src/registry.ts (100%) rename examples/{counter-serverless => custom-serverless}/src/server.ts (100%) rename examples/{counter-serverless => custom-serverless}/tests/counter.test.ts (100%) rename examples/{counter-serverless => custom-serverless}/tsconfig.json (100%) create mode 100644 examples/custom-serverless/turbo.json create mode 100644 examples/deno/turbo.json create mode 100644 examples/multi-region/README.md rename examples/{quickstart-scheduling => multi-region}/package.json (91%) rename examples/{quickstart-multi-region => multi-region}/src/backend/registry.ts (100%) rename examples/{quickstart-cross-actor-actions => multi-region}/src/backend/server.ts (100%) rename examples/{quickstart-multi-region => multi-region}/src/backend/types.ts (100%) rename examples/{quickstart-multi-region => multi-region}/src/frontend/App.tsx (100%) rename examples/{quickstart-multi-region => multi-region}/src/frontend/index.html (100%) rename examples/{quickstart-multi-region => multi-region}/src/frontend/main.tsx (100%) rename examples/{quickstart-multi-region => multi-region}/tests/regions.test.ts (100%) rename examples/{quickstart-multi-region => multi-region}/tsconfig.json (100%) create mode 100644 examples/multi-region/turbo.json rename examples/{quickstart-multi-region => multi-region}/vite.config.ts (100%) rename examples/{quickstart-multi-region => multi-region}/vitest.config.ts (100%) create mode 100644 examples/native-websockets/README.md rename examples/{quickstart-native-websockets => native-websockets}/package.json (94%) rename examples/{quickstart-native-websockets => native-websockets}/src/backend/registry.ts (100%) rename examples/{quickstart-multi-region => native-websockets}/src/backend/server.ts (100%) rename examples/{quickstart-native-websockets => native-websockets}/src/frontend/App.tsx (100%) rename examples/{quickstart-native-websockets => native-websockets}/src/frontend/index.html (100%) rename examples/{quickstart-native-websockets => native-websockets}/src/frontend/main.tsx (100%) rename examples/{quickstart-native-websockets => native-websockets}/tests/websocket.test.ts (100%) rename examples/{quickstart-native-websockets => native-websockets}/tsconfig.json (100%) create mode 100644 examples/native-websockets/turbo.json rename examples/{quickstart-native-websockets => native-websockets}/vite.config.ts (100%) rename examples/{quickstart-native-websockets => native-websockets}/vitest.config.ts (100%) rename examples/{counter-next-js => next-js}/scripts/connect.ts (100%) rename examples/{counter-next-js => next-js}/src/components/Counter.tsx (100%) create mode 100644 examples/next-js/turbo.json create mode 100644 examples/node/README.md rename examples/{starter => node}/package.json (84%) rename examples/{starter => node}/scripts/client.ts (100%) rename examples/{starter => node}/src/registry.ts (100%) rename examples/{quickstart-native-websockets/src/backend => node/src}/server.ts (100%) rename examples/{starter => node}/tsconfig.json (100%) create mode 100644 examples/node/turbo.json delete mode 100644 examples/quickstart-realtime/package.json delete mode 100644 examples/quickstart-realtime/src/backend/registry.ts delete mode 100644 examples/quickstart-realtime/src/frontend/App.tsx delete mode 100644 examples/quickstart-realtime/src/frontend/index.html delete mode 100644 examples/quickstart-realtime/tests/cursors.test.ts delete mode 100644 examples/quickstart-realtime/tsconfig.json delete mode 100644 examples/quickstart-scheduling/vitest.config.ts delete mode 100644 examples/quickstart-state/package.json delete mode 100644 examples/quickstart-state/src/backend/server.ts delete mode 100644 examples/quickstart-state/src/frontend/main.tsx delete mode 100644 examples/quickstart-state/vite.config.ts create mode 100644 examples/scheduling/README.md rename examples/{quickstart-cross-actor-actions => scheduling}/package.json (91%) rename examples/{quickstart-scheduling => scheduling}/src/backend/registry.ts (100%) rename examples/{quickstart-realtime => scheduling}/src/backend/server.ts (100%) rename examples/{quickstart-scheduling => scheduling}/src/frontend/App.tsx (100%) rename examples/{quickstart-scheduling => scheduling}/src/frontend/index.html (100%) rename examples/{quickstart-realtime => scheduling}/src/frontend/main.tsx (100%) rename examples/{quickstart-scheduling => scheduling}/tests/scheduling.test.ts (100%) rename examples/{quickstart-scheduling => scheduling}/tsconfig.json (100%) create mode 100644 examples/scheduling/turbo.json rename examples/{quickstart-realtime => scheduling}/vite.config.ts (100%) rename examples/{quickstart-realtime => scheduling}/vitest.config.ts (100%) delete mode 100644 examples/starter/README.md delete mode 100644 examples/starter/src/server.ts create mode 100644 examples/state/README.md rename examples/{quickstart-multi-region => state}/package.json (92%) rename examples/{quickstart-state => state}/src/backend/registry.ts (100%) rename examples/{quickstart-scheduling => state}/src/backend/server.ts (100%) rename examples/{quickstart-state => state}/src/frontend/App.tsx (100%) rename examples/{quickstart-state => state}/src/frontend/index.html (100%) rename examples/{quickstart-scheduling => state}/src/frontend/main.tsx (100%) rename examples/{quickstart-state => state}/tests/chat.test.ts (100%) rename examples/{quickstart-state => state}/tsconfig.json (100%) create mode 100644 examples/state/turbo.json rename examples/{quickstart-scheduling => state}/vite.config.ts (100%) rename examples/{quickstart-state => state}/vitest.config.ts (100%) delete mode 100644 frontend/packages/example-registry/scripts/build.ts create mode 100644 frontend/packages/example-registry/scripts/build/index.ts create mode 100644 frontend/packages/example-registry/scripts/build/screenshots.ts create mode 100644 frontend/packages/example-registry/scripts/build/validate.ts delete mode 100644 frontend/packages/example-registry/scripts/migrate-templates.ts delete mode 100644 frontend/packages/example-registry/scripts/remove-rivet-tech.ts create mode 100644 frontend/packages/example-registry/turbo.json create mode 100644 website/public/examples/actor-actions/image.png create mode 100644 website/public/examples/ai-agent/image.png create mode 100644 website/public/examples/ai-and-user-generated-actors-freestyle/image.png create mode 100644 website/public/examples/chat-room-next-js/image.png create mode 100644 website/public/examples/chat-room/image.png create mode 100644 website/public/examples/cross-actor-actions/image.png create mode 100644 website/public/examples/cursors-raw-websocket/image.png create mode 100644 website/public/examples/cursors/image.png create mode 100644 website/public/examples/hono-react/image.png create mode 100644 website/public/examples/kitchen-sink/image.png create mode 100644 website/public/examples/multi-region/image.png create mode 100644 website/public/examples/native-websockets/image.png create mode 100644 website/public/examples/next-js/image.png create mode 100644 website/public/examples/raw-fetch-handler/image.png create mode 100644 website/public/examples/raw-websocket-handler-proxy/image.png create mode 100644 website/public/examples/raw-websocket-handler/image.png create mode 100644 website/public/examples/react/image.png create mode 100644 website/public/examples/scheduling/image.png create mode 100644 website/public/examples/state/image.png create mode 100644 website/public/examples/stream/image.png create mode 100644 website/src/app/(v2)/(marketing)/templates/components/TemplateImage.tsx diff --git a/examples/actor-actions/README.md b/examples/actor-actions/README.md new file mode 100644 index 0000000000..71bb29b124 --- /dev/null +++ b/examples/actor-actions/README.md @@ -0,0 +1,17 @@ +# Actor Actions + +Demonstrates how to define and call actions on Rivet Actors for RPC-style communication between actors and clients. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/actor-actions +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/quickstart-actions/package.json b/examples/actor-actions/package.json similarity index 91% rename from examples/quickstart-actions/package.json rename to examples/actor-actions/package.json index e5b80564fe..37c08cabbc 100644 --- a/examples/quickstart-actions/package.json +++ b/examples/actor-actions/package.json @@ -1,5 +1,5 @@ { - "name": "quickstart-actions", + "name": "actor-actions", "version": "2.0.21", "private": true, "type": "module", @@ -33,6 +33,8 @@ ], "tags": [ "quickstart" - ] - } + ], + "priority": 1000 + }, + "license": "MIT" } diff --git a/examples/quickstart-actions/src/backend/registry.ts b/examples/actor-actions/src/backend/registry.ts similarity index 100% rename from examples/quickstart-actions/src/backend/registry.ts rename to examples/actor-actions/src/backend/registry.ts diff --git a/examples/counter/src/server.ts b/examples/actor-actions/src/backend/server.ts similarity index 100% rename from examples/counter/src/server.ts rename to examples/actor-actions/src/backend/server.ts diff --git a/examples/quickstart-actions/src/frontend/App.tsx b/examples/actor-actions/src/frontend/App.tsx similarity index 100% rename from examples/quickstart-actions/src/frontend/App.tsx rename to examples/actor-actions/src/frontend/App.tsx diff --git a/examples/quickstart-actions/src/frontend/index.html b/examples/actor-actions/src/frontend/index.html similarity index 100% rename from examples/quickstart-actions/src/frontend/index.html rename to examples/actor-actions/src/frontend/index.html diff --git a/examples/quickstart-actions/src/frontend/main.tsx b/examples/actor-actions/src/frontend/main.tsx similarity index 100% rename from examples/quickstart-actions/src/frontend/main.tsx rename to examples/actor-actions/src/frontend/main.tsx diff --git a/examples/quickstart-actions/tests/actions.test.ts b/examples/actor-actions/tests/actions.test.ts similarity index 100% rename from examples/quickstart-actions/tests/actions.test.ts rename to examples/actor-actions/tests/actions.test.ts diff --git a/examples/quickstart-actions/tsconfig.json b/examples/actor-actions/tsconfig.json similarity index 100% rename from examples/quickstart-actions/tsconfig.json rename to examples/actor-actions/tsconfig.json diff --git a/examples/counter-serverless/turbo.json b/examples/actor-actions/turbo.json similarity index 100% rename from examples/counter-serverless/turbo.json rename to examples/actor-actions/turbo.json diff --git a/examples/quickstart-actions/vite.config.ts b/examples/actor-actions/vite.config.ts similarity index 100% rename from examples/quickstart-actions/vite.config.ts rename to examples/actor-actions/vite.config.ts diff --git a/examples/quickstart-actions/vitest.config.ts b/examples/actor-actions/vitest.config.ts similarity index 100% rename from examples/quickstart-actions/vitest.config.ts rename to examples/actor-actions/vitest.config.ts diff --git a/examples/ai-agent/README.md b/examples/ai-agent/README.md index be203caa8e..b0a3a1452b 100644 --- a/examples/ai-agent/README.md +++ b/examples/ai-agent/README.md @@ -1,40 +1,17 @@ -# AI Agent Chat for RivetKit +# AI Agent Chat -Example project demonstrating AI agent integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating AI agent integration. ## Getting Started -### Prerequisites - -- Node.js 18+ -- OpenAI API key - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/ai-agent +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/ai-agent npm install -``` - -### Development - -1. Set your OpenAI API key: -```sh -export OPENAI_API_KEY=your-api-key-here -``` - -2. Start the development server: -```sh npm run dev ``` -3. Open your browser to `http://localhost:3000` ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/ai-agent/package.json b/examples/ai-agent/package.json index 195432e893..45b446475e 100644 --- a/examples/ai-agent/package.json +++ b/examples/ai-agent/package.json @@ -39,6 +39,8 @@ "tags": [ "ai", "real-time" - ] - } + ], + "priority": 100 + }, + "license": "MIT" } diff --git a/examples/ai-and-user-generated-actors-freestyle/README.md b/examples/ai-and-user-generated-actors-freestyle/README.md index 2ea03a4bb3..1ad81fd61b 100644 --- a/examples/ai-and-user-generated-actors-freestyle/README.md +++ b/examples/ai-and-user-generated-actors-freestyle/README.md @@ -1,8 +1,20 @@ -# User and AI Generated Rivet Actors Freestyle Deployer +# User and AI Generated Actors Freestyle Deployer Shows how to deploy user or AI-generated Rivet Actor code using a sandboxed namespace and Freestyle -[View Full Documentation](https://rivet.dev/docs/actors/ai-and-user-generated-actors) +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/ai-and-user-generated-actors-freestyle +npm install +npm run dev +``` + + +## Documentation + +View documentation on [AI and user generated actors](https://rivet.dev/docs/actors/ai-and-user-generated-actors). ## Features @@ -19,32 +31,6 @@ The logic lives in `src/backend/`: 3. **Deploys actor and frontend to Freestyle**: Builds the project and deploys to Freestyle (see [`src/backend/utils.ts`](src/backend/utils.ts)) 4. **Configures Rivet to connect to Freestyle**: Sets up the Rivet runner to point to the Rivet deployment for running the actors -## Getting Started - -### Prerequisites - -- Node.js 18+ and pnpm -- A [Freestyle](https://freestyle.sh) account and API key -- Either: - - [Rivet Cloud](https://dashboard.rivet.dev/) account with API token, or - - [Self-hosted Rivet instance](https://www.rivet.dev/docs/self-hosting/) with endpoint and token - -### Installation - -```bash -pnpm install -``` - -### Running the Application - -Start both the frontend and backend servers: - -```bash -pnpm dev -``` - -Open http://localhost:5173 in your browser. - ## Usage ### Rivet Cloud diff --git a/examples/ai-and-user-generated-actors-freestyle/package.json b/examples/ai-and-user-generated-actors-freestyle/package.json index 54ae8d2b57..1a895cccf1 100644 --- a/examples/ai-and-user-generated-actors-freestyle/package.json +++ b/examples/ai-and-user-generated-actors-freestyle/package.json @@ -17,7 +17,7 @@ "@hono/node-server": "^1.13.8", "@monaco-editor/react": "^4.7.0", "@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221", - "@rivetkit/engine-api-full": "^25.7.2", + "@rivetkit/engine-api-full": "latest", "dotenv": "^17.2.2", "execa": "^9.5.2", "freestyle-sandboxes": "^0.0.95", @@ -35,5 +35,17 @@ "typescript": "^5.5.2", "vite": "^5.0.0", "vitest": "^2.1.8" - } + }, + "template": { + "technologies": [ + "react", + "hono", + "typescript" + ], + "tags": [ + "ai" + ], + "priority": 400 + }, + "license": "MIT" } diff --git a/examples/counter/turbo.json b/examples/ai-and-user-generated-actors-freestyle/turbo.json similarity index 100% rename from examples/counter/turbo.json rename to examples/ai-and-user-generated-actors-freestyle/turbo.json diff --git a/examples/counter-next-js/.gitignore b/examples/chat-room-next-js/.gitignore similarity index 100% rename from examples/counter-next-js/.gitignore rename to examples/chat-room-next-js/.gitignore diff --git a/examples/chat-room-next-js/README.md b/examples/chat-room-next-js/README.md new file mode 100644 index 0000000000..a0e0911ece --- /dev/null +++ b/examples/chat-room-next-js/README.md @@ -0,0 +1,17 @@ +# Chat Room (Next.js) + +Next.js chat room demonstrating real-time messaging with actor state management. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/chat-room-next-js +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/counter-next-js/next.config.ts b/examples/chat-room-next-js/next.config.ts similarity index 100% rename from examples/counter-next-js/next.config.ts rename to examples/chat-room-next-js/next.config.ts diff --git a/examples/counter-next-js/package.json b/examples/chat-room-next-js/package.json similarity index 77% rename from examples/counter-next-js/package.json rename to examples/chat-room-next-js/package.json index 8440973862..eb37739908 100644 --- a/examples/counter-next-js/package.json +++ b/examples/chat-room-next-js/package.json @@ -1,5 +1,5 @@ { - "name": "example-counter-next-js", + "name": "chat-room-next-js", "version": "2.0.21", "private": true, "scripts": { @@ -7,7 +7,7 @@ "build": "next build", "start": "next start", "lint": "next lint", - "connect": "tsx scripts/connect.ts" + "check-types": "tsc --noEmit" }, "dependencies": { "react": "19.1.0", @@ -20,10 +20,8 @@ "typescript": "^5", "@types/node": "^20", "@types/react": "^19", - "@types/react-dom": "^19", - "tsx": "^3.12.7" + "@types/react-dom": "^19" }, - "stableVersion": "0.8.0", "template": { "technologies": [ "next-js", @@ -33,5 +31,6 @@ "tags": [ "real-time" ] - } + }, + "license": "MIT" } diff --git a/examples/counter-next-js/src/app/api/rivet/[...all]/route.ts b/examples/chat-room-next-js/src/app/api/rivet/[...all]/route.ts similarity index 100% rename from examples/counter-next-js/src/app/api/rivet/[...all]/route.ts rename to examples/chat-room-next-js/src/app/api/rivet/[...all]/route.ts diff --git a/examples/next-js/src/app/favicon.ico b/examples/chat-room-next-js/src/app/favicon.ico similarity index 100% rename from examples/next-js/src/app/favicon.ico rename to examples/chat-room-next-js/src/app/favicon.ico diff --git a/examples/chat-room-next-js/src/app/globals.css b/examples/chat-room-next-js/src/app/globals.css new file mode 100644 index 0000000000..24fa51ff25 --- /dev/null +++ b/examples/chat-room-next-js/src/app/globals.css @@ -0,0 +1,463 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', Roboto, sans-serif; + background: #000000; + height: 100vh; + overflow: hidden; + margin: 0; + padding: 0; +} + +.app { + display: flex; + height: 100vh; + width: 100vw; + background: #000000; + overflow: hidden; +} + +/* Sidebar */ +.sidebar { + width: 280px; + background: #1c1c1e; + border-right: 1px solid #2c2c2e; + display: flex; + flex-direction: column; +} + +.sidebar-header { + padding: 20px 20px; + border-bottom: 1px solid #2c2c2e; + display: flex; + justify-content: space-between; + align-items: center; + height: 60px; + box-sizing: border-box; +} + +.logo { + display: flex; + align-items: center; + gap: 12px; +} + +.logo h1 { + font-size: 18px; + font-weight: 500; + color: #ffffff; +} + +.close-sidebar { + display: none; + background: none; + border: none; + color: #8e8e93; + cursor: pointer; + padding: 8px; + border-radius: 6px; + transition: all 0.2s ease; +} + +.close-sidebar:hover { + background: #3a3a3c; + color: #ffffff; +} + +.user-settings { + padding: 20px; + flex: 1; +} + +.setting-group { + margin-bottom: 20px; +} + +.setting-group label { + display: block; + font-size: 14px; + font-weight: 600; + color: #8e8e93; + margin-bottom: 8px; +} + +.setting-input { + width: 100%; + padding: 10px 14px; + border: 1px solid #3a3a3c; + border-radius: 8px; + font-size: 14px; + transition: all 0.2s ease; + background: #2c2c2e; + color: #ffffff; +} + +.setting-input:focus { + outline: none; + border-color: #007aff; + box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1); +} + +.setting-input::placeholder { + color: #8e8e93; +} + +.connection-status { + padding: 20px; + border-top: 1px solid #2c2c2e; + height: 60px; + box-sizing: border-box; + display: flex; + align-items: center; +} + +.status-indicator { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + font-weight: 500; +} + +.status-dot { + width: 8px; + height: 8px; + border-radius: 50%; + transition: background-color 0.2s ease; +} + +.status-indicator.connected .status-dot { + background-color: #30d158; +} + +.status-indicator.disconnected .status-dot { + background-color: #ff3b30; +} + +.status-indicator.connected { + color: #30d158; +} + +.status-indicator.disconnected { + color: #ff3b30; +} + +/* Chat Container */ +.chat-container { + flex: 1; + display: flex; + flex-direction: column; + background: #000000; +} + +.chat-header { + padding: 12px 20px; + border-bottom: 1px solid #2c2c2e; + background: #1c1c1e; + display: flex; + align-items: center; + gap: 12px; +} + +.menu-button { + display: none; + background: none; + border: none; + color: #8e8e93; + cursor: pointer; + padding: 8px; + border-radius: 6px; + transition: all 0.2s ease; +} + +.menu-button:hover { + background: #3a3a3c; + color: #ffffff; +} + +.room-info h2 { + font-size: 16px; + font-weight: 600; + color: #ffffff; + margin-bottom: 2px; +} + +.room-info p { + font-size: 12px; + color: #8e8e93; +} + +.messages-container { + flex: 1; + overflow-y: auto; + background: #000000; +} + +.messages { + padding: 16px 20px; + min-height: 100%; +} + +.message-wrapper { + display: flex; + margin-bottom: 12px; + align-items: flex-end; +} + +.message-wrapper.own { + flex-direction: row-reverse; +} + +.message-avatar { + margin-right: 12px; + flex-shrink: 0; +} + +.message-wrapper.own .message-avatar { + margin-right: 0; + margin-left: 12px; +} + +.avatar { + width: 32px; + height: 32px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + font-weight: 600; + color: white; + text-transform: uppercase; +} + +.avatar-spacer { + width: 32px; + margin-right: 12px; +} + +.message-wrapper.own .avatar-spacer { + margin-right: 0; + margin-left: 12px; +} + +.message-content { + max-width: 70%; + display: flex; + flex-direction: column; +} + +.message-wrapper.own .message-content { + align-items: flex-end; +} + +.message-sender { + font-size: 12px; + font-weight: 600; + color: #64748b; + margin-bottom: 4px; + margin-left: 4px; +} + +.message-wrapper.own .message-sender { + margin-left: 0; + margin-right: 4px; +} + +.message-bubble { + padding: 10px 14px; + border-radius: 16px; + position: relative; + word-wrap: break-word; + max-width: 100%; +} + +.message-bubble.other { + background: #2c2c2e; + border: none; + border-bottom-left-radius: 4px; + color: #ffffff; +} + +.message-bubble.own { + background: #007aff; + color: white; + border-bottom-right-radius: 4px; +} + +.message-text { + font-size: 15px; + line-height: 1.3; + margin-bottom: 3px; +} + +.message-time { + font-size: 11px; + opacity: 0.5; +} + +.empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + text-align: center; + color: #8e8e93; +} + +.empty-icon { + font-size: 48px; + margin-bottom: 16px; +} + +.empty-state h3 { + font-size: 18px; + font-weight: 600; + color: #ffffff; + margin-bottom: 8px; +} + +.empty-state p { + font-size: 14px; +} + +.input-container { + padding: 12px 20px; + border-top: 1px solid #2c2c2e; + background: #1c1c1e; + height: 60px; + box-sizing: border-box; + display: flex; + align-items: center; +} + +.input-wrapper { + display: flex; + align-items: center; + gap: 8px; + background: #2c2c2e; + border: 1px solid #3a3a3c; + border-radius: 20px; + padding: 6px 6px 6px 16px; + transition: all 0.2s ease; + width: 100%; +} + +.input-wrapper:focus-within { + border-color: #007aff; + box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1); +} + +.message-input { + flex: 1; + border: none; + background: transparent; + font-size: 15px; + outline: none; + resize: none; + color: #ffffff; +} + +.message-input::placeholder { + color: #8e8e93; +} + +.send-button { + width: 32px; + height: 32px; + border: none; + border-radius: 50%; + background: #007aff; + color: white; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: all 0.2s ease; + flex-shrink: 0; +} + +.send-button:hover:not(:disabled) { + background: #0056cc; + transform: scale(1.05); +} + +.send-button:disabled { + background: #3a3a3c; + cursor: not-allowed; + transform: none; +} + +/* Scrollbar Styling */ +.messages-container::-webkit-scrollbar { + width: 6px; +} + +.messages-container::-webkit-scrollbar-track { + background: transparent; +} + +.messages-container::-webkit-scrollbar-thumb { + background: #3a3a3c; + border-radius: 3px; +} + +.messages-container::-webkit-scrollbar-thumb:hover { + background: #48484a; +} + +/* Responsive Design */ +@media (max-width: 768px) { + .app { + height: 100vh; + } + + .sidebar { + width: 100%; + position: absolute; + z-index: 10; + transform: translateX(-100%); + transition: transform 0.3s ease; + } + + .sidebar.open { + transform: translateX(0); + } + + .close-sidebar { + display: block; + } + + .menu-button { + display: block; + } + + .chat-container { + width: 100%; + } + + .message-content { + max-width: 85%; + } +} + +/* Animation for new messages */ +@keyframes slideIn { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.message-wrapper { + animation: slideIn 0.3s ease; +} diff --git a/examples/counter-next-js/src/app/layout.tsx b/examples/chat-room-next-js/src/app/layout.tsx similarity index 87% rename from examples/counter-next-js/src/app/layout.tsx rename to examples/chat-room-next-js/src/app/layout.tsx index c4f1400687..9e2c27453e 100644 --- a/examples/counter-next-js/src/app/layout.tsx +++ b/examples/chat-room-next-js/src/app/layout.tsx @@ -13,8 +13,8 @@ const geistMono = Geist_Mono({ }); export const metadata: Metadata = { - title: "Rivet Counter", - description: "Real-time counter powered by RivetKit", + title: "Rivet Chat", + description: "Real-time chat powered by RivetKit", }; export default function RootLayout({ diff --git a/examples/next-js/src/app/page.module.css b/examples/chat-room-next-js/src/app/page.module.css similarity index 100% rename from examples/next-js/src/app/page.module.css rename to examples/chat-room-next-js/src/app/page.module.css diff --git a/examples/chat-room-next-js/src/app/page.tsx b/examples/chat-room-next-js/src/app/page.tsx new file mode 100644 index 0000000000..8dd238dd61 --- /dev/null +++ b/examples/chat-room-next-js/src/app/page.tsx @@ -0,0 +1,5 @@ +import { ChatRoom } from "@/components/ChatRoom"; + +export default function Home() { + return ; +} diff --git a/examples/next-js/src/components/ChatRoom.tsx b/examples/chat-room-next-js/src/components/ChatRoom.tsx similarity index 100% rename from examples/next-js/src/components/ChatRoom.tsx rename to examples/chat-room-next-js/src/components/ChatRoom.tsx diff --git a/examples/chat-room-next-js/src/rivet/registry.ts b/examples/chat-room-next-js/src/rivet/registry.ts new file mode 100644 index 0000000000..40ab853108 --- /dev/null +++ b/examples/chat-room-next-js/src/rivet/registry.ts @@ -0,0 +1,32 @@ +import { actor, setup } from "rivetkit"; + +export type Message = { sender: string; text: string; timestamp: number }; + +export const chatRoom = actor({ + options: { + sleepTimeout: 2000, + }, + // Persistent state that survives restarts + state: { + messages: [] as Message[], + }, + + actions: { + // Callable functions from clients + sendMessage: (c, sender: string, text: string) => { + const message = { sender, text, timestamp: Date.now() }; + // State changes are automatically persisted + c.state.messages.push(message); + // Send events to all connected clients + c.broadcast("newMessage", message); + return message; + }, + + getHistory: (c) => c.state.messages, + }, +}); + +// Register actors for use +export const registry = setup({ + use: { chatRoom }, +}); diff --git a/examples/counter-next-js/tsconfig.json b/examples/chat-room-next-js/tsconfig.json similarity index 100% rename from examples/counter-next-js/tsconfig.json rename to examples/chat-room-next-js/tsconfig.json diff --git a/examples/starter/turbo.json b/examples/chat-room-next-js/turbo.json similarity index 100% rename from examples/starter/turbo.json rename to examples/chat-room-next-js/turbo.json diff --git a/examples/chat-room/README.md b/examples/chat-room/README.md index 25ae130960..6132b6ad96 100644 --- a/examples/chat-room/README.md +++ b/examples/chat-room/README.md @@ -1,43 +1,16 @@ -# Chat Room for RivetKit +# Chat Room -Example project demonstrating real-time messaging and actor state management with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating real-time messaging and actor state management. ## Getting Started -### Prerequisites - -- Node.js 18+ - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/chat-room +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/chat-room npm install -``` - -### Development - -#### Web UI -Start the development server with both backend and React frontend: - -```sh npm run dev ``` -Open your browser to `http://localhost:3000` to use the web chat interface. - -#### CLI Interface - -Alternatively, use the CLI interface: - -```sh -npm run dev:cli -``` ## Features @@ -49,4 +22,4 @@ npm run dev:cli ## License -Apache 2.0 +MIT diff --git a/examples/chat-room/package.json b/examples/chat-room/package.json index 801df2734d..70906ee1d0 100644 --- a/examples/chat-room/package.json +++ b/examples/chat-room/package.json @@ -38,6 +38,8 @@ ], "tags": [ "real-time" - ] - } + ], + "priority": 200 + }, + "license": "MIT" } diff --git a/examples/cloudflare-workers-hono/README.md b/examples/cloudflare-workers-hono/README.md index 15068c25bb..b9bab7d621 100644 --- a/examples/cloudflare-workers-hono/README.md +++ b/examples/cloudflare-workers-hono/README.md @@ -1,63 +1,17 @@ -# Cloudflare Workers with Hono for RivetKit +# Cloudflare Workers with Hono -Example project demonstrating Cloudflare Workers deployment with Hono router using [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating Cloudflare Workers deployment with Hono router. ## Getting Started -### Prerequisites - -- Node.js -- Cloudflare account with Actors enabled -- Wrangler CLI installed globally (`npm install -g wrangler`) - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/cloudflare-workers-hono +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/cloudflare-workers-hono npm install -``` - -### Development - -```sh npm run dev ``` -This will start the Cloudflare Workers development server locally at http://localhost:8787. - -### Testing the Application - -You can test the Hono router endpoint by making a POST request to increment a counter: - -```sh -curl -X POST http://localhost:8787/increment/my-counter -``` - -Or run the client script to interact with your actors: - -```sh -npm run client -``` - -### Deploy to Cloudflare - -First, authenticate with Cloudflare: - -```sh -wrangler login -``` - -Then deploy: - -```sh -npm run deploy -``` ## License -Apache 2.0 +MIT diff --git a/examples/cloudflare-workers-hono/package.json b/examples/cloudflare-workers-hono/package.json index acba2aaf46..eb3379765d 100644 --- a/examples/cloudflare-workers-hono/package.json +++ b/examples/cloudflare-workers-hono/package.json @@ -28,6 +28,8 @@ "hono", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/cloudflare-workers-inline-client/README.md b/examples/cloudflare-workers-inline-client/README.md index a522c3f103..146d122bcc 100644 --- a/examples/cloudflare-workers-inline-client/README.md +++ b/examples/cloudflare-workers-inline-client/README.md @@ -4,30 +4,14 @@ Simple example demonstrating accessing Rivet Actors via Cloudflare Workers witho ## Getting Started -Install dependencies: - -```sh -pnpm install -``` - -Start the development server: - -```sh -pnpm run dev -``` - -In a separate terminal, test the endpoint: - ```sh -pnpm run client-http +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/cloudflare-workers-inline-client +npm install +npm run dev ``` -Or: - -```sh -pnpm run client-rivetkit -``` ## License -Apache 2.0 +MIT diff --git a/examples/cloudflare-workers-inline-client/package.json b/examples/cloudflare-workers-inline-client/package.json index cfff982c60..43b52b24be 100644 --- a/examples/cloudflare-workers-inline-client/package.json +++ b/examples/cloudflare-workers-inline-client/package.json @@ -27,6 +27,8 @@ "cloudflare-workers", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/cloudflare-workers/README.md b/examples/cloudflare-workers/README.md index 118113f8f4..5387ab60f0 100644 --- a/examples/cloudflare-workers/README.md +++ b/examples/cloudflare-workers/README.md @@ -1,57 +1,17 @@ -# Cloudflare Workers for RivetKit +# Cloudflare Workers -Example project demonstrating Cloudflare Workers deployment with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating Cloudflare Workers deployment. ## Getting Started -### Prerequisites - -- Node.js -- Cloudflare account with Actors enabled -- Wrangler CLI installed globally (`npm install -g wrangler`) - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/cloudflare-workers +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/cloudflare-workers npm install -``` - -### Development - -```sh npm run dev ``` -This will start the Cloudflare Workers development server locally at http://localhost:8787. - -### Testing the Client - -In a separate terminal, run the client script to interact with your actors: - -```sh -npm run client -``` - -### Deploy to Cloudflare - -First, authenticate with Cloudflare: - -```sh -wrangler login -``` - -Then deploy: - -```sh -npm run deploy -``` ## License -Apache 2.0 +MIT diff --git a/examples/cloudflare-workers/package.json b/examples/cloudflare-workers/package.json index 365fca9878..a6f3749b04 100644 --- a/examples/cloudflare-workers/package.json +++ b/examples/cloudflare-workers/package.json @@ -26,6 +26,8 @@ "cloudflare-workers", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/counter-next-js/README.md b/examples/counter-next-js/README.md deleted file mode 100644 index 4409287b70..0000000000 --- a/examples/counter-next-js/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Counter for RivetKit (Next.js) - -Example Next.js project demonstrating basic actor state management and real-time updates with [RivetKit](https://rivetkit.org). - -This example combines the counter functionality from the basic counter example with a Next.js application structure. - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) - -## Getting Started - -### Prerequisites - -- Node.js - -### Installation - -```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/counter-next-js -pnpm install -``` - -### Development - -```sh -pnpm dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the counter in action. - -The counter is shared across all clients using the same Counter ID. Try opening the page in multiple tabs or browsers to see real-time synchronization! - -### Testing with the Connect Script - -Run the connect script to interact with the counter from the command line: - -```sh -pnpm connect -``` - -This will connect to the counter and increment it every second. You'll see the updates in both the terminal and the web interface! - -## Features - -- Real-time counter synchronization across multiple clients -- Next.js 15 with App Router -- TypeScript support -- Customizable counter IDs for multiple independent counters - -## License - -Apache 2.0 diff --git a/examples/counter-next-js/src/app/globals.css b/examples/counter-next-js/src/app/globals.css deleted file mode 100644 index 87993fb782..0000000000 --- a/examples/counter-next-js/src/app/globals.css +++ /dev/null @@ -1,220 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', Roboto, sans-serif; - background: #000000; - min-height: 100vh; - display: flex; - align-items: center; - justify-content: center; - color: #ffffff; - padding: 20px; -} - -.counter-app { - width: 100%; - max-width: 500px; - margin: 0 auto; -} - -.counter-container { - background: #1c1c1e; - border-radius: 16px; - border: 1px solid #2c2c2e; - overflow: hidden; -} - -.counter-header { - padding: 24px; - border-bottom: 1px solid #2c2c2e; - display: flex; - justify-content: space-between; - align-items: center; -} - -.counter-header h1 { - font-size: 24px; - font-weight: 600; - color: #ffffff; -} - -.status-indicator { - display: flex; - align-items: center; - gap: 8px; - font-size: 14px; - font-weight: 500; -} - -.status-dot { - width: 8px; - height: 8px; - border-radius: 50%; - transition: background-color 0.2s ease; -} - -.status-indicator.connected .status-dot { - background-color: #30d158; -} - -.status-indicator.disconnected .status-dot { - background-color: #ff3b30; -} - -.status-indicator.connected { - color: #30d158; -} - -.status-indicator.disconnected { - color: #ff3b30; -} - -.counter-settings { - padding: 24px; - border-bottom: 1px solid #2c2c2e; -} - -.setting-group { - margin-bottom: 0; -} - -.setting-group label { - display: block; - font-size: 14px; - font-weight: 600; - color: #8e8e93; - margin-bottom: 8px; -} - -.setting-input { - width: 100%; - padding: 10px 14px; - border: 1px solid #3a3a3c; - border-radius: 8px; - font-size: 14px; - transition: all 0.2s ease; - background: #2c2c2e; - color: #ffffff; -} - -.setting-input:focus { - outline: none; - border-color: #007aff; - box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1); -} - -.setting-input::placeholder { - color: #8e8e93; -} - -.counter-display { - padding: 48px 24px; - text-align: center; - background: #000000; -} - -.count-value { - font-size: 72px; - font-weight: 700; - color: #007aff; - line-height: 1; - margin-bottom: 12px; - font-variant-numeric: tabular-nums; -} - -.count-label { - font-size: 16px; - color: #8e8e93; - font-weight: 500; -} - -.counter-controls { - padding: 24px; - display: flex; - gap: 12px; - border-bottom: 1px solid #2c2c2e; -} - -.counter-button { - flex: 1; - padding: 16px; - border: none; - border-radius: 12px; - font-size: 18px; - font-weight: 600; - cursor: pointer; - transition: all 0.2s ease; - color: white; -} - -.counter-button.increment-1 { - background: #007aff; -} - -.counter-button.increment-1:hover:not(:disabled) { - background: #0056cc; - transform: translateY(-2px); -} - -.counter-button.increment-5 { - background: #34c759; -} - -.counter-button.increment-5:hover:not(:disabled) { - background: #28a745; - transform: translateY(-2px); -} - -.counter-button.increment-10 { - background: #ff9500; -} - -.counter-button.increment-10:hover:not(:disabled) { - background: #e68600; - transform: translateY(-2px); -} - -.counter-button:disabled { - background: #3a3a3c; - cursor: not-allowed; - color: #8e8e93; - transform: none; -} - -.info-box { - padding: 24px; - background: #2c2c2e; -} - -.info-box p { - font-size: 14px; - color: #8e8e93; - line-height: 1.6; - margin-bottom: 8px; -} - -.info-box p:last-child { - margin-bottom: 0; -} - -@media (max-width: 480px) { - .counter-header h1 { - font-size: 20px; - } - - .count-value { - font-size: 56px; - } - - .counter-controls { - flex-direction: column; - } - - .counter-button { - width: 100%; - } -} diff --git a/examples/counter-next-js/src/app/page.tsx b/examples/counter-next-js/src/app/page.tsx deleted file mode 100644 index 97cba5bdfc..0000000000 --- a/examples/counter-next-js/src/app/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Counter } from "@/components/Counter"; - -export default function Home() { - return ; -} diff --git a/examples/counter-next-js/src/rivet/registry.ts b/examples/counter-next-js/src/rivet/registry.ts deleted file mode 100644 index 1e6cdc4fca..0000000000 --- a/examples/counter-next-js/src/rivet/registry.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { actor, setup } from "rivetkit"; - -const counter = actor({ - state: { - count: 0, - }, - actions: { - increment: (c, x: number) => { - c.state.count += x; - c.broadcast("newCount", c.state.count); - return c.state.count; - }, - getCount: (c) => { - return c.state.count; - }, - }, -}); - -export const registry = setup({ - use: { counter }, -}); diff --git a/examples/counter-serverless/README.md b/examples/counter-serverless/README.md deleted file mode 100644 index bc11eb08c6..0000000000 --- a/examples/counter-serverless/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Counter (Serverless) for RivetKit - -Example project demonstrating serverless actor deployment with automatic engine configuration using [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) - -## Getting Started - -### Prerequisites - -- Node.js -- RIVET_TOKEN environment variable (for serverless configuration) - -### Installation - -```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/counter-serverless -npm install -``` - -### Development - -Set your Rivet token and run the development server: - -```sh -export RIVET_TOKEN=your-token-here -npm run dev -``` - -Run the connect script to interact with the counter: - -```sh -tsx scripts/connect.ts -``` - -## License - -Apache 2.0 \ No newline at end of file diff --git a/examples/counter-serverless/package.json b/examples/counter-serverless/package.json deleted file mode 100644 index 7e292e296e..0000000000 --- a/examples/counter-serverless/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "example-counter-serverless", - "version": "2.0.21", - "private": true, - "type": "module", - "scripts": { - "dev": "tsx src/server.ts", - "check-types": "tsc --noEmit", - "connect": "tsx scripts/connect.ts", - "test": "vitest run" - }, - "devDependencies": { - "rivetkit": "workspace:*", - "@types/node": "^22.13.9", - "tsx": "^3.12.7", - "typescript": "^5.7.3", - "vitest": "^3.1.1" - }, - "stableVersion": "0.8.0", - "template": { - "technologies": [ - "typescript" - ], - "tags": [] - } -} diff --git a/examples/counter/.gitignore b/examples/counter/.gitignore deleted file mode 100644 index 79b7a1192f..0000000000 --- a/examples/counter/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.actorcore -node_modules \ No newline at end of file diff --git a/examples/counter/README.md b/examples/counter/README.md deleted file mode 100644 index 213d0f5d7e..0000000000 --- a/examples/counter/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Counter for RivetKit - -Example project demonstrating basic actor state management and RPC calls with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) - -## Getting Started - -### Prerequisites - -- Node.js - -### Installation - -```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/counter -npm install -``` - -### Development - -```sh -npm run dev -``` - -Run the connect script to interact with the counter: - -```sh -tsx scripts/connect.ts -``` - -## License - -Apache 2.0 \ No newline at end of file diff --git a/examples/counter/scripts/connect.ts b/examples/counter/scripts/connect.ts deleted file mode 100644 index 42208adced..0000000000 --- a/examples/counter/scripts/connect.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createClient } from "rivetkit/client"; -import type { Registry } from "../src/registry"; - -async function main() { - const client = createClient("http://localhost:6420"); - - const counter = client.counter.getOrCreate().connect(); - - counter.on("newCount", (count: number) => console.log("Event:", count)); - - while (true) { - const out = await counter.increment(1); - console.log("RPC:", out); - - await new Promise((resolve) => setTimeout(resolve, 1000)); - } -} - -main(); diff --git a/examples/counter/src/registry.ts b/examples/counter/src/registry.ts deleted file mode 100644 index 44707e2fef..0000000000 --- a/examples/counter/src/registry.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { actor, setup } from "rivetkit"; - -const counter = actor({ - state: { - count: 0, - }, - actions: { - increment: (c, x: number) => { - c.state.count += x; - c.broadcast("newCount", c.state.count); - return c.state.count; - }, - getCount: (c) => { - return c.state.count; - }, - }, -}); - -export const registry = setup({ - use: { counter }, -}); - -export type Registry = typeof registry; diff --git a/examples/counter/tests/counter.test.ts b/examples/counter/tests/counter.test.ts deleted file mode 100644 index 89ba4667e0..0000000000 --- a/examples/counter/tests/counter.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { setupTest } from "rivetkit/test"; -import { expect, test } from "vitest"; -import { registry } from "../src/registry"; - -test("it should count", async (test) => { - const { client } = await setupTest(test, registry); - const counter = client.counter.getOrCreate().connect(); - - // Test initial count - expect(await counter.getCount()).toBe(0); - - // Test event emission - let eventCount = -1; - counter.on("newCount", (count: number) => { - eventCount = count; - }); - - // Test increment - const incrementAmount = 5; - const result = await counter.increment(incrementAmount); - expect(result).toBe(incrementAmount); - - // Verify event was emitted with correct count - expect(eventCount).toBe(incrementAmount); - - // Test multiple increments - for (let i = 1; i <= 3; i++) { - const newCount = await counter.increment(incrementAmount); - expect(newCount).toBe(incrementAmount * (i + 1)); - expect(eventCount).toBe(incrementAmount * (i + 1)); - } - - // Verify final count - expect(await counter.getCount()).toBe(incrementAmount * 4); -}); diff --git a/examples/counter/tsconfig.json b/examples/counter/tsconfig.json deleted file mode 100644 index fa0f0ab2ad..0000000000 --- a/examples/counter/tsconfig.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "target": "esnext", - /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - "lib": ["esnext"], - /* Specify what JSX code is generated. */ - "jsx": "react-jsx", - - /* Specify what module code is generated. */ - "module": "esnext", - /* Specify how TypeScript looks up a file from a given module specifier. */ - "moduleResolution": "bundler", - /* Specify type package names to be included without being referenced in a source file. */ - "types": ["node"], - /* Enable importing .json files */ - "resolveJsonModule": true, - - /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - "allowJs": true, - /* Enable error reporting in type-checked JavaScript files. */ - "checkJs": false, - - /* Disable emitting files from a compilation. */ - "noEmit": true, - - /* Ensure that each file can be safely transpiled without relying on other imports. */ - "isolatedModules": true, - /* Allow 'import x from y' when a module doesn't have a default export. */ - "allowSyntheticDefaultImports": true, - /* Ensure that casing is correct in imports. */ - "forceConsistentCasingInFileNames": true, - - /* Enable all strict type-checking options. */ - "strict": true, - - /* Skip type checking all .d.ts files. */ - "skipLibCheck": true - }, - "include": ["src/**/*.ts", "scripts/**/*.ts", "tests/**/*.ts"] -} diff --git a/examples/cross-actor-actions/README.md b/examples/cross-actor-actions/README.md new file mode 100644 index 0000000000..715dc9cfd5 --- /dev/null +++ b/examples/cross-actor-actions/README.md @@ -0,0 +1,17 @@ +# Cross-Actor Actions + +Demonstrates how actors can call actions on other actors for inter-actor communication and coordination. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/cross-actor-actions +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/cross-actor-actions/package.json b/examples/cross-actor-actions/package.json new file mode 100644 index 0000000000..26c20d2051 --- /dev/null +++ b/examples/cross-actor-actions/package.json @@ -0,0 +1,40 @@ +{ + "name": "cross-actor-actions", + "version": "2.0.21", + "private": true, + "type": "module", + "scripts": { + "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", + "dev:backend": "tsx --watch src/backend/server.ts", + "dev:frontend": "vite", + "check-types": "tsc --noEmit", + "test": "vitest run" + }, + "devDependencies": { + "@types/node": "^22.13.9", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "@vitejs/plugin-react": "^4.2.0", + "concurrently": "^8.2.2", + "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" + }, + "dependencies": { + "rivetkit": "workspace:*" + }, + "template": { + "technologies": [ + "typescript" + ], + "tags": [ + "quickstart" + ], + "priority": 1000 + }, + "license": "MIT" +} diff --git a/examples/quickstart-cross-actor-actions/src/backend/registry.ts b/examples/cross-actor-actions/src/backend/registry.ts similarity index 100% rename from examples/quickstart-cross-actor-actions/src/backend/registry.ts rename to examples/cross-actor-actions/src/backend/registry.ts diff --git a/examples/quickstart-actions/src/backend/server.ts b/examples/cross-actor-actions/src/backend/server.ts similarity index 100% rename from examples/quickstart-actions/src/backend/server.ts rename to examples/cross-actor-actions/src/backend/server.ts diff --git a/examples/quickstart-cross-actor-actions/src/frontend/App.tsx b/examples/cross-actor-actions/src/frontend/App.tsx similarity index 100% rename from examples/quickstart-cross-actor-actions/src/frontend/App.tsx rename to examples/cross-actor-actions/src/frontend/App.tsx diff --git a/examples/quickstart-cross-actor-actions/src/frontend/index.html b/examples/cross-actor-actions/src/frontend/index.html similarity index 100% rename from examples/quickstart-cross-actor-actions/src/frontend/index.html rename to examples/cross-actor-actions/src/frontend/index.html diff --git a/examples/quickstart-cross-actor-actions/src/frontend/main.tsx b/examples/cross-actor-actions/src/frontend/main.tsx similarity index 100% rename from examples/quickstart-cross-actor-actions/src/frontend/main.tsx rename to examples/cross-actor-actions/src/frontend/main.tsx diff --git a/examples/quickstart-cross-actor-actions/tests/cross-actor.test.ts b/examples/cross-actor-actions/tests/cross-actor.test.ts similarity index 100% rename from examples/quickstart-cross-actor-actions/tests/cross-actor.test.ts rename to examples/cross-actor-actions/tests/cross-actor.test.ts diff --git a/examples/quickstart-cross-actor-actions/tsconfig.json b/examples/cross-actor-actions/tsconfig.json similarity index 100% rename from examples/quickstart-cross-actor-actions/tsconfig.json rename to examples/cross-actor-actions/tsconfig.json diff --git a/examples/cross-actor-actions/turbo.json b/examples/cross-actor-actions/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/cross-actor-actions/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/quickstart-cross-actor-actions/vite.config.ts b/examples/cross-actor-actions/vite.config.ts similarity index 100% rename from examples/quickstart-cross-actor-actions/vite.config.ts rename to examples/cross-actor-actions/vite.config.ts diff --git a/examples/quickstart-cross-actor-actions/vitest.config.ts b/examples/cross-actor-actions/vitest.config.ts similarity index 100% rename from examples/quickstart-cross-actor-actions/vitest.config.ts rename to examples/cross-actor-actions/vitest.config.ts diff --git a/examples/cursors-raw-websocket/README.md b/examples/cursors-raw-websocket/README.md index b7b2646a0b..da00906c32 100644 --- a/examples/cursors-raw-websocket/README.md +++ b/examples/cursors-raw-websocket/README.md @@ -1,32 +1,16 @@ -# Real-time Collaborative Cursors for RivetKit +# Real-time Collaborative Cursors (Raw WebSocket) -Example project demonstrating real-time cursor tracking and collaborative canvas with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Demonstrates real-time cursor tracking and collaborative canvas using raw WebSocket handlers instead of RivetKit's higher-level WebSocket abstraction. ## Getting Started -### Prerequisites - -- Node.js 18+ - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/cursors +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/cursors-raw-websocket npm install -``` - -### Development - -```sh npm run dev ``` -Open your browser to `http://localhost:5173`. Open multiple tabs or windows to see real-time cursor tracking and text placement across different users. ## Features @@ -35,9 +19,9 @@ Open your browser to `http://localhost:5173`. Open multiple tabs or windows to s - Click-to-place text on canvas - Multiple room support for different collaborative spaces - Persistent text labels across sessions -- Event-driven architecture with RivetKit actors +- Raw WebSocket handlers using `onWebsocket` for lower-level control - TypeScript support throughout ## License -Apache 2.0 +MIT diff --git a/examples/cursors-raw-websocket/package.json b/examples/cursors-raw-websocket/package.json index d13a8fb38d..798c2cfddb 100644 --- a/examples/cursors-raw-websocket/package.json +++ b/examples/cursors-raw-websocket/package.json @@ -38,5 +38,6 @@ "tags": [ "real-time" ] - } + }, + "license": "MIT" } diff --git a/examples/cursors/README.md b/examples/cursors/README.md index b7b2646a0b..3cfe220ad4 100644 --- a/examples/cursors/README.md +++ b/examples/cursors/README.md @@ -1,32 +1,16 @@ -# Real-time Collaborative Cursors for RivetKit +# Real-time Collaborative Cursors -Example project demonstrating real-time cursor tracking and collaborative canvas with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating real-time cursor tracking and collaborative canvas. ## Getting Started -### Prerequisites - -- Node.js 18+ - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/cursors +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/cursors npm install -``` - -### Development - -```sh npm run dev ``` -Open your browser to `http://localhost:5173`. Open multiple tabs or windows to see real-time cursor tracking and text placement across different users. ## Features @@ -40,4 +24,4 @@ Open your browser to `http://localhost:5173`. Open multiple tabs or windows to s ## License -Apache 2.0 +MIT diff --git a/examples/cursors/package.json b/examples/cursors/package.json index 3bc505bfac..a63f5956b0 100644 --- a/examples/cursors/package.json +++ b/examples/cursors/package.json @@ -37,6 +37,8 @@ ], "tags": [ "real-time" - ] - } + ], + "priority": 300 + }, + "license": "MIT" } diff --git a/examples/custom-serverless/README.md b/examples/custom-serverless/README.md new file mode 100644 index 0000000000..0a1c2536bc --- /dev/null +++ b/examples/custom-serverless/README.md @@ -0,0 +1,17 @@ +# Custom Serverless + +Example demonstrating custom serverless actor deployment with automatic engine configuration. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/custom-serverless +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/counter/package.json b/examples/custom-serverless/package.json similarity index 83% rename from examples/counter/package.json rename to examples/custom-serverless/package.json index ce610f8127..b6d96e0b27 100644 --- a/examples/counter/package.json +++ b/examples/custom-serverless/package.json @@ -1,5 +1,5 @@ { - "name": "example-counter", + "name": "custom-serverless", "version": "2.0.21", "private": true, "type": "module", @@ -22,7 +22,9 @@ "typescript" ], "tags": [ - "quickstart" - ] - } + "starter" + ], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/counter-serverless/scripts/connect.ts b/examples/custom-serverless/scripts/connect.ts similarity index 100% rename from examples/counter-serverless/scripts/connect.ts rename to examples/custom-serverless/scripts/connect.ts diff --git a/examples/counter-serverless/src/registry.ts b/examples/custom-serverless/src/registry.ts similarity index 100% rename from examples/counter-serverless/src/registry.ts rename to examples/custom-serverless/src/registry.ts diff --git a/examples/counter-serverless/src/server.ts b/examples/custom-serverless/src/server.ts similarity index 100% rename from examples/counter-serverless/src/server.ts rename to examples/custom-serverless/src/server.ts diff --git a/examples/counter-serverless/tests/counter.test.ts b/examples/custom-serverless/tests/counter.test.ts similarity index 100% rename from examples/counter-serverless/tests/counter.test.ts rename to examples/custom-serverless/tests/counter.test.ts diff --git a/examples/counter-serverless/tsconfig.json b/examples/custom-serverless/tsconfig.json similarity index 100% rename from examples/counter-serverless/tsconfig.json rename to examples/custom-serverless/tsconfig.json diff --git a/examples/custom-serverless/turbo.json b/examples/custom-serverless/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/custom-serverless/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/deno/README.md b/examples/deno/README.md index aa297f8860..0d4dd2b823 100644 --- a/examples/deno/README.md +++ b/examples/deno/README.md @@ -1,39 +1,17 @@ -# Deno Example for RivetKit +# Deno Example -Example project demonstrating basic actor state management and RPC calls with [RivetKit](https://rivetkit.org) using Deno runtime. - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating basic actor state management and RPC calls using Deno runtime. ## Getting Started -### Prerequisites - -- Deno - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/deno -pnpm install +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/deno +npm install +npm run dev ``` -**Notice:** We use `pnpm install` here as Deno offers compatability with package.json via npm/pnpm. Some packages used in rivetkit are simpler to install with npm/pnpm. - -### Development - -```sh -deno task dev -``` - -Run the connect script to interact with the counter: - -```sh -deno task connect -``` ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/deno/package.json b/examples/deno/package.json index f53c2238d6..d324e9c6d0 100644 --- a/examples/deno/package.json +++ b/examples/deno/package.json @@ -23,6 +23,8 @@ "deno", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/deno/turbo.json b/examples/deno/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/deno/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/drizzle/README.md b/examples/drizzle/README.md index 84a3afe9a6..168e73e75e 100644 --- a/examples/drizzle/README.md +++ b/examples/drizzle/README.md @@ -1,33 +1,17 @@ -# Hono Integration for RivetKit +# Drizzle Integration -Example project demonstrating Hono web framework integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Demonstrates Drizzle ORM integration with Rivet Actors for type-safe database operations. ## Getting Started -### Prerequisites - -- Node.js - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/hono +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/drizzle npm install -``` - -### Development - -```sh npm run dev ``` -Open your browser to http://localhost:3000 to see the Hono server with RivetKit integration. ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/drizzle/package.json b/examples/drizzle/package.json index a7bbc87e4d..15baec4417 100644 --- a/examples/drizzle/package.json +++ b/examples/drizzle/package.json @@ -26,6 +26,8 @@ ], "tags": [ "database" - ] - } + ], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/elysia/README.md b/examples/elysia/README.md index ed5623dd4c..72bf58b861 100644 --- a/examples/elysia/README.md +++ b/examples/elysia/README.md @@ -1,33 +1,17 @@ -# Elysia Integration for RivetKit +# Elysia Integration -Example project demonstrating Elysia web framework integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating Elysia web framework integration. ## Getting Started -### Prerequisites - -- Bun - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/elysia +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/elysia npm install -``` - -### Development - -```sh npm run dev ``` -Open your browser to http://localhost:3000 to see the Elysia server with RivetKit integration. ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/elysia/package.json b/examples/elysia/package.json index d0e9c6fc15..71158c3aa2 100644 --- a/examples/elysia/package.json +++ b/examples/elysia/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@rivetkit/react": "workspace:*", + "@sinclair/typebox": "^0.34.15", "elysia": "^1.3.5", "react": "^18.2.0", "react-dom": "^18.2.0" @@ -25,6 +26,8 @@ "bun", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/express/README.md b/examples/express/README.md index a15e7e6cb2..8c2b32b150 100644 --- a/examples/express/README.md +++ b/examples/express/README.md @@ -1,33 +1,17 @@ -# Express Integration for RivetKit +# Express Integration -Example project demonstrating Express web framework integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating Express web framework integration. ## Getting Started -### Prerequisites - -- Node.js - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/express +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/express npm install -``` - -### Development - -```sh npm run dev ``` -Open your browser to http://localhost:3000 to see the Express server with RivetKit integration. ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/express/package.json b/examples/express/package.json index 118f30827e..e99a61756a 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -27,6 +27,8 @@ "express", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/hono-bun/README.md b/examples/hono-bun/README.md index 9638b7bde1..8dca40193b 100644 --- a/examples/hono-bun/README.md +++ b/examples/hono-bun/README.md @@ -1,41 +1,17 @@ -# Hono + Bun Integration for RivetKit +# Hono + Bun -Example project demonstrating Hono web framework with Bun runtime and React frontend integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example demonstrating Hono web framework with Bun runtime and React frontend integration. ## Getting Started -### Prerequisites - -- Bun - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/hono-bun +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/hono-bun npm install -``` - -### Development - -```sh npm run dev ``` -This will start both the backend server (on port 8080) and the frontend dev server (on port 5173). - -Open your browser to [http://localhost:5173](http://localhost:5173) to see the counter application. - -You can also test the server directly by running: - -```sh -curl -X POST http://localhost:8080/increment/test -``` ## License -Apache 2.0 +MIT diff --git a/examples/hono-bun/package.json b/examples/hono-bun/package.json index b86e5bc858..9ade9d1eb7 100644 --- a/examples/hono-bun/package.json +++ b/examples/hono-bun/package.json @@ -1,5 +1,5 @@ { - "name": "example-hono-bun", + "name": "hono-bun", "version": "2.0.21", "private": true, "type": "module", @@ -43,6 +43,10 @@ "bun", "typescript" ], - "tags": [] - } + "tags": [ + "starter" + ], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/hono-react/README.md b/examples/hono-react/README.md index e8a7232a12..9aa42e930b 100644 --- a/examples/hono-react/README.md +++ b/examples/hono-react/README.md @@ -1,33 +1,17 @@ -# Hono React Integration for RivetKit +# Hono + React -Example project demonstrating full-stack Hono backend with React frontend integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example demonstrating full-stack Hono backend with React frontend integration. ## Getting Started -### Prerequisites - -- Node.js - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/hono-react +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/hono-react npm install -``` - -### Development - -```sh npm run dev ``` -This will start both the Hono backend server and Vite React frontend. Open your browser to http://localhost:5173 to see the React app connected to Rivet Actors. ## License -Apache 2.0 +MIT diff --git a/examples/hono-react/package.json b/examples/hono-react/package.json index 651f1b79d0..e7576a9094 100644 --- a/examples/hono-react/package.json +++ b/examples/hono-react/package.json @@ -1,5 +1,5 @@ { - "name": "example-hono-react", + "name": "hono-react", "version": "2.0.21", "private": true, "type": "module", @@ -38,7 +38,8 @@ "typescript" ], "tags": [ - "real-time" + "starter" ] - } + }, + "license": "MIT" } diff --git a/examples/hono/README.md b/examples/hono/README.md index 84a3afe9a6..c76aa48d94 100644 --- a/examples/hono/README.md +++ b/examples/hono/README.md @@ -1,33 +1,17 @@ -# Hono Integration for RivetKit +# Hono Integration -Example project demonstrating Hono web framework integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating Hono web framework integration. ## Getting Started -### Prerequisites - -- Node.js - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/hono +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/hono npm install -``` - -### Development - -```sh npm run dev ``` -Open your browser to http://localhost:3000 to see the Hono server with RivetKit integration. ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/hono/package.json b/examples/hono/package.json index b75c915fdc..33208085c4 100644 --- a/examples/hono/package.json +++ b/examples/hono/package.json @@ -25,6 +25,8 @@ "hono", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/kitchen-sink/README.md b/examples/kitchen-sink/README.md index 66221e34c9..4a026463ba 100644 --- a/examples/kitchen-sink/README.md +++ b/examples/kitchen-sink/README.md @@ -1,36 +1,17 @@ -# Kitchen Sink Example for RivetKit +# Kitchen Sink Example -Example project demonstrating all RivetKit features with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating all RivetKit features. ## Getting Started -### Prerequisites - -- Node.js 18+ or Bun -- RivetKit development environment - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/kitchen-sink +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/kitchen-sink npm install -``` - -### Development - -```sh npm run dev ``` -This will start both the backend server (port 8080) and frontend development server (port 5173). - -Open [http://localhost:5173](http://localhost:5173) in your browser. ## License -Apache 2.0 +MIT diff --git a/examples/kitchen-sink/package.json b/examples/kitchen-sink/package.json index 63da99068a..2c621a4946 100644 --- a/examples/kitchen-sink/package.json +++ b/examples/kitchen-sink/package.json @@ -31,5 +31,6 @@ "typescript" ], "tags": [] - } + }, + "license": "MIT" } diff --git a/examples/multi-region/README.md b/examples/multi-region/README.md new file mode 100644 index 0000000000..e756924ae9 --- /dev/null +++ b/examples/multi-region/README.md @@ -0,0 +1,17 @@ +# Multi-Region + +Demonstrates deploying Rivet Actors across multiple geographic regions for low-latency global access. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/multi-region +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/quickstart-scheduling/package.json b/examples/multi-region/package.json similarity index 91% rename from examples/quickstart-scheduling/package.json rename to examples/multi-region/package.json index e78c3b466d..685e7cb418 100644 --- a/examples/quickstart-scheduling/package.json +++ b/examples/multi-region/package.json @@ -1,5 +1,5 @@ { - "name": "quickstart-scheduling", + "name": "multi-region", "version": "2.0.21", "private": true, "type": "module", @@ -33,6 +33,8 @@ ], "tags": [ "quickstart" - ] - } + ], + "priority": 1000 + }, + "license": "MIT" } diff --git a/examples/quickstart-multi-region/src/backend/registry.ts b/examples/multi-region/src/backend/registry.ts similarity index 100% rename from examples/quickstart-multi-region/src/backend/registry.ts rename to examples/multi-region/src/backend/registry.ts diff --git a/examples/quickstart-cross-actor-actions/src/backend/server.ts b/examples/multi-region/src/backend/server.ts similarity index 100% rename from examples/quickstart-cross-actor-actions/src/backend/server.ts rename to examples/multi-region/src/backend/server.ts diff --git a/examples/quickstart-multi-region/src/backend/types.ts b/examples/multi-region/src/backend/types.ts similarity index 100% rename from examples/quickstart-multi-region/src/backend/types.ts rename to examples/multi-region/src/backend/types.ts diff --git a/examples/quickstart-multi-region/src/frontend/App.tsx b/examples/multi-region/src/frontend/App.tsx similarity index 100% rename from examples/quickstart-multi-region/src/frontend/App.tsx rename to examples/multi-region/src/frontend/App.tsx diff --git a/examples/quickstart-multi-region/src/frontend/index.html b/examples/multi-region/src/frontend/index.html similarity index 100% rename from examples/quickstart-multi-region/src/frontend/index.html rename to examples/multi-region/src/frontend/index.html diff --git a/examples/quickstart-multi-region/src/frontend/main.tsx b/examples/multi-region/src/frontend/main.tsx similarity index 100% rename from examples/quickstart-multi-region/src/frontend/main.tsx rename to examples/multi-region/src/frontend/main.tsx diff --git a/examples/quickstart-multi-region/tests/regions.test.ts b/examples/multi-region/tests/regions.test.ts similarity index 100% rename from examples/quickstart-multi-region/tests/regions.test.ts rename to examples/multi-region/tests/regions.test.ts diff --git a/examples/quickstart-multi-region/tsconfig.json b/examples/multi-region/tsconfig.json similarity index 100% rename from examples/quickstart-multi-region/tsconfig.json rename to examples/multi-region/tsconfig.json diff --git a/examples/multi-region/turbo.json b/examples/multi-region/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/multi-region/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/quickstart-multi-region/vite.config.ts b/examples/multi-region/vite.config.ts similarity index 100% rename from examples/quickstart-multi-region/vite.config.ts rename to examples/multi-region/vite.config.ts diff --git a/examples/quickstart-multi-region/vitest.config.ts b/examples/multi-region/vitest.config.ts similarity index 100% rename from examples/quickstart-multi-region/vitest.config.ts rename to examples/multi-region/vitest.config.ts diff --git a/examples/native-websockets/README.md b/examples/native-websockets/README.md new file mode 100644 index 0000000000..e2a98149ee --- /dev/null +++ b/examples/native-websockets/README.md @@ -0,0 +1,17 @@ +# Native WebSockets + +Demonstrates native WebSocket integration with Rivet Actors for real-time bidirectional communication. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/native-websockets +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/quickstart-native-websockets/package.json b/examples/native-websockets/package.json similarity index 94% rename from examples/quickstart-native-websockets/package.json rename to examples/native-websockets/package.json index 72e11aea77..d3feb6c5f9 100644 --- a/examples/quickstart-native-websockets/package.json +++ b/examples/native-websockets/package.json @@ -1,5 +1,5 @@ { - "name": "quickstart-raw-websockets", + "name": "native-websockets", "version": "2.0.21", "private": true, "type": "module", @@ -38,5 +38,6 @@ "quickstart", "real-time" ] - } + }, + "license": "MIT" } diff --git a/examples/quickstart-native-websockets/src/backend/registry.ts b/examples/native-websockets/src/backend/registry.ts similarity index 100% rename from examples/quickstart-native-websockets/src/backend/registry.ts rename to examples/native-websockets/src/backend/registry.ts diff --git a/examples/quickstart-multi-region/src/backend/server.ts b/examples/native-websockets/src/backend/server.ts similarity index 100% rename from examples/quickstart-multi-region/src/backend/server.ts rename to examples/native-websockets/src/backend/server.ts diff --git a/examples/quickstart-native-websockets/src/frontend/App.tsx b/examples/native-websockets/src/frontend/App.tsx similarity index 100% rename from examples/quickstart-native-websockets/src/frontend/App.tsx rename to examples/native-websockets/src/frontend/App.tsx diff --git a/examples/quickstart-native-websockets/src/frontend/index.html b/examples/native-websockets/src/frontend/index.html similarity index 100% rename from examples/quickstart-native-websockets/src/frontend/index.html rename to examples/native-websockets/src/frontend/index.html diff --git a/examples/quickstart-native-websockets/src/frontend/main.tsx b/examples/native-websockets/src/frontend/main.tsx similarity index 100% rename from examples/quickstart-native-websockets/src/frontend/main.tsx rename to examples/native-websockets/src/frontend/main.tsx diff --git a/examples/quickstart-native-websockets/tests/websocket.test.ts b/examples/native-websockets/tests/websocket.test.ts similarity index 100% rename from examples/quickstart-native-websockets/tests/websocket.test.ts rename to examples/native-websockets/tests/websocket.test.ts diff --git a/examples/quickstart-native-websockets/tsconfig.json b/examples/native-websockets/tsconfig.json similarity index 100% rename from examples/quickstart-native-websockets/tsconfig.json rename to examples/native-websockets/tsconfig.json diff --git a/examples/native-websockets/turbo.json b/examples/native-websockets/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/native-websockets/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/quickstart-native-websockets/vite.config.ts b/examples/native-websockets/vite.config.ts similarity index 100% rename from examples/quickstart-native-websockets/vite.config.ts rename to examples/native-websockets/vite.config.ts diff --git a/examples/quickstart-native-websockets/vitest.config.ts b/examples/native-websockets/vitest.config.ts similarity index 100% rename from examples/quickstart-native-websockets/vitest.config.ts rename to examples/native-websockets/vitest.config.ts diff --git a/examples/next-js/README.md b/examples/next-js/README.md index e215bc4ccf..76eb615a7d 100644 --- a/examples/next-js/README.md +++ b/examples/next-js/README.md @@ -1,36 +1,24 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +# Next.js -## Getting Started +Minimal Next.js example demonstrating basic actor state management and real-time updates. -First, run the development server: +## Getting Started -```bash +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/next-js +npm install npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! +## Features -## Deploy on Vercel +- Real-time counter synchronization across multiple clients +- Next.js 15 with App Router +- TypeScript support +- Customizable counter IDs for multiple independent counters -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +## License -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +MIT diff --git a/examples/next-js/package.json b/examples/next-js/package.json index 7dbb006e79..876ba501f7 100644 --- a/examples/next-js/package.json +++ b/examples/next-js/package.json @@ -1,12 +1,14 @@ { - "name": "example-next-js", + "name": "next-js", "version": "2.0.21", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "next lint", + "connect": "tsx scripts/connect.ts", + "check-types": "tsc --noEmit" }, "dependencies": { "react": "19.1.0", @@ -19,14 +21,19 @@ "typescript": "^5", "@types/node": "^20", "@types/react": "^19", - "@types/react-dom": "^19" + "@types/react-dom": "^19", + "tsx": "^3.12.7" }, + "stableVersion": "0.8.0", "template": { "technologies": [ "next-js", "react", "typescript" ], - "tags": [] - } + "tags": [ + "starter" + ] + }, + "license": "MIT" } diff --git a/examples/counter-next-js/scripts/connect.ts b/examples/next-js/scripts/connect.ts similarity index 100% rename from examples/counter-next-js/scripts/connect.ts rename to examples/next-js/scripts/connect.ts diff --git a/examples/next-js/src/app/globals.css b/examples/next-js/src/app/globals.css index 24fa51ff25..87993fb782 100644 --- a/examples/next-js/src/app/globals.css +++ b/examples/next-js/src/app/globals.css @@ -7,114 +7,41 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', Roboto, sans-serif; background: #000000; - height: 100vh; - overflow: hidden; - margin: 0; - padding: 0; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + color: #ffffff; + padding: 20px; } -.app { - display: flex; - height: 100vh; - width: 100vw; - background: #000000; - overflow: hidden; +.counter-app { + width: 100%; + max-width: 500px; + margin: 0 auto; } -/* Sidebar */ -.sidebar { - width: 280px; +.counter-container { background: #1c1c1e; - border-right: 1px solid #2c2c2e; - display: flex; - flex-direction: column; + border-radius: 16px; + border: 1px solid #2c2c2e; + overflow: hidden; } -.sidebar-header { - padding: 20px 20px; +.counter-header { + padding: 24px; border-bottom: 1px solid #2c2c2e; display: flex; justify-content: space-between; align-items: center; - height: 60px; - box-sizing: border-box; -} - -.logo { - display: flex; - align-items: center; - gap: 12px; -} - -.logo h1 { - font-size: 18px; - font-weight: 500; - color: #ffffff; -} - -.close-sidebar { - display: none; - background: none; - border: none; - color: #8e8e93; - cursor: pointer; - padding: 8px; - border-radius: 6px; - transition: all 0.2s ease; -} - -.close-sidebar:hover { - background: #3a3a3c; - color: #ffffff; } -.user-settings { - padding: 20px; - flex: 1; -} - -.setting-group { - margin-bottom: 20px; -} - -.setting-group label { - display: block; - font-size: 14px; +.counter-header h1 { + font-size: 24px; font-weight: 600; - color: #8e8e93; - margin-bottom: 8px; -} - -.setting-input { - width: 100%; - padding: 10px 14px; - border: 1px solid #3a3a3c; - border-radius: 8px; - font-size: 14px; - transition: all 0.2s ease; - background: #2c2c2e; color: #ffffff; } -.setting-input:focus { - outline: none; - border-color: #007aff; - box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1); -} - -.setting-input::placeholder { - color: #8e8e93; -} - -.connection-status { - padding: 20px; - border-top: 1px solid #2c2c2e; - height: 60px; - box-sizing: border-box; - display: flex; - align-items: center; -} - .status-indicator { display: flex; align-items: center; @@ -146,318 +73,148 @@ body { color: #ff3b30; } -/* Chat Container */ -.chat-container { - flex: 1; - display: flex; - flex-direction: column; - background: #000000; +.counter-settings { + padding: 24px; + border-bottom: 1px solid #2c2c2e; } -.chat-header { - padding: 12px 20px; - border-bottom: 1px solid #2c2c2e; - background: #1c1c1e; - display: flex; - align-items: center; - gap: 12px; +.setting-group { + margin-bottom: 0; } -.menu-button { - display: none; - background: none; - border: none; +.setting-group label { + display: block; + font-size: 14px; + font-weight: 600; color: #8e8e93; - cursor: pointer; - padding: 8px; - border-radius: 6px; - transition: all 0.2s ease; + margin-bottom: 8px; } -.menu-button:hover { - background: #3a3a3c; +.setting-input { + width: 100%; + padding: 10px 14px; + border: 1px solid #3a3a3c; + border-radius: 8px; + font-size: 14px; + transition: all 0.2s ease; + background: #2c2c2e; color: #ffffff; } -.room-info h2 { - font-size: 16px; - font-weight: 600; - color: #ffffff; - margin-bottom: 2px; +.setting-input:focus { + outline: none; + border-color: #007aff; + box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1); } -.room-info p { - font-size: 12px; +.setting-input::placeholder { color: #8e8e93; } -.messages-container { - flex: 1; - overflow-y: auto; +.counter-display { + padding: 48px 24px; + text-align: center; background: #000000; } -.messages { - padding: 16px 20px; - min-height: 100%; -} - -.message-wrapper { - display: flex; +.count-value { + font-size: 72px; + font-weight: 700; + color: #007aff; + line-height: 1; margin-bottom: 12px; - align-items: flex-end; + font-variant-numeric: tabular-nums; } -.message-wrapper.own { - flex-direction: row-reverse; -} - -.message-avatar { - margin-right: 12px; - flex-shrink: 0; -} - -.message-wrapper.own .message-avatar { - margin-right: 0; - margin-left: 12px; -} - -.avatar { - width: 32px; - height: 32px; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-size: 12px; - font-weight: 600; - color: white; - text-transform: uppercase; -} - -.avatar-spacer { - width: 32px; - margin-right: 12px; -} - -.message-wrapper.own .avatar-spacer { - margin-right: 0; - margin-left: 12px; +.count-label { + font-size: 16px; + color: #8e8e93; + font-weight: 500; } -.message-content { - max-width: 70%; +.counter-controls { + padding: 24px; display: flex; - flex-direction: column; -} - -.message-wrapper.own .message-content { - align-items: flex-end; -} - -.message-sender { - font-size: 12px; - font-weight: 600; - color: #64748b; - margin-bottom: 4px; - margin-left: 4px; -} - -.message-wrapper.own .message-sender { - margin-left: 0; - margin-right: 4px; -} - -.message-bubble { - padding: 10px 14px; - border-radius: 16px; - position: relative; - word-wrap: break-word; - max-width: 100%; + gap: 12px; + border-bottom: 1px solid #2c2c2e; } -.message-bubble.other { - background: #2c2c2e; +.counter-button { + flex: 1; + padding: 16px; border: none; - border-bottom-left-radius: 4px; - color: #ffffff; -} - -.message-bubble.own { - background: #007aff; - color: white; - border-bottom-right-radius: 4px; -} - -.message-text { - font-size: 15px; - line-height: 1.3; - margin-bottom: 3px; -} - -.message-time { - font-size: 11px; - opacity: 0.5; -} - -.empty-state { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - height: 100%; - text-align: center; - color: #8e8e93; -} - -.empty-icon { - font-size: 48px; - margin-bottom: 16px; -} - -.empty-state h3 { + border-radius: 12px; font-size: 18px; font-weight: 600; - color: #ffffff; - margin-bottom: 8px; -} - -.empty-state p { - font-size: 14px; + cursor: pointer; + transition: all 0.2s ease; + color: white; } -.input-container { - padding: 12px 20px; - border-top: 1px solid #2c2c2e; - background: #1c1c1e; - height: 60px; - box-sizing: border-box; - display: flex; - align-items: center; +.counter-button.increment-1 { + background: #007aff; } -.input-wrapper { - display: flex; - align-items: center; - gap: 8px; - background: #2c2c2e; - border: 1px solid #3a3a3c; - border-radius: 20px; - padding: 6px 6px 6px 16px; - transition: all 0.2s ease; - width: 100%; +.counter-button.increment-1:hover:not(:disabled) { + background: #0056cc; + transform: translateY(-2px); } -.input-wrapper:focus-within { - border-color: #007aff; - box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1); +.counter-button.increment-5 { + background: #34c759; } -.message-input { - flex: 1; - border: none; - background: transparent; - font-size: 15px; - outline: none; - resize: none; - color: #ffffff; +.counter-button.increment-5:hover:not(:disabled) { + background: #28a745; + transform: translateY(-2px); } -.message-input::placeholder { - color: #8e8e93; +.counter-button.increment-10 { + background: #ff9500; } -.send-button { - width: 32px; - height: 32px; - border: none; - border-radius: 50%; - background: #007aff; - color: white; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - transition: all 0.2s ease; - flex-shrink: 0; -} - -.send-button:hover:not(:disabled) { - background: #0056cc; - transform: scale(1.05); +.counter-button.increment-10:hover:not(:disabled) { + background: #e68600; + transform: translateY(-2px); } -.send-button:disabled { +.counter-button:disabled { background: #3a3a3c; cursor: not-allowed; + color: #8e8e93; transform: none; } -/* Scrollbar Styling */ -.messages-container::-webkit-scrollbar { - width: 6px; -} - -.messages-container::-webkit-scrollbar-track { - background: transparent; +.info-box { + padding: 24px; + background: #2c2c2e; } -.messages-container::-webkit-scrollbar-thumb { - background: #3a3a3c; - border-radius: 3px; +.info-box p { + font-size: 14px; + color: #8e8e93; + line-height: 1.6; + margin-bottom: 8px; } -.messages-container::-webkit-scrollbar-thumb:hover { - background: #48484a; +.info-box p:last-child { + margin-bottom: 0; } -/* Responsive Design */ -@media (max-width: 768px) { - .app { - height: 100vh; - } - - .sidebar { - width: 100%; - position: absolute; - z-index: 10; - transform: translateX(-100%); - transition: transform 0.3s ease; +@media (max-width: 480px) { + .counter-header h1 { + font-size: 20px; } - .sidebar.open { - transform: translateX(0); + .count-value { + font-size: 56px; } - .close-sidebar { - display: block; + .counter-controls { + flex-direction: column; } - .menu-button { - display: block; - } - - .chat-container { + .counter-button { width: 100%; } - - .message-content { - max-width: 85%; - } -} - -/* Animation for new messages */ -@keyframes slideIn { - from { - opacity: 0; - transform: translateY(10px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -.message-wrapper { - animation: slideIn 0.3s ease; } diff --git a/examples/next-js/src/app/layout.tsx b/examples/next-js/src/app/layout.tsx index 9e2c27453e..c4f1400687 100644 --- a/examples/next-js/src/app/layout.tsx +++ b/examples/next-js/src/app/layout.tsx @@ -13,8 +13,8 @@ const geistMono = Geist_Mono({ }); export const metadata: Metadata = { - title: "Rivet Chat", - description: "Real-time chat powered by RivetKit", + title: "Rivet Counter", + description: "Real-time counter powered by RivetKit", }; export default function RootLayout({ diff --git a/examples/next-js/src/app/page.tsx b/examples/next-js/src/app/page.tsx index 8dd238dd61..97cba5bdfc 100644 --- a/examples/next-js/src/app/page.tsx +++ b/examples/next-js/src/app/page.tsx @@ -1,5 +1,5 @@ -import { ChatRoom } from "@/components/ChatRoom"; +import { Counter } from "@/components/Counter"; export default function Home() { - return ; + return ; } diff --git a/examples/counter-next-js/src/components/Counter.tsx b/examples/next-js/src/components/Counter.tsx similarity index 100% rename from examples/counter-next-js/src/components/Counter.tsx rename to examples/next-js/src/components/Counter.tsx diff --git a/examples/next-js/src/rivet/registry.ts b/examples/next-js/src/rivet/registry.ts index 40ab853108..1e6cdc4fca 100644 --- a/examples/next-js/src/rivet/registry.ts +++ b/examples/next-js/src/rivet/registry.ts @@ -1,32 +1,21 @@ import { actor, setup } from "rivetkit"; -export type Message = { sender: string; text: string; timestamp: number }; - -export const chatRoom = actor({ - options: { - sleepTimeout: 2000, - }, - // Persistent state that survives restarts +const counter = actor({ state: { - messages: [] as Message[], + count: 0, }, - actions: { - // Callable functions from clients - sendMessage: (c, sender: string, text: string) => { - const message = { sender, text, timestamp: Date.now() }; - // State changes are automatically persisted - c.state.messages.push(message); - // Send events to all connected clients - c.broadcast("newMessage", message); - return message; + increment: (c, x: number) => { + c.state.count += x; + c.broadcast("newCount", c.state.count); + return c.state.count; + }, + getCount: (c) => { + return c.state.count; }, - - getHistory: (c) => c.state.messages, }, }); -// Register actors for use export const registry = setup({ - use: { chatRoom }, + use: { counter }, }); diff --git a/examples/next-js/turbo.json b/examples/next-js/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/next-js/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/node/README.md b/examples/node/README.md new file mode 100644 index 0000000000..b509a0096c --- /dev/null +++ b/examples/node/README.md @@ -0,0 +1,17 @@ +# Node.js + +Minimal Node.js example demonstrating basic actor state management. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/node +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/starter/package.json b/examples/node/package.json similarity index 84% rename from examples/starter/package.json rename to examples/node/package.json index ec6d1f24e0..d6a25edff6 100644 --- a/examples/starter/package.json +++ b/examples/node/package.json @@ -1,5 +1,5 @@ { - "name": "starter", + "name": "node", "version": "2.0.21", "private": true, "scripts": { @@ -22,7 +22,9 @@ "typescript" ], "tags": [ - "quickstart" - ] - } + "starter" + ], + "noFrontend": true + }, + "license": "MIT" } diff --git a/examples/starter/scripts/client.ts b/examples/node/scripts/client.ts similarity index 100% rename from examples/starter/scripts/client.ts rename to examples/node/scripts/client.ts diff --git a/examples/starter/src/registry.ts b/examples/node/src/registry.ts similarity index 100% rename from examples/starter/src/registry.ts rename to examples/node/src/registry.ts diff --git a/examples/quickstart-native-websockets/src/backend/server.ts b/examples/node/src/server.ts similarity index 100% rename from examples/quickstart-native-websockets/src/backend/server.ts rename to examples/node/src/server.ts diff --git a/examples/starter/tsconfig.json b/examples/node/tsconfig.json similarity index 100% rename from examples/starter/tsconfig.json rename to examples/node/tsconfig.json diff --git a/examples/node/turbo.json b/examples/node/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/node/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/quickstart-realtime/package.json b/examples/quickstart-realtime/package.json deleted file mode 100644 index 7cf9585882..0000000000 --- a/examples/quickstart-realtime/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "quickstart-realtime", - "version": "2.0.21", - "private": true, - "type": "module", - "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", - "dev:frontend": "vite", - "check-types": "tsc --noEmit", - "test": "vitest run" - }, - "devDependencies": { - "@types/node": "^22.13.9", - "@types/react": "^18.2.0", - "@types/react-dom": "^18.2.0", - "@vitejs/plugin-react": "^4.2.0", - "concurrently": "^8.2.2", - "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" - }, - "dependencies": { - "rivetkit": "workspace:*" - }, - "template": { - "technologies": [ - "typescript" - ], - "tags": [ - "quickstart", - "real-time" - ] - } -} diff --git a/examples/quickstart-realtime/src/backend/registry.ts b/examples/quickstart-realtime/src/backend/registry.ts deleted file mode 100644 index b963267add..0000000000 --- a/examples/quickstart-realtime/src/backend/registry.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { actor, setup } from "rivetkit"; - -export interface CursorPosition { - userId: string; - x: number; - y: number; -} - -export const cursorRoom = actor({ - // No persistent state needed for this simple example - state: {}, - - // Connection state stores each user's cursor position - connState: { - cursor: null as CursorPosition | null, - }, - - actions: { - // Update cursor position and broadcast to all connected clients - updateCursor: (c, userId: string, x: number, y: number) => { - const cursor: CursorPosition = { - userId, - x, - y, - }; - // Store cursor in connection state - c.conn.state.cursor = cursor; - // Broadcast cursor update to all clients - c.broadcast("cursorMoved", cursor); - return cursor; - }, - - // Get all active cursors from all connections - getCursors: (c) => { - const cursors: CursorPosition[] = []; - // Iterate through all connections and collect cursor data - for (const conn of c.conns.values()) { - if (conn.state.cursor) { - cursors.push(conn.state.cursor); - } - } - return cursors; - }, - }, -}); - -// Register actors for use: https://rivet.dev/docs/setup -export const registry = setup({ - use: { cursorRoom }, -}); diff --git a/examples/quickstart-realtime/src/frontend/App.tsx b/examples/quickstart-realtime/src/frontend/App.tsx deleted file mode 100644 index 521bf8c21f..0000000000 --- a/examples/quickstart-realtime/src/frontend/App.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { createRivetKit } from "@rivetkit/react"; -import { useState } from "react"; -import type { CursorPosition } from "../backend/registry"; - -const { useActor } = createRivetKit("http://localhost:6420"); - -// Generate a simple color from userId for visualization -function getUserColor(userId: string): string { - let hash = 0; - for (let i = 0; i < userId.length; i++) { - hash = userId.charCodeAt(i) + ((hash << 5) - hash); - } - const hue = hash % 360; - return `hsl(${hue}, 70%, 50%)`; -} - -export function App() { - const [userId] = useState(() => `user-${Math.random().toString(36).substr(2, 9)}`); - const [cursors, setCursors] = useState([]); - - // Connect to the cursor room - const cursorRoom = useActor({ - name: "cursorRoom", - key: ["main"], - }); - - // Listen for cursor moved events from other users - cursorRoom.useEvent("cursorMoved", (cursor: CursorPosition) => { - setCursors((prev) => { - // Update or add the cursor - const filtered = prev.filter((c) => c.userId !== cursor.userId); - return [...filtered, cursor]; - }); - }); - - // Handle mouse movement - const handleMouseMove = (e: React.MouseEvent) => { - if (cursorRoom.connection) { - const rect = e.currentTarget.getBoundingClientRect(); - const x = e.clientX - rect.left; - const y = e.clientY - rect.top; - cursorRoom.connection.updateCursor(userId, x, y); - } - }; - - return ( -
-
-

Quickstart: Realtime

-
- {cursorRoom.connection ? ( - Connected - ) : ( - Connecting... - )} -
-
- Your ID: {userId} -
-
-
- {cursors.map((cursor) => ( -
-
{cursor.userId}
-
- ))} -
-
- ); -} diff --git a/examples/quickstart-realtime/src/frontend/index.html b/examples/quickstart-realtime/src/frontend/index.html deleted file mode 100644 index a436cf5392..0000000000 --- a/examples/quickstart-realtime/src/frontend/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Quickstart: Realtime - - - -
- - - diff --git a/examples/quickstart-realtime/tests/cursors.test.ts b/examples/quickstart-realtime/tests/cursors.test.ts deleted file mode 100644 index 35070c7b77..0000000000 --- a/examples/quickstart-realtime/tests/cursors.test.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { setupTest } from "rivetkit/test"; -import { describe, expect, test } from "vitest"; -import { registry } from "../src/backend/registry"; - -describe("cursor room", () => { - test("broadcasts cursor updates", async (ctx) => { - const { client } = await setupTest(ctx, registry); - const room1 = client.cursorRoom.getOrCreate(["room1"]); - - // Update cursor from client1 - const cursor = await room1.updateCursor("user1", 100, 200); - - // Verify cursor structure - expect(cursor).toMatchObject({ - userId: "user1", - x: 100, - y: 200, - }); - - // Verify getCursors returns the correct cursor - const cursors = await room1.getCursors(); - expect(cursors).toHaveLength(1); - expect(cursors[0]).toMatchObject({ - userId: "user1", - x: 100, - y: 200, - }); - }); - - test("handles multiple cursors", async (ctx) => { - const { client } = await setupTest(ctx, registry); - const room1 = client.cursorRoom.getOrCreate(["room2"]); - const room2 = client.cursorRoom.getOrCreate(["room2"]); - const room3 = client.cursorRoom.getOrCreate(["room2"]); - - // Each client updates their cursor - await room1.updateCursor("alice", 10, 20); - await room2.updateCursor("bob", 30, 40); - await room3.updateCursor("charlie", 50, 60); - - // Wait for all updates to propagate - await new Promise((resolve) => setTimeout(resolve, 100)); - - // Verify all clients see all three cursors - const cursors1 = await room1.getCursors(); - const cursors2 = await room2.getCursors(); - const cursors3 = await room3.getCursors(); - - expect(cursors1).toHaveLength(3); - expect(cursors2).toHaveLength(3); - expect(cursors3).toHaveLength(3); - - // Verify cursor positions are correct - const aliceCursor = cursors1.find((c) => c.userId === "alice"); - const bobCursor = cursors1.find((c) => c.userId === "bob"); - const charlieCursor = cursors1.find((c) => c.userId === "charlie"); - - expect(aliceCursor).toMatchObject({ userId: "alice", x: 10, y: 20 }); - expect(bobCursor).toMatchObject({ userId: "bob", x: 30, y: 40 }); - expect(charlieCursor).toMatchObject({ - userId: "charlie", - x: 50, - y: 60, - }); - }); - - test("multiple cursors in same room", async (ctx) => { - const { client } = await setupTest(ctx, registry); - const room1 = client.cursorRoom.getOrCreate(["room3"]); - const room2 = client.cursorRoom.getOrCreate(["room3"]); - - // Both clients update their cursors - await room1.updateCursor("user1", 100, 100); - await room2.updateCursor("user2", 200, 200); - - // Verify both cursors are present - const cursors = await room1.getCursors(); - expect(cursors).toHaveLength(2); - - // Verify cursor data - const user1Cursor = cursors.find((c) => c.userId === "user1"); - const user2Cursor = cursors.find((c) => c.userId === "user2"); - - expect(user1Cursor).toMatchObject({ userId: "user1", x: 100, y: 100 }); - expect(user2Cursor).toMatchObject({ userId: "user2", x: 200, y: 200 }); - }); -}); diff --git a/examples/quickstart-realtime/tsconfig.json b/examples/quickstart-realtime/tsconfig.json deleted file mode 100644 index d4efe57114..0000000000 --- a/examples/quickstart-realtime/tsconfig.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "target": "esnext", - /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - "lib": ["esnext", "dom"], - /* Specify what JSX code is generated. */ - "jsx": "react-jsx", - - /* Specify what module code is generated. */ - "module": "esnext", - /* Specify how TypeScript looks up a file from a given module specifier. */ - "moduleResolution": "bundler", - /* Specify type package names to be included without being referenced in a source file. */ - "types": ["node", "vite/client"], - /* Enable importing .json files */ - "resolveJsonModule": true, - - /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - "allowJs": true, - /* Enable error reporting in type-checked JavaScript files. */ - "checkJs": false, - - /* Disable emitting files from a compilation. */ - "noEmit": true, - - /* Ensure that each file can be safely transpiled without relying on other imports. */ - "isolatedModules": true, - /* Allow 'import x from y' when a module doesn't have a default export. */ - "allowSyntheticDefaultImports": true, - /* Ensure that casing is correct in imports. */ - "forceConsistentCasingInFileNames": true, - - /* Enable all strict type-checking options. */ - "strict": true, - - /* Skip type checking all .d.ts files. */ - "skipLibCheck": true - }, - "include": ["src/**/*", "actors/**/*", "tests/**/*"] -} diff --git a/examples/quickstart-scheduling/vitest.config.ts b/examples/quickstart-scheduling/vitest.config.ts deleted file mode 100644 index 5bdee00206..0000000000 --- a/examples/quickstart-scheduling/vitest.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - include: ["tests/**/*.test.ts"], - }, -}); diff --git a/examples/quickstart-state/package.json b/examples/quickstart-state/package.json deleted file mode 100644 index 7f3c14e651..0000000000 --- a/examples/quickstart-state/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "quickstart-state", - "version": "2.0.21", - "private": true, - "type": "module", - "scripts": { - "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\"", - "dev:backend": "tsx --watch src/backend/server.ts", - "dev:frontend": "vite", - "check-types": "tsc --noEmit", - "test": "vitest run" - }, - "devDependencies": { - "@types/node": "^22.13.9", - "@types/react": "^18.2.0", - "@types/react-dom": "^18.2.0", - "@vitejs/plugin-react": "^4.2.0", - "concurrently": "^8.2.2", - "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" - }, - "dependencies": { - "rivetkit": "workspace:*" - }, - "template": { - "technologies": [ - "typescript" - ], - "tags": [ - "quickstart" - ] - } -} diff --git a/examples/quickstart-state/src/backend/server.ts b/examples/quickstart-state/src/backend/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/quickstart-state/src/backend/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/quickstart-state/src/frontend/main.tsx b/examples/quickstart-state/src/frontend/main.tsx deleted file mode 100644 index bd39f29eec..0000000000 --- a/examples/quickstart-state/src/frontend/main.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { StrictMode } from "react"; -import { createRoot } from "react-dom/client"; -import { App } from "./App"; - -const root = document.getElementById("root"); -if (!root) throw new Error("Root element not found"); - -createRoot(root).render( - - - -); diff --git a/examples/quickstart-state/vite.config.ts b/examples/quickstart-state/vite.config.ts deleted file mode 100644 index a291f28846..0000000000 --- a/examples/quickstart-state/vite.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import react from "@vitejs/plugin-react"; -import { defineConfig } from "vite"; - -export default defineConfig({ - plugins: [react()], - root: "src/frontend", - server: { - port: 5173, - }, -}); diff --git a/examples/raw-fetch-handler/README.md b/examples/raw-fetch-handler/README.md index 76c4de3623..7656f8236b 100644 --- a/examples/raw-fetch-handler/README.md +++ b/examples/raw-fetch-handler/README.md @@ -1,10 +1,16 @@ -# Raw Fetch Handler Example for RivetKit +# Raw Fetch Handler Example -Example project demonstrating raw HTTP fetch handling with Hono integration in [RivetKit](https://rivetkit.org). +Example project demonstrating raw HTTP fetch handling with Hono integration. -[Learn More →](https://github.com/rivet-dev/rivetkit) +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/raw-fetch-handler +npm install +npm run dev +``` -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) ## Overview @@ -26,44 +32,6 @@ raw-fetch-handler/ └── tests/ # Vitest test suite ``` -## Getting Started - -### Prerequisites - -- Node.js - -### Installation - -```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/raw-fetch-handler -pnpm install -``` - -### Development - -Start both backend and frontend: - -```sh -pnpm dev -``` - -Or run them separately: - -```sh -# Terminal 1 - Backend -pnpm dev:backend - -# Terminal 2 - Frontend -pnpm dev:frontend -``` - -Run tests: - -```sh -pnpm test -``` - ## Features ### Backend @@ -94,4 +62,4 @@ A React app demonstrating: ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/raw-fetch-handler/package.json b/examples/raw-fetch-handler/package.json index c5044b2977..caf7b6e8ea 100644 --- a/examples/raw-fetch-handler/package.json +++ b/examples/raw-fetch-handler/package.json @@ -35,6 +35,8 @@ "technologies": [ "typescript" ], - "tags": [] - } + "tags": [], + "priority": 1000 + }, + "license": "MIT" } diff --git a/examples/raw-websocket-handler-proxy/README.md b/examples/raw-websocket-handler-proxy/README.md index a3f266f2a2..8547e15397 100644 --- a/examples/raw-websocket-handler-proxy/README.md +++ b/examples/raw-websocket-handler-proxy/README.md @@ -1,41 +1,16 @@ -# Raw WebSocket Handler Proxy for RivetKit +# Raw WebSocket Handler Proxy -Example project demonstrating raw WebSocket handling with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Demonstrates raw WebSocket handling using a proxy endpoint pattern for routing connections to actors. ## Getting Started -### Prerequisites - -- Node.js 18 or later -- pnpm (for monorepo management) - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/raw-websocket-handler-proxy +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/raw-websocket-handler-proxy npm install -``` - -### Development - -```sh npm run dev ``` -This starts both the backend server (on port 9000) and the frontend development server (on port 5173). - -Open http://localhost:5173 in your browser to see the chat application demo. - -### Testing - -```sh -npm test -``` ## Features @@ -52,4 +27,4 @@ This example demonstrates: ## License -Apache 2.0 +MIT diff --git a/examples/raw-websocket-handler-proxy/package.json b/examples/raw-websocket-handler-proxy/package.json index c7ec45214f..712173a1bc 100644 --- a/examples/raw-websocket-handler-proxy/package.json +++ b/examples/raw-websocket-handler-proxy/package.json @@ -44,5 +44,6 @@ "typescript" ], "tags": [] - } + }, + "license": "MIT" } diff --git a/examples/raw-websocket-handler/README.md b/examples/raw-websocket-handler/README.md index a3f266f2a2..7e7dbd7e33 100644 --- a/examples/raw-websocket-handler/README.md +++ b/examples/raw-websocket-handler/README.md @@ -1,41 +1,16 @@ -# Raw WebSocket Handler Proxy for RivetKit +# Raw WebSocket Handler -Example project demonstrating raw WebSocket handling with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Demonstrates raw WebSocket handling with direct actor connections and real-time chat functionality. ## Getting Started -### Prerequisites - -- Node.js 18 or later -- pnpm (for monorepo management) - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/raw-websocket-handler-proxy +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/raw-websocket-handler npm install -``` - -### Development - -```sh npm run dev ``` -This starts both the backend server (on port 9000) and the frontend development server (on port 5173). - -Open http://localhost:5173 in your browser to see the chat application demo. - -### Testing - -```sh -npm test -``` ## Features @@ -52,4 +27,4 @@ This example demonstrates: ## License -Apache 2.0 +MIT diff --git a/examples/raw-websocket-handler/package.json b/examples/raw-websocket-handler/package.json index bf3483a094..f7c9f9e25d 100644 --- a/examples/raw-websocket-handler/package.json +++ b/examples/raw-websocket-handler/package.json @@ -43,6 +43,8 @@ ], "tags": [ "real-time" - ] - } + ], + "priority": 1000 + }, + "license": "MIT" } diff --git a/examples/react/README.md b/examples/react/README.md index e8a7232a12..5aa70efcd2 100644 --- a/examples/react/README.md +++ b/examples/react/README.md @@ -1,33 +1,17 @@ -# Hono React Integration for RivetKit +# React Integration -Example project demonstrating full-stack Hono backend with React frontend integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Demonstrates React frontend integration with Rivet Actors. ## Getting Started -### Prerequisites - -- Node.js - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/hono-react +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/react npm install -``` - -### Development - -```sh npm run dev ``` -This will start both the Hono backend server and Vite React frontend. Open your browser to http://localhost:5173 to see the React app connected to Rivet Actors. ## License -Apache 2.0 +MIT diff --git a/examples/react/package.json b/examples/react/package.json index 3acc528a0c..d0dab2736b 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -35,5 +35,6 @@ "typescript" ], "tags": [] - } + }, + "license": "MIT" } diff --git a/examples/scheduling/README.md b/examples/scheduling/README.md new file mode 100644 index 0000000000..291791a6c2 --- /dev/null +++ b/examples/scheduling/README.md @@ -0,0 +1,17 @@ +# Scheduling + +Demonstrates how to schedule tasks and execute code at specific times or intervals using Rivet Actors. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/scheduling +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/quickstart-cross-actor-actions/package.json b/examples/scheduling/package.json similarity index 91% rename from examples/quickstart-cross-actor-actions/package.json rename to examples/scheduling/package.json index 9ac8e3a8e1..a07258b275 100644 --- a/examples/quickstart-cross-actor-actions/package.json +++ b/examples/scheduling/package.json @@ -1,5 +1,5 @@ { - "name": "quickstart-cross-actor-actions", + "name": "scheduling", "version": "2.0.21", "private": true, "type": "module", @@ -33,6 +33,8 @@ ], "tags": [ "quickstart" - ] - } + ], + "priority": 1000 + }, + "license": "MIT" } diff --git a/examples/quickstart-scheduling/src/backend/registry.ts b/examples/scheduling/src/backend/registry.ts similarity index 100% rename from examples/quickstart-scheduling/src/backend/registry.ts rename to examples/scheduling/src/backend/registry.ts diff --git a/examples/quickstart-realtime/src/backend/server.ts b/examples/scheduling/src/backend/server.ts similarity index 100% rename from examples/quickstart-realtime/src/backend/server.ts rename to examples/scheduling/src/backend/server.ts diff --git a/examples/quickstart-scheduling/src/frontend/App.tsx b/examples/scheduling/src/frontend/App.tsx similarity index 100% rename from examples/quickstart-scheduling/src/frontend/App.tsx rename to examples/scheduling/src/frontend/App.tsx diff --git a/examples/quickstart-scheduling/src/frontend/index.html b/examples/scheduling/src/frontend/index.html similarity index 100% rename from examples/quickstart-scheduling/src/frontend/index.html rename to examples/scheduling/src/frontend/index.html diff --git a/examples/quickstart-realtime/src/frontend/main.tsx b/examples/scheduling/src/frontend/main.tsx similarity index 100% rename from examples/quickstart-realtime/src/frontend/main.tsx rename to examples/scheduling/src/frontend/main.tsx diff --git a/examples/quickstart-scheduling/tests/scheduling.test.ts b/examples/scheduling/tests/scheduling.test.ts similarity index 100% rename from examples/quickstart-scheduling/tests/scheduling.test.ts rename to examples/scheduling/tests/scheduling.test.ts diff --git a/examples/quickstart-scheduling/tsconfig.json b/examples/scheduling/tsconfig.json similarity index 100% rename from examples/quickstart-scheduling/tsconfig.json rename to examples/scheduling/tsconfig.json diff --git a/examples/scheduling/turbo.json b/examples/scheduling/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/scheduling/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/quickstart-realtime/vite.config.ts b/examples/scheduling/vite.config.ts similarity index 100% rename from examples/quickstart-realtime/vite.config.ts rename to examples/scheduling/vite.config.ts diff --git a/examples/quickstart-realtime/vitest.config.ts b/examples/scheduling/vitest.config.ts similarity index 100% rename from examples/quickstart-realtime/vitest.config.ts rename to examples/scheduling/vitest.config.ts diff --git a/examples/starter/README.md b/examples/starter/README.md deleted file mode 100644 index 2bd2133c3c..0000000000 --- a/examples/starter/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Rivet Platform for RivetKit - -Example project demonstrating Rivet cloud platform deployment with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) - -## Getting Started - -### Prerequisites - -- Node.js -- Rivet CLI (`npm install -g @rivet-dev/cli`) -- Rivet Cloud account - -### Installation - -```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/rivet -npm install -``` - -### Configuration - -Set up your environment variables: - -```sh -export RIVET_ENDPOINT=https://api.rivet.dev -export RIVET_SERVICE_TOKEN=your_service_token -export RIVET_PROJECT=your_project_id -export RIVET_ENVIRONMENT=your_environment -``` - -### Development - -```sh -npm run dev -``` - -This will start the RivetKit server locally at http://localhost:8080. - -### Testing the Client - -In a separate terminal, run the client script to interact with your actors: - -```sh -npm run client -``` - -### Deployment - -Deploy to Rivet Cloud: - -```sh -rivet deploy -``` - -Your Rivet Actors will be deployed as Rivet actors with automatic scaling and management. - -## License - -Apache 2.0 diff --git a/examples/starter/src/server.ts b/examples/starter/src/server.ts deleted file mode 100644 index aa0ee6ed61..0000000000 --- a/examples/starter/src/server.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registry } from "./registry"; - -registry.start(); diff --git a/examples/state/README.md b/examples/state/README.md new file mode 100644 index 0000000000..54fa5b854c --- /dev/null +++ b/examples/state/README.md @@ -0,0 +1,17 @@ +# State Management + +Demonstrates persistent state management in Rivet Actors with automatic state saving and restoration. + +## Getting Started + +```sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/state +npm install +npm run dev +``` + + +## License + +MIT diff --git a/examples/quickstart-multi-region/package.json b/examples/state/package.json similarity index 92% rename from examples/quickstart-multi-region/package.json rename to examples/state/package.json index 1d21fa8138..5c1d305b18 100644 --- a/examples/quickstart-multi-region/package.json +++ b/examples/state/package.json @@ -1,5 +1,5 @@ { - "name": "quickstart-multi-region", + "name": "state", "version": "2.0.21", "private": true, "type": "module", @@ -33,6 +33,8 @@ ], "tags": [ "quickstart" - ] - } + ], + "priority": 1000 + }, + "license": "MIT" } diff --git a/examples/quickstart-state/src/backend/registry.ts b/examples/state/src/backend/registry.ts similarity index 100% rename from examples/quickstart-state/src/backend/registry.ts rename to examples/state/src/backend/registry.ts diff --git a/examples/quickstart-scheduling/src/backend/server.ts b/examples/state/src/backend/server.ts similarity index 100% rename from examples/quickstart-scheduling/src/backend/server.ts rename to examples/state/src/backend/server.ts diff --git a/examples/quickstart-state/src/frontend/App.tsx b/examples/state/src/frontend/App.tsx similarity index 100% rename from examples/quickstart-state/src/frontend/App.tsx rename to examples/state/src/frontend/App.tsx diff --git a/examples/quickstart-state/src/frontend/index.html b/examples/state/src/frontend/index.html similarity index 100% rename from examples/quickstart-state/src/frontend/index.html rename to examples/state/src/frontend/index.html diff --git a/examples/quickstart-scheduling/src/frontend/main.tsx b/examples/state/src/frontend/main.tsx similarity index 100% rename from examples/quickstart-scheduling/src/frontend/main.tsx rename to examples/state/src/frontend/main.tsx diff --git a/examples/quickstart-state/tests/chat.test.ts b/examples/state/tests/chat.test.ts similarity index 100% rename from examples/quickstart-state/tests/chat.test.ts rename to examples/state/tests/chat.test.ts diff --git a/examples/quickstart-state/tsconfig.json b/examples/state/tsconfig.json similarity index 100% rename from examples/quickstart-state/tsconfig.json rename to examples/state/tsconfig.json diff --git a/examples/state/turbo.json b/examples/state/turbo.json new file mode 100644 index 0000000000..29d4cb2625 --- /dev/null +++ b/examples/state/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/quickstart-scheduling/vite.config.ts b/examples/state/vite.config.ts similarity index 100% rename from examples/quickstart-scheduling/vite.config.ts rename to examples/state/vite.config.ts diff --git a/examples/quickstart-state/vitest.config.ts b/examples/state/vitest.config.ts similarity index 100% rename from examples/quickstart-state/vitest.config.ts rename to examples/state/vitest.config.ts diff --git a/examples/stream/README.md b/examples/stream/README.md index 906d7dbd9d..5e503d43fc 100644 --- a/examples/stream/README.md +++ b/examples/stream/README.md @@ -1,32 +1,16 @@ -# Stream Processor for RivetKit +# Stream Processor -Example project demonstrating real-time top-K stream processing with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating real-time top-K stream processing. ## Getting Started -### Prerequisites - -- Node.js 18+ - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/stream +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/stream npm install -``` - -### Development - -```sh npm run dev ``` -Open your browser to `http://localhost:3000` ## Features @@ -123,4 +107,4 @@ The example includes basic structural tests. For production use, consider adding ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/stream/package.json b/examples/stream/package.json index f647d71afb..19b0bf8615 100644 --- a/examples/stream/package.json +++ b/examples/stream/package.json @@ -33,5 +33,6 @@ "tags": [ "real-time" ] - } + }, + "license": "MIT" } diff --git a/examples/trpc/README.md b/examples/trpc/README.md index 228963c1b6..7d7278a805 100644 --- a/examples/trpc/README.md +++ b/examples/trpc/README.md @@ -1,37 +1,17 @@ -# tRPC Integration for RivetKit +# tRPC Integration -Example project demonstrating tRPC integration with [RivetKit](https://rivetkit.org). - -[Learn More →](https://github.com/rivet-dev/rivetkit) - -[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues) +Example project demonstrating tRPC integration. ## Getting Started -### Prerequisites - -- Node.js - -### Installation - ```sh -git clone https://github.com/rivet-dev/rivetkit -cd rivetkit/examples/trpc +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/trpc npm install -``` - -### Development - -```sh npm run dev ``` -Run the client script to interact with the tRPC server: - -```sh -npm run client -``` ## License -Apache 2.0 \ No newline at end of file +MIT diff --git a/examples/trpc/package.json b/examples/trpc/package.json index 559784d504..321fcefbe5 100644 --- a/examples/trpc/package.json +++ b/examples/trpc/package.json @@ -25,6 +25,8 @@ "trpc", "typescript" ], - "tags": [] - } + "tags": [], + "noFrontend": true + }, + "license": "MIT" } diff --git a/frontend/packages/example-registry/package.json b/frontend/packages/example-registry/package.json index e369e2c99c..6ae9283b49 100644 --- a/frontend/packages/example-registry/package.json +++ b/frontend/packages/example-registry/package.json @@ -1,5 +1,5 @@ { - "name": "@rivet-gg/example-registry", + "name": "@rivetkit/example-registry", "private": true, "version": "2.0.21", "type": "module", @@ -16,10 +16,11 @@ }, "types": "./dist/index.d.ts", "scripts": { - "build": "tsx scripts/build.ts" + "build": "tsx scripts/build/index.ts" }, "devDependencies": { "@types/node": "^22.13.9", + "puppeteer": "^23.11.1", "tsx": "^4.20.6", "typescript": "^5.9.3" } diff --git a/frontend/packages/example-registry/scripts/build.ts b/frontend/packages/example-registry/scripts/build.ts deleted file mode 100644 index baa29f93da..0000000000 --- a/frontend/packages/example-registry/scripts/build.ts +++ /dev/null @@ -1,121 +0,0 @@ -import fs from "node:fs/promises"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -interface TemplateMetadata { - technologies: string[]; - tags: string[]; -} - -interface PackageJson { - name: string; - template?: TemplateMetadata; -} - -interface Template { - name: string; - displayName: string; - description: string; - technologies: string[]; - tags: string[]; -} - -async function main() { - // Path to examples directory (from example-registry package) - const examplesDir = path.join(__dirname, "../../../../examples"); - const outputFile = path.join(__dirname, "../src/_gen.ts"); - - // Read all example directories - const entries = await fs.readdir(examplesDir, { withFileTypes: true }); - const exampleDirs = entries.filter((entry) => entry.isDirectory()); - - const templates: Template[] = []; - - for (const dir of exampleDirs) { - const packageJsonPath = path.join(examplesDir, dir.name, "package.json"); - const readmePath = path.join(examplesDir, dir.name, "README.md"); - - try { - // Read package.json - const packageJsonContent = await fs.readFile(packageJsonPath, "utf-8"); - const packageJson: PackageJson = JSON.parse(packageJsonContent); - - // Error if no template metadata - if (!packageJson.template) { - throw new Error( - `Missing template metadata in ${dir.name}/package.json. Please add a "template" property with technologies and tags.`, - ); - } - - // Read README.md to extract description - let description = ""; - let displayName = dir.name; - - try { - const readmeContent = await fs.readFile(readmePath, "utf-8"); - // Extract first paragraph after the title as description - const lines = readmeContent.split("\n"); - let foundTitle = false; - for (const line of lines) { - // Extract display name from title (e.g., "# Counter Example" -> "Counter Example") - if (line.startsWith("# ")) { - displayName = line.slice(2).trim(); - foundTitle = true; - continue; - } - // Get first non-empty line after title as description - if (foundTitle && line.trim() !== "") { - description = line.trim(); - break; - } - } - } catch (error) { - console.warn(`Could not read README.md for ${dir.name}:`, error); - } - - // Always add "rivet" as the first technology if not present - const technologies = packageJson.template.technologies.includes("rivet") - ? packageJson.template.technologies - : ["rivet", ...packageJson.template.technologies]; - - templates.push({ - name: dir.name, - displayName, - description: description || `Example project for ${displayName}`, - technologies, - tags: packageJson.template.tags, - }); - } catch (error) { - console.warn(`Error processing ${dir.name}:`, error); - } - } - - // Sort templates by name - templates.sort((a, b) => a.name.localeCompare(b.name)); - - // Generate TypeScript file - const output = `// This file is auto-generated by scripts/build.ts -// Do not edit manually - -export interface Template { - name: string; - displayName: string; - description: string; - technologies: string[]; - tags: string[]; -} - -export const templates: Template[] = ${JSON.stringify(templates, null, 2)}; -`; - - await fs.writeFile(outputFile, output, "utf-8"); - console.log(`✅ Generated ${templates.length} templates to ${outputFile}`); -} - -main().catch((error) => { - console.error("Failed to generate templates:", error); - process.exit(1); -}); diff --git a/frontend/packages/example-registry/scripts/build/index.ts b/frontend/packages/example-registry/scripts/build/index.ts new file mode 100644 index 0000000000..e6bf9af8bf --- /dev/null +++ b/frontend/packages/example-registry/scripts/build/index.ts @@ -0,0 +1,298 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { generateScreenshots } from "./screenshots.js"; +import { validateReadmeFormat, validateRivetKitVersions, validatePackageJson, validateTurboJson } from "./validate.js"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +interface TemplateMetadata { + technologies: string[]; + tags: string[]; + noFrontend?: boolean; + priority?: number; +} + +interface PackageJson { + name: string; + license?: string; + template?: TemplateMetadata; + scripts?: Record; + dependencies?: Record; + devDependencies?: Record; +} + +interface Template { + name: string; + displayName: string; + description: string; + technologies: string[]; + tags: string[]; + noFrontend: boolean; + priority?: number; +} + +function generateGettingStartedSection(exampleName: string): string { + return `## Getting Started + +\`\`\`sh +git clone https://github.com/rivet-dev/rivet.git +cd rivet/examples/${exampleName} +npm install +npm run dev +\`\`\` +`; +} + +function generateLicenseSection(): string { + return `## License + +MIT +`; +} + +function processReadme(content: string, exampleName: string): string { + const lines = content.split('\n'); + let titleLine = ''; + let descriptionLine = ''; + let contentLines: string[] = []; + let foundTitle = false; + let foundDescription = false; + let inGettingStarted = false; + let inLicense = false; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + + // Extract title + if (!foundTitle && line.startsWith('# ')) { + titleLine = line; + foundTitle = true; + continue; + } + + // Extract description (first non-empty line after title) + if (foundTitle && !foundDescription && line.trim() !== '') { + descriptionLine = line; + foundDescription = true; + continue; + } + + // Skip empty lines between title and description + if (foundTitle && !foundDescription && line.trim() === '') { + continue; + } + + // Skip Getting Started section + if (line.match(/^##\s+Getting Started/i)) { + inGettingStarted = true; + continue; + } + + // Skip License section + if (line.match(/^##\s+License/i)) { + inLicense = true; + continue; + } + + // Check if we're exiting a section + if ((inGettingStarted || inLicense) && line.startsWith('## ')) { + inGettingStarted = false; + inLicense = false; + // Don't skip this line, it's a new section + } + + // Skip content within Getting Started or License sections + if (inGettingStarted || inLicense) { + continue; + } + + // Add to content if we've found description + if (foundDescription) { + contentLines.push(line); + } + } + + // Reconstruct README + const parts = [ + titleLine, + '', + descriptionLine, + '', + generateGettingStartedSection(exampleName), + ...contentLines, + ]; + + // Add license at the end (trim trailing whitespace first) + while (parts.length > 0 && parts[parts.length - 1].trim() === '') { + parts.pop(); + } + parts.push(''); + parts.push(generateLicenseSection().trim()); + + return parts.join('\n') + '\n'; +} + +async function main() { + // Path to examples directory (from example-registry package) + const examplesDir = path.join(__dirname, "../../../../../examples"); + const outputFile = path.join(__dirname, "../../src/_gen.ts"); + const websitePublicDir = path.join( + __dirname, + "../../../../../website/public/examples", + ); + + // Read all example directories + const entries = await fs.readdir(examplesDir, { withFileTypes: true }); + const exampleDirs = entries.filter((entry) => entry.isDirectory()); + + const templates: Template[] = []; + const errors: Array<{ example: string; error: Error }> = []; + + for (const dir of exampleDirs) { + const packageJsonPath = path.join(examplesDir, dir.name, "package.json"); + const readmePath = path.join(examplesDir, dir.name, "README.md"); + + // Skip directories without package.json + try { + await fs.access(packageJsonPath); + } catch { + console.warn(`Skipping ${dir.name}: no package.json found`); + continue; + } + + try { + // Read package.json + const packageJsonContent = await fs.readFile(packageJsonPath, "utf-8"); + const packageJson: PackageJson = JSON.parse(packageJsonContent); + + // Error if no template metadata + if (!packageJson.template) { + throw new Error( + `Missing template metadata in ${dir.name}/package.json. Please add a "template" property with technologies and tags.`, + ); + } + + // Validate package.json requirements + validatePackageJson(packageJson, dir.name); + + // Validate rivetkit package versions + validateRivetKitVersions(packageJson, dir.name); + + // Validate turbo.json exists + await validateTurboJson(path.join(examplesDir, dir.name), dir.name); + + // Read README.md to extract description and validate format + let description = ""; + let displayName = dir.name; + + try { + const readmeContent = await fs.readFile(readmePath, "utf-8"); + const validated = validateReadmeFormat(readmeContent, dir.name); + displayName = validated.displayName; + description = validated.description; + + // Process and update README with standardized getting started and license + const processedReadme = processReadme(readmeContent, dir.name); + await fs.writeFile(readmePath, processedReadme, "utf-8"); + console.log(`✅ Processed README for ${dir.name}`); + } catch (error) { + if ( + error instanceof Error && + error.message.includes("README format validation failed") + ) { + throw error; + } + throw new Error(`Could not read README.md for ${dir.name}: ${error}`); + } + + // Always add "rivet" as the first technology if not present + const technologies = packageJson.template.technologies.includes("rivet") + ? packageJson.template.technologies + : ["rivet", ...packageJson.template.technologies]; + + templates.push({ + name: dir.name, + displayName, + description: description || `Example project for ${displayName}`, + technologies, + tags: packageJson.template.tags, + noFrontend: packageJson.template.noFrontend ?? false, + priority: packageJson.template.priority, + }); + } catch (error) { + errors.push({ + example: dir.name, + error: error instanceof Error ? error : new Error(String(error)), + }); + } + } + + // If there were any errors, print them all and exit + if (errors.length > 0) { + console.error("\n❌ Validation failed for the following examples:\n"); + for (const { example, error } of errors) { + console.error(`\n${example}:`); + console.error(` ${error.message}`); + } + console.error(`\n\nTotal errors: ${errors.length}`); + process.exit(1); + } + + // Sort templates by priority (ascending), then by name alphabetically + templates.sort((a, b) => { + // Templates with priority come first + if (a.priority !== undefined && b.priority === undefined) return -1; + if (a.priority === undefined && b.priority !== undefined) return 1; + + // Both have priority, sort by priority value (ascending) + if (a.priority !== undefined && b.priority !== undefined) { + if (a.priority !== b.priority) return a.priority - b.priority; + } + + // Same priority or both undefined, sort alphabetically by name + return a.name.localeCompare(b.name); + }); + + // Generate TypeScript file + const output = `// This file is auto-generated by scripts/build/index.ts +// Do not edit manually + +export interface Template { + name: string; + displayName: string; + description: string; + technologies: string[]; + tags: string[]; + noFrontend: boolean; + priority?: number; +} + +export const templates: Template[] = ${JSON.stringify(templates, null, 2)}; +`; + + await fs.writeFile(outputFile, output, "utf-8"); + console.log(`✅ Generated ${templates.length} templates to ${outputFile}`); + + // Delete public images for noFrontend templates + for (const template of templates) { + if (template.noFrontend) { + const imageDir = path.join(websitePublicDir, template.name); + try { + await fs.rm(imageDir, { recursive: true }); + console.log(`🗑️ Deleted image directory for ${template.name} (noFrontend)`); + } catch { + // Directory doesn't exist, nothing to delete + } + } + } + + // Generate screenshots + await generateScreenshots(examplesDir, websitePublicDir); +} + +main().catch((error) => { + console.error("Failed to generate templates:", error); + process.exit(1); +}); diff --git a/frontend/packages/example-registry/scripts/build/screenshots.ts b/frontend/packages/example-registry/scripts/build/screenshots.ts new file mode 100644 index 0000000000..27343fc162 --- /dev/null +++ b/frontend/packages/example-registry/scripts/build/screenshots.ts @@ -0,0 +1,230 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import { spawn } from "node:child_process"; +import puppeteer from "puppeteer"; + +const SCREENSHOT_WIDTH = 1200; +const SCREENSHOT_HEIGHT = 675; // 16:9 aspect ratio +const DEV_SERVER_TIMEOUT = 60000; // 60 seconds to start dev server +const SCREENSHOT_DELAY = 3000; // Wait 3 seconds after page load for rendering + +async function waitForServer(url: string, timeout: number): Promise { + const startTime = Date.now(); + + while (Date.now() - startTime < timeout) { + try { + const response = await fetch(url); + if (response.ok || response.status === 404) { + return true; + } + } catch { + // Server not ready yet + } + await new Promise((resolve) => setTimeout(resolve, 500)); + } + + return false; +} + +async function takeScreenshot( + exampleName: string, + examplePath: string, + outputPath: string, +): Promise { + console.log(`📸 Taking screenshot for ${exampleName}...`); + + // Check if package.json has a dev script + const packageJsonPath = path.join(examplePath, "package.json"); + const packageJson = JSON.parse( + await fs.readFile(packageJsonPath, "utf-8"), + ); + + if (!packageJson.scripts?.dev) { + console.log(`⚠️ Skipping ${exampleName}: no dev script found`); + return; + } + + // Start dev server + console.log(`🚀 Starting dev server for ${exampleName}...`); + const devProcess = spawn("pnpm", ["dev"], { + cwd: examplePath, + stdio: ["ignore", "pipe", "pipe"], + shell: true, + }); + + let serverUrl: string | null = null; + let serverReady = false; + let processExited = false; + let processError: Error | null = null; + + // Track if process exits prematurely + devProcess.on("exit", (code) => { + processExited = true; + if (code !== 0 && code !== null) { + processError = new Error(`Dev server exited with code ${code}`); + } + }); + + // Capture output to detect server URL and readiness + const outputHandler = (data: Buffer) => { + const output = data.toString(); + console.log(`[${exampleName}] ${output.trim()}`); + + // Try to detect common dev server URLs + const urlMatch = output.match(/https?:\/\/localhost:\d+/); + if (urlMatch && !serverUrl) { + serverUrl = urlMatch[0]; + console.log(`🔍 Detected server URL: ${serverUrl}`); + } + }; + + devProcess.stdout?.on("data", outputHandler); + devProcess.stderr?.on("data", outputHandler); + + try { + // Wait for URL to be detected from output + console.log(`⏳ Waiting for dev server URL to be detected...`); + const urlDetectionStart = Date.now(); + while ( + !serverUrl && + !processExited && + Date.now() - urlDetectionStart < DEV_SERVER_TIMEOUT + ) { + await new Promise((resolve) => setTimeout(resolve, 100)); + } + + if (processError) { + throw processError; + } + + if (processExited) { + throw new Error(`Dev server exited unexpectedly before starting`); + } + + if (!serverUrl) { + throw new Error( + `Could not detect server URL from dev server output within ${DEV_SERVER_TIMEOUT}ms`, + ); + } + + // Wait for server to be ready + console.log(`⏳ Waiting for server at ${serverUrl}...`); + serverReady = await waitForServer(serverUrl, DEV_SERVER_TIMEOUT); + + if (!serverReady) { + throw new Error( + `Dev server did not start within ${DEV_SERVER_TIMEOUT}ms`, + ); + } + + console.log(`✅ Server ready at ${serverUrl}`); + + // Additional delay for app to fully render + await new Promise((resolve) => setTimeout(resolve, SCREENSHOT_DELAY)); + + // Launch browser and take screenshot + const browser = await puppeteer.launch({ + headless: true, + args: ["--no-sandbox", "--disable-setuid-sandbox"], + }); + + const page = await browser.newPage(); + await page.setViewport({ + width: SCREENSHOT_WIDTH, + height: SCREENSHOT_HEIGHT, + deviceScaleFactor: 2, // Capture at 2x resolution + }); + + const response = await page.goto(serverUrl, { waitUntil: "networkidle0" }); + + if (!response || !response.ok()) { + const status = response?.status() ?? "unknown"; + throw new Error( + `Frontend returned non-200 status: ${status} for ${exampleName}`, + ); + } + + // Additional delay for any animations or async content + await new Promise((resolve) => setTimeout(resolve, 2000)); + + await page.screenshot({ + path: outputPath, + type: "png", + }); + + await browser.close(); + + console.log(`✅ Screenshot saved to ${outputPath}`); + } finally { + // Kill dev server + devProcess.kill("SIGTERM"); + + // Give it a moment to clean up + await new Promise((resolve) => setTimeout(resolve, 1000)); + + // Force kill if still running + if (!devProcess.killed) { + devProcess.kill("SIGKILL"); + } + } +} + +export async function generateScreenshots( + examplesDir: string, + websitePublicDir: string, +) { + console.log("\n🖼️ Generating screenshots..."); + + // Ensure output directory exists + await fs.mkdir(websitePublicDir, { recursive: true }); + + // Read all example directories + const entries = await fs.readdir(examplesDir, { withFileTypes: true }); + const exampleDirs = entries.filter((entry) => entry.isDirectory()); + + for (const dir of exampleDirs) { + const examplePath = path.join(examplesDir, dir.name); + const packageJsonPath = path.join(examplePath, "package.json"); + + // Skip if no package.json + try { + await fs.access(packageJsonPath); + } catch { + console.log(`⏭️ Skipping ${dir.name}: no package.json`); + continue; + } + + // Skip if noFrontend is set + const packageJson = JSON.parse( + await fs.readFile(packageJsonPath, "utf-8"), + ); + if (packageJson.template?.noFrontend) { + console.log(`⏭️ Skipping ${dir.name}: noFrontend is set`); + continue; + } + + const outputDir = path.join(websitePublicDir, dir.name); + const outputPath = path.join(outputDir, "image.png"); + + // Check if screenshot already exists + try { + await fs.access(outputPath); + console.log(`⏭️ Skipping ${dir.name}: screenshot already exists`); + continue; + } catch { + // Screenshot doesn't exist, create it + } + + // Create output directory + await fs.mkdir(outputDir, { recursive: true }); + + try { + await takeScreenshot(dir.name, examplePath, outputPath); + } catch (error) { + console.error(`❌ Failed to generate screenshot for ${dir.name}:`, error); + // Continue with next example + } + } + + console.log("\n✅ Screenshot generation complete!"); +} diff --git a/frontend/packages/example-registry/scripts/build/validate.ts b/frontend/packages/example-registry/scripts/build/validate.ts new file mode 100644 index 0000000000..4eb8c550a6 --- /dev/null +++ b/frontend/packages/example-registry/scripts/build/validate.ts @@ -0,0 +1,152 @@ +interface PackageJson { + name: string; + license?: string; + template?: { + technologies: string[]; + tags: string[]; + }; + scripts?: Record; + dependencies?: Record; + devDependencies?: Record; +} + +const MAX_TITLE_LENGTH = 60; +const MAX_DESCRIPTION_LENGTH = 200; + +export function validateReadmeFormat( + readmeContent: string, + exampleName: string, +): { displayName: string; description: string } { + const lines = readmeContent.split("\n"); + let displayName = ""; + let description = ""; + let foundTitle = false; + + for (const line of lines) { + // Extract display name from title (e.g., "# Counter Example" -> "Counter Example") + if (line.startsWith("# ")) { + displayName = line.slice(2).trim(); + foundTitle = true; + continue; + } + // Get first non-empty line after title as description + if (foundTitle && line.trim() !== "") { + description = line.trim(); + break; + } + } + + // Validate README format + if (!displayName) { + throw new Error( + `README format validation failed for ${exampleName}: Missing title (# Heading)`, + ); + } + + // Validate title length + if (displayName.length > MAX_TITLE_LENGTH) { + throw new Error( + `README format validation failed for ${exampleName}: Title too long (${displayName.length} > ${MAX_TITLE_LENGTH}). Title: "${displayName}"`, + ); + } + + // Check for "rivet" or "rivetkit" in title (case-insensitive) + if (/rivet/i.test(displayName)) { + throw new Error( + `README format validation failed for ${exampleName}: Title should not contain "rivet" or "rivetkit". Title: "${displayName}"`, + ); + } + + // Check for "Learn More" section + if (readmeContent.includes("[Learn More")) { + throw new Error( + `README format validation failed for ${exampleName}: README should not contain "Learn More" section`, + ); + } + + // Check for Discord/Documentation/Issues links + if ( + readmeContent.includes("[Discord]") && + readmeContent.includes("[Documentation]") && + readmeContent.includes("[Issues]") + ) { + throw new Error( + `README format validation failed for ${exampleName}: README should not contain Discord/Documentation/Issues links section`, + ); + } + + return { displayName, description }; +} + +export function validateRivetKitVersions( + packageJson: PackageJson, + exampleName: string, +): void { + const allDeps = { + ...packageJson.dependencies, + ...packageJson.devDependencies, + }; + + for (const [pkgName, version] of Object.entries(allDeps)) { + // Check if it's a rivetkit or @rivetkit/* package + if (pkgName === "rivetkit" || pkgName.startsWith("@rivetkit/")) { + // Allow workspace:* for monorepo development + if (version === "workspace:*") { + continue; + } + + // Otherwise, must be exactly "latest" + if (version !== "latest") { + throw new Error( + `Package version validation failed for ${exampleName}: Package "${pkgName}" version must be "latest" (found "${version}")`, + ); + } + } + } +} + +export function validatePackageJson( + packageJson: PackageJson, + exampleName: string, +): void { + // Check for MIT license + if (packageJson.license !== "MIT") { + throw new Error( + `Package.json validation failed for ${exampleName}: license must be "MIT" (found "${packageJson.license || 'none'}")`, + ); + } + + // Check for required scripts + if (!packageJson.scripts) { + throw new Error( + `Package.json validation failed for ${exampleName}: Missing scripts section`, + ); + } + + if (!packageJson.scripts.dev) { + throw new Error( + `Package.json validation failed for ${exampleName}: Missing "dev" script`, + ); + } + + if (!packageJson.scripts["check-types"]) { + throw new Error( + `Package.json validation failed for ${exampleName}: Missing "check-types" script`, + ); + } +} + +export async function validateTurboJson( + exampleDir: string, + exampleName: string, +): Promise { + const turboJsonPath = `${exampleDir}/turbo.json`; + try { + const fs = await import("node:fs/promises"); + await fs.access(turboJsonPath); + } catch { + throw new Error( + `Validation failed for ${exampleName}: Missing turbo.json file`, + ); + } +} diff --git a/frontend/packages/example-registry/scripts/migrate-templates.ts b/frontend/packages/example-registry/scripts/migrate-templates.ts deleted file mode 100644 index 585fb0f86a..0000000000 --- a/frontend/packages/example-registry/scripts/migrate-templates.ts +++ /dev/null @@ -1,225 +0,0 @@ -import fs from "node:fs/promises"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -// Template metadata from website/src/data/templates/shared.ts -const templateMetadata: Record = { - "ai-agent": { - technologies: ["rivet", "typescript"], - tags: ["ai", "real-time"], - }, - "background-jobs": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "better-auth-external-db": { - technologies: ["rivet", "typescript"], - tags: ["database"], - }, - "bots": { - technologies: ["rivet", "typescript"], - tags: ["ai"], - }, - "chat-room": { - technologies: ["rivet", "react", "typescript"], - tags: ["real-time"], - }, - "cloudflare-workers": { - technologies: ["rivet", "cloudflare-workers", "typescript"], - tags: [], - }, - "cloudflare-workers-hono": { - technologies: ["rivet", "cloudflare-workers", "hono", "typescript"], - tags: [], - }, - "cloudflare-workers-inline-client": { - technologies: ["rivet", "cloudflare-workers", "typescript"], - tags: [], - }, - "counter": { - technologies: ["rivet", "typescript"], - tags: ["quickstart"], - }, - "counter-next-js": { - technologies: ["rivet", "next-js", "react", "typescript"], - tags: ["real-time"], - }, - "counter-serverless": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "crdt": { - technologies: ["rivet", "typescript"], - tags: ["real-time"], - }, - "cursors": { - technologies: ["rivet", "react", "typescript"], - tags: ["real-time"], - }, - "cursors-raw-websocket": { - technologies: ["rivet", "websocket", "typescript"], - tags: ["real-time"], - }, - "database": { - technologies: ["rivet", "typescript"], - tags: ["database"], - }, - "deno": { - technologies: ["rivet", "deno", "typescript"], - tags: [], - }, - "drizzle": { - technologies: ["rivet", "drizzle", "typescript"], - tags: ["database"], - }, - "elysia": { - technologies: ["rivet", "elysia", "bun", "typescript"], - tags: [], - }, - "express": { - technologies: ["rivet", "express", "typescript"], - tags: [], - }, - "game": { - technologies: ["rivet", "react", "typescript"], - tags: ["gaming", "real-time"], - }, - "hono": { - technologies: ["rivet", "hono", "typescript"], - tags: [], - }, - "hono-bun": { - technologies: ["rivet", "hono", "bun", "typescript"], - tags: [], - }, - "hono-react": { - technologies: ["rivet", "hono", "react", "typescript"], - tags: ["real-time"], - }, - "kitchen-sink": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "next-js": { - technologies: ["rivet", "next-js", "react", "typescript"], - tags: [], - }, - "quickstart-actions": { - technologies: ["rivet", "typescript"], - tags: ["quickstart"], - }, - "quickstart-cross-actor-actions": { - technologies: ["rivet", "typescript"], - tags: ["quickstart"], - }, - "quickstart-multi-region": { - technologies: ["rivet", "typescript"], - tags: ["quickstart"], - }, - "quickstart-native-websockets": { - technologies: ["rivet", "websocket", "typescript"], - tags: ["quickstart", "real-time"], - }, - "quickstart-realtime": { - technologies: ["rivet", "typescript"], - tags: ["quickstart", "real-time"], - }, - "quickstart-scheduling": { - technologies: ["rivet", "typescript"], - tags: ["quickstart"], - }, - "quickstart-state": { - technologies: ["rivet", "typescript"], - tags: ["quickstart"], - }, - "rate": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "raw-fetch-handler": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "raw-websocket-handler": { - technologies: ["rivet", "websocket", "typescript"], - tags: ["real-time"], - }, - "raw-websocket-handler-proxy": { - technologies: ["rivet", "websocket", "typescript"], - tags: [], - }, - "react": { - technologies: ["rivet", "react", "typescript"], - tags: [], - }, - "smoke-test": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "starter": { - technologies: ["rivet", "typescript"], - tags: ["quickstart"], - }, - "stream": { - technologies: ["rivet", "typescript"], - tags: ["real-time"], - }, - "sync": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "tenant": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "trpc": { - technologies: ["rivet", "trpc", "typescript"], - tags: [], - }, - "user-generated-actors-freestyle": { - technologies: ["rivet", "typescript"], - tags: [], - }, - "workflows": { - technologies: ["rivet", "typescript"], - tags: [], - }, -}; - -async function main() { - const examplesDir = path.join(__dirname, "../../../../examples"); - - for (const [exampleName, metadata] of Object.entries(templateMetadata)) { - const packageJsonPath = path.join(examplesDir, exampleName, "package.json"); - - try { - // Read existing package.json - const content = await fs.readFile(packageJsonPath, "utf-8"); - const packageJson = JSON.parse(content); - - // Add template metadata - packageJson.template = metadata; - - // Write back with pretty formatting - await fs.writeFile( - packageJsonPath, - JSON.stringify(packageJson, null, "\t") + "\n", - "utf-8", - ); - - console.log(`✅ Updated ${exampleName}/package.json`); - } catch (error) { - console.warn(`⚠️ Could not update ${exampleName}:`, error); - } - } - - console.log("\n✅ Migration complete!"); -} - -main().catch((error) => { - console.error("Migration failed:", error); - process.exit(1); -}); diff --git a/frontend/packages/example-registry/scripts/remove-rivet-tech.ts b/frontend/packages/example-registry/scripts/remove-rivet-tech.ts deleted file mode 100644 index 22fd3f01fa..0000000000 --- a/frontend/packages/example-registry/scripts/remove-rivet-tech.ts +++ /dev/null @@ -1,61 +0,0 @@ -import fs from "node:fs/promises"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -async function main() { - const examplesDir = path.join(__dirname, "../../../../examples"); - - // Read all example directories - const entries = await fs.readdir(examplesDir, { withFileTypes: true }); - const exampleDirs = entries.filter((entry) => entry.isDirectory()); - - let updatedCount = 0; - - for (const dir of exampleDirs) { - const packageJsonPath = path.join(examplesDir, dir.name, "package.json"); - - try { - // Read package.json - const content = await fs.readFile(packageJsonPath, "utf-8"); - const packageJson = JSON.parse(content); - - // Skip if no template metadata - if (!packageJson.template) { - continue; - } - - // Remove "rivet" from technologies - const originalTechnologies = packageJson.template.technologies; - const filteredTechnologies = originalTechnologies.filter( - (tech: string) => tech !== "rivet", - ); - - // Only update if there was a change - if (filteredTechnologies.length !== originalTechnologies.length) { - packageJson.template.technologies = filteredTechnologies; - - // Write back with pretty formatting - await fs.writeFile( - packageJsonPath, - JSON.stringify(packageJson, null, "\t") + "\n", - "utf-8", - ); - - console.log(`✅ Updated ${dir.name}/package.json`); - updatedCount++; - } - } catch (error) { - console.warn(`⚠️ Could not update ${dir.name}:`, error); - } - } - - console.log(`\n✅ Removed "rivet" from ${updatedCount} package.json files`); -} - -main().catch((error) => { - console.error("Script failed:", error); - process.exit(1); -}); diff --git a/frontend/packages/example-registry/src/_gen.ts b/frontend/packages/example-registry/src/_gen.ts index 0614c5f8ef..cc364b09ed 100644 --- a/frontend/packages/example-registry/src/_gen.ts +++ b/frontend/packages/example-registry/src/_gen.ts @@ -1,4 +1,4 @@ -// This file is auto-generated by scripts/build.ts +// This file is auto-generated by scripts/build/index.ts // Do not edit manually export interface Template { @@ -7,13 +7,15 @@ export interface Template { description: string; technologies: string[]; tags: string[]; + noFrontend: boolean; + priority?: number; } export const templates: Template[] = [ { "name": "ai-agent", - "displayName": "AI Agent Chat for RivetKit", - "description": "Example project demonstrating AI agent integration with [RivetKit](https://rivetkit.org).", + "displayName": "AI Agent Chat", + "description": "Example project demonstrating AI agent integration.", "technologies": [ "rivet", "typescript" @@ -21,12 +23,14 @@ export const templates: Template[] = [ "tags": [ "ai", "real-time" - ] + ], + "noFrontend": false, + "priority": 100 }, { "name": "chat-room", - "displayName": "Chat Room for RivetKit", - "description": "Example project demonstrating real-time messaging and actor state management with [RivetKit](https://rivetkit.org).", + "displayName": "Chat Room", + "description": "Example project demonstrating real-time messaging and actor state management.", "technologies": [ "rivet", "react", @@ -34,375 +38,411 @@ export const templates: Template[] = [ ], "tags": [ "real-time" - ] + ], + "noFrontend": false, + "priority": 200 }, { - "name": "cloudflare-workers", - "displayName": "Cloudflare Workers for RivetKit", - "description": "Example project demonstrating Cloudflare Workers deployment with [RivetKit](https://rivetkit.org).", + "name": "cursors", + "displayName": "Real-time Collaborative Cursors", + "description": "Example project demonstrating real-time cursor tracking and collaborative canvas.", "technologies": [ "rivet", - "cloudflare-workers", + "react", "typescript" ], - "tags": [] + "tags": [ + "real-time" + ], + "noFrontend": false, + "priority": 300 }, { - "name": "cloudflare-workers-hono", - "displayName": "Cloudflare Workers with Hono for RivetKit", - "description": "Example project demonstrating Cloudflare Workers deployment with Hono router using [RivetKit](https://rivetkit.org).", + "name": "ai-and-user-generated-actors-freestyle", + "displayName": "User and AI Generated Actors Freestyle Deployer", + "description": "Shows how to deploy user or AI-generated Rivet Actor code using a sandboxed namespace and Freestyle", "technologies": [ "rivet", - "cloudflare-workers", + "react", "hono", "typescript" ], - "tags": [] + "tags": [ + "ai" + ], + "noFrontend": false, + "priority": 400 }, { - "name": "cloudflare-workers-inline-client", - "displayName": "Cloudflare Workers Inline Client Example", - "description": "Simple example demonstrating accessing Rivet Actors via Cloudflare Workers without exposing a public API. This uses the `createInlineClient` function to connect directly to your Durable Object.", + "name": "actor-actions", + "displayName": "Actor Actions", + "description": "Demonstrates how to define and call actions on Rivet Actors for RPC-style communication between actors and clients.", "technologies": [ "rivet", - "cloudflare-workers", "typescript" ], - "tags": [] + "tags": [ + "quickstart" + ], + "noFrontend": false, + "priority": 1000 }, { - "name": "counter", - "displayName": "Counter for RivetKit", - "description": "Example project demonstrating basic actor state management and RPC calls with [RivetKit](https://rivetkit.org).", + "name": "cross-actor-actions", + "displayName": "Cross-Actor Actions", + "description": "Demonstrates how actors can call actions on other actors for inter-actor communication and coordination.", "technologies": [ "rivet", "typescript" ], "tags": [ "quickstart" - ] + ], + "noFrontend": false, + "priority": 1000 }, { - "name": "counter-next-js", - "displayName": "Counter for RivetKit (Next.js)", - "description": "Example Next.js project demonstrating basic actor state management and real-time updates with [RivetKit](https://rivetkit.org).", + "name": "multi-region", + "displayName": "Multi-Region", + "description": "Demonstrates deploying Rivet Actors across multiple geographic regions for low-latency global access.", "technologies": [ "rivet", - "next-js", - "react", "typescript" ], "tags": [ - "real-time" - ] + "quickstart" + ], + "noFrontend": false, + "priority": 1000 }, { - "name": "counter-serverless", - "displayName": "Counter (Serverless) for RivetKit", - "description": "Example project demonstrating serverless actor deployment with automatic engine configuration using [RivetKit](https://rivetkit.org).", + "name": "raw-fetch-handler", + "displayName": "Raw Fetch Handler Example", + "description": "Example project demonstrating raw HTTP fetch handling with Hono integration.", "technologies": [ "rivet", "typescript" ], - "tags": [] + "tags": [], + "noFrontend": false, + "priority": 1000 }, { - "name": "cursors", - "displayName": "Real-time Collaborative Cursors for RivetKit", - "description": "Example project demonstrating real-time cursor tracking and collaborative canvas with [RivetKit](https://rivetkit.org).", + "name": "raw-websocket-handler", + "displayName": "Raw WebSocket Handler", + "description": "Demonstrates raw WebSocket handling with direct actor connections and real-time chat functionality.", "technologies": [ "rivet", - "react", + "websocket", "typescript" ], "tags": [ "real-time" - ] + ], + "noFrontend": false, + "priority": 1000 }, { - "name": "cursors-raw-websocket", - "displayName": "Real-time Collaborative Cursors for RivetKit", - "description": "Example project demonstrating real-time cursor tracking and collaborative canvas with [RivetKit](https://rivetkit.org).", + "name": "scheduling", + "displayName": "Scheduling", + "description": "Demonstrates how to schedule tasks and execute code at specific times or intervals using Rivet Actors.", "technologies": [ "rivet", - "websocket", "typescript" ], "tags": [ - "real-time" - ] + "quickstart" + ], + "noFrontend": false, + "priority": 1000 }, { - "name": "deno", - "displayName": "Deno Example for RivetKit", - "description": "Example project demonstrating basic actor state management and RPC calls with [RivetKit](https://rivetkit.org) using Deno runtime.", + "name": "state", + "displayName": "State Management", + "description": "Demonstrates persistent state management in Rivet Actors with automatic state saving and restoration.", "technologies": [ "rivet", - "deno", "typescript" ], - "tags": [] + "tags": [ + "quickstart" + ], + "noFrontend": false, + "priority": 1000 }, { - "name": "drizzle", - "displayName": "Hono Integration for RivetKit", - "description": "Example project demonstrating Hono web framework integration with [RivetKit](https://rivetkit.org).", + "name": "chat-room-next-js", + "displayName": "Chat Room (Next.js)", + "description": "Next.js chat room demonstrating real-time messaging with actor state management.", "technologies": [ "rivet", - "drizzle", + "next-js", + "react", "typescript" ], "tags": [ - "database" - ] + "real-time" + ], + "noFrontend": false }, { - "name": "elysia", - "displayName": "Elysia Integration for RivetKit", - "description": "Example project demonstrating Elysia web framework integration with [RivetKit](https://rivetkit.org).", + "name": "cloudflare-workers", + "displayName": "Cloudflare Workers", + "description": "Example project demonstrating Cloudflare Workers deployment.", "technologies": [ "rivet", - "elysia", - "bun", + "cloudflare-workers", "typescript" ], - "tags": [] + "tags": [], + "noFrontend": true }, { - "name": "express", - "displayName": "Express Integration for RivetKit", - "description": "Example project demonstrating Express web framework integration with [RivetKit](https://rivetkit.org).", + "name": "cloudflare-workers-hono", + "displayName": "Cloudflare Workers with Hono", + "description": "Example project demonstrating Cloudflare Workers deployment with Hono router.", "technologies": [ "rivet", - "express", + "cloudflare-workers", + "hono", "typescript" ], - "tags": [] + "tags": [], + "noFrontend": true }, { - "name": "hono", - "displayName": "Hono Integration for RivetKit", - "description": "Example project demonstrating Hono web framework integration with [RivetKit](https://rivetkit.org).", + "name": "cloudflare-workers-inline-client", + "displayName": "Cloudflare Workers Inline Client Example", + "description": "Simple example demonstrating accessing Rivet Actors via Cloudflare Workers without exposing a public API. This uses the `createInlineClient` function to connect directly to your Durable Object.", "technologies": [ "rivet", - "hono", + "cloudflare-workers", "typescript" ], - "tags": [] + "tags": [], + "noFrontend": true }, { - "name": "hono-bun", - "displayName": "Hono + Bun Integration for RivetKit", - "description": "Example project demonstrating Hono web framework with Bun runtime and React frontend integration with [RivetKit](https://rivetkit.org).", + "name": "cursors-raw-websocket", + "displayName": "Real-time Collaborative Cursors (Raw WebSocket)", + "description": "Demonstrates real-time cursor tracking and collaborative canvas using raw WebSocket handlers instead of RivetKit's higher-level WebSocket abstraction.", "technologies": [ "rivet", - "hono", - "bun", + "websocket", "typescript" ], - "tags": [] + "tags": [ + "real-time" + ], + "noFrontend": false }, { - "name": "hono-react", - "displayName": "Hono React Integration for RivetKit", - "description": "Example project demonstrating full-stack Hono backend with React frontend integration with [RivetKit](https://rivetkit.org).", + "name": "custom-serverless", + "displayName": "Custom Serverless", + "description": "Example demonstrating custom serverless actor deployment with automatic engine configuration.", "technologies": [ "rivet", - "hono", - "react", "typescript" ], "tags": [ - "real-time" - ] + "starter" + ], + "noFrontend": true }, { - "name": "kitchen-sink", - "displayName": "Kitchen Sink Example for RivetKit", - "description": "Example project demonstrating all RivetKit features with [RivetKit](https://rivetkit.org).", + "name": "deno", + "displayName": "Deno Example", + "description": "Example project demonstrating basic actor state management and RPC calls using Deno runtime.", "technologies": [ "rivet", + "deno", "typescript" ], - "tags": [] + "tags": [], + "noFrontend": true }, { - "name": "next-js", - "displayName": "or", - "description": "yarn dev", + "name": "drizzle", + "displayName": "Drizzle Integration", + "description": "Demonstrates Drizzle ORM integration with Rivet Actors for type-safe database operations.", "technologies": [ "rivet", - "next-js", - "react", + "drizzle", "typescript" ], - "tags": [] + "tags": [ + "database" + ], + "noFrontend": true }, { - "name": "quickstart-actions", - "displayName": "quickstart-actions", - "description": "Example project for quickstart-actions", + "name": "elysia", + "displayName": "Elysia Integration", + "description": "Example project demonstrating Elysia web framework integration.", "technologies": [ "rivet", + "elysia", + "bun", "typescript" ], - "tags": [ - "quickstart" - ] + "tags": [], + "noFrontend": true }, { - "name": "quickstart-cross-actor-actions", - "displayName": "quickstart-cross-actor-actions", - "description": "Example project for quickstart-cross-actor-actions", + "name": "express", + "displayName": "Express Integration", + "description": "Example project demonstrating Express web framework integration.", "technologies": [ "rivet", + "express", "typescript" ], - "tags": [ - "quickstart" - ] + "tags": [], + "noFrontend": true }, { - "name": "quickstart-multi-region", - "displayName": "quickstart-multi-region", - "description": "Example project for quickstart-multi-region", + "name": "hono", + "displayName": "Hono Integration", + "description": "Example project demonstrating Hono web framework integration.", "technologies": [ "rivet", + "hono", "typescript" ], - "tags": [ - "quickstart" - ] + "tags": [], + "noFrontend": true }, { - "name": "quickstart-native-websockets", - "displayName": "quickstart-native-websockets", - "description": "Example project for quickstart-native-websockets", + "name": "hono-bun", + "displayName": "Hono + Bun", + "description": "Example demonstrating Hono web framework with Bun runtime and React frontend integration.", "technologies": [ "rivet", - "websocket", + "hono", + "bun", "typescript" ], "tags": [ - "quickstart", - "real-time" - ] + "starter" + ], + "noFrontend": true }, { - "name": "quickstart-realtime", - "displayName": "quickstart-realtime", - "description": "Example project for quickstart-realtime", + "name": "hono-react", + "displayName": "Hono + React", + "description": "Example demonstrating full-stack Hono backend with React frontend integration.", "technologies": [ "rivet", + "hono", + "react", "typescript" ], "tags": [ - "quickstart", - "real-time" - ] + "starter" + ], + "noFrontend": false }, { - "name": "quickstart-scheduling", - "displayName": "quickstart-scheduling", - "description": "Example project for quickstart-scheduling", + "name": "kitchen-sink", + "displayName": "Kitchen Sink Example", + "description": "Example project demonstrating all RivetKit features.", "technologies": [ "rivet", "typescript" ], - "tags": [ - "quickstart" - ] + "tags": [], + "noFrontend": false }, { - "name": "quickstart-state", - "displayName": "quickstart-state", - "description": "Example project for quickstart-state", + "name": "native-websockets", + "displayName": "Native WebSockets", + "description": "Demonstrates native WebSocket integration with Rivet Actors for real-time bidirectional communication.", "technologies": [ "rivet", + "websocket", "typescript" ], "tags": [ - "quickstart" - ] + "quickstart", + "real-time" + ], + "noFrontend": false }, { - "name": "raw-fetch-handler", - "displayName": "Raw Fetch Handler Example for RivetKit", - "description": "Example project demonstrating raw HTTP fetch handling with Hono integration in [RivetKit](https://rivetkit.org).", + "name": "next-js", + "displayName": "Next.js", + "description": "Minimal Next.js example demonstrating basic actor state management and real-time updates.", "technologies": [ "rivet", + "next-js", + "react", "typescript" ], - "tags": [] + "tags": [ + "starter" + ], + "noFrontend": false }, { - "name": "raw-websocket-handler", - "displayName": "Raw WebSocket Handler Proxy for RivetKit", - "description": "Example project demonstrating raw WebSocket handling with [RivetKit](https://rivetkit.org).", + "name": "node", + "displayName": "Node.js", + "description": "Minimal Node.js example demonstrating basic actor state management.", "technologies": [ "rivet", - "websocket", "typescript" ], "tags": [ - "real-time" - ] + "starter" + ], + "noFrontend": true }, { "name": "raw-websocket-handler-proxy", - "displayName": "Raw WebSocket Handler Proxy for RivetKit", - "description": "Example project demonstrating raw WebSocket handling with [RivetKit](https://rivetkit.org).", + "displayName": "Raw WebSocket Handler Proxy", + "description": "Demonstrates raw WebSocket handling using a proxy endpoint pattern for routing connections to actors.", "technologies": [ "rivet", "websocket", "typescript" ], - "tags": [] + "tags": [], + "noFrontend": false }, { "name": "react", - "displayName": "Hono React Integration for RivetKit", - "description": "Example project demonstrating full-stack Hono backend with React frontend integration with [RivetKit](https://rivetkit.org).", + "displayName": "React Integration", + "description": "Demonstrates React frontend integration with Rivet Actors.", "technologies": [ "rivet", "react", "typescript" ], - "tags": [] - }, - { - "name": "starter", - "displayName": "Rivet Platform for RivetKit", - "description": "Example project demonstrating Rivet cloud platform deployment with [RivetKit](https://rivetkit.org).", - "technologies": [ - "rivet", - "typescript" - ], - "tags": [ - "quickstart" - ] + "tags": [], + "noFrontend": false }, { "name": "stream", - "displayName": "Stream Processor for RivetKit", - "description": "Example project demonstrating real-time top-K stream processing with [RivetKit](https://rivetkit.org).", + "displayName": "Stream Processor", + "description": "Example project demonstrating real-time top-K stream processing.", "technologies": [ "rivet", "typescript" ], "tags": [ "real-time" - ] + ], + "noFrontend": false }, { "name": "trpc", - "displayName": "tRPC Integration for RivetKit", - "description": "Example project demonstrating tRPC integration with [RivetKit](https://rivetkit.org).", + "displayName": "tRPC Integration", + "description": "Example project demonstrating tRPC integration.", "technologies": [ "rivet", "trpc", "typescript" ], - "tags": [] + "tags": [], + "noFrontend": true } ]; diff --git a/frontend/packages/example-registry/turbo.json b/frontend/packages/example-registry/turbo.json new file mode 100644 index 0000000000..1baf1af036 --- /dev/null +++ b/frontend/packages/example-registry/turbo.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"], + "tasks": { + "build": { + "inputs": [ + "scripts/**", + "src/**", + "../../examples/**/package.json", + "../../examples/**/README.md" + ], + "outputs": ["src/_gen.ts"] + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7abbc8c18..197a7cde2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,6 +240,49 @@ importers: specifier: ^5.7.3 version: 5.9.2 + examples/actor-actions: + dependencies: + 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 + '@types/react': + specifier: ^19 + version: 19.2.2 + '@types/react-dom': + specifier: ^19 + version: 19.2.2(@types/react@19.2.2) + '@vitejs/plugin-react': + specifier: ^4.2.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 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + tsx: + specifier: ^3.12.7 + version: 3.14.0 + typescript: + specifier: ^5.5.2 + version: 5.9.3 + vite: + specifier: ^5.0.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) + vitest: + specifier: ^3.1.1 + version: 3.2.4(@types/debug@4.1.12)(@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/ai-agent: dependencies: '@ai-sdk/openai': @@ -304,8 +347,8 @@ importers: specifier: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221 version: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@715f221 '@rivetkit/engine-api-full': - specifier: ^25.7.2 - version: 25.8.1 + specifier: latest + version: 2.0.25 dotenv: specifier: ^17.2.2 version: 17.2.3 @@ -402,6 +445,37 @@ importers: 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) + examples/chat-room-next-js: + dependencies: + '@rivetkit/next-js': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/next-js + next: + specifier: 15.4.5 + version: 15.4.5(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2) + react: + specifier: 19.1.0 + version: 19.1.0 + react-dom: + specifier: 19.1.0 + version: 19.1.0(react@19.1.0) + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit + devDependencies: + '@types/node': + specifier: ^20 + version: 20.19.13 + '@types/react': + specifier: ^19 + version: 19.2.2 + '@types/react-dom': + specifier: ^19 + version: 19.2.2(@types/react@19.2.2) + typescript: + specifier: ^5 + version: 5.9.3 + examples/cloudflare-workers: dependencies: '@rivetkit/cloudflare-workers': @@ -480,75 +554,48 @@ importers: specifier: ^4.22.0 version: 4.44.0(@cloudflare/workers-types@4.20251014.0) - examples/counter: - devDependencies: - '@types/node': - specifier: ^22.13.9 - version: 22.18.1 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit - tsx: - specifier: ^3.12.7 - version: 3.14.0 - typescript: - specifier: ^5.7.3 - version: 5.9.2 - 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) - - examples/counter-next-js: + examples/cross-actor-actions: dependencies: - '@rivetkit/next-js': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/next-js - next: - specifier: 15.4.5 - version: 15.4.5(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2) - react: - specifier: 19.1.0 - version: 19.1.0 - react-dom: - specifier: 19.1.0 - version: 19.1.0(react@19.1.0) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit devDependencies: + '@rivetkit/react': + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/react '@types/node': - specifier: ^20 - version: 20.19.13 + specifier: ^22.13.9 + version: 22.19.1 '@types/react': specifier: ^19 version: 19.2.2 '@types/react-dom': specifier: ^19 version: 19.2.2(@types/react@19.2.2) + '@vitejs/plugin-react': + specifier: ^4.2.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 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) tsx: specifier: ^3.12.7 version: 3.14.0 typescript: - specifier: ^5 + specifier: ^5.5.2 version: 5.9.3 - - examples/counter-serverless: - devDependencies: - '@types/node': - specifier: ^22.13.9 - version: 22.18.1 - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit - tsx: - specifier: ^3.12.7 - version: 3.14.0 - typescript: - specifier: ^5.7.3 - version: 5.9.2 + vite: + specifier: ^5.0.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) 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) + version: 3.2.4(@types/debug@4.1.12)(@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/cursors: dependencies: @@ -648,6 +695,24 @@ importers: 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) + examples/custom-serverless: + devDependencies: + '@types/node': + specifier: ^22.13.9 + version: 22.19.1 + rivetkit: + specifier: workspace:* + version: link:../../rivetkit-typescript/packages/rivetkit + tsx: + specifier: ^3.12.7 + version: 3.14.0 + typescript: + specifier: ^5.7.3 + version: 5.9.3 + vitest: + specifier: ^3.1.1 + version: 3.2.4(@types/debug@4.1.12)(@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/deno: dependencies: hono: @@ -694,9 +759,12 @@ importers: '@rivetkit/react': specifier: workspace:* version: link:../../rivetkit-typescript/packages/react + '@sinclair/typebox': + specifier: ^0.34.15 + version: 0.34.41 elysia: specifier: ^1.3.5 - version: 1.4.12(@sinclair/typebox@0.27.8)(exact-mirror@0.2.2(@sinclair/typebox@0.27.8))(file-type@21.0.0)(openapi-types@12.1.3)(typescript@5.9.2) + version: 1.4.12(@sinclair/typebox@0.34.41)(exact-mirror@0.2.2(@sinclair/typebox@0.34.41))(file-type@21.0.0)(openapi-types@12.1.3)(typescript@5.9.2) react: specifier: ^18.2.0 version: 18.3.1 @@ -896,38 +964,7 @@ importers: 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) - examples/next-js: - dependencies: - '@rivetkit/next-js': - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/next-js - next: - specifier: 15.4.5 - version: 15.4.5(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2) - react: - specifier: 19.1.0 - version: 19.1.0 - react-dom: - specifier: 19.1.0 - version: 19.1.0(react@19.1.0) - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit - devDependencies: - '@types/node': - specifier: ^20 - version: 20.19.13 - '@types/react': - specifier: ^19 - version: 19.2.2 - '@types/react-dom': - specifier: ^19 - version: 19.2.2(@types/react@19.2.2) - typescript: - specifier: ^5 - version: 5.9.2 - - examples/quickstart-actions: + examples/multi-region: dependencies: rivetkit: specifier: workspace:* @@ -970,93 +1007,7 @@ importers: specifier: ^3.1.1 version: 3.2.4(@types/debug@4.1.12)(@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/quickstart-cross-actor-actions: - dependencies: - 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 - '@types/react': - specifier: ^19 - version: 19.2.2 - '@types/react-dom': - specifier: ^19 - version: 19.2.2(@types/react@19.2.2) - '@vitejs/plugin-react': - specifier: ^4.2.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 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - tsx: - specifier: ^3.12.7 - version: 3.14.0 - typescript: - specifier: ^5.5.2 - version: 5.9.3 - vite: - specifier: ^5.0.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) - vitest: - specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@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/quickstart-multi-region: - dependencies: - 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 - '@types/react': - specifier: ^19 - version: 19.2.2 - '@types/react-dom': - specifier: ^19 - version: 19.2.2(@types/react@19.2.2) - '@vitejs/plugin-react': - specifier: ^4.2.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 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - tsx: - specifier: ^3.12.7 - version: 3.14.0 - typescript: - specifier: ^5.5.2 - version: 5.9.3 - vite: - specifier: ^5.0.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) - vitest: - specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@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/quickstart-native-websockets: + examples/native-websockets: dependencies: rivetkit: specifier: workspace:* @@ -1105,134 +1056,55 @@ importers: specifier: ^8.16.0 version: 8.18.3 - examples/quickstart-realtime: + examples/next-js: dependencies: - rivetkit: - specifier: workspace:* - version: link:../../rivetkit-typescript/packages/rivetkit - devDependencies: - '@rivetkit/react': + '@rivetkit/next-js': specifier: workspace:* - version: link:../../rivetkit-typescript/packages/react - '@types/node': - specifier: ^22.13.9 - version: 22.19.1 - '@types/react': - specifier: ^19 - version: 19.2.2 - '@types/react-dom': - specifier: ^19 - version: 19.2.2(@types/react@19.2.2) - '@vitejs/plugin-react': - specifier: ^4.2.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 + version: link:../../rivetkit-typescript/packages/next-js + next: + specifier: 15.4.5 + version: 15.4.5(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2) react: - specifier: ^18.2.0 - version: 18.3.1 + specifier: 19.1.0 + version: 19.1.0 react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - tsx: - specifier: ^3.12.7 - version: 3.14.0 - typescript: - specifier: ^5.5.2 - version: 5.9.3 - vite: - specifier: ^5.0.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) - vitest: - specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@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/quickstart-scheduling: - dependencies: + specifier: 19.1.0 + version: 19.1.0(react@19.1.0) 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 + specifier: ^20 + version: 20.19.13 '@types/react': specifier: ^19 version: 19.2.2 '@types/react-dom': specifier: ^19 version: 19.2.2(@types/react@19.2.2) - '@vitejs/plugin-react': - specifier: ^4.2.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 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) tsx: specifier: ^3.12.7 version: 3.14.0 typescript: - specifier: ^5.5.2 - version: 5.9.3 - vite: - specifier: ^5.0.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) - vitest: - specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@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) + specifier: ^5 + version: 5.9.2 - examples/quickstart-state: + examples/node: dependencies: 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 - '@types/react': - specifier: ^19 - version: 19.2.2 - '@types/react-dom': - specifier: ^19 - version: 19.2.2(@types/react@19.2.2) - '@vitejs/plugin-react': - specifier: ^4.2.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 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) tsx: specifier: ^3.12.7 version: 3.14.0 typescript: specifier: ^5.5.2 version: 5.9.3 - vite: - specifier: ^5.0.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) - vitest: - specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@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/raw-fetch-handler: dependencies: @@ -1427,21 +1299,91 @@ importers: 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) - examples/starter: + examples/scheduling: dependencies: 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 + version: 22.19.1 + '@types/react': + specifier: ^19 + version: 19.2.2 + '@types/react-dom': + specifier: ^19 + version: 19.2.2(@types/react@19.2.2) + '@vitejs/plugin-react': + specifier: ^4.2.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 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) tsx: specifier: ^3.12.7 version: 3.14.0 typescript: specifier: ^5.5.2 - version: 5.9.2 + version: 5.9.3 + vite: + specifier: ^5.0.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) + vitest: + specifier: ^3.1.1 + version: 3.2.4(@types/debug@4.1.12)(@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/state: + dependencies: + 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 + '@types/react': + specifier: ^19 + version: 19.2.2 + '@types/react-dom': + specifier: ^19 + version: 19.2.2(@types/react@19.2.2) + '@vitejs/plugin-react': + specifier: ^4.2.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 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + tsx: + specifier: ^3.12.7 + version: 3.14.0 + typescript: + specifier: ^5.5.2 + version: 5.9.3 + vite: + specifier: ^5.0.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) + vitest: + specifier: ^3.1.1 + version: 3.2.4(@types/debug@4.1.12)(@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/stream: dependencies: @@ -2087,6 +2029,9 @@ importers: '@types/node': specifier: ^22.13.9 version: 22.19.1 + puppeteer: + specifier: ^23.11.1 + version: 23.11.1(typescript@5.9.3) tsx: specifier: ^4.20.6 version: 4.20.6 @@ -2461,12 +2406,12 @@ importers: '@rivet-gg/components': specifier: workspace:* version: link:../frontend/packages/components - '@rivet-gg/example-registry': - specifier: workspace:* - version: link:../frontend/packages/example-registry '@rivet-gg/icons': specifier: workspace:^ version: link:../frontend/packages/icons + '@rivetkit/example-registry': + specifier: workspace:* + version: link:../frontend/packages/example-registry '@shikijs/transformers': specifier: ^3.15.0 version: 3.15.0 @@ -5705,6 +5650,11 @@ packages: '@posthog/core@1.5.3': resolution: {integrity: sha512-1cHCMR2uS/rAdBIFlBPJ4rPYaw1O42VkFy/LwQLtoy2hMQb2DdhCoSHfgA66R9TvcOybZsSANlbuihmGEZUKVQ==} + '@puppeteer/browsers@2.6.1': + resolution: {integrity: sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==} + engines: {node: '>=18'} + hasBin: true + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -6454,8 +6404,8 @@ packages: resolution: {tarball: https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2} version: 0.0.0 - '@rivetkit/engine-api-full@25.8.1': - resolution: {integrity: sha512-nkQeBUdirq4VYEed1HePCp4zA/BjWg0GoO//MXW+B2ZuDk2FHmADt85VolB8M8y/0Q8Swlx6xQEVbFRJDXDeYQ==} + '@rivetkit/engine-api-full@2.0.25': + resolution: {integrity: sha512-34ibIpDZjTTU6qm3SctdMZGc1PxHC+vGmT26NwR7cuIWT7QNehuiquIB/5YlbgtnkK0JO4GMf9dAp3xHuDFemQ==} '@rivetkit/fast-json-patch@3.1.2': resolution: {integrity: sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==} @@ -6894,6 +6844,9 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.34.41': + resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + '@sindresorhus/is@7.1.0': resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==} engines: {node: '>=18'} @@ -7105,6 +7058,9 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@trpc/client@11.6.0': resolution: {integrity: sha512-DyWbYk2hd50BaVrXWVkaUnaSwgAF5g/lfBkXtkF1Aqlk6BtSzGUo3owPkgqQO2I5LwWy1+ra9TsSfBBvIZpTwg==} peerDependencies: @@ -7374,6 +7330,9 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@8.47.0': resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -8044,6 +8003,10 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -8095,6 +8058,14 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + b4a@1.7.3: + resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + babel-dead-code-elimination@1.0.10: resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} @@ -8175,6 +8146,44 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + + bare-fs@4.5.2: + resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.2: + resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.3.2: + resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -8186,6 +8195,10 @@ packages: resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==} hasBin: true + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + bcryptjs@2.4.3: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} @@ -8257,6 +8270,9 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -8417,6 +8433,11 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} + chromium-bidi@0.11.0: + resolution: {integrity: sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==} + peerDependencies: + devtools-protocol: '*' + chromium-edge-launcher@0.2.0: resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} @@ -8640,6 +8661,15 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} @@ -8717,6 +8747,10 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -8844,6 +8878,10 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -8875,6 +8913,9 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devtools-protocol@0.0.1367902: + resolution: {integrity: sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -9100,6 +9141,10 @@ packages: resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} engines: {node: '>=8'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true @@ -9212,6 +9257,11 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-next@16.0.3: resolution: {integrity: sha512-5F6qDjcZldf0Y0ZbqvWvap9xzYUxyDf7/of37aeyhvkrQokj/4bT1JYWZdlWUr283aeVa+s52mPq9ogmGg+5dw==} peerDependencies: @@ -9382,6 +9432,9 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -9536,6 +9589,11 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + fast-copy@3.0.2: resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} @@ -9549,6 +9607,9 @@ packages: resolution: {integrity: sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==} engines: {node: '>=6.0.0'} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -9612,6 +9673,9 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -9861,6 +9925,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -9879,6 +9947,10 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} + engines: {node: '>= 14'} + getenv@1.0.0: resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} engines: {node: '>=6'} @@ -10102,6 +10174,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -10207,6 +10283,10 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -10872,6 +10952,10 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + lucide-react@0.439.0: resolution: {integrity: sha512-PafSWvDTpxdtNEndS2HIHxcNAbd54OaqSYJO90/b63rab2HWYqDbH194j0i82ZFdWOAcf0AHinRykXRRK2PJbw==} peerDependencies: @@ -11306,6 +11390,9 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -11403,6 +11490,10 @@ packages: nested-error-stacks@2.0.1: resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + next-router-mock@1.0.4: resolution: {integrity: sha512-EBOd/J2PxgZ9WH732ppfEojZgSTSOkjEz0DgQn+9c/PELKnc9P19PAcmQUi7fSlk3LAKbMGzl5DEOb40x7l8kA==} peerDependencies: @@ -11705,6 +11796,14 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -11803,6 +11902,9 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -12127,6 +12229,10 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -12144,6 +12250,16 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + puppeteer-core@23.11.1: + resolution: {integrity: sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==} + engines: {node: '>=18'} + + puppeteer@23.11.1: + resolution: {integrity: sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw==} + engines: {node: '>=18'} + deprecated: < 24.15.0 is no longer supported + hasBin: true + qrcode-terminal@0.11.0: resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} hasBin: true @@ -12844,6 +12960,10 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -12862,6 +12982,14 @@ packages: resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} engines: {node: '>=10.2.0'} + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + solid-js@1.9.9: resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==} @@ -12962,6 +13090,9 @@ packages: resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} engines: {node: '>= 0.10.0'} + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} + strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -13165,10 +13296,16 @@ packages: tar-fs@2.1.3: resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} + tar-fs@3.1.1: + resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar@7.5.2: resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} @@ -13206,6 +13343,9 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -13226,6 +13366,9 @@ packages: resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} engines: {node: '>=18'} + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -13464,6 +13607,9 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + typedoc@0.28.14: resolution: {integrity: sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==} engines: {node: '>= 18', pnpm: '>= 10'} @@ -13523,6 +13669,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -14281,6 +14430,9 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -14323,6 +14475,9 @@ packages: zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -17519,6 +17674,22 @@ snapshots: dependencies: cross-spawn: 7.0.6 + '@puppeteer/browsers@2.6.1': + dependencies: + debug: 4.4.3 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.3 + tar-fs: 3.1.1 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + - supports-color + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.3': {} @@ -18482,7 +18653,7 @@ snapshots: transitivePeerDependencies: - encoding - '@rivetkit/engine-api-full@25.8.1': + '@rivetkit/engine-api-full@2.0.25': dependencies: form-data: 4.0.5 js-base64: 3.7.8 @@ -19013,6 +19184,8 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.34.41': {} + '@sindresorhus/is@7.1.0': {} '@sindresorhus/merge-streams@4.0.0': {} @@ -19263,6 +19436,8 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} + '@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.2))(typescript@5.9.2)': dependencies: '@trpc/server': 11.6.0(typescript@5.9.2) @@ -19561,6 +19736,11 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.19.1 + optional: true + '@typescript-eslint/eslint-plugin@8.47.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))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -20459,6 +20639,10 @@ snapshots: ast-types-flow@0.0.8: {} + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + ast-types@0.16.1: dependencies: tslib: 2.8.1 @@ -20509,6 +20693,8 @@ snapshots: axobject-query@4.1.0: {} + b4a@1.7.3: {} + babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.28.4 @@ -20659,12 +20845,51 @@ snapshots: balanced-match@1.0.2: {} + bare-events@2.8.2: {} + + bare-fs@4.5.2: + dependencies: + bare-events: 2.8.2 + bare-path: 3.0.0 + bare-stream: 2.7.0(bare-events@2.8.2) + bare-url: 2.3.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + bare-os@3.6.2: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.2 + optional: true + + bare-stream@2.7.0(bare-events@2.8.2): + dependencies: + streamx: 2.23.0 + optionalDependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + bare-url@2.3.2: + dependencies: + bare-path: 3.0.0 + optional: true + base64-js@1.5.1: {} base64id@2.0.0: {} baseline-browser-mapping@2.8.29: {} + basic-ftp@5.0.5: {} + bcryptjs@2.4.3: {} better-opn@3.0.2: @@ -20756,6 +20981,8 @@ snapshots: dependencies: node-int64: 0.4.0 + buffer-crc32@0.2.13: {} + buffer-from@1.1.2: {} buffer@5.7.1: @@ -20944,6 +21171,12 @@ snapshots: chrome-trace-event@1.0.4: {} + chromium-bidi@0.11.0(devtools-protocol@0.0.1367902): + dependencies: + devtools-protocol: 0.0.1367902 + mitt: 3.0.1 + zod: 3.23.8 + chromium-edge-launcher@0.2.0: dependencies: '@types/node': 22.19.1 @@ -21179,6 +21412,15 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@9.0.0(typescript@5.9.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 + crelt@1.0.6: {} cross-fetch@4.1.0: @@ -21243,6 +21485,8 @@ snapshots: damerau-levenshtein@1.0.8: {} + data-uri-to-buffer@6.0.2: {} + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -21339,6 +21583,12 @@ snapshots: defu@6.1.4: {} + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + delayed-stream@1.0.0: {} depd@2.0.0: {} @@ -21358,6 +21608,8 @@ snapshots: dependencies: dequal: 2.0.3 + devtools-protocol@0.0.1367902: {} + didyoumean@1.2.2: {} diff-match-patch@1.0.5: {} @@ -21430,11 +21682,11 @@ snapshots: electron-to-chromium@1.5.257: {} - elysia@1.4.12(@sinclair/typebox@0.27.8)(exact-mirror@0.2.2(@sinclair/typebox@0.27.8))(file-type@21.0.0)(openapi-types@12.1.3)(typescript@5.9.2): + elysia@1.4.12(@sinclair/typebox@0.34.41)(exact-mirror@0.2.2(@sinclair/typebox@0.34.41))(file-type@21.0.0)(openapi-types@12.1.3)(typescript@5.9.2): dependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.34.41 cookie: 1.0.2 - exact-mirror: 0.2.2(@sinclair/typebox@0.27.8) + exact-mirror: 0.2.2(@sinclair/typebox@0.34.41) fast-decode-uri-component: 1.0.1 file-type: 21.0.0 openapi-types: 12.1.3 @@ -21498,6 +21750,8 @@ snapshots: env-editor@0.4.2: {} + env-paths@2.2.1: {} + errno@0.1.8: dependencies: prr: 1.0.1 @@ -21812,6 +22066,14 @@ snapshots: escape-string-regexp@5.0.0: {} + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + eslint-config-next@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): dependencies: '@next/eslint-plugin-next': 16.0.3 @@ -22072,6 +22334,12 @@ snapshots: eventemitter3@5.0.1: {} + events-universal@1.0.1: + dependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + events@3.3.0: {} eventsource-parser@1.1.2: {} @@ -22082,9 +22350,9 @@ snapshots: dependencies: eventsource-parser: 3.0.6 - exact-mirror@0.2.2(@sinclair/typebox@0.27.8): + exact-mirror@0.2.2(@sinclair/typebox@0.34.41): optionalDependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.34.41 exec-async@2.2.0: {} @@ -22322,6 +22590,16 @@ snapshots: extend@3.0.2: {} + extract-zip@2.0.1: + dependencies: + debug: 4.4.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + fast-copy@3.0.2: {} fast-decode-uri-component@1.0.1: {} @@ -22330,6 +22608,8 @@ snapshots: fast-equals@5.2.2: {} + fast-fifo@1.3.2: {} + fast-glob@3.3.1: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -22387,6 +22667,10 @@ snapshots: dependencies: bser: 2.1.1 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -22674,6 +22958,10 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + get-stream@8.0.1: {} get-stream@9.0.1: @@ -22695,6 +22983,14 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-uri@6.0.5: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + getenv@1.0.0: {} getenv@2.0.0: {} @@ -23018,6 +23314,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -23108,6 +23411,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + ip-address@10.1.0: {} + ipaddr.js@1.9.1: {} is-alphabetical@2.0.1: {} @@ -23741,6 +24046,8 @@ snapshots: dependencies: yallist: 4.0.0 + lru-cache@7.18.3: {} + lucide-react@0.439.0(react@19.1.1): dependencies: react: 19.1.1 @@ -24664,6 +24971,8 @@ snapshots: dependencies: minipass: 7.1.2 + mitt@3.0.1: {} + mkdirp-classic@0.5.3: {} mkdirp@1.0.4: {} @@ -24738,6 +25047,8 @@ snapshots: nested-error-stacks@2.0.1: {} + netmask@2.0.2: {} + next-router-mock@1.0.4(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): dependencies: 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) @@ -25104,6 +25415,24 @@ snapshots: p-try@2.2.0: {} + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.4 + debug: 4.4.3 + get-uri: 6.0.5 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + package-json-from-dist@1.0.1: {} pako@1.0.11: {} @@ -25194,6 +25523,8 @@ snapshots: pathval@2.0.1: {} + pend@1.2.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -25475,6 +25806,19 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + proxy-from-env@1.1.0: {} prr@1.0.1: @@ -25489,6 +25833,39 @@ snapshots: punycode@2.3.1: {} + puppeteer-core@23.11.1: + dependencies: + '@puppeteer/browsers': 2.6.1 + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) + debug: 4.4.3 + devtools-protocol: 0.0.1367902 + typed-query-selector: 2.12.0 + ws: 8.18.3 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - bufferutil + - react-native-b4a + - supports-color + - utf-8-validate + + puppeteer@23.11.1(typescript@5.9.3): + dependencies: + '@puppeteer/browsers': 2.6.1 + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) + cosmiconfig: 9.0.0(typescript@5.9.3) + devtools-protocol: 0.0.1367902 + puppeteer-core: 23.11.1 + typed-query-selector: 2.12.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - bufferutil + - react-native-b4a + - supports-color + - typescript + - utf-8-validate + qrcode-terminal@0.11.0: {} qrcode.react@4.2.0(react@19.1.1): @@ -26527,6 +26904,8 @@ snapshots: slugify@1.6.6: {} + smart-buffer@4.2.0: {} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -26573,6 +26952,19 @@ snapshots: - supports-color - utf-8-validate + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.1.0 + smart-buffer: 4.2.0 + solid-js@1.9.9: dependencies: csstype: 3.1.3 @@ -26648,6 +27040,15 @@ snapshots: stream-buffers@2.2.0: {} + streamx@2.23.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + strict-uri-encode@2.0.0: {} string-argv@0.3.2: {} @@ -26944,6 +27345,18 @@ snapshots: pump: 3.0.3 tar-stream: 2.2.0 + tar-fs@3.1.1: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.5.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -26952,6 +27365,15 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + tar-stream@3.1.7: + dependencies: + b4a: 1.7.3 + fast-fifo: 1.3.2 + streamx: 2.23.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + tar@7.5.2: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -27003,6 +27425,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-decoder@1.2.3: + dependencies: + b4a: 1.7.3 + transitivePeerDependencies: + - react-native-b4a + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -27021,6 +27449,8 @@ snapshots: throttleit@2.1.0: {} + through@2.3.8: {} + tiny-invariant@1.3.3: {} tiny-warning@1.0.3: {} @@ -27362,6 +27792,8 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typed-query-selector@2.12.0: {} + typedoc@0.28.14(typescript@5.9.3): dependencies: '@gerrit0/mini-shiki': 3.15.0 @@ -27436,6 +27868,11 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + undici-types@5.26.5: {} undici-types@6.21.0: {} @@ -28682,6 +29119,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yocto-queue@0.1.0: {} yocto-queue@1.2.1: {} @@ -28723,6 +29165,8 @@ snapshots: zod@3.22.3: {} + zod@3.23.8: {} + zod@3.25.76: {} zustand@5.0.3(@types/react@19.2.2)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)): diff --git a/website/package.json b/website/package.json index 3ca745be3a..d989a19e9f 100644 --- a/website/package.json +++ b/website/package.json @@ -9,7 +9,7 @@ "format": "prettier --write .", "create-article": "vite-node scripts/generateArticle.js", "generate-favicon": "npx cli-real-favicon generate scripts/faviconConfig.json faviconData.json public/icons", - "prebuild": "pnpm --filter @rivet-gg/example-registry build && pnpm gen:navigation && pnpm gen:markdown", + "prebuild": "pnpm gen:navigation && pnpm gen:markdown", "gen:navigation": "tsx scripts/generateNavigation.ts", "gen:examples": "node scripts/generateExamples.mjs", "gen:markdown": "tsx scripts/generateMarkdownAndLlms.ts", @@ -34,7 +34,7 @@ "@rivet-gg/api": "25.5.3", "@rivet-gg/cloud": "https://pkg.pr.new/rivet-dev/cloud/@rivet-gg/cloud@bf2ebb2", "@rivet-gg/components": "workspace:*", - "@rivet-gg/example-registry": "workspace:*", + "@rivetkit/example-registry": "workspace:*", "@rivet-gg/icons": "workspace:^", "@shikijs/transformers": "^3.15.0", "@sindresorhus/slugify": "^3.0.0", diff --git a/website/public/examples/actor-actions/image.png b/website/public/examples/actor-actions/image.png new file mode 100644 index 0000000000000000000000000000000000000000..3cbf6d83a4035743b02fbadd75523b8bd061373f GIT binary patch literal 137822 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

%jGjVbP+GQhA~>Eh3S?) ztiUFeU1r-M+ry1+gP5N0#u;`AlwQazRGY_Z=@v6mv21Zb@{T~AXrx5Do;_p#k)B}y_A20 z!WeoyU+R2+vfyyW6Pp6oIW;|fd1@{s`ha-}J;U<|+36DNo?e7aJ7KNii6XLx1mXHS zI$INo#+-+I2$@uOTrEtn=5lXQrii=pd4J2jYx|0Kb{@a+{%qj_eN|1x-CyB$<<6I9bnX&D7-J#U@Oo+}-XQP|kYvQES*|Ygv z=RB8s0r>#zKu`U>i=0)5t}{Z(4!jt>$kQ_8_3RHvBhYeSpb4=&szv*>*h|MbE_QCG zdMm+5lx?*Up}pIi^0~5(##E7o4l(oTox#RRiIe<-R8#O=UlkMd2diOao~B^Wh==li z$@^0fFVvvZ{g0Np(U_H?FO~^ zCNZp|ccDU-*|+oB$X#gDliEi70&=bb3v({iv_)tv~* zZ99hS%hbOxupWAeK_JogZT+f!5W}tMJ>sbgf=)1l!LRAPi`l$xiz7*fCbX@Vi-O$E z-`+vN{k>Cg8*o44<@3*8-;;N@tJjT=W|2^=XZf}N3c^l&DqZlaZ@b5J*swrSF-*BI z&4Y8L=|NFb*F(3EC*iJBJ2m`7LN0x0n#xx=SGnYv6;NMDL&`$ZeL;_k_j3f*S<)Czu@;D}!ryGmoR7W2K{gzWf7LDCS9%Z^0bT!4naoQuBqA z&Hnw1iXVsk*uH`@Q*yH5T#HvhJGgQOatG=K-HxabVLysb%?CWKTqz1jp^YwiwDi>j zr!X*EyxQ@AMZ5fhtxAmxM8f>V1rf|H8GktThyzGa`|L85%OuJ)D1*U=fRgZXaO)9$ zex#GfZFQOk5iyUs4H1jF%QK%Ghc}T}PeM64Jtp+H2rad+l*!Kaw;rYD1Z3+wPyeMY z{IuOQa5{jYectiK7&k0U`JS@7W4BKqB>XF)4ilTzZrZQfnKOp3@~OOKMWRA)iBoTX zu=aVi1H#mAn6tgU$xV%>p_$`a71E2&6K)Xj0}s80?~pj*JWY;6QGxt;=a+@cj{nO7 z9}IL9G6ELJtgCjg_kPNy*!IWWyZ$C>rm|-q*GhOjM&ws=_us>m+%)^{UMoH7QDjvF z8vVnnuVXU>m^$8iQYNFx*^0r|2PTp^KO|quo8hU+Al_J7De7?{M>FvqS6^G^*$A;Jw#z<*+rVo0>GYYMatgv?J8R%$#BBEgLeoEiQ&Eojg;_^}Vu1NWG zW}~zrE3&kD)PZHPvfjlaoaaeHSvM0ex2L5sk`jxYxMpih)LF{v2`lHMEhm)!WmSoj zZ=YVAUQ7mlG^2c+iCUx=q(9+6Ju33DfF+AyEWtbWdK)6p$~|rO*K5b6kF=6BTUeLv zL*zBJ4Nv9Qce<~MRg1C+ODsFDBzGzrnNN4iXIl3LI0sjZcBGx2XHVEFI&b%d`qbCl zExE^M%Q{`g*nJqY*7dUB`^6{MHof?@iZa{M?r2s`H0oBtb)E$AmB}=AKcBXRno=~f@D&6>2H}%QL*|^Ju)d~VJEq%*hx;|?m+VeBVA2K#r z+ewbc!tc^tGlmYCI?So2Hy6J#c`oa2YxzZv ziU&f3aOi*J7A$FTugQ8{s+yCb+b*6*tDI%#qn;iPB_VUabjCy}d~J%nSZmub=9#$K z#y9wng!{tk8mpyDQyQi4a~I$QMJki9#P`x4!m}fQK|2_AzDW1>hJMQ?KJ#<)VbL<= z++$I#Zf$xso8FBoxO>0aQ=vQj1p&_|AQF;}WW`-ZpP-(QRm8*qQBrO}Uext`I=ew+ zc4^k+gUTVDs@M!L@_5swP##;x$=YUNA!=?dt;UX^c2nsBwk|zZgocIS?$-HtbEwtH zfGsD|Y(dxfeA#DylzV(bSbIl7mYnI~>sTI6UT$d@#I$CmgXUmR;m44~0n6xk&-Q$<0dz|X zRww=fjrf%1kVd@aa@ZP@#R&8AJrLGCWFDFZDk7SCap}=UNpa$sbH~Z?iOrci`xX*? zKcuGK1$I&Uj0ElHDWT?9x8Uot*^Cch2|<)RM%c8vE7i_$2n!uOUaxmzto31LMRK{wH$bpz|`EOh^DL6n$>T73bEQe7yeRO*rK5tYr$|` z0@2%(zFG&fJyCJ3?laLo4uMGo3DNwejHdD7*8&;NZv`;9G>>jd&)zLUiVDW=#i@6c z(RHCdfn zVg*g`PTO(flbA)6T9@NWPTfPM?bj*1OnCwEPQ2dk{{Db4=CJ^cYHXZmyJ=x-C%FfK zp2FIfLi|b?dNDS8FS6H`vjcjq092@m$;_o!tG%j-(%I3nXD>_gRgA%TLgTrb{1)ImS6vFFfd zeh+)FBb(1F#2R;kj*r%mohnAqy)%fCCnqPJM63pZl!xgL`T12A+=`dIV-O3`$1Mg5 zDD*{ogDp+hBCeHBL|IONuM^fsMjI29o+#{Xw@(P0wY0UmI8^5AKG*m~KMZts7=7yC zSYfoBq?u1rVx%fp!vc12e6r%2GOUS_o=2due})g@^GRFp%d2IZ(Cqu6yUh3G&t1!G zW-2G`#@SLTh*w~xqRyt|Z_S(PLO$;G!&>O>ImHZ1`#HXf&SqrB8r-4mVjlI*1Q+NseK9{Y&C|52K%v1ATX^z14D+6vpO^x~IReGhq!6zde@ z2?$C{6u$cK7bJ9*Iaq&PI53AX(y-}_uy=$L8g(Y~TrXm}`1=E-{&AwW6|jakwS9nJ zEGGCmzo{&gJwBfCO}s8EEKZDd%XXiZpPqLW5R0(57@p>e*@^S2WAWQIuu1<&TA5r% z+3U;pO|wE5+g=2*>vY~=c3M;-6U>0+?d!DpRgsH}K17m`+}PBrH7jqwl(Jkc<9svN z=*g2XR{9>P>wb6VaRyJdS8DFr4XE+vvCEFLGQxs8yp`U^pTk;&_hNcH3iRm%{Bwus zy_{8jit46+b*JXG&@o)MT=r~;D65UHN7!uU)K;1{Hb#)vaq;7KjLIYP(&J#Yc;);x zFqcYU!PPnfy9nN^EHPc{rmE{}5;TN{>r`kj+KUoGf+e6F!Q z1r1cH%k(Zo`R-lVCeNycN3lq1jt3{fJhh-FSA9 zhD9?0->J;NmYowLk%_cPQ%^IvYJ0J|tlZFXh%tQ=-%(zu`1FG`>0 za4f+BX#W~QPk3=1wzVHbaVQmrEY@&VN8bBz_U7bp2~CK8_3Z7w zPm>bO`X+7CTbP{RK`a1P5^~Zz6~Z=syoKF47M+S}1=W?EQRuV7Q-=M%iPuSAC5+oTD};u)%~|*y48f z7+UWAyuVK#*kBl2)62A4BxEQiY0%2}W1^5WLUN6^1ySe883r6Gb2Fufk2#M$6_IEA zMYQRY2l-ddZfkUvDq}jjHYI$id-w72xSgyI5LIV{=W4c=M_ybRxbr+T9)*XOY3D8v zLXS_=-OILCpdhqgZJnVOGv-a2OGVTrvU70>vN8*b6wvPyx&L;7iNMY*4K$Mt^?K9d za=L>XoH}Qdi1+YNY$?^bspBMD=~+JBo>d%f`9nW-$Q>5D!n0Sq(V}FnD`oM6&!kk7 zw|m*`?b6b_t+AqArBRnJJ1d)fnWsu4u|fy(Juh%{pAOeuB?y@+#%D7EKgK|wr>+d& znn!Py$S64|8(2Nc*11an8;MPxHa9SYDzjam^TL?KPqZk`Oy^HCwk{F%tPWP@F~v}x z&Z#>YPcHkmy+VaQ3Td;eXsV7O1y@0zmfu{|xXp{)&};=oN?JlJElRCNmjqIiTD7pnW2C*%$B$MUWs>uE zmS^BuT+LGNpLaex#~LRro~JDj0lLd8rbMC<9n(4CgJg@(s7Z1ko?f?`nf7Xk*)iiA z81$He@Y}=QBtP?>6waDX`^Sb|qGZOH$pR|c1oj^vRkfL(o9LyA_nL8Hym}H>Hr{3$ z_^B`?y1>V!+Yzqq)mB?;fjx4T{oThVL;WV&)BU`mS&wZpd!KHdIju|0#9&{`)u29` zvGK`?SnILfIqYun(eT^iWNUjJgukaEKnPrW)`Viml3Tbmx_*5%%RU*Zh42hM!!5y? z_V(Ky*Ji&=SQ|wjYo;PJE>%@6HXwg>iY82)Kgl7NJyA0RY+AVl{ znX8S)iT@zMBV+4MZL@cUxm$VTxbXSdPXEtyTU)DxCNJM~kL!e>NmG(B!lV-Wa#tk> zZPx1q1qVUmy6X$SCdB4f;XdZ1YN063VhW=XgXfqmCkkIH{^r#}zwESQ|Xr zB$u8S$;)|8Y}F$5oS^hauB#QNosH{(BhgMiul)2EHv_`jB+OlkJ+FV(?h=f9y)+H= z#P8;q)k`rfv$0vSvYo&Bg@D^V@Vh>DJDvoqTRgJ1r}&uYMaqcp>jxYVSM+JI!;J8^ zusR}`DL$r&R*<+wkCWpFA|?4zG7odWhHx%Y*}eHhXfiCR^SnB#l8(a7=VE=79!`g( zRjemny6U5q;)|pO(cgT5&n!g4q80(CEoGWxN$_gVO#l%UJ=AH{u7pA}^~TH2GQAAR zr4G%mOU)~4sOK%9SFWyVs;p|L*9sS)O}WoEonq&fLe#f<7uo-GP8)yod5bHzibZ0#Z6>tLb zGTK{nOV~|-M@m=nz4N7ylYWexh$dkA=lrB~|c|ah% z5z%q2_=Q}w40d1D0zce&GY)aY%U~1g{R4F~9Wtk3CD|r3Ie)D?>OEJo>lE)@P*n6Cyk1QHK&x@<)|=iT4=yf-C!uO%>sGnOHB5H6Vc8dIx|;mu@BGBW`F1R@Hnxdl$*J5S?$U0+pN4waX;lf*bR6<+EXHMzc#XssJa1VMO~c}eNe z!w&;lSN1L}Vgg{-uBBKoXj#eL`zFMR*Mmt2)1pbJo|foV6C!8Jp??>WOf+XF0WW0W zZQemrTx`5`?H6K5+$v7Zz^-`6;|TOOwRu?YobdwZ;Ms%~oOAHy>Le@D721nBTJKcv z=gqFj18p$Ycv8r0UpxIAi2@sJ`1z`JY3^~yPcFBNqi*q_Y~O&!ri#KAh5HYE^`Xz2 zO}q-1BY|o>CZ~i?@*(@15b`E!a7$gji}j#{wBczGzKD^%6ohu*OHrCYjl`nH{m4@~ zJdWGmN{wS7!_M;hHn_B}acC%QHf@jla-uFgI}VZ5lU%6hY4q@XU}I-lg`XXLxO&ln zm8eKBkT9J+v$~X|&stGy34qSQ4AZa`+2!LZ!+sAO-6>y}1$A^KkUz zhJ>s0_NI{7O&n`XdC_hTbmyI`4g%izElbBQItqkgU7Sx_pds=}iuvK|8qv2QvAYBo zCND20r0UDKg1WPww+ftvEe68;PM|fm&_e?s)tv*s$TP7@VeU#~)m2S;zkkK}Lg0w1 z)6rB1UrX^{@?j|}z04F3+w?pl+(*wTzu!Vhqr4@7vK~q^J*7L&3zfb%s=g7vEBgJg z!$6Czf^8~SSAABWHevjc!)OzH#!A6$9al;pg6Fu+IL~}LP|G=F(sZn;*G#}jHMYC` ziE2`wy@_vKt%|pawdnz0K@)K2I-mlrSIN+Jr1XwZ>VETSC3Y@*z5 z?@E}Kn&D%-?DAnhc8;N&-ES>B~((4m9+_k z1;EQm=(Sm?U}MbJ8)X(QLEfYFUJ;**-!zNG6@au_*W!oS?|2Wt8{>UnY8Oa@-q*x1 z4M=&-b+{QiXP=V(0(lzxK43I>wwa-|Tqp3gn*OyRTg)>Q^^NjSADRne4&956FTwTNQu3IMdl0}$QBqh|=#5iw+U5jnbf?(!&ty;*srg2z{mo=BLqS@`bX=##=+HnIx^?N3U_;&bMCQ)W zbBn6|Ss9jIgL>i)JLWPBtK`0`Uv< ztR+S_J{Qw<6nO)db3 zeL%^wv{+Cf1Kw$gUHPM1-(xr#LQxj$YE?hS6S!MR?8I>LE#km}RuFp|yo}`KtS+ZR zCkM?8^w`=)yX1vgd4mQ6JJ4*}x2fTU^LH_hjp(g=?IZ*1N7&29<0RRLVh8y0S>;E& z%r1$#vMRbKGA?t`+d1*O4CYRE?RLZE1q>A;^B7+M5UwQH;3oLnw2NpZu=51Dww>Fm zY{a667wi$SwL)$&&AMFl#b0VWr3k8p5HmM6#)&0K%jl z1sgJWxL3EC@}?+wzS9#G`E(Ap=`q3{{Z{Tu!1(Y5DRYAiT~Uf+VZH5)iixw2gWs!J zOr+qxU?myuL(#^Ll}QnLA^eWTTOmu5w`P5lco(IGCd7%a090O{Vfa~P-G9BUe(7M!8izf$^?dPkB4mvG)Qs_lJylhEM?z*|PS=p~gWXnBuh zSDkzfqLt_Kg6UsY#E+l2X5%(1-BQRCgFblrn4ToOQu+h$cy_=7fU1l?rF^rS4f2G# z-a0?{s(b-CE2OVRwV?2wJb_U+#2Z0Y*yyH5EY8Uo)aoQoc zfIID7bjL;|U`B*5qz{7)_dhzL6OJX|k0sPyWhz6O+}vePcv?x5Cy>Je?0wy-D}F92 zs`$jpqfEc1IW7)m3BSVR5=`r~V{9yA`LsT~$7q!o3B#_qf)#f-`DK(VgfejnZci;H zun2FL#mp*fz$1I@4+q%P=ggNSasu|3UpSFS5W|F8rl|&>?Lo79-GTv-t*jc``4I!R zm~6h;)$_a2;dsbhlglyUDlydY%&oZf^1%-of`>PLZ_MVI)>jmNH#h0sNhc4pMbAnV z3mcp^*5IYHR~4J*?I02H9EOsBT7BnvTAAUNbWqAhCcYGL{Dcu3tZ~<}P#t)!0M{U} zt_7LFzLhV7J|@*85zH2+iMBj?uriRXmRYE}fM6IEX;I+j?PSxwiUi+S+uKp5M7Ms#i%icKrTH zl+X~lOfBdBG3TI(bo-f2un`TC#fq`Ntc$&vz09_l&7t&(O=+Fa&$t%*VeR&v7(?Pd zAap`o#s_7@#LF;qMPj0H218B7c`o|pX5IeO#y#tP5$&n%Up>R5cyL~p@e(^uR*~>o zUm?jC!%RdTsY)QsC)_6x=w3fM8k^i|ahm`BB!eVw~ z*a5ytUfk7F!CY=zTy9zV#ICe%zplqS^iE;Qs*m#?%$jdjoL2JtrtJgP$arao=D7#L zpYASu4CQ@qpygObI5rz7VH8t@56({RbpeiSMh(IpHHmW$^dhm+`{nq1i8@3Mu z>Z-BBp1tlq9l=gVvlUohqzNOo^*&aKWf0Y&$&>c9Nw|pXd65wS;MQL$5(UI-tmZN2 z-w|aGO6=UGKQ)cfrxHZOSw(jlk40dmx;AB3zEF7Z>0$KBjtI!A(qC83njddI zC@54w-~ZJC2CL+&<^G`3jiNc)lriGUSFwAh0@Hu=jURd|m*SDZG-tCL}jR>b=SS@NYkJ?W+LDIfG zxLpt(_2TCRj?n&xQL=|-5iXNaD&gFWA^WHg^yxi2Q{=*OR*~^DtY~F%-&tR8=BMZH}w~npUw8%3% zjf1Dxq}*~F$GyYB52pFk#1+w(q7LoP#W zO!dl>(1RPiJY1o{c<;Qj0Vv4aen7*xis~nJr^9SN%#{ze9(}Z|0=XqIsaQ7ByYdY! zmRCa<04bHi!j22`!Kn~$=-9>)8?k#l0wpV(k%8`kBe5?<@|#>@vu8ezPkr@k6dw!G z=cNJEVe6M%6=`Ma*y;*%`TJQD~R@uo6WdI2{L0RdYtxcUW zr!vU@7Ak7#TbVZXkdd0I*`@rUG^gvn+9gMQ%W#1=0iVyULF`qDgZnUk!F(xx@k7}y z36u9^75Ctwl#_cyDMDhnejwN0N%ttuAFWRfy65h3u&Z~On%@9G&KOR5_t}s`91o{6 z7TmeL;64-WnCi2m&|Vi0B^rtEyTq=&SA%>rB5><8+Rke&@7#Af7Qq21X?m2&)0fs( z2nS;vc_~$UVMN7-DpNAwuMG|lrzy*8(paAb0Newt?G1(P3j;Yi&}p5uKb9M#-qcT0 z|8>0vSZSbM{Tm*K!yBcyRgpQ+6a+W5x%_Eu@dWBX&|)WDH%}eC60qRHrP6X&tnr2`bp0 z%`m83VXJSqK`EN;yLvh59lukB4S}d8{G;9$JW_+YuH^wwk8}3MvXU9OSa{S1cfJKy zHPTboEn&Wk`7xA!UVsyqlw@1oMMeMY07eP`g^WhKt>|A!kpB`>bo5CQ*5QEHRku{? z9-P!wx&){9URcXdmT$(-LUYO%Vn{Y>&2r@dfbMR9h-=jTB`=yEBqvfz;`G>Js>h%oZWFd@q zdX~M5@DIDZyjnl?uq*p~wH+G6NE_eP5D@Pz{vLtw9tSDzCb7-QQwtG*X6A>Cyrqem*2LH`x!yJq$71c9B1tAtK!gL7^W8LYd$_wrPr?EPWxULfGyEnflW zR3?OSr&<7s#i4hfvQggYsvKm^@RoPq`2JAG+euCma0F33v7m&@_u48ErFikW;;cvK&h}<)frYID^}+3()Nw5IJtgXt$?2j>8s=>}Ic)2Y3vycI;_z6u zNFRbnaFstnlBmo4R=~rH^kJB3Z%LNAC;YCQ3F-m|ED1NbJDVsPn)0POMojnW~C6aH0iAW=AZv6bt!nqjnsRE3!vGWW)PgJ?F= z5sc(QU<)Mts^hevrKtRur}Z!?oQVwRMC@9gCuFGuyIGac!p#i;U|j4Tbu`M*wFS4e zzi+c;!u-`4*cZClbD|9kT?Oo>sHj%jZqHm#i01{rE5~j`8s+(+L9oreA(|M#js+76gkFsQWbN$p#Mx(^;HA%#zo)_tt0;a* zh90}o?aauOgArXBJO{1cWz&v{l2^^5BPUrVu-Og z`tujstu|f@K;gK)2*Ij^{u7zA@uuwEuD0Tw;6p(pkPN*RF{ZJ}P;9A$O)WAoRd;Hzc?9vO4 z?J4^DBay3mE*A=r=N^F=RCjsbq;_?r!hRrLpFj_K0gK4^wFF$2<9i|w z!NdKl6%Y8vD)*I`Het*vV7eAHGDgUf6qi4`>@Ody-EL>Yt1v}57)c)a0y^)DbHtUaFr=yLmYt=$t*;{{-x4hV`_My+!ns|1H;&+r@+4|}Dr+|00psYvYAgJHZ~isIzG zXTX3L#&Pg+N4F89I8imiIC{W9!OM!w1}{)x6W3W`c90U%vgf$ zq4S*{LYc5LN9Dd`&yBCuqwL3_T~`39GOlkQt(#02;aKbgxylheFW;e7(@fRbvfjO@ zP3mf#Ev#T7`Vng^+~qf=taI7EKgR9ss(gkpBDDqnc3FB0H3bPrVVAG30@Oc0Tpaar$jL14gdYm4{MBJ?tnc#Yo$hBMAVNMf2xd@zA4Gn#CkmhrUiCcH{eU zi+^SGokN<-vI<+cY3PIjHzgnbqvm}T+Q3A8jSv~g8E5BL0K#ViL#x`DN@c6yX+8lq zd|vOm+{hP+UY)L)LCoP8@@5=<7bKK5Etn79H7t4R1r$P3;sgM&_A?dUWZqaNFpz6*L-v}!TWYpS@Xg2)L$AlV0k zL7tRfa(2V5H53cUcRjHbZ*q=UTCfwVl1N9!NP^z~yd`m$4 z!)wRgUhn+5F_4;`6v<9$fDHB>*q-;0G%7T`^mflHEUrzKoD<#n0FDs^36YIxrVqt} z-EOZIM49gJO70hT%{A3phFNCg<32>p7CGRL#BDLolai8%P?bZQ4o9X*L?I-Fia8?v zSIa4eY4IFND_Cs9DUyz7BO4uGx1lk)+}F1gJO0vp5v8$%%o>*~I89d7H#+%|l~+-8 zTbL$do25Vg7Tq=9n`=l@rYPNI^1P4htNnSjYq`=U=M_z8`Wq>?)o<$qgNe+1+? zfZSU4t7f9t)5cXz{O6)6vsyYva22vy+D|K@Aa_^*b#FZZK`XIuI`_u{TejJHI)~$t zqsr{_PIbIpLUdA-2sNYdUbpGA5+8Sa$BjI@-R^xlc2bwV^J}GPJ=f1*^JWW$AWu3N z#LaJK^M=f?oi93J>cCdau6R#b1-%SJHpuEjlkiO#IS3X*;w7rj3KzbO& z#H?72EZ-X3?*vo#o~?{_>|~t z);;q%6fmc_$$t=vfC)}ys-|#|v6csTgPRHSr{;RQ_iBI)>S+m=QaEx@vy_83Y*<u;n`-?&MAo(W&t04+3&-+2Y%*BYU1t>TDHDAfP}WMg0{q4u z(X+F5?NL8zy&PbV&D1YIKCqDaHo&GHXY2JR-gh8D*dEhj(5cNX`(+0Yg8IwynXQf8uYfxt zx?SuGl53yZpxz#@qHXEfUnV#(Pdfv0KpD%-!tmIRPP4e-XJ9_L=yQzpl~vnR9BlLv zU{`{p&Y*;NKzs0esSpoZfRj`L_G_45gYF?yKhqo49VbOsyBE*-6x)89kQzX zqvWeSGf;NPy!f0S526CL<22YIs%ZF=H8A10biCcoq)g&;lHlzm_{7m`Dr+XLVc8umda_8el$v7Fa96(0C?s}(8SVzOi`W5BQ%W83@ zF=jVf+F~zoMNroH{FBhC$Klrr+N4UDoQX$wQ%(PsmW$~VA;-_~uu8zU0!vz=#X?`N zM#Qn(`smfphGYCina=;leC@fb%ieJsr6)PAcG;wT43qGPZEyGsO&N5M=)B<*tkJgn z>h~wT-+K>#-DM6H5ZfTPBqfzr#ZT}kuk_)H2ZnIbX3wE@CcT2BiEid0*fud(P_Pbg zKgmld$GzbbH=G!kmv?Tg;DX0UKG4J2mDZA7Ct#jHrl1L4j1<7eIxS|CjuSdK@+%gp z=olUJYevl;POB%ghTVmo+MIMR7LO_W7VBy2e%-6xWFaDrt_99^VVu%{tbGmu~Q zriNRZz1tHW8Ppujy=yS8-jG$9w~?x^Q)9c>pckl%|I%VQeK)K;!TIY%T6vC_pVvk7 z19kyzL!jh+MVr80*%i+ASX(@ITbeHqZ4!Ftr+KN;r-0EY#Ry?xL=(6-sX05{Kq+@0^`C{0-al6fKR~ULMi;bPJlkExCzePWSHs{oH z0e$a)h42QWJrezwNrGHh^Y-)lbAdk;k1Ie=O7!%26*6hmL>I9@KFiROV~0*&O!N%UR0<)HR5Je4l~4qGR)^G@W#R(>Hk& zztJpA-=^0-UA(=QJtR*6ujebsCD(a{?|&_ru9)xeGR@Q1VmMYx@A&J+(em?ZQRzU_ z&z}b9duNQwpiZ1Y+_FbC+Kzh*uyQ{EORmfyqxW(2 zP#Z$s_`~tX!DYtuLA+os!#wgj%LutQOTgwVZ4pG- zI51m3UVHd##iAF%;_bIcO6|%U-wYm8n)z*}l4@~lHP>yY32BMhXA-&pNh`6c+u4;x zLhJL3wh8>K5!&p9iUwq{_3v(>+`=`kJ&NdsAAG~FRh8RcW^ z$xQ@KAs|C*_j^(5;8HKrehO+2lHM-jU#KyZlZ{ZQO=M9#p%)oV?(=+J@IZ0PXj&gE zI1NTD-{a5&8C3AWJiV@LVgv*a2l>h^JT*dpEKaDV1IHHTnt~QNn+CuS|1-l4)!CGn z$$o$uS5*JBRL12cSg`{dd++*KsQYxRI61V@tM#ojDc}nbQ8+;OLpSBGQ=QspPgu>v z)}bR?)|UWeKAXw)Fg`D(M5s=wWce+FwJj$hN&s!2)2h`&_H_ieVTEs|;YaJ}8`ZX$ zmZbO0*xUoEbC+_QOQg6_mxHpfZ&uIaDHQ{ke-Zb@RTI~jYCt1S175<>uXsCl5JkgD z6U?fo-C}ozX0F|iOaI{l@Q!DqtB!Tz#RR|C`(B%{du+95aSemVL7`$to5#0qkMnn8g8*`}c{gdM_Zbae}+1DeY&T8TZwKmf|K&DdH!@ zxSp`Kmb`Z8(JY2pIj-!Y0@9lelQ>Sx$c%@GgwT_J(*Hn;sktUG&r~5CLx6w zjaA|7>v{c#p7AUm{TCQvq|w|zt+BdFSf_L=`&aW|P1u06X~-2O&Jn+N-_-Ax=^2Sa z)Qb(uapos9xk>N5U_Y}HTG43k5_%8 z`_Q0M2iQMKTzgpcmP8N{*zv~_dv^<=&q5c};rDcN5)dNOK~6py71({`WU60SvbvP2 z*14!EIB=rEBb6&uF)L;@8YG*g)txVF=90sF8;a5_ly9MY_1jMEcpTKx0SMyjufl%#0tEq<>)ft# z1dnAhXWks4DlSx1Gin6gYAM<ggJ2p)Mm})>y4U${kfU_AnC*#6u z6UH~aC5bOJsnJlKbJ`YDX4V)bPew;5=xKyfH`eE&pH|k=HfRjtFHW(+9w!8Pd+IG* zzn@az<&HaOQvCAi=okrQ=KSIteq_%P?62|sY{PgyAZV%jc5&k&kj_=p=R zpDgC{9Vh3XizwocBz|we^yeSz5*Rm!FZ^8$FaYo9pOT45{d=pYKfhh5fw%F`C4aWx zQt|iCf%iC6;6$XqO9RgBn-2X`{N7lSeYv+bZ311f1KI= z{}@ZUy;~CP_8T4C-~p3vfGrRHsdJNgU|lGQ9LItz|!|FM)OX|#e?VQ|H=_cg7>|Wb7F{10YzY+ z7ct($QBk9tQw{$V7v8>aRc@R1<8#h9FRXC8$d5<=xr8F#0ss0+mkKp-Cp)=sQ;~ky zKhf~kmG!^Z7Z^FI@)LTfl6&~jYn@-?c;Ph6sK#{Bjb(g%%J2R^8!@NRp*OK0c}8x} z&3H>fq_X!fIog2z|Irex04u&mx#Jnrx-(Aq^%$9WI1l{Gk<~YZ+rO=4RtvEDybR}g z(cEsJz)E!W00%xJ)jRz&126!VVNjs@{w^})xb)7%&knnh7{>lyIG!T+kNJyza;p3K z1$jOT{c{&MXviF9kv7FAD9_TE8Ze-V!*JFU)@MR$$n;LV zhCgFMxh2t`MkaE_6j`tA5)~ZT_<@M}pSn>ZUvp5aVv|GEGuA0~8n8*uhKX*R7^I#f zKN%YmA2S&_is>ZKCis($&Nz{Fa-hk?Fw%u8+v?zw&=dN2P}=v?3tNFt>2vcTUlp(bv@SUw>op_ftQC zq#;NA;Nh4g)3-A2u!yfK1l{MsG^BmsBK_dsJN+|^NLV1`=y zu`88|h*>5qlj`4_1}4w&sYdWvj+!R@F<)~TdL zqAcaXZ&Y``zZ(r0C?LveP|h-+G{9Fmr1;hfhMuS%bUZ`{uH8RvaSO%EL-IIs{zzN3gf^& zpF3%d_Zv2!GYU8m|8o}#25$w2uo3P13+PsBCOXD!8-{_~V|>hX^hcw%)EJjHhl2bm zXYB?4M(EP$(@f&)0@CYb=gyJ%)?;4c8UGp9JMnMp(%#~{YIKdTDL}~zCdz7jnw3rw zxWoJJAfS9v1Yc0fU*#42*+2K9kjV=wtEiOW-NhK?W(aeq{`Z1lYacQ0 z$a?NAi3bSF?`OqY#y44ej+qjZ;lAIQu}6!Jv>_b191%Ku+_5E6o(=;6-% zWaQ1irD@?&OxMU@&qb^KK`23G4daf zR2`U=M|%;4&wtZ7E=q#I3Hw*L{qNf|BbEO2h`6@fmxK-ODKHP!9Xb5XrS&Ubw8EQO-`sZ|PaHXaz$PEJ(;ab( zUHR{?wUCid>dOOK;P?x}ajV8(Hx6)a9r^-s4~2-+p}Rlfp!-~_q{`0UN)H{<2s*KZ)#UyyC`u{-AP z;jQk|&p&(uyc^WVa=q`mOsig&5r#dcqx)&g3;kgle$&8!96uRWYlT%W7 zOa|R`Ff=?q{TUphu|+dMk(<8EvMXA99M<-bgoK2UkZ|v}DfZ7%H8C+!S67#p4|BdX zWOJzwu@TPsBRy}25a7w%lvGD5pIo&4V=)(hm$$Q&H_h^+asMvvmUi&^-Xg>Sotfax z|1s*^n1?s;7f`a^e#*5qB_SrZs?@n%$8~e<4U3hPRZ&TaI-k%3_kUjSj+{{J#t|3# z8@;}x1iGA@945IN5%NceXU7CTjQ5Pl_%jj2Gr#yH^#zCnG21FxdwlGe+`G2EZkb>D zThuEQ=+#|ZzD(M>>G~fP>8}lw{&~tD`R--@q1=rZnG!2;=%=B9|5)zkT?V>LIi;ke z>RAjw@bR+~{gFJB+vT&}F6nn!fHbiduOUN1Fr>3?#vLU?hb12T!d{hwTy?e2Ab)^NtG)C8O{vXohFR>%U*H@TRv|ZhT4~(%EY;a#w$9Tkkgg)~!?jD?^Oww@&lV zxUH7Ym46*Xq!}zuj)ngIcc1RXv>8X^O`$h>F#RnIr6(-IR(F`i*Q+pdJ@dLu?+t0+ zs2%Y~S!_D>EFQ#chJR+J|0_(xq`ndqbc|*<{{90-3kNT8{+=h>EdFMK8FzfJByOJmQ_^IF?qXOO{(h5fD%tn!-7d&}uoIq? zV;MFXrB3cW8VrovG*66wgpxOA)5lvD59-)Enb<#cFji2o=jJ%g*E3eANKW)L*)=d} zi+oTyn0rc-X6EOo;OoUFWD%cdb8_k7eQ@8RFI7OO@uLq+#QDaQpm6)6VYXPuQI(F} z;raP{h*c_z3Em}DCsT3!mNV`|c)LrDfOdcq#|z=#>hC!B)@?T9-&41c;Q`qjo+FaL zzaNE>u#C|B)>r<5<9k_Jk_;HVsU2uH4ZVsCiuxR~ar0+pIk#4zrqN##-=%JTTDtIH z_5OWjaMZ|B>l9r1ZJg?IG?*1=|I{b+!Y9xw;%VD|&X0e)#Jd|*=TG@eb(~IR>UMJ~ z0gB}-SE3Ny-(n|@YU3{+&hQ_cfr9yeKSlSym;UZS6qL_Y|F87M=USIfN(>t$jlZ$G z-?jVe+LAP)LNb=EEKV7uW*X8yX(T3V#p0-*n3sQE0}1)TRG=2hxw5_T{R?UrE(vpQ?AJZ|F-0`5;98d> z%PlNmJr?ZEG<9@zmIGV`(+*^EkR-zzolt z>wn+R{T%P7_rv?`efBZOAu^l2*E-i3zw>vVd+qP*@@Cp8O}qY@JVTR3*r~zv5ykMG zkGzLVyR$gIGOy#k*WSYQ+!En?^r%=eVINB5sD-~LyehpUZ=928?k%|FNa@sXr(7|i z;RM4GCQ-e44*g%(X>`?Xk&~oD! z;m6fyvSA;)?@LEjytbubOvC@GJ;AWzE?F!YGEKXQ-xf*~7Ro4k{wu~~ zjpF%(Xc%KD+o-s|bEzPWg=o`N&m&PY4wl}D%gi#b%^Kvj6mQC`e{rbYswR1P_wTu{ z2d%^F8kV3^QDksl{+f|I2&+4O3B8yzo4@GwdvD z_Fz**6;jMm)6D}Ndkro=b4Thy(!oZj3Gcz8)qLM3Ty+Z~^od;fT0sfBi)*YiPusRd zL=!mi$`woV)1m_CtF4CP`tSTw`1nC0^`KzNd2??^D^N~(K-~gNjleT7poU=D!dkBS z6Hw)MzdbEIxmAEnU1>_ z#eW#wwRrati7ov(?{WSmHGX)m5%HcqiI2Gkd%DI{@8x~S>SSc(i?;7fN!m1YxqrN_ zbtw!qxkZoY&im4ER&TumW|AF;N=FSETz+*HT(K6Wln$Pg*&fUsP7x#Y?a&0zVKJ|TqK*^3}|08Z6`9{m64t`G&a|C+c?hH?D48` z?8-{~tc&I1n!)_cY*Q_;_-)TO^xsLK@LV!8zA3&N+*V5TtPQ&Bw6nSDKRps%D6~)n z4n|u$wK`^Ff0<$hbW|bo4vLzVin*bc?cEt4WI7((y7bDyf;MKh4>EymgJC|hNsRZc zua1TXHhQKWWhiSs){00_PS`Lvny<59q@hRFt+4`0?%bwe+@z4CS*g*{B~`Gp?Qn49d{FFQn#2&R5;y-RSmCYose}2#{76TezLb@B z-uOV}Ntv`m)ZJmFprLK9Dv>bI6s(&&AIUJw!Ya)mE5{^TG@{}m=m9=;)AeIIuuEgD zi>oFXY&C)rq>2U1h{-^BO(t#a8{x_~ubQ{2>KhSo-+CaP>&?E$n77i5eIdQgD%y%0 zw(~+Y?mvp0qXjI$tCasDzud_9EI(uuI?XzRvRo~*=pm>3^by-o2cAqs_ zJmn4P$h{G!C|FgJ=_b}wOoN1mF-j@#R1Qzb-+O{KKmY!&*k(lYO~IQc=&BO%I})hw zTNen)VELOS)oMCAr#45>fQSC=(!)&}o7I@U-I0dWg%=vHYoV#wWvQ<9uLtjcIq1RT zI0a;VvavTp4f%@J%VnZSV;z@5hZ$MT^myy|einb}ck;G&L*P`SH14E*tN0^l?|Jf? znsXz$XRzHMd$$E*BXM%N@m6TYNwk}xd%R-{!?6(`lj-!U@xb3BXI05tsQzgjxhko` zKR#ta3Lj!nf1Y-2_MT26~$&fiumcGMwr>BK$zsCgBe}d~2EltHALWMRb5A z-EDADSGs2y+!UsJay%Aqgm%p(=hI>9tD|CQIuZ0aV*GINHKdD$OaUffbQvs{%-1Z{OXn%sz2Uh@h*DDLb&I*@yB^>^ltb#FC|$(jjKAlouZ4y zT-hHaQF`l$x&@1{@^PUEP_>d9bWITHC?^i=1p&G02UCfsJIs7 zr!a?gf~*<^+$XH^s^m1cmCkH=yqc<)gGDc9Lg#7QWB}O~R~2y;)#<4`adio@dq0f( zz7FMck0D6itG95q4@ki@7u6zYxN{A%DERM7L~R=R>FlVp))MjUz-z=O_fww=eRy(r zw0$ZewW}58lvcH|F*P&f_3M3+d_C{}ns8BI;=G$It|+}2I`^Pn>*;&xDAKh>-dee{ z-#o8kX_7(E))U^BY%nF|=$6k;r)hFe!gZ*5VvWQRS6f9!PKhFbmd)`s4(;(Sq9Z0@ zyGJFOR$%Inzum}anGES}?TMy^Km+;^2Uod)t|(21>p9wFm6#ZOE%^jL-&-tT&GKO% zv<66u8{3(r2nMAM|Y-bQAS?|p)IBg%W^dOs&l>90*#;M`H^I6N{TFE*j9nBMtDI#!YY}VfaR{;3HOZW zi}Qj5U$ZwsY()dxy@@d_e>yZ=B z;la!+Xu_E)a#ySWajNKDtu52>p5KI#v~RQc&ewk-^?I5tGy5`Plmb7=yYtm}Q=IIw z*uKl9^cDZC@KYW`ZP7Q<$2lk$a9kTCBB~Qr$$$=CkW78jtw2^u?k-v zU)YBC-}Py+%Z*!Zb*k*oNHe%;qFHTV``OFY8C$<f7Js5sU9_tU{RQMJazRubakm+b70ZnyhL;EEj1EXi^ORHIe z3`3G~RxjOLHqNamb@@xhZ30xhX{aZ#A?pGGD>N`kX2HC8^#lQfj(LAy0u%b7euXLi z4kucpHQDwY`)QoZ+w-KvW5Vv>j$OC+2~=E1hsVsrCw;@0=C3to$4x6ra=)Lh*>yn- zYBiNq3i1jkQr*NgMEYQP050~~ZpYS-1xsX8yhSj<*3asZ>6!*F1A2WfZU`8n~w|?!S z;+WxKACexwOM$T$;TG?j4b00bY!x0*Npi!JYSCW~*;}e+-E- zy*UpxB?Onb_n62>ma&hE;cdYi>gJ{Igc^gR8yTu_?~Q@X)av_*8kfF=h#s_jGwlHa zg!t2bZwvY4{11tj{D-Cd+`Mf&lksjnDM>d`{=_>zRW+I7wVR(#DihE3xH#osSGm-U+)vJQ#`I z@$Hjd{&wg$T1cZ%-Q88g*+{zqr(_^%xoKWx9rBF;@5*=I%b^VhgmX+%K<(87Uvm+9 zFuXUB&$(3dhx6O4ElJXDGt<=UwfND5;wl%`)_u@eQlC`@WzFnvp&(Vg6gjC!5K#!}$cI;Ukhb2@nT9rGu`; zhSWe`eMmT1u)?TkCbjZIROF!)w&R7)0Jg21{v5zO`Dug{)^duAcOgEdES%B$sB133 zScTcBD^HBK8cXjWZi>=LQY$win(YbacwIPFX~TVv7|OyP%VPk7qnG;Li}Awxi~ zkE@MX>?lW2IU;3uZ~zQtY&};TFG;Q@NM3nYRD0U(CAQ%^fSOnI6__Jy$_eKC=d6a{pL;lP2LY%)$*SkG?h9HU(S65&mb&}?{us%8nKA9uQ^ z`Oe4CwIU5An(DUjQXQVZdapFGrE>f6sq4 zh-ppmHUo&3&Pjvlg*}Q+{{ai9t9*)`M5V_#-=~$7wdCx|+jEVTWZ1P4o=Kr**oFu( z^lSy3`>$7bpo!6R7~ZVA0Ngb^#5A-^vwhT$%`BVyO06JoC92r81(JC^aqPu@4tJNO zRk2OVv~z%OC>FD)fQs_%r1#4>06z-yK;cZH3107Q{&A|&o3LtJ?Rx5(nmzrf`ce-_ zh_zLcym?d5uy)FdeR1J0&xBw_wd6NFrCsCL7d=4OHJ+)`&2|jful(FP+uA)L&zHLZ z6cd@K50@YMko}>_W#c-@W~Csnz2?AD=exN^n?h?qeQ0}O#1^#a06+)Aqr3I%>4BY{ z)&REi=Um1K&k4|NABXjGF$VULs*)2wF+zh1p__O|t9cRnF)oh7YUlLa?LWny=zn zmYS(2^@zL7B(n6T2gqx@_^1w}$q|V#g@~%3C zSEZksrjvWPJC%-49GeeXw6*wW5tT_w0E23tzeIiPf8ZIaLtg#EzcDTCF&9LgGk;*_ zj?IcoDjNLRRNWca0%CSs2YyoyW3fzN8GCx+{`61z)34uI^tRFAr8u#Bue2_6MQDgU z#3uAFwrL#&*0~|LK-k0C**BwcR5HR@Oye62fQfsMw%O=IXzG%X*}TOw#-rex zh%-E;7Y{YhaawA%>}Caq}8gufK_9nAMAzCQ!xD zcJ>xeCOz!--#r$H)m2%S?ju@A827xFM&VRaO0K)?%>Ff&5WG>TkYhg_kS=ICY3>Yj&8Bb0-Yb z!^w~`zin@T(mwpeif!-^8g(yFG$0snfdz`t7t*9sDt&Z0hnel-&RTU9D6#d;+v=z< zFLtQ>782Qhb7YndU2trOWqmg;qD6p>&mWF8C&ufaEn&ZW#gVFz>h%Y6GQAy))9q<0 zD0J6L9#lE`_y({Rc8`1QVQDV8!CDcHB=jcS2KU^#P!)E69KU&%C`vIUQ(b(vJO16x zKaSXFD##2nT+lZNja>K|eO{)0=*FR4y{CVyV|S0{Yb+uI%6oZe_!zwIZyx$(>dJ57 z?~=V1sz{Od<8?u4Anf~D&54e>ThjE~b{%+X5)+b##&D+$IH#I>pBCFv-J`D^v|8G# z2T;od4MZydfioe8FcY&~?*WGe>rM-Jy(C^9G6(n{%%LR}N2Tjtst;>d@ED~-l}%mA z>Tp-r_<)+MuDTp<7KKBo#~=Cpu_Pc6*cJN8#8)BN3G;jrC|C^ke~6)r_xsT_LF=j zCMMQT2)!Jc$;C;l4uX5GRW=MW+??tcE$MbH6tBt!MFz5y4w>+@WEAc3G3oLP;Itm9 z?l60>NHf!MboAU;s;hNX2C47_j7>jdFCtjuYfSQ;gm1*2aFjS5O0;LDEHbas-^*%R~>Lk_sfd_zJ{P%?sNenV6SR zX4}YVk{og~213Bo*#?!SdjM*xRasKgUiEY5>qnmMw_k$1M3dkBt(ZS3MciQ|;I=aA zb99r&$$5uRcb_}X*WLE5+xoPhwCB+C7|@1xg8UiJ-xl#PBAG;yTQ0g9@4)AsM#hxk zfy$?P=_uMt7u#6%1WSya>-oxyou6Gd2|@KkXmH;E8{P_E6sWIs1uv|`vdCDzVh3)U zh(0JX^q8jL**(Ol#VI`%&C)5{+E6p{@2|J8TO)P*UVpY$#Z1-UODa+->td4QRhEHI zLfgh)fjSVv{7MJbtEQqJ2C zY`-O(|A8o+#;fgTyKaq4&7zS@CymmQaeNSK->RZ0*1-{B7hm-$g-3?9i_8AIU!Soy z!y8uRxNsFA)-~JRDG(_s-S;I>fM*e&HK{ZBK2>y&HDyjz2QMAon)S8mcq=yZrzh{A>n_$!Vc`)) zwDL-O;U@|E6O{E&uC(h79&@TfjpGp1CuI1fNz8LuMYK3r4V7}AvCmUq8R-@$=*DUqLTGB9KqJN12Ax?3qv4|sPGP^CdGTokQ_##4o^mkOj7%nV5T zJd>AcQM8?7b>H_k?R68MlX7RIy&o6&o;DQJrYM$QRjA3Hr3z;rj05r*8odrPFdg)Z z$qf0sV(L9{H1hc2*3#3=klkCATSc-Da!GRlr_8JE#jaygV;mTu6M=jI{d{!vK=diT z*7^#h8u_np_nSzJE@*&Smw&lq0<}Ov90i220CP28Vx+b<|3-$Ux*=B~cP-mC9=wrH zBN*vS6O{XE8MxYE_>?mi1#-f!@+`o^6FNedECrg^0MFHWz`TE6{dXQ^N@T?Mdp16HV^uTo8Mc1tQ0z6u;l2^W|({}dm9N?oi-kk<1al8mgdDGQ`K ze@Ikvs&q~qF^v&|d~RDDtQhVOBFU z%igQoTG<>d(N1Y4=Wu{Ie-?}jt=xZaFCj~iumUy#sg%!zJG6OhaOV!MkG#*A;xcan zOzfs{Zc3=V=RFcXOJv^n&XxjOjS+ly^11#tpgnk4nz|ANXdzSHn}3v2;YpK!WIE<$ zJ~E{il@9&6^S+WBT^!tppx=t6g`{PEVBLA9=4dFp)fh=m&*WO|8q3SzT(^F{GK-#k zHyP8y-u2*A|I=?q;g!7J2uBcxxdqi)x0gW;5G1O`Ha+)$-7p{|;6)_`zx}W-05Mzn z6;rvI!$FGi@bT(@T)^2r(?fm{Rx?#QVln>j{NCqRF~PZzwHUi!R<)&F?*(JolinXw z)QyRFd`iBWcWc>CgYaB{uz1^Mt3ai>SOT^Zx02ppH`Lphb&(a=#TeA7kQY6i_$%|@ z9C_x0)PuXScb`-qU5s}fux9#r6#nwIlsS4Tkm#eE2mn-m<4@@;pz_qkeb4X^nrMDf zC(TlnlO-9eV<{f*P@Fj7`Fb^=WM=!4#1G_I1w}$Mi_}6RaA>`0(d?FX@}vN7xwA{D zjeub{7m7BT$P^S8y68WGYFW4ad8zW!x;HI^VpBBRbam=UJv?`o>v7^!6F0M;(}S-* zDKqD=&31Gmisdbn;(gDQyoGt?ncu1B58n}GU`{Z=H!Hvt2WxrHJ&#Fu0DIz3V#R8bT=QF?dS@^lFBBE;{PJMShC(2%%dkfp7J8L=cBT>52q}9*7w-D@7rSPC& zmZc`i%JMlhwLFFLIk>9p!$*GCmaa?OCh^OeDg*Re&LmbyGM2LB}}_&!E~~sxaZ2A z;)S)TR+aL21K-Y~A9a^JSQOxf!VkX6?ti>f%xWrmdbpwMd#ksCbzPmRIHZId*Rt7o zX#whmhBeum7`gihn%UEa!Q)f=qYFOk()I!m3pL^H+N&U2vLk=EYR!}a>Ruqtup1{H z=P5=qFdkwni2&IOHVb8!df;MD_-JhMG3+08U1dctT2w`uwowkifkt&Qp)!c!CdU)b zg<`;KODgr>cCEBOiRE3q8x`XziMg+AO7I#I)DvWRbaR#3Tu@cR?fLrI?pyj86nC25 zk)>_Oly7X4JhR+|Qu0Uh)SrGlI$<|FvTjm>GInYv=*ni2{>i*5Y9 z`I7A+>MZqX3OCBcOk zAYld)=$r=WRO`=pd=_~~4FUBeVGa(?t~D|$d48KBj*an;{?a9;{Jj5w_1bwU^zIE0 zv-uEk{{Hn~C`@o#sOcWIOLDP`kx@6yO^+X^2nwDY4Jt5fxYD(b+wgDNkIMI|Rp!kqMjPW<(tIjD-tX_WgnYME7^fR+Ht z*wwfdm^Z3f!Nucuo>1kRL%_1$nNGJZX?O|dy{DErYGFp><_-#k$?BJH>n=fUDR^?R zQ&ZyXe&N{L4Q{6*lcVK@zhkBDf~Y#O-L!MVAFfbro|0Jd;z`4^(%*S(Et9St!t-6z zr+|<#8DW(m^HC5fWyZCDBH3F?*_za6P0qPx7t71XeN}R?DCz3%;4t`|6(wieMJI=@ zTf-eYG6E+(3vFEomAtMSG|Z`_Y?#A0?+TB0hiSa=C8_+60JtuMNZTZ%lQ}Ic9WtKl z*jW5$)gI$l?X{gOfc{f+fIz3N*#8OYwRMr?ppxIs&^a0JWDQ7cy!8HU;`nhM9WZQv zbO2gse?v5iel+aibQIteeqx$BsIFiHtf2`qu?5n$hw-jI$io`3^U2f4{BXxa&~=hZ zf6>kg8G6(F4r7CDbqjEr!w9eUi*Z!eb;ZAm%j=b#iYP3?C+BPoOmA32dO|oDworp@ zZ4KWPEyP03AY+lH;^#{jfp@!k+p!NzCM~Q3s~#y33E0d7dIm-zj@0c+=-pTvM`fj@WdLlGl5r7U6ce1G}BhbkFX@#1G#}VSFAHcIo6@ zo_P6k$dAx*-X2uqFJ1OffQmtPfDQx&mLkR6nxobRPc;PAg9z`EXKDB(H1Yt?zvC@m z%ZL4v{Y_2bcEB~tK7}lv?(U1F-ITr>b7eP9QG*p+d`zsb_H+V11X%=j+4v2@s0|sp z@=Tx$73uZ1RKqzz7@(D*b@f65RjhQ09|}NR@HUs&5AxtS4HzI1d*sD;>ilpkvy5a`(>WD=oKY zq|r56AWVC0_W0<|23Bv(&lFGA_H+|Oy?jKdv{`gM%K6%^hn2TVRimi=FgUHZLHna_ z9uu*H&8r?b#nUBGb-vF|v%RT~0&=m{X3jM*y+wADR6yQmd8QNF6YorBI{M3diW~+_ zwJZbPh4SX!mp-4?B;ZYjD$I7y#(n{^FNw#V0(05@cy8EZLU2`t#58iA{}eqwcu6&A z`A=e%P!XS!O{OL&?hwo)s|dk*#?igp))t@Q=VWwsv1)d4;{Mts;lzM#1%<8DWIoVR zfe3AlIX>RXty)e_!ra%fdMZ3S?QwP{{DFZ5q;&MCXLS=;f#r05k7;r_7yWeH+D4Z?%}WZ`}qAl@4ggD2NMV z#?7wsSDH{3v<CYn$L4DO=hsi0l&7`e&C8H5wyGg@3yhl!C)^(p z4rFv9<850}Bz{q}MNew%M&h2fswsocBzc^LdCKL-EE!tJC#~2vCQv3RSgSlZ=@wq; zS!2_ft7`cVXyVI#!foP^ya%YLe3Mr$6w{Ysy7?Cz%#f(|E=>8)%lv)v8984;1s$9Z;-we*$OmX?nt)o5XLVVky&y&)I_F#R`7lyVu>afw#OwKDY{ar>u+hR%}%2tige{m!@ zKsZZH{DApB>k(wakTp>Bb&hqRP193MSYn{)kWT|BP92}CpBAKuI04ZnReCWUhwQy* z0Lt5=XALc!;_xf2Kc21{lk=fER;)KINY~{CA$R#*?CQzf&iQ-i>#dhZ?oGGGyJqK( zs|RW3U(n!T^AC}l$y%1pOIBd)(7|;*;Y-CO$5E>_&GWVOSszwl*KW?|E4I6s*^<|C zg*TNL1fF*pk#P;>!_8BFtqhqGa5B315I-KpTe zCA;CTbXYD2fAnPG3lZ)LkAjFYbs%f1yM@z?Y^-!vZEcc#6K7n+N#zxfsear322Oszj z6r*SfLQ|z{8-EN)e8e~Y=FRBlltspcQCmsE07x9yG817gc*8S=C>;V$01YT_o@%Sy zu~z+b5dyl4nuA4G(4O;F3;22*K$G2!`v< zqgm~TxoLehZ|mFa%G0*g!T`r1yBnC8cIPscDzCNMHU9*N z9>K)>4EvVQe%J1(Y2IZ{pkiesAb3*EzsRDH>zC%SX9e~*KoxT7<3HPd`pg#X_ z#^$6Z1;f13|J1#|sTdfHb|)YP*PXgRzkpSZ!JpxBkF1`ZX95s%&?KDC#$3zByze6I z<8I(?;_g^)3JP3+pRKF8sp5JiH4>mVO7}Z}j{qM~rOcV)fYK|_NFuMSs)7?YcAQ5V zL4)->N*d)j7@OU~6W_q;Pr)3ZTPM>Is=C2|O~#z@+K??%==)sJ%O3`neF%dzBeHNn z)pEM-tlECRo|8lfGzG#yVbX5=;3{&=EiyzRd(;9na>7Y->B)1*R7lCyVya4@JE)0F z@A4~$X1t?}2qpy z8R&AG|WC_AoV)PXkU}((v#&*s%yza zEu;P}Y_C0Bq}KL*Ac&x)=Qx!1u#Za(wE?`eZ)jtEs@3V^R9WP?-RT@Ys^p1PeqWaj zbjyu=E}qKH`Of@BQ*+fqYI*t{S3tp~q?9$aTb1KWF#%E!G_N^6@^fX)#5a+sgMIlP zaJ0So2nyU1Iz3GrmYWWoqBti^TRDScn^Y86CHBUm7C7B>|9 zpa9i0dgYDI-6VfH#^F!VfAK91{PS7DY<7a`3R8C!jur4bwp+URFI!T>{=Gn+D7Zkt zp<73w1p2<^|KmF~S@yeJH$X)R1?u3S$6$gA%ni_X6oVw--+?Pq53U_c8Rb}@mboY3 z{Yt4c&gE8P6SMz0iS$1wMHJp8B((A>k%uec%#ZYb5s9Uxr8y76W;9+7z3gV}4!!H? z?qpwKZ=Oxfo$|YN1i{Y^y2?~lRUM2e*A{mHFFt_GWhdp)uK|j|cKm1JX$Y1?u;|5nG5U%F<2Rs}4U&jm;n8JVm z=gMQh8!!I%fAICC{~vtyJGWHO&TRdxd#!y3Ki$uQBe8+5ye{M)Z~o_DB+GB>_xAta z%0=CGPay$@$8uM8bbtT*z^VTIwCA8l?Y|Btz}f!y&sSQ$M*QEe{;xFtTLS+d>Ba>< zlqv}Ai|@`gdYH{TW&6=h{*6%}o6 zXlQ8Pkr6xJKp>aHhqa)Mqikjs%LuRs3x&U&k?UXiBUHRzu}=M1PnTAeb!mBdbalGd zLFdGTI)JJ?Hg!H&5ARf?jxc832KBi#PVnxN&S*KVCl4R)Pgx;5rwPefo(Z|xRSGma zuJ(aX=kzdKA)c3kk@1+UtE;PERKM{qG4bU}GBheGs;s=c`D`(mT+get)Dv%Xe_3Di z@SK$Qi)fV@e|H$qQ_Rx!J|2A`7QiLZ{P8p>I2hFc_44vEIz_R*WM@~Ld&9~K-D={h zNJ)8yUW$p0{hztq1hp10)vYaSPDZOrO{|NAM1a?i!G+haUt^-G=Y8tU`qQpny=qBB zp~}L-Qmon!oo~YaB%t{-U2fKYa(IXsTOjK1>)Y`s*G=GsrqM#0ahOfNJ0t>5YXcLh zc+ay(zJJ&+s*oz6VzZkj?0K>^S#H=C1j8Ms6HOyG&}&)Y%RN5}HOjyG`cl>lo^8Hi zVewfC<#iHB1>@XAHt+oXJ1`-PVO+9YD*hGt_zLbo>H*JJe?szN&B_8uG@bL@!MGl* zNP$H@nWw048cFO+Kz#q+y^!zUBWc&Mr}LL!1q+K3(RlCmj}0?eEZhYeLz9}CDjD|d z>4OIkNJtzn&g`+IS^dJNGl`sLB9|AAl9Ct<~pS#b0rAf_IH5mp*B+$ z5SlcvlS#9#tsjN%hbww8Y^BHr8h5^Xe5W-#o7VmQ(C5#eS9+5-o$9Q{i>XAs_~_}) z{zSa+#vHL*(+dio14{&hyLt0wQ&ZEsckfj0-(qHDthZm1P*zs9wzmG~pMRvJq^7HE zY^-sl8D^%Yb9K%#QP~$4UbVCW0#ozzdZ6b~g5=SoOl!O{13}5i$~w8YoSdHSPFEw7 zlanXoivo&(bUUpiD$EDpHzjCjXawG;3i|&2&i(s4ljZR0>gpy3@N~Sfv9Xhr6WCV( zTm<;EBJ1+Z%*DmF;DgNLQ~~EG+WhS7WpE3iNRyM3MOxK6QNO;uy#W$=rj zpdc@A@9WpDVUE^~NWbKQBRg9vY6RF*OUpk7g1|pE`C#h|=&kJ5@5RQ(Qi=Kq@$m2n z3(pP@b3T8r-}3otRaF(;{rtkh2KPf#Fdl7fZ7_8~=Z%qK9lyiPE8=p@D&ch=>O!#IaDlckh1gFLk_n^@@s$YPBcPXhh6$ z?%`x8CGXw4cWEIT0~x+{@BdCrOw7z^L!!QZ{R*xdLzbDD$)eYk5)m-~1}zV!y*sC4 zOV7YiP*I^Al?^;>Qq5;H8cnZ|CIrKI0d06MCg$zsHDXDT-;5|~xJJ&R{VfNNGmZhQCC+N1PJW;DS4BI>&kp6 z7zsiRDe>Wh30RJek$j*vKr^~5yBs@TKYaM`V6_}LXz)iEjK9A>SSikZxRy^nm?mnQ zMW-&ImPygX#N_?^)>uZh%&aUO9UX9A0p|^6l=u%YaBzic+u5$p&h?2>qtl()SVy?Z zshF0cBKYDVQ23~*MR06xPJ=PTF>Bowd_YB|qpe+d8OjI(k>`mua0RLe@3o9TS=r@V zSMoglEA7tvfkeS^aQN>5tn1*w!O_vt0e^sKQC?QY!O6+VfzP*whlZS7OHSuu&EuEB zVPQO%E$2J+3a}pr=qB%TkMB&H6;hLbzFa3bB6Hc9u~^9u4hlMw>`mnCFo){urupm& z?lu@zxQ-U6U>Xe!40xe)BfHWNh&v9w>YoZboplWk4nF4YPZLJWb9-Z)4CwpQMUhBO z=$z0mopkS$M4xfss$)9h;^S$6mzi(!&dJF!)y3x-EswIn&v3XI&^l97Qy@b#vu;Io zTifDi@ty2R&yce`>#QWh>uSctckeQ=vhwP<@66OXnCR*0c`x)Na-v#Uo6Z*h{`3Wj z2j)4Za$I*<4Y%j%l7M&zM`^jd|2>y7L!{6gK;sHnS%I zxZ13)cUm{ZeQCy?B#RW=IXQt~8SC?GU=*Q7g=@nQka!h0apsdhPnJH z`QbySuTAI$2rigy`=$1$I~x`p2vC)z#+i9CSG2{=b-8_ zLqngi8(ZO`IJa10Wq<(B1~S0)sW9l(^jJ?LL&NrP8rFMu0NLFlrY=+svJoJ}?l@*akE698?|fObYxFBzf!0RT$$j!16}{N|1;QRG=VfTvT_Pgxh8)`| z06FTM*2^r0=}^T92?@=Y*xho|USMePGSpss@7!Mj!AQXKfE zCM58g_9Wof6hcp=a%xEfVmcR>)2{%cu3R3QDN+gw5R2Fk`Y@a!EJFSy@isZj^F)!6NGQGhOhr_^(M z35gQHof#Q?wHwU*0Ol7_EhZ**Ts_5OJM+d`^76z#Fi;I`S0E4fyx8xcmrZzn0UHLP z3Uj(kLqh{qrY0xn1+kS_zOwK3l{_t3_Nf8QDr+=m6UnMx@(*smmv??^suHo#bBFttg6(ro z*{Z}U?{gPy0v~{?K(bXf(^UuI08$*h;rB)XA)IVaOG-#=tZsY{3eqey?o5U@y@fAQPeDg-Cx#+^f8`wP_N(l-JWB)|H!hHDx z)cT6PR9clh56~}$O%Mizn3!a3kRpZ@B3@@e;jC?JP!>{^n%e+!Bb#kzk$TNQs+hC0 zX97;$>L0KlM!gjU} zz>CI%F2*R@S|G0zxdXsRuBLe^^ z8t4|$`^@d2k0zc3GU(HktX8p0pJ?=M9+VF%4s^|*e^_1+$qD_$OX;;ULCt64o3Y& z$R>-8pWSMV30}^*{{&q6 zSoCCb9C~rK|MTZhUfUVD*`9!v8+ z(Lh6b4Sofn&(5>~xL6;`akzwmxD8M9u-yCm6A+ewbMU(e#B1*-5!d43^&=R;k;MlR zU|^@fD*sG_wE`Gm8^n!;tG0ddEpSHq%zSkwWMC+|PH=mtfG_C!yP)V753jxp_;ZG}_enn#PWOy{&|27# z20OBM=;-W}lWKHNKlBL%F+A$y4lv^h?mK$TK2#jWx3TZ~LDT?AC7wy>>}Kq15l?pg^P&uohH_+RFR#pU*f0JDNs&j1$6E=t zLiKn39;Z80P~;407Qi6Zri0|Hx+QSy>8j8jDmMLpq^0l9l97?Mtx$OH{k=Mg+Zbi6 zvj-V-1N-mazXuu_RSO?9`2iOi)d+Zo1|6^!+7{d1 z^`f{l-)crq&gk4hPIh+SE{sn-+}#J?r3p9}{81~?g>tDp=VyHJ;>(T)?t(wrwXe1H zJzex*BLFH+1#A7Hm$KEvN8aKf0RTvQGLlK7%x_1h$%}us_)VL6vk!J{e>pA%bAjee zZj6{CAEwzvnLY(sEaM~|*+*&Df$h!eW+x{Td#Mwnqkqxq7()-&Nto43K6}RjF`Ai~ zl_5a<@@F{PTe$8WL`)-cn^=GTHczcBh*p-C42@2vO;!7;0KBvzUrq3=CfA>`BKxDys(|Zmn3O z+%%s<>f~$01wz@>l#WUa9-RjoX)~{c$@htb~+MsAOF|pnD+Tql~ZsaLCk^DXvZZ72Kxcg5z{7%6hVg+>B zPl~d~kb0tW>@E=P(w=1AaNO=5U&{2j`u58As zsyM(O{i%YIQ<0I8uuCkjg_V`n`Ptdo`8mOj8-==!N#iecUOs;I>;lzIPS)}G(WCcq z65rbvyW?4-$pS|J+y|K=D@pYt> zdcwhypgxP_@jg1Bv*B85oy z7vp0Vs?f*^tMR`6{%{@tTsYiyW8`g8Tm)_{Jsv!|`fIx6)7pG^djq610w58elQ^Dxc_342=dsq15acxOfn?vKwKS zxR***bhNZ7!k%#zjSUTMABaA@d??p}*;^3PR15EmTN_8FS6A~Q`vKoE^n_AlhEBP3 zo|1@yYwr|)5EBwE-3$Sa&O&0Xq=c=uALRNU$d!ifuXm}{86tse=laat!y$dy0(=-$ zU;p{(cXh{=o)<>ArEt-suy0^63#%9f% z{xA04G#tyn?Hbmsq$Ff6^PC}(DH$_lCQ}qqhzyy>3dxu`DP_!9naU6;DpP|YG8D-y zQ$is;>(F)I+x>3a^L%=r5ATQf+^*|?U4KsJc?`ebzOQ|)weJUI=n&9(71?prP|KQA z$d=&$YMCp+OaXWHse`eb3nH<2lVe^jX?olLN9Q9Q9UYGGXpKb;U3YGj`Et$FHx*e? zxQf+rHTuf8NBy4ZuK|*%VxF9ww4se%YrbC{$||g~NEIs-GI$KsLdDVEOC5Pi^k9yv zcmtD@ld+sv0Ihyc^^T5?8uE%SZ7k4P4d8LM$k^L1he8Jd3hH|QAW*dorMvv#>h9_S zn-N+%&U$~MBOmd^7m)?~n!4}Pr$?r@p9N=?P)YbLi`wpHmNqi7m)Fy~GB?zixjOnF zfX4W1VNf*|E1<=kSZqXrm0-$m)u;B|v7%kC3ky(${=DwM{_YBEe+(fmUr35)w)hve<0pbZFA{T`-%rZbYFEzTG{|nH|;$L3OIErIp^AeV=QBL84et%r{PZX z+{Yb?`Q>WWyVE8N@3QaX2&Cfd&Fofd ztQ75gA}TK`$xRbJZ2lPM2CO2^O}uVqUiV#|=UE;6T4)hCdspM^*#|c=E`KSHiI0CR zm0DXPP7l2E;!gL`=lbmrHBpl>4A)o@|Blsqq6G*N^=cvd&tPxW(vOCdY~;Qw`p~|X_4i&l^UTib~?_X z!$nSRZUV)cLL?;dJicTHG}tM5dJJM!4|jHU#&KyqR9XR3|M&0TPt(!cNyE<^r=_QF zx^QQ9Vc}_M=@8Se#VOOCsHmt5C5dDYg!%aRxVSE5EJuryq)XljgxHq!CW?lymJ1s@_Pn=@Qi!)!dR<Pw)AUQ%Oc-Wyr#PvAdv$)mfPwlAvY%zC{B@*RB zXO2!_X-By$68ikJ%7&7$TPs5^?n+CeT*NNKex89iQ0ewVWHrUi=w{6C6$NGG?YUZS zV^j^pUj1YfS~>}=q2y`?LStGQ~t z39;KFwMu^N#4u7|F^zT`8SnX|%eXm6>6rI?j*$Op6L16pzeY6X9LquCq9QU# z@>NiBT~3-kI}{ehKD73HVzB;JDbv1vX*Tz%dbx6S?5(V@uf=0EMA_Mcw(sc<&{>%3 zHN4C<{~>I!93^{hEH~j>M6e3!8*H#Djt!!@iNHW6{vu%g{fF}IiwGbCN^3%Z3*I-)R=zC%Yx-q(TkY-=+UD_Nlme|CPK7pi;do97q$?5Fu%-+l$+07{B9wFLQb=~faq&rVXlJNQX2b2d67#bO=eCH4xJ?7&v{Z(rtwq-<3^@H+mnJ8%hsc}WzZdB2HOy@Z z&)sFBro3<2GInk)a;6|g=!rmqjCsFD36|)mOVCVl{?z9JKa7} zCpky&a;#AW5<@#y>E6A!aP@QM#Tr&2h+UN7<&mN#9CzX@qkTZAe*pV!qvas}P6l*$e zXN3KAQrw>y6~(o$bTl*@_#^<;$1x_H4cie(D_d85QT&nim+7421>gazI$=!brh8o1K!Oip5t( zH7n{{_TEpIj;2a6dv!tQv@^;4j80B!>Qx#C10P|VBB~!g=Rq_;t7dm7GMb#2utU`l zqhi-tV4Q#Y5yC)Q&oz$E)jl3`W^yGFZGY3DB&l@{6hV0~eQKvPcpcYj4E$(rZf;td z1vckya&n9*eV_k9rN0~cO?>Aii~goRe?0f^-(L~ZI^W>Z%(0o|M6klu!tdm?Lf=rl zp>iDRcfiRRWb6-Bl;0fWLKgVz%nRS84=GY0$k_Ixn(ZyNR+o~J@+MiSnZlnm3se-` zgkBRExFxrRnUQf4tN3tuX<3<}D=R~fzDO@&tcP;AGe%`-VuGH6;-&K!pbBt7xzf#J zPcMB|$(8W)^D|*Lmsrdm1#6R+v}qX2jo60ngKx?E=6EWP7Z{y7bxP$-o>Djss3x6^ zkm4VY^r1(cnclk!MQQ$k)9|*&F_ThM-lna>_BU^)2%>7}21$borG-C3v}Ww)KDI7q z;GW6CyI49!=T91Zutdp#6M7B|W5r>7?%cO@rSJx!(*;Jt4n3k4wq;GJ>@%dV9yeK6 z`>!UK1;0P%y1wRDQSv}FCO&{?`Dh#H?b!AAZNY)14==>nkS>A}$HBP#3dS!IpEYME zpDKDG-Y{dxSYJ_50T$%J?fE%e$gE>RSX9`75UkoZj_uFSL4(O5pdnF7l#gx}-SQ}L z&96qAM?(EWMAy9&|It4X>>|%DineWACX3I(3nv|IS*klbH^fU*gH1FzB?7ZnlVwYWn}q`}8E zZHF&|9x&DFNX1TIc#XSaQ;5;P1W}QZ21NnxEK#v;N2EbrWfu7^xmdU;8Tj9zNeuY| za$a>1$IiP)A+&Akkv=zXo!k#&s*1y5r}ds+8I4MR*+wK7g+F>LFea!Bf;vNDvPv^Y z&FiU^_ckjZ8|%&;I@{aQMOc3WxEQue3U^LDwDP-urdG?4PG^NFt%mFMn>RbP8b5p( z*`}m&N5MOW7{Gf^hl!b4Q~gy!c3Wi+$`j5=kPwOIk4TpX$NJMRv_3X@#lJrb$n04mXIg`)ALy^Y2 zNP)_c9wCCl9}=0hS*2@eS&RU0E*hCCu3QAeFXcXY?g?f1@3cq8C7i2+=>dh(p`oGk zPZIo3Zz4(6m7{&An`4mQiNe<;mbr^$0Lv|&QS}Gc$2&(t9tt)zH6_ai92elQxqMkO z-w9!~eZ`2Ei>tn_t`5v5UUhYWWo5VHGKE>Hv6R?h} zA6}66@A*Uq_rk-;RtH>qN^RBB1#wncmlAG}Gd#3hCua~VEh=J}Lbz&v^tQ}(ybUoE zmC%C%YpeX!ouA#PX=q?YIDt{B)M2&HStMs5QGdf()?PtH)F=e8eL zb|s_Xr`TSm;yA>gylD)&0GN4Dr|+=mf6dK#)_aV#Tzh7~L)rM@y@r|^@7y2Vv_&cG zHJ`RYAI?Jx^S? zFakoeF*~QBdpB}o7U6OrlRbxw;Nj+$B7FWW${*F8l}L15Jw372)6>(nl2>-_+$q}o zC?9PX`juIl3p0@j=H6Fl@8aTrY|2i`NdtK^6mSp>8EEC9y#e4^^DchNv~a7q0?MiS zF*5fP^J*0zFsQZb30SrZ#bWDb zpn0VWA=Fe z@E)NL_h0MB1;R3mM;ib&Lj{V42T2*c(BIWnFIo41KeMmizjuJlG?a#t5#Ve>OZegk z#Zoj1DWJz#S z^qLuO>Zo#!OGZj<+f{nO;{yTUOk5oy&tt*chQF~C7Z>jv2d=O>f94FM-(f>T!#)cv zIFnv}tcSk7HQ3YUAo9LT9o#!^BI(w31{i% zCTx75VmGz#OQ3n$zprxF1kO%$T662xt>C%bC4Md9cu z7}rRZrOfYU?fjISoILx~9r+$m61^bd?iL(lVX^2cw1EEsi*WDWy%&F!G#Q|}!*z>W z1Wkq#uZ!b8H2m!Repo@q#Cx@5R~6|6&%OYNw+9U=!@(?44+OuzgTYLVdug_f7T23rS_2L5^REJjU z)GiAX1|pcBNxUk+a#!25vbwOv#l#3(zP`z!o(KiD{?jK>Vd0<1SL}xD7M7Nj6cnl0 z!rtphV6rGzaeY;tSi!7yc0L1r!o$OZnd4o2qQoZKPD!aC0%nMZVWYm0*tv2$h3;XKo#DiSyf#f z?n^AWxju{eKT;k>;X%r+y4KJ4v;^aR2VMAR9eJTPct##v9E zJo%y|jc~-Jc`tP@HVyYFpNzh&OFgCIP{m-RIC-6qU`_?`WRqV&6rv)pl%K%gFgZ09 z7#OH}f?G(a5LF}0cD}$ji1*_>sCW#9Z$o<~%52K>T@{cjQlwyX=_zxp@%;In^`pSf zg}xZ1v#>XobM@axMlLuy_T#4Fz>u-#YT2c+x&+OuQWw}@Y#Gb5EHd(iS_AdJt){zJ zPub81$QX<_=imciE@TZj{IYayeSQBz85*}>5VLRj{8_MA+|h9cWJ>J8hhpF;E$X&& zadDkLKL|f&p(FWH3+3a-k0C%HvRXxzgPlNu3mam_$y;3=y|~&2BA2RMsezMWoU*zH z^P9BiEbj9qsO$)4Cj(8hE+b}&7N{#XKmN*3`JCzrLLK%!=)M3KmpO#hgum%yLqnoK z%2*k3XFDPyBOUDRCEX`IVX|9vfWT)98hT6t1o@F8B~bQaY%ZNSa}U&Z#W$pN`{Z_D zUP2RIIDj_F;hmdm)fC}og+Iq-&_SuVurRgtIf#*b|MZj;Cexgky}i8%IY=RTdU2;z zAaHWZBpqOiS78VGi8YleLKKC@W#4t{JuB<$3zcJ#^Bn~pDIfEed~eVgXm6SVl;R zC2C287~ZcwV4poaJSt*pANViZg8p?qu+;61igd^VIELWTk8m_uiHIdD)pzC@@EMrv zk1w8ly%Qw%U>Z9l|~ zRSeGzd}M_TdzmDMrl<4jSRb=(%k1}GdGtq6lj+TBUlJBImZ8lupSyFO5&v=5 zF$%Lb6BE17kEbRk)E?NtzzjV&@4@AB=P0PChQ`KJn2|<{n;B8OuEG*Zzvm((&S?9_ zAq!8>V}ivm;CHNSiPl|9OF8Z*dAIMh=PRtkwLgQmEZ^5`A_#4&3>PXsy$s?_oJlr;6y&qvPv^u(Ehw>F<);wK6|Do4RmB<>wZH@a=+b4aQ!; zKt+{3b{iQDJQ4@rzI_{ZLvg)G{xE5Z8jrrV_6f%bNG*`sreAxL7$U)1^x z-X4bNni|;|PgB!gU{7*p>7>WK-(+$XSwnB$oLyW@G<}l7Pww^e`!`AqsHl22l7RJYo@II$7odeK)Ub zlWe8SS(g~KRlEHoBO^fGXJLVwHC;f zc1X#ez3b_wQtby5z}mlIuW2v79uykdh|dBkn>n^u?(Erh+)d<~Z>uLxzL11xbL2w` zAOGu|zY6(jX+<`z=|op9hPbU-j<-ZIfN&khSkF@t^hi)U75qe5Rm_jdKx zNb;O1jmL1E80Ly=6y4hJ(Y^H5$`jW9S(%hmoZ%4>z9?d`=8lSr zf^NEqQXg#h@Bu|PsPBkpD|5r@z(g7v8sTU5#3m%bf0y#$L4T&|{*D=E6?+AwO^894 zH#Y)Ty{@lE3c6%tBWm|)3{FM8A06?kj(OpcksJ%Zu+qJ~CA*Ul%lGe(OGz=y)?~sT zD+%9a1>UX-SU(O^eqmutLxT!$LSAfG``53lxRi|b@4>Pnz$!66>C0+vXn;d@Wqus! z!tP7CFvAu-c3@Qyw8$_}p=v9hy&>#$5fLD4A_0pMFFqAQ;DgjKHa3P;i~EM8T~dscKd9+nAM`wP(&0R$V+aCO}V;0dS(D;yf2wy=g_%)uT2)_T|SDY+&dVT~LGn zJI1YKBlTUy1EF8Q&o=ht1a7Qotq1-d#HQi=%~V>{w95WYP)MPnmCjzpYF=JiirHp_ z+n;|^Se_@xzMrAV4Yg$E?=J`euyONwAH$0M$;*4ggA&+v=TKyR5v-3^$6@UAui zVAZ1{B6%%xn@CO=gir_dQvnrfX=$~sq1}V9r+(P-%{m2d0U0W*I(Ntrw+S#$#pl)a zZAkarE5aL=5E2q97APH&dzfLk0=%S_WYyNw){aKzc^-U#32`j{)-A1=EQL*K-y7q& z>|I-snwNaNA%M7C#kVFSh95R6{03;wSPvcg#k~jB%8~TQn#6MKDb1~@Sc3le<5OvKhak|h&ZeWe@)yMohfD{0W$(&`?!Ga`cvj4yCV~BPZ9u z$%#FQt^OA{20SP`Cno}5DdAA;efAV#y0o-lOjuskAa;hF19(t?pC6oSH}pxEady** zWTv0QJ$q>jmvo+=h+_rquAYAdb9_lGRq5y}nT zOYVO>*Bn3o-~WL6of)1O^v?_M-+%jmeE0wTceFkp+oW%fn)-ok01Vb^%L|v3ZvA`i zYg0m0lqO&?@(dJvK5zd2e0$dJP4Y{zadB|D^LhU}XKi6LJRo3w#*(MUYQg$W5BYbw zNVJnF4#mUPDhzkiU^zre1EgRrttT7T7auu1fjEOw6TH&+_&D^uNBFPOt^X|j)K7;_ zG~7ndLQ2Y`j10CI%qiVyfXqq8SK*as_~dY0Bi#3KadAaa|5#0u7j((gGFO{8AjVqJ zD7pUoDc;OZxwGCGUxL%6mSOyNI#=7SkqoQ@>>g?44;wqQ@xy3Z3-lC?z5maOe<@C~ zsdimXZSQG7>hvA|ewwhYLhg|GKbo6_q@QFf>3TiZYa`=881uhl*QXiUe(lSDT{Yh= z|MRKz_?jH~|NjU7Zo$8Q{%@{FDW5lqfs&%)Ym_)B0NS(E4=B}JSzE*P`TFf!G~I|I z&)K#U4LA@h?WE1H@ev$Oor+LlCp_aQ-6lrOD_qc5mxWNsB-G04eDh7(iN7p{!Fn&htM`>Sfv1O|^5;F)^*+Yr*Qnab$e?>MRyK znyo+pd}wGmSLQL*(}arcC0*@tsJ8U5iH&Q z%v$vIf#u$naibt7hZ}Y)_hw|BBfyjd(KCo_F7D9t3CL$o2&axZFt4f-??-S;EUocf zDn{248ZH+>LRR6rgzo181^4qqWOz7(tiP|5laM1j(#6x_V%_2HjgG)7~8Y$SeagTpK z>xa=8_R^}cLv*T8g~6Gcefh7WeCzxfUmKJ+E@jkqw1gEGPkW$A$>S8$}VPTxqzCy+%zU}1eh z1VPHjEi)>$(E)3NphT5&9Q8SUY1|JiBF;!8JTQ_2n_!Pkn}Ya{$}}Q~7hIr-*PIpj zBVboFWDtCn$Q^quXr!f~W18%gUf$lk-h^Hfr-{`C`DUCi>%bK5A|f&>3$%iQEgv}c zp}rpUX+^;L+R!%$kl=FLG*NW-;{N~v;*1^}6|sW#eD!Jo><7}OlDWmkb-3y>i+qdv zA$k#l7#JwMR<`SwWV?5tfsw5qPr91yuDHVWzMg2g0@W2maFY5J-4}60w=~0Ku8c$g zS~jlmv%xlkdOTCN5!}7L>ZOfHJiL8VZE@`F+hwpN;@TeY8bTsa9R$H8x+ym+YZw;= zooRw*mF#hi#4QHjc%ZujfKHW7NNAQID5s$RVL^OpZH*Z$2jj@Mi(+|YWo2oJX9m!3 zB@^ej$6<=~xHJSucFxhEp;G)nSE>++99=XQ;Uqg2h2A-RbkQ2|KR*44zM51T>K**?e>QG;mz1K0iDnK5)9zNnpK06?c9NCUteDlYPu6Qd!z z$AH}!Xle0uSXnl<^H{zB7#?I$<(+IuA=5yjW&6nvTMlHy-}__uy92=GR~tZLZqk8*1A;J|U2S z@H?@*ZMkt%ZrQoboU-zbM?CvxHYVHZXp$9E+1@Vjc09B@%2W zjYJaKCu1LdYHyEwFQqowTZV8bhz8BKZK#S&)$E3xnQ*oCj|mrt6{;oy$xT#`oVIMn3#yrVc_}>MSH-~oVAhv+qj&{B$EH=Fhc3Qv`fI7}{@mE|fOUVgA1bZ33-#hp*Rd498RF>RPx{=` zQ;923wb|cQjZNS#5rJTg#zV5n$jDG7v!4Bc$cF5oOhdmbn{E%YG;T~iV?D9x;gxvU zYa82vlC?FGy(S0GgJw8Lh@LVLW|{whPXATxP_-;wC7+{5kMddg>rjXsJ<5@5LuCsS zgT$Vb9MAw(7e1d=FRDYEc-u3lwM$tYkWph)&=s#V-A(M>R<;dTwFj{TCfvRke(Jna zxdLo#fmRcv$26DJq?FKYX=!N*29apQEw+ZvTXh~GtrV?rx_K>Mze48K(Q#x)0rmx( zvT@>s8b1v-;myd#H}&;#H-dxFCa?qaGX));>hHrQrDM0x`nPs;7>N7`XVyjd(npCu00TI&b-PKtW8Wp0!PHYw%hlTlk=>kH}3tc z<0q`rwx(%P>KrttO`4fg6MS3Ae)yNy!jE?#N+7fXHw+y+%*)FwEW9sag5oHbVMO~TNXGdz6gW^OW@uR9bqU)2#t}HLN#~ZP$t;kf#o1DL3l|xqYtbYQ@0aP6{cGm^wk09Y2(qWVnv8dfTunAe> zR#+I(ON0z91^@$GP}$tmvy9YJ+OVnKnNZimNk86`s3VI(#cW>gbgfj@Z#nbtu8nhk zDb5d)w{Ico?p;9Nb%ZNi8fXvd8X8BB9JvH41Qh+)Pau2z5ZnsH5(r-1$80 z5YIls{bo`y01MZFP(>(lcpsrCAo(KDIY1h`crhEg$lI%`DV}Wx5TL>RX`DKRz9$s5 zAD9>6yJcr*k9NnWzF3)-vM>ZqA^J-LDZxf#$9J3`_%M~ zQu+E2PC2=_t}tfj=c{+-<1zF^%J=`<)zFXwya9Q6GNR+=&6{XkA`l)O9h|tufC^#L z2CDA&4A(hm!a=2CvGf#LDD;_X*##?}JQ?SXlYV3AtZJ^0B!l(~+XLbjxgf8?!dM-E zejs_eJEGeXDmkhg^w{NOWay!wN6!?j@U}KKg&{JYvxjh1OR+21J(^~4p5PZx_7G9i zu?(SSCxr_meD)3%jgiDnNWI5$!iWwc{)hWAD{#9F4dCrZkA|BG5W>e~9Z)BN^yTj2 z;Lf8%$1Wqlu)B16|@8JonV;g);1a*v?@P-vdOq>0 z;*PIhzXEjef=EAGL%>rf#@|r+5vW&TvW;0egNw%%30Y1*|FnkZ34i|=pxzLL1imaF zg~PT{q-uf)9`FUyM;~l4d`QSBm+1VEN8TL zxDD_i9-u)q?n}!uL4+YFIF=H;hPu1HIW*)R~`*t2)&0U1sppE#b! z5C)Kr7Tfm9dRh(EVH=5_1gD#6iB6 zf)+FEh1$Kbxw+%;NJzPkohX}xN+KqkI;w5A}5Dsl3{1(FI0 zd4A6#VZ>_a$J@g1`D1TOAy}YOhKnm3IR2P~1els|eVN^R_B?#E*G5y{Js}OsGVU^{ zH1Ea9@u?||OR*s77k~z9M=@6gg^Qr^=VK7`D+ceN?+4xIa17TwgFdQu8mPtFRE6d5 zoD##=JZr0i#Q+HW23I)SgBO_u43;VGC=Pe`g?tG(_AtF*@XrN z2ITZIv93a<(U%+hMGri<4f1AR=03DRaHu+DzPVY0e9z}FS%&m6@ zbV-r8^6(VrUE%XLgd`iBzX0?$DjFfUJ45Bf=MQNR0zPWV+^E%n!oi}#LhYXg!0J4D z4+~r6z`jv3@pE$<0c_&HhyA0G_oP5lp%1c6U~*B{OBTm@{QLq+u^c%K4m0C3;v@LLv0v!g$LsP{n1K%beD zlhas#%{pY%_2nOe#eNWxK?%X8`^aysg$3TkIVVJCHsuH+?_%Tyrgo6q!HJ&H@MGg{ zlNh`Lpi=pii4q0oD=QBNWUHmQ;mogqE%+)1I=a?se3i=<%^}SoU_Tv12d{-z+(`j( zrLYztl&(VZdS?joMP+3drF>xzBfJQ`uU}^Zo@6o|Jh%@1z&r$;f#|vw{#bQSTR}kq z5aS(kCUkW~&W zluFc~=T65x2amto?tx#(VnIO!Slr%?Ng(3lW&Gw!r%%&V*8w*r_+<0P!`yIXN9^yFoPhw(*JOXwJ#y&u(g>k1>+nSJWA zL5%e=`pN~sb8U-&c?Mn^F+f`$m3t^u4=G8>q^n%VDW%%uGMTe>$`~nqcp)k# zhP)x3JLZoIgB=N7`1UClM4aEK9LHlIB(O(9mjH;2IdMK_fy$OS0cI@Bj|f#{O{TPh zGG99gv7^Mgna1TJ_ZLhsVs3M~awTrX6+4qF68Hk@amjOxYbeDaB81Nv+miVg)ySs^ z&8Fo}0|bLT-wNHMwbdDpBGClCyT1RN!Y{~iU)83Q5WO>VdalD60F6*3Jq9EYv5$VT zfSx&c@BuzLT2u&mL-g<;;EcXUjF(Wcf%9qU>^zKSld!O486Pq7Y=!&=1S-ObaddK$5uHTO`pcaI9}ly_%C6K)tkXzf zxmN3oy1DZR2BKydC^L`GR9!&;0L10wG5vI0ofIN#bdYzQQBu`WyP$#j*qAE9!0)@5zDr~86Y1fiA+AujP!I*kK8O) z0fES8-70q}(a(jO^f0X-^QTavK1dYAx23UIMGcO8e4yp{67AE(AdJ-1Lvv1OnH%E# z`ts$=SFf(|*S~9O@~ncgBKc{@72_-0~REB zJWfl4i@D(&Doqt*pJMgt*UBh2+C10SWE>4~wSY}jo2ZnmsmES70`2bnEqUx%Gzp7e zq#`UXn2AC-Rf2+oP`*jl5;DN{8BV&5K=5Ld>(~2d?453MP=-Fc{8g=);uCT;f`KUY zu6k#nFE)Zp0{BWiY^J8($zx1fjz$2=BDM;nWO2tApu2YN=ZqGBnE>J2!2IeI%>Sid zVe=-qxsxYDq(8N_(Tm!&fSt49{(<8d8V43v+7bf)5>~&#CoW@-#0L*PzO8%a*snS0 z%UEx0VzP$0XrkMG5FL+Bn$;!xRCIJaW!|iAgmbtT601r^VCJs#Al9mLf#?sdY$_}& zLMWz9iKC~cR^poyI8z=iYEpLj{bR*X9UWjMdC4h`!{k!1C20PJNhnwa?85e(!tn5B zw9nhPM&B-Ug-Sd*e?~*&JwO*Wc3eA(fmwJCVmTT>q>NmucAuhOQG-XrCcOtSa@P*k zU%MO0DWaHVmf`ox6ew8TNnB9tO+3nc!KiBqGbG7f%qoDvWcck{RGMVNEbDeP-V1qw zfeHZf{_CqA0~M%IGGBdY*82)@T@PE**cefG4)j6lrSD-6l^kDfLjnk{=K?I>?h|sN zq^L=GC-bDEz9214FyVn#FcE(7!} z6^1HwSMgXa9b#bpevD`oo%bA&R!Ikp7rm+S^zzqaa_z=PwJ$Bhw|&6+SKh(%%=J4c z8`ZbX2ox<%*KvojCFYX=3R@MAB63=Vjlu+I%kc(Kg)FYAtGl~3;Wh>t9U@=&z@X8*;csDp1L+T zN6iM|N7BEYgN}?k>%4789<^imwQHLkeuZ`HL)o_fhKx~d@44_BP87rYG-(kv1o z8^%=2fv?jDkT!Rj-&rZjW$>fM&{mt6(nsMxvHgl!fN$|I_5fDrJrKyDvt8gE8LJyi7%a%)!g z*J%q(H&hF}4m^y31_yk8+`o5^nDEo~P)`n3$|-unY`z8VjZoK@rT-Z3e!~8e7sIc( zPfmhGtrI63uib= z8hh?iUn;&64cq^sKO^YiX9VeGIaXOU?wMKG>q@7-eLJxkFvJW6u5TU;3UDVjz6HhF zlrmr7yN!jo%JH)Nck<4`G5B*~fny3EfLGw$emCv8&3v0%x07&d=BfNlEOK1)xnzPaSil(zR0`}T=(nk%VcSw;Q)x#ZB z>0na_zkesvs^o3l#o5?JOu}ki%7o!ZM>L7xNbR{$R}3l*AZ8ROD1e+m@&tFdRa^O~Kt= z%mFaowAEtrF#V3Ujt+E$$l8X4gaj(oKilgPoPen84f+qj6f{VI)6?8&c4sxSa&Y8+VHM^Gcbehpf$=%-+83W$E3@ki%- z=(Ehu=6dddq5>{Et1=@~Q&_cRO*B{UWR<~8yV^?0p_1WANH>4#Fn|JHxpy6w8 zD}&^oAU##B=!kU_)w61Z5^ZzWCo|=B5stUhA4_+QNm4 zLm3+MB?`SP*wBsS+{GP(UBjW!9OKopGT&LC@eP;yy&!LbnrW$x+^qt=>^%;UG|#jq z3o$QzST;Q8Xp0;t>N$H(Ox#w2{hgI8?fhHgeb}~uQxQy3L>tslMlrSv)>3<~6$(YP zk4W0@*b!oB{r+iL8Co=>1~2zjjl($kLj%KRv~)&H#UAHct@05E8_xh5G%z6n1KiWT zm_fti|2m2(hqQ>A@C##BA4cCDjLp}(+_9+wvTS-zIhI%fcD&^G#W@yHT|BSKZW*@s3^3pg8>r~6FaT1 zQ2X}n2r?sl!x)*i`giFHMkq0$>KN<%=ZHup`sWFQpociY?Pj=U`lill7Cd@{*@G%8 zfED%$JFe>|A9BE{ixp<3r3s&VNfP^o1EQXcOp5za{M({t7}Hy@u=>8&CQ=rjoG@%q z&C=DKy$-0jTFgwsu=B9UiLsFpFfvb}9%4MGq9UfbIH0ngPr`O<^;idTRosQ7;fc>tPxmXVMpanL#eJ1~$1xorhm9@YRJWN4LtI`8+5jYhc z(fg<)+MhXP*<)fR_}70F--0Ez@dm1SYVj{Kk&yV7Kw8!?{InAn%N+^b6_>zygv{=#-V~v)b3NjYz~{`791qPD{Nb>(2xube*>PN^1T%rnzmyvLcE7J zIB6h!w2r@WW_)zA3l#@CkY=M8A^8#GQF_p6*^HUK;ObFeqI|=MPGl`bN$9?fjk!S= zb6G(Eh>GerZX)D#aQ#Kg`Y9j_E6#xPhKHI?!o>4@4iG12KuRs`?*6$8t~|&5ck#a{tg1iRgp_>3>GP zzZAcOq}jB$93z94^f|Z;`U#$>Hb@>lul&XP{rpz3STN-3nlv#!*t9=oupC!%SDnAr z)PcyhR)N~O?Yn6y7#U9)ierS%jTc)Ng>v;m*xs_;) zYW1``N4!#1*wcRqHeX9jJdHy9iP>}I&2^{=!1ovozb1wb`z%Jh7({FaQA`o4h+P2b z51W&-7kzlDUv&OlfRFv8(S$BPjnuJYvvv<>JJaU=VjxH+3!-VRD?v#1LY@D2rtw=c zY5&Cu67DOA)cN|n3D4EpDY4eH$_vyU!-^jF^t9SLkZBOFTs#Pcr$NBVVHn0q^jmaA zR<*>ycMbQ!-NU-oCA>9Q^exS-y2O+rSJ~k=e8JmX3Yy79>6p7HF&9FI$_+QL; z(r6_HC!V9vKlhPxyHJ<+sLRUd)>f8CG&eQ+rQ>Vhu#7w?d%w&Nhzxn?>9c2vQoI#f zpMeO#DS%@l`+U5ow-;l09Wi<)Y**=Lw7DQ6&0B!i>{@n*1vn5}#>dCU)Y$l^`~Sn8 zp5>Bw=8gBkr%%@f6)0tNrhBxXnGWa`n%X>o;R0)v`UN)w!(E_CK*c+k(++M?QsA9? zZxG~{h;RF~$UCmb8Ux)c=J@ViyD%nTmo2zBq9q5e)7otK#sS;w;|qp<0O|U8!R(o^ zdkx5=^y|}0h69@r-Ps1NgeqPi4kWI`u!4e7sEHdwd~Hb8dNFyTA}dei&)XupKYHK2 zEBJ5Umx}cZz34_O`pxW_atu}LymRDV+6}~DJzOGSD>01+@sY6}PGMLMIXO7!=;<+0 ziFi$|!2^qo1n(ROze~{A;Y2rR%OdP4a7kpMV(-Dx9q>{E6hFn;+|(o@BowWdg@|ux z?KzQR(1>BJH9o)LJ=W$;pr@scAJw~sIc_2%v0INL1-ZJpspnr@mV=pkdHVUx1Qwi? z#fSNMSNADfSTtj2f?y17e_aw5yNq^Oa0c)fAK(+(O{@ZP?*G^rwFCcSqD%dY);vPh z9aj!V30DRI*yR#AFWO6}>6xfP6({ZFIna3gNo7}FpK$`_dUhbq@ebwg*i8%g52G+{ zMZ$9`Eg3uCXsEUty~scMluUmyXe)A$q@*Non8hVKJDN+xr6(cy$$y$6$!sL7)1Cyo z*`AFiy_4d=`?tUIigI5<1Wo^uMDT?y=Lw1rEs?lfK+1CBym@*mXV7c)3>vKY+btUr z-Qd3?`b%+yP#!3!Us)5>66)Pji(!#AFFbcGBxFauGo(>OkCBAO{FhMwfGityaCLIB z>3#MnT@RNM)rSh9QXy&x3~rcUujUnA|F4T=XA7YNN1?8}M!~CyeFhR#p$C~%5Cd*L zUgV-yHAbClh7u%JkN6}j6W#=(-@{t^1aaQn+Y1hD94!9te)NkGBhMWa6zX;{hT^bZ zyzoa_hRTR8FVqBXuCBaJ(y7nD{Ixes!v@iGMdLo|6&3cj&!2B^_}4&<{~ZW97|(bX zHyobvwXH}pLB7w3?@9<$#*B*|u3sZjG5;2L>~aV77(xhRee1n7;w^a7UrjmAI9pOD z#(FW&b%P;>^6Y=o+#e5~|5rxWe;@zvpZ|L+?Ei&#%m#p?hBAqB`aiia2~S~yI#w$j ztI132UC)0N=HP2QBq^Bex#OkN>Ljn%{>i23 z$JIL*_81BjRY?rCH8=oxi7_ON}}y%IkbwS=jLrqgJbb_b~X} z7kg0M+0;~ARKzp&f;dCZ!!R&5-VSb?CcXa-TroyQ1FE`8n%Vv)lE=#<)(#F17cYWW zLj_~nQo8MsIPt^9aVdxab@|=68*qiwjmQ6p+7KH$LYXro7{YGOpCb0mtj&BJ#w|o0K#Xo~!8g zRutonH5>Yskk+Y_zbw6Gzg@d$9KT`Sy&4&b@%u19;1LoRW#nbH2E8@N(S8M*bK4Yw zHGaLmz9^XU?%gSg67KOs_yNhCeK17eBdsr7nDft8K4HX-lV5v8{OTo{;$fMwZ{M_g zHXgt;TLlmbe?XidnYK})JHdWqFVeYeroFM3z_{8C2ew`a|DZPLEY^2Gmc zyk167{EtW5TnPFfrf(s(t^Y}~c;{6*mjBx6__ueYn~1yk?{!X@bmLz9`?n+V|DX7( zc%G>Z0~X0FqpF&kB+4*~bW{t_e)*=RrLSdXW&*x_fu9nR9^h!pxGQKAKq)ji69)UT zGQp{h8o|^2Ki6kg7O|O_!%txe+LY~N6#vvT6(KdD*!zo_o=G-GtQw*r10ikwrduSO z)i1Av{kxo34;a7;f)a@+w6l~mTC0{P@*$vujD}k_Dm1j!?y3AusGq8zQT^OKMW zT{3ypS$ma2-mGQCIO+Dc6kvBv(t#g8OnaETXfVg0o{^FNjKK{B}+wYZqWHsz!vbCx!Gw}^1M*t)!0gm7y`8{B7 z!F=2oQ$!X3(5SPDPUlx+2FJJ{ATGM&_24u4r;QI}=zd2R22rbIQy8)jb|NRX21ON+g6r8khK`SXM z(^pTUQh*JQFzew3@^f;Mm@@-en%3bj@EER&5veeoO@OJ*O<1(Jsfda`o}Qrp-KM`R z!QCr=6N~N{*eU!6jec;Z;ISDr^5`O*P;yqPk>e2;_rPJ|I9!~ZFl}&|?@1MAuuH>j zjj=je?*TD~>d-;5inhRZ*xGP-DDDt{<|jISprjHJ0pcGa9;$+V!Ko<>N|nH$mX?;* zEZy9Nfv`(JR)9+t&!4X>FXMiQVHz=t!5d3w5iY@Geg%*>Gt1Y{wY0XTW@M~FUvTwk zBB*&61c9WVE+@mi*hIzI}sxNTslz1bLcPo7l@_@ZaF-O zj95W}LJw&T_+ml>p|@db4j0R7l+nsjj68g}VBOdp;F#%UUSntAESkOt0Fgi>t2i_3 zh%I(w3IxGg!96m_w7x*cj6&F*=-@{~a zz$mb+H_Cp2&LU$$3FLv&n&mZ!7ErwcLC0Ljw4pVHIR}bFOhQbtm=ZiwK8tL+lLhFw zBTZok%WHJm5yP~rFVIJhU}M6*Hx5c*-u>w1FDR_)n#^R!*?3Q(Z6KOOA!3?d#Hs=J zBmO;f40LNY*))UVfh+Fq`}Z1``)UIELEUQ3FJtr5uI+-I+Go6tqpk#u1UT16(5i1u ziQ!tUapEDbuSx&KedhBhzeRQ<+~6rCKVU0C1W!mHtIM#GJced> zobP*Bh%w{4Q!80?98giM1YHI^t)EX~05+!Xug^6LqUKCIiUFss49!H9d`BM7fH8R( zh&eEzhogy^D(kphm=zz;JgfB(D^|SUSC0nY&H2l0fj>jbI}k`BaS9p}qH!4x20g84 z!Z|tZ(Ep;kZ|hwVCM={?Pzwl<0_&m~9d>XjRc`d*XM-4afLjG}V(}_2I2_fZma?qS zo73Z63sHh$U-w~`f#tM*kK1MV_zX`oxMBUdDr|L#>COP;80{IObsnJd<;RPK7$Wg~00MjA|kDw}AVwU&T?4xT-9T_-4X1M#x+ zVYt*V<9!sy=+#bfnS+TBA)_(I9X*UqZh+?jI67D)AvEiernQgLi`jE)Nnutec>U&2 z#Kc={9|@;#SEcQsoguEq4dd|u1(>adD*`!&`z<+U^gY4NEj|yS5ls&X3s^EBgrfB# zh(|-fXQHD_v5N)YN<5Ik_yy=?OvkbA#%@B}Cn|N9D@036w$=f8ToX2a{sPZi4LRSw zoujjZS2Z{!gl}D~*xXHXh@tWLpw@gt zL1S3Nlz%eE=z!aZA5T@zSekFw>IhJ!!=sKM?qS8k$*D|(Y-Hz2xc%@Ob<(umic;uQEmo(& z6uHA>*yo)q*NqNu<*o*RQ8T8qG^%2V_sTrurZp1{=t77rh|}H+gxlNnSwZDnOf;hD z^Bg31t9G#mXeQ1YI%#4sLVSN`=jm#~t&5$GD33Oom}~h3>nJW4{L|!bdi48w;3gs1 zy2zb8inMvBiWf73t<#Whyd%+fjV(IeU*nkm5hwey{XYQrM2w=65|fO#C@1F#)+r*8 zcgFUG#DVC+p?N!A{hUK&(Cdp+Uz<2qFC>Pl^DUj$)s1CL=L%UypHJgYUw|^ypr54F z8oRK(Gd@%zNN{BH3iOe~M}1}ym|bUPHwcm&#F9d5=o97fTX-;2WnWK^$&=x@mBMV@t4sKLfB;3*oc{9Ppam^ikoLY3+z9c@qAuh4afhDj_u!4 z{w548BV^S;VQu%GRX6dW9_{0Om?YDYevfE`FFrKNx$yhhLx4Mk@S5D|WQX9rv9je~C zeLKzI_JpI0Lq=~|MNTP)Ppck`(P_Fiw<$R_VorbLbVpoL5;qwljoxR5?WM$>y%PSP zl0=VKf_2E&sj#5p84=vif$lPcE&|HEIaUGV4x-+$_cgG~{`Ni+Bt*xQi{72ecBcpv zJWb=`13%7YT*$cKKY#w@OpiM3P$3Su!A@e2kuOk3 z@l}@66bf3)HzRaM$TU<`gueKIB_u+YS^_T;8&t@+1f&@KTUGjqaXK`g>UIEKUp+u} zwv0g8B?kvG1Af=!?PBQ2dAeG zU!+NJ{>tE3#qt9Wu*&tAL<{gR>vj6bw{>+2dqRJpHSpbLu#|8l=~Xf4a~@kA&wem} z*c&hjtgvRXs4Xtw8&7&=nQ=A|wL27U#MkIdBb*X4BETCS(_zg&0#vd4BRX;pFXv*?OJ zWHpM2L*h20foAQB0oMzUEA}%!7 zV*YGOG*kOOIPN#(^l~4Ya!&nQnQ?MLWutkhnUaj=+2dB=u!?7I1^msR)vC+k@>6ti zdx={K2y2}y8xRm65g~%wL(m2!JT`-)Rjdj6lW;H%7RfL~_oK19av0ViJd(w_0-hQU zw?Lf9%aW5P{?Nj8j7O?iqmV{PP!9!?80mt^PIx{Z7C)4S#2=M|6~zEk&(_`0($XFY z6p<@Rpr(=uHhj$01FGQNtOxMazONWGX=gWqb%V#gbYU#U!gpU>r8mdC0Knk_;cUhN zCHlzFj)_N@!RqlHi?HGKhtHqO5Iu`E&x-hos1=eNUdj{$28bk86;O@V30Tq(rZgCbTpPxWB7Q-c1?j8EH1 z_8^;2IWg$HxOI#0PFqF7jc9n*kE0nUxo7WQVx|)M@SfRsx1m}wmbGnTM{_0~76Xq~ zLo&7-S^+u0eWFwr5h+H%pSxCS-#v#X4)W$Q5Io?0na%Qg&@BO6DggvDd{EG01W*L7 zCSSkFcP}T@!13!CEBhUQ@02K-5w+>@$i0hQMA#t_jKDETN=P(ratGN8I`|Quu7O(u zga*PV-ry%dU6{uj{PaBki@Y}v%eig)eq9rpGb>|=CQ3472vLXzl~hP5%4I6ipp;9Q zDpNDckOq}XBt;>^RcD5)2^q>zC_^cQQ19nBx$gIQ-fgXIZQI(`A8Wnq-0tUoZq#}H z&fo7ij(y+1-|zn23mWOG$M2^Akv__KI8|bzS@~^L>urSb{z@1^Q zBV1S-T^Rp&KFV7wqX1?HeCDCY@Cn`xZDHVt&l*Lu(WS4yR zpIXOn-)EVJKYjX?Z&Dz}&@A2ZZmha`iip743wbEo9v>YtGbmsAwg;-P2IQ#YkaBtd z*lNcCPSFY`hh=AbwJ#sc7p)8ECfj>8n^bamdwY6LNISoiN*|pQS7%4SiShg_)wbO* zi!lh{M&XGtb4fJ@Pz*G}QJ>O!+C38DCB1`BCh$Z&;?fx1_Sk;?`pd*!Xjiu_Ti&D( z!cm2Ik9kaKh+tLx#Gz+&oKo%R< zXhL!sO}pS$vuEc)5BocjW{^V*udEe=X})r0RfrAli*jw@~Ctn4u9 z>B}ja|7rogFnR@J2vclGvL`KJ8;}rzwc7>K(}YwX+P9CatnKG{teXM-`*)hO=K1~8 z_d6^2BCeLry>mw@myfwh=TPDUF<++dx|;9ieM%~QTkf7FAyHYsxPHM&I`7zW7&%^G zQmpebBsu?pe#~nP=FPjr0%w3@VoHvviksbg z-{p9L!aWidHELC!+L~}{4v@-vH$a!jsopuJbhHi44rl%kHG8|7!8KGQ&ZdTRC4`6f z-Bf82&<`p71v;3hnhB=#T^xyw^xyJEZ^89hcGj3e5_6o`KHPr>M)Ym#wg>cvOjBrI zii^*JGt9)LqK*2A?(Sx81}%3cJ*jY4ENso{th)<~5PSFE6ns(2Fw6$zHQ11)OTM_4 z;($AqW|~+k7+JPUOo@HCCU=PvFXZhvQ8~7;v2a!~Qt(}NuZolU*|QI1qsfai$wsE0 z2m2`?Um3jf(|6pOm{ycvlbuyKeGN>2L2M(nEV56k#yRWcyX2|f>}+jmX-+;&;52qA zshH3AIs`CGA~D|@`RpZ3y}cWp`NS&?JAD4x)%xw#ROdf_ofFw5VG{xoz!s_<=Zze+ zwb`GdmRTP@aKMSUL;yH#fn?|157hzHQ{V48AJ7RoZw=?$qG2Ot7(8m!dyMNyjybx} zA9*q?HuxssFRg4~CZk7-Xr7YYWX%TXG;4HCq?wEpK@&6{u9}t$yc22Ffk}*T8;sWj zRhWR*HorS`WKJxBlKN@vw+))As&Dv^w6_dfc=qf-SXiHa{kDLQAn8G8qOu@Ce8ZZm zQOj4XV95KgDFPX=8mI;NLfT5i8)63AnA!=v zmCvhRe>vXGxpUiUj(p8ST?_~oh<4^|-h6)EajK_NEvxHU+?*w5D^txkZrU^e%Kk{Y zzM)mOZ0dAs&jAxQJY}PnbY|Q!p4pWguFN{v%(wN}LVwlJAww!%qxJ9NT$qC~RHH$o z>4pt;G{da!d*_E&=#HH``(=NJZUocPTOt%L6f}~0N-BhBxB)92-Io=F7v`U3X)%u{ zV}{ETwF8X5S`)FP7nQF`Xm{3C>z9+i9G4YyAaTvw{_MB$@5oF5Fu>?F9+T&0pbC2J zb>yqoR<9ybATrOWg9lG6T*~UjuqJxYU1pE;pSqPJpqaeJWFZGhT%4KqOdFICqi(0Vr_-a`t=2jOE|Q36RYAd5?u|QbSv@i| zP~EWjR5Lbwcz#2~j!>Aid~57?_|9)ExE z5oTFxc1{W?`&gve<4;*JI0yi8_$a`TXaO@po{lwsaX;+n(WxMH6pG=m^9iY>Fej7I z58MZ?v;RUa_3qy3!@IAMMc3)B=&YN5`EuH>`dt{`H9T>x2w8kT>IBIpLSJVL-S@4P z>)G?1UH-w#Q>O~Lrf&JN&H^7O8L_G`7$*7agT_*U1Tn(uS~E#OlAWi4A{C*=tNcS zBY0tq@DAr-+2{W1IkYlvjL@_vW5ak1O{03dYzour?;{R@lTXekI7b+@Yt(Wqs-($G zvMV3$7b?nYW3@Xurdu~g)mV&p=yrrteI*DKD1X_Y$*--;$6*i>D0bGv|mr;%*8yDsu2m!Yj>d?WW6E{ z03kL{vYekYi*X1HFG`&)Eq8v^9g1Qz#2NX@2ctA{`c3kE1`ceww`hI7UOT2U0Gg!) z1RbVK;gkqWUUNKZgC+nqoqZB*d(Crz!!bMQmyyhjlMJ)fTQvbglP`$sSBcSsXllzcKxP^rm}Z08nc>g5=6{d^DfRBw9iuQPH9rI?{uPn zhf}u(sMIdhzQ*Ab*w$CE@y%R}SoZmF4tSEG+G|gp>P^0mk;&P|M_6i?TN>44Vm#bu zv(Wx7S7%YSne+YjYk!e)0*eY!o1?2pny+-ck|wkEmcK_t#`2Wett@lR#m-m;4(S6eJ*O7LB_y(D5V!tJc8u0Zs0c#nr0JO4iN&?wxeL4GMA{JYX$(%FF z19Y(bL-7(Ab$sSlubL_i6a@mGlEE?oXuWC}b6Q~JOq(E&mMSv^{OOrbf-IB1ZngVG zdgjF>+1Mn%W}AguvscFSRhABUL#_BL@ePps~t0_4W{6X>>al%*e%)qShru!nqj7T)9 z5C4>0wP~}`Pg%e5)Qqcwlshs#u~ems%B=MD9@m1_vLo8{KyCuRkB5PuRd;j_Yi44nnmSFeZM4@>u!2{IQiw zmMpQKd)i`=iOI1HlS}0jrcR0d)cYpN>W2>>zD`D_rINW4eL#16c>ndZxZ&VHymTun zpsQZaqW8T9iUw3#1*gVRFU0-sEBTg4JOiBfF49pV@4frWvY18JVzqtRu<^}T zL@D{#ZG!T7ZF%d&MpxIa9XpzhLzY*%VoD<(PxOY}Iy5%1Z?)|lZD5r z7UDMggtZ$g(|9T@Y!V@c2S8v;}cxk&QDe` zZNCl49?PJfQncXnTE0h3rcEgg#g(2XO-ZRpW@=C}19Q_fMJyx?w0v&~kIi_x+|BJm z;Y!vX5U;Kb$XVPI#h=TeOK|NWf$Vvuo zcZ0Z!o^@)~_9Tjg_Kn|1pR+#QeR%a3l#;<|ohFoiu;iR!jysOCB|FU%%&Xa^iVw2y z+ibaAP{0Vr=`tUn2R3tRMl3BUDBx0;zwQt^h#n9t2 z!(waNlJIV6`^#~3<(gej%bp-9-tk8M-__h^vT}Xfp#lmH4pXx_c<7L|WdR1ehI86g z8EkcaH^u&+W#r{x$j`RXCubtTS5fi)r@to%*>@F*bL_2^BK}MogcprgU$SAFiSebY z=Z+iDQ1(7>H4)uY;W*}e~sSUE(Q zqWoz-o2m5g4R*`yCM#cv-K~93Tk28LJ)|z34$}n%nQ=<8l2i}B2|rn!Y3R%|twGkC zl5t&R;jzX?lh>SIU0PH9cxN}V-`)QHX7@#6IcTa)*_tO=>1vf#RmveA{?Ew0lkiP& zbTOW??=?Al$eYl-ZzuMkpX5k6DFs$dPdk7GDpo% zR?IzC`~8nUltWn3%(f5J7CrNzY#cCA`W1-Wfi2Fp##*xCx=MZ$m5p+H8ILd}=>2g#e1m{tHWdVGaDV25k@8jq&9U zx!pg(!(x?alM;J9#S~Htpelaj;&cu%irf4JZOPCOJF9vZ7=JDAOiD{+-^B8BHnY;2 zpFQrl*5|yK8ZGctRY=7vPl1IF8!Ow2W=q4r8IH0LA*i%zEM(P`rJomAipg zF#%6?jhHvAB_EijpZN(EfSRP%(Ir2gqyvU}X^N@(fNy*d^+9y<{J(4zW`Z3U1xH#6yQPym)boUx!|7?RiHO)YWUjfyk+f9JFA6j4xi}in2C5 z`%8^EF>&k{&S z+OOUnjRaLHTs0m8K=7z$v-gFqs6mb%>_YyKIIBk}PR$+ht}r&fTl8*+`S~?g*rL#Y ze?sg0xpQjE=l;7TZ7pPEJ}f4kKwT%$b#d%TV3S3xHUBEowx@c_*RDNXT#dqzpk#1S zn&U@xBvAW}?7Z@h`1RKSQ3P;7geJl|#M~EjK^ygfJlaU3FzlnG+9Dhh-jTC~Y@QXR z9+P=Y-Xxrp6;O!{7`l0u_>D`mfwlc)u_CJPw@m!S%260Gj2vm`Zsqe=H(&M3+|4&G z6BT9(+V-Nlp9<8%>C^9o)CV-Gwzl=oq*{%KefY&IL1_%X*}NIS<^9#^@_{>?gvifF zyWsZiQdDR%IHl|uR()pwP*wl9W5=#+FsqHrIu={#U~r;Ue6H<1!m{5l3cgv#KAqK2 zzddOQu2x1ydu4N}Q)#jd7s_Id@!SJ6LC$ZFLFP*pm+>avuOjb!RE=`{N!njBpFDZ; z4;xm_@5-gpJS=34@-D#4r8qh|dsE{t5rkoCs5C%&LGtvnM8{lCz;O6mG(bA}Ao8bW{@F=Cd?GZHSM3q;?;DdNrR z=2bD|LfQpKqRbPgX{G4>kH$^K9X=*Yot>R|8r&THXa%X&?5!Zwr@ZK5wMe|3pHCO_ z%Ki%Ct~`xdX7zA@TMjL#)9$DlOcXndA`5wZGBNU-{)Kasq<6?& zVX188j~U%<)PMQ^fg1I{X>3o{e6otS-VjTjzzKP*mBMI`}-fP`O~?bH9&Oy&xf%nOYrEn)j_i%?3)qFN|= zFFhE=8~J=0GT1YVa*`pj{S;<`gAuNW`tI7jTkvO&pAv`Rj{T87z)+#~`FoJJ=jUfT z5gS1$@Pe4*>yf{Pbv_XtZ5W^_&J3T+>xo%wTi9hn@@NZ&Z*&>;`V0@R-;7LO++QkM*ur#S-&mOnwcpw=}C8P+_*F{!vZYT0;kkB^ne%IYiu^-BAP93i9JqkwHH za|Uchl&GmQP|E6j|7ga6&v+{8>-g6OP9^~lThb= z_#lT~b@3~8ZEbgiGyu}&<>kFp%n_^FTyi^8Xt$08n2b}2l!gUF23Gsx#Ta0z+~@i; z#1IiRgk6}i9#38QTe~hyEa@O4!Jzz>spG-S!E~ zr$}MunCZi8{z%mK*X!0UUM?oABF`}UXw6@T^rMw`w}feEcNgsW$veF5Sod7$mX00$ z_vtjx&N;O8!;LFo8p2>FL3XcM6!jqGYYwxR>O`8jC?q=rc5(iMD}lJ z2LKw`Sh?gx|FSj(RWp2Fd<3z4oDHYC?}wh4wQuE9;QMk;8}o zT(Kg0AyX}icqDS@7rnm1^IXWx%)iaUG;2AFzkR;IUxfOTO+(&?ZBG)k4zMqK=7ehk zdH{@zP=%z$u5ZWp)=03c=xGpYk(jPA*w>`b$F03zD!Ro538^Hrv^U*m0A#smgJE=F zADCf8kyhv(<51&{sg@=iyDon*TGia^u9m*6j-EjsskO$Jx$+veK1pAYZenor@nKwS ztV*>l+!uyp&_n&?%kFZ zi=T+dS(gT>WG&{geUes|QGJ90PW?1I1r>xuC<*Kpl$3;$k|n=;-@b~B^-F;~N_TpK z>7g+#j=c>=UgZ+W;>81RJz2eRj2Le(wW`8 zo?j+8^p!<2FpC4pPnOlTD91B%UOREM(2M!MF+=y>vFY2z(v<1ey?ff)N8@^AL<9#9 z>j-QBZB8BuET~)nMIWKD>@PJWr&&T(Y<+GQf{lOxER$#Pu8n(z2Nc8ynZdEr)r~j* z;C_qt`uZ2|p@FGKv?ffLK-~;+gUro>g6`Qe(df??}Ut+xe-)}x$Dd# zI+xzPTigEV{t2${k4(NqVdQb`E9U$<*q>;JI$=AxnkKBI^NoQvK-JDX6 z`q>55Qy0r&gT+aItC)Pyo0tU|*8BT@;t2Hv!qMn0NXj1L|Gw!qOZ_Glb^**~A~ID? z|A6H%0b(_y#UWrK4KJVwZnV+vjD1A(vnu}XJa^$*RjKNNgr4&9=$gE)%>bB1xNXD# z&K|ELZlUd-!Z>@f|1?qUZ_3upT~9Y3%4Lh1AI;d6N;9-=Ox__^z|t^_b_t$gX`_%q zdYGwOnAe)VY(<-Vz)zrCy@T7&#*(wQ!9As^2S*0fKZkvCI1w?Qx-`TOiQ$8~p=IbZ z7aD0Lcy3Fypg7GnO8j)iPgXMbD_+P^=Yqr)**MV0U@j4CSWdWS65G&N=gY}dRItMN zfZ`V)&wfu>;7|B--+O4u(d0uu+y} zH-pt}sxGqU*l7Ly_f!n6*45jHfEqr4v#u9!Y-W*(CF*Cm*MM=0cw3Yxc3*h#WG;T4 zZ=6j}AM4SUfri=g$S@!iabB{tZc+SBkFdph+A(1J@|-z#<~^RfW=)cf%Bh!#^EyId zjd$uE4RtoMV~zIao|Le#e1MbK?h5${Mc0Y9tR0(WuRb<4S;U=`oT|K)%&t>bQnGCp zb2qMd{$%jTazYQ2(-8aZC6im0e1_v8(##+C{rh*)I2!3(F(Ii!40>oR#tq!tz0aOW zV>5$)l%`H?rGG$@j9OkvbYbHNzZ43xeJhSq-jKMBo?|%0D$?xz(@qsS$d6wKZoLt^ zLPY}xF?sNoAh^j|*mKkd*YoTAr|H2W!DQR&kneSks~|u2n;eznk*8` z9XXEc8)wE9v-OPfhjJXdDh{3pKQd*@dFK*{hLD)Y@F;Q2f)vR2Z4#^RZ0PoqorE!Xkh6-Jk9?$7tj3LjonC>;f80PGG~62J z$7|QiL8kIY`|IxF_vi$^Kl25VthVgzESnFJuI2Op%A(^h`dx_Q+{T*|cE0Fpf9#izbk6)N%DU|BDrc+LVe6bCQL)~>jOLEXUN=A|IKp4)PIWw!FJL`)szwU?%e}DwFupBa&Nn=?pu^`%Acx> zXU$>Hp>1Y8lEgdfhOu+;C{;ds1gfqTFfwh;g`PvW8*RqSnr116LiZUkVC1Z`io=HW zjl75=!VX?bcNf)wbz5Ia{DkPCO-NGMEwxourBMF>tS#S-0AXmQ$1jli@nlIcq&YVx z84H%or8$d_hZ1VoK#o2Zz_>NF5I!(2Moqq!_s-g@#Jx8kIAnQSXd@ zIGm=IFP+TEoTgl}(_h|3hfvxO%{jHX$b zpA{4I5yA_#U(v#<1K%^Cz0&Gsb?G7D8u3;3pHY8W|-YOwFXjDSdLgxZ9mZ|CQ=nRavPtW^)s&$kdf!WbHe2IN0$m-9H{^wR8n}p6^;h zj8t26ex6)gj)m`KtB&S7vqlXP5~(V_RfR3BymgdXa>3nfchVkCYDt+hjI7~N(b)qN z5L_@S=fll@B+nb!3Z`FrFee@@p1qZ>1@XN|pot}pWw)Ntxu zoKx>bP46uGjQW(!;|Vd*A^joc&$+daEVlM|NK&BPlsuDWyF@Ot{zVxnoXGDe?_rd} zF@Hu^XLlH%Ok|x?o6I2~Ob#(3>^ONF^D0#fgp$p){$8IFTH!g&%R@tU*%>y{KY@fhPKaOSFc7A#VTcugZ*UNR#z|5IrJA zpWT&$>$uZ{_m*|)+7-yqZ!8U~?vy|rO7jC;QcuPgUpQiM-bm5kWYGYm_t6j0(tQwIgYmPFhDUAO6XIq{2I%noqdkkQ6A-Me> zRQ`~tiFIaj@~QdJHz^((?+q8Jn(aDlCAW|c9>qBG=6bYgjg5_C*Mx?I#He*r=;QQX zDbvZ@%MmEXk0);p9EZKb{y~R(SACTVQwI-Lb9XK>($=}_GMB&yDIv-R=dxTLPkRM1 zqLnP1bN|ihZ$fR$Bi5cYslX7MH!Gzzfitdo#N3of3{E8hR0~I!uW!$$-7dTfgqIiJliIQ*F(WnA5+`MLl}_{Pp^fqb zff?zWjlkBq*~_xpeVOaXNCH0oCpBjS*^TI>)Gmo@q zK(*ffBlQZ}&^L~*rR=xT(y@w)dh0}w>8_1I;;8d+{M}bEiBR-9P#`(irf&mYARv}h zyO8$;?%VgNsVN!lTlvNKXSS2{fD8(o0b%6dVGn+K@*-2yBFJ?=S;{hKm~jJgK~E&+cfFE0C72Iax{%^Ux#;&n&aNm`=k53Ggw-O9fMTcN=^P79Lg zWUDBWUh3kvwlL1IBfNHVa!X*F{@F4Va^dda0m1A!x(#itU{pN>TXcJqxGR?)ll_)hh{r%H2f3kz2 z5NbNtq&@6z<)eRCj@a&1S(x0vckh)h3lTX3SR6~vzjMc;=qjOtAx1huIvp}Qi8hf& zmBym0)PTn*;%W}D5LE0fMu~lUY^RT``fhp~rlMj3J&buGMZaU_WtT@)r+>l)y(r0Q zOmrZ$H@$4u*?vXYmoDkFerw=rLX{i58$RIa&~M7)BGcAQV#={gO0XH+OZB^-ZXg^;-QAvevcPDP1~NumK$%HZWvt{JhOGKCG(bL zbAh3LLfqQ*lP@bfq+56VO>?hl2al;88@gXAp3<4_Ghy8I@$~`yXs1n^Mn1Xo->5KT zhluya%p20{2a*cn8Ea-LJ~!rd?WN*~tvAL5j{RY_pv3Tz1tgnuFZOATBRgRO^3ro$ z!lm`Ejetw?Q_pATVie36$61=%xlseQU zDsENPf}1yEf6_0R`

CR>t$BEI=jRtzyTm*Z^jDj^!T&Nx(M%6={8Xi_ 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

_M6pr~oU0Whw3(Ipl$nia1` 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 YXuteJxL!WBpFP)WI>uKEFW(OTAJpqVXaE2J literal 0 HcmV?d00001 diff --git a/website/public/examples/ai-agent/image.png b/website/public/examples/ai-agent/image.png new file mode 100644 index 0000000000000000000000000000000000000000..857930f2319ba7133174f2c053c0df343f1a0971 GIT binary patch literal 34721 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 K6`YBbeEbi`$}Btp literal 0 HcmV?d00001 diff --git a/website/public/examples/ai-and-user-generated-actors-freestyle/image.png b/website/public/examples/ai-and-user-generated-actors-freestyle/image.png new file mode 100644 index 0000000000000000000000000000000000000000..34a71d8d211bbc204c869f72f4f11a7484fcce7b GIT binary patch literal 82097 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⁡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 YEBKtu%n@^XasnnRt@uy2l;QLL10vFSp8x;= literal 0 HcmV?d00001 diff --git a/website/public/examples/state/image.png b/website/public/examples/state/image.png new file mode 100644 index 0000000000000000000000000000000000000000..35400fd30d873d16a8a5027886adae5f88f0cd85 GIT binary patch literal 54543 zcmeFZcT`i~*FK098`vlU0-~TOAkvkpA|N0jy#|yHp|{Y3BA^seq)3-u6QqQaP!t3N z=@3E-2uKShv`|8TIjEm^eP*qhf95yqo%c8EdzS*qy*c-sefHV=d7gc4-aJ)RpgF~S zii(PgM)C0@4JxXW�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 JLaCSU{~siAs{8-| literal 0 HcmV?d00001 diff --git a/website/src/app/(v2)/(marketing)/templates/TemplatesPageClient.tsx b/website/src/app/(v2)/(marketing)/templates/TemplatesPageClient.tsx index 22e884cde9..a61fad4206 100644 --- a/website/src/app/(v2)/(marketing)/templates/TemplatesPageClient.tsx +++ b/website/src/app/(v2)/(marketing)/templates/TemplatesPageClient.tsx @@ -84,7 +84,7 @@ export default function TemplatesPageClient() { }; return ( -

+
@@ -113,7 +113,7 @@ export default function TemplatesPageClient() { type="text" value={searchQuery} onChange={(e) => setSearchQuery(e.target.value)} - className="block w-full rounded-lg border border-white/20 bg-white/5 pl-10 pr-3 py-3 text-white placeholder:text-zinc-500 focus:border-[#FF4500] focus:outline-none focus:ring-1 focus:ring-[#FF4500] text-base" + className="block w-full rounded-lg border border-white/20 bg-white/5 pl-10 pr-3 py-3 text-white placeholder:text-zinc-500 focus:border-white/50 focus:outline-none focus:ring-1 focus:ring-white/50 text-base" placeholder="Search templates..." />
diff --git a/website/src/app/(v2)/(marketing)/templates/[slug]/TemplateDetailClient.tsx b/website/src/app/(v2)/(marketing)/templates/[slug]/TemplateDetailClient.tsx index e0d09c20e5..529b800a87 100644 --- a/website/src/app/(v2)/(marketing)/templates/[slug]/TemplateDetailClient.tsx +++ b/website/src/app/(v2)/(marketing)/templates/[slug]/TemplateDetailClient.tsx @@ -4,8 +4,11 @@ import type { Template } from "@/data/templates/shared"; import { templates, TECHNOLOGIES, TAGS } from "@/data/templates/shared"; import { Markdown } from "@/components/Markdown"; import { TemplateCard } from "../components/TemplateCard"; -import { Icon, faGithub } from "@rivet-gg/icons"; +import { Code } from "@/components/v2/Code"; +import { Icon, faGithub, faVercel, faRailway } from "@rivet-gg/icons"; import Link from "next/link"; +import Image from "next/image"; +import { CodeBlock } from "@/components/CodeBlock"; interface TemplateDetailClientProps { template: Template; @@ -33,39 +36,131 @@ export default function TemplateDetailClient({ ? relatedTemplates : templates.filter((t) => t.name !== template.name).slice(0, 3); - const githubUrl = `https://github.com/rivet-dev/rivetkit/tree/main/examples/${template.name}`; + const githubUrl = `https://github.com/rivet-dev/rivet/tree/main/examples/${template.name}`; + + // Strip auto-generated sections from README since they're displayed in the UI + const cleanedReadmeContent = readmeContent + .replace(/^#\s+.+$/m, '') // Remove first heading + .replace(/^\n+/, '') // Remove leading newlines + .replace(/^.+?(?=\n\n|\n#)/s, '') // Remove first paragraph + .replace(/##\s+Getting Started[\s\S]*?(?=\n##|$)/m, '') // Remove Getting Started section + .replace(/##\s+License[\s\S]*$/m, '') // Remove License section + .trim(); + + // Strip markdown links from description + const description = template.description.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1'); + + // Construct Vercel deploy URL with demo card parameters + const vercelDeployUrl = new URL('https://vercel.com/new/clone'); + vercelDeployUrl.searchParams.set('repository-url', `https://github.com/rivet-dev/rivet/tree/main/examples/${template.name}`); + vercelDeployUrl.searchParams.set('project-name', template.displayName); + vercelDeployUrl.searchParams.set('demo-title', template.displayName); + vercelDeployUrl.searchParams.set('demo-description', description); + vercelDeployUrl.searchParams.set('demo-image', `https://www.rivet.dev/examples/${template.name}/image.png`); + vercelDeployUrl.searchParams.set('demo-url', `https://www.rivet.dev/templates/${template.name}`); return ( -
+
{/* Header with Image */} -
-
- {/* Placeholder Image */} -
- - - -
+
+
+ {!template.noFrontend ? ( +
+ {/* Screenshot on top */} +
+ + {/* Linear gradient overlay - darker on bottom */} +
- {/* Title and Description */} -
-

- {template.displayName} -

-

- {template.description} -

-
+
+ {/* Top Shine Highlight */} +
+ {/* Window Bar */} +
+
+
+
+
+
+
+ {/* Content Area - Screenshot */} +
+ {template.displayName} +
+
+
+ + {/* Text content overlapping bottom */} +
+
+

+ {template.displayName} +

+

+ {description} +

+
+ + + Deploy to Vercel + + + + Deploy to Railway + + + + View on GitHub + +
+
+
+
+ ) : ( +
+

+ {template.displayName} +

+

+ {description} +

+
+ )}
@@ -75,31 +170,35 @@ export default function TemplateDetailClient({ {/* Left Column - README Content */}
- {readmeContent} + {cleanedReadmeContent}
{/* Right Column - Sidebar */}