Skip to content
This repository was archived by the owner on Oct 22, 2025. It is now read-only.

Commit 0419102

Browse files
committed
chore: add rivet as a default driver
1 parent 06f601c commit 0419102

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1483
-1730
lines changed

docs/workers/quickstart.mdx

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,18 @@ export const registry = setup({
4242
import { registry } from "./registry";
4343
import { Hono } from "hono";
4444
import { serve } from "@hono/node-server";
45+
import { createNodeWebSocket } from '@hono/node-ws'
46+
47+
// Setup server
48+
const app = new Hono();
4549

4650
// Start RivetKit
4751
//
4852
// State is stored in memory, this can be configured later
49-
const { client, hono } = registry.run();
50-
51-
// Setup server
52-
const app = new Hono();
53+
const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({ app }) // TODO: do this before app
54+
const { client, hono } = registry.run({
55+
getUpgradeWebSocket: () => upgradeWebSocket,
56+
});
5357

5458
// Expose RivetKit to the frontend (optional)
5559
app.route("/registry", hono);
@@ -67,6 +71,7 @@ app.post("/increment/:name", async (c) => {
6771
serve({ fetch: app.fetch, port: 8080 }, (x) =>
6872
console.log("Listening at http://localhost:8080"),
6973
);
74+
injectWebSocket(server)
7075
```
7176

7277
```ts Express.js
@@ -77,6 +82,37 @@ TODO
7782
TODO
7883
```
7984

85+
```ts Hono
86+
import { registry } from "./registry";
87+
import { Hono } from "hono";
88+
89+
// Start RivetKit
90+
//
91+
// State is stored in memory, this can be configured later
92+
const { client, serve } = registry.server();
93+
94+
// Setup server
95+
const app = new Hono();
96+
97+
// Example endpoint
98+
app.post("/increment/:name", async (c) => {
99+
const name = c.req.param("name");
100+
101+
// Communicate with actor
102+
const counter = client.counter.getOrCreate(name);
103+
const newCount = await counter.increment(1);
104+
105+
return c.text(`New Count: ${newCount}`);
106+
});
107+
108+
// Start server
109+
serve(app);
110+
```
111+
112+
TODO: How to serve without registry helper
113+
114+
TODO: Why we need to use our own custom serve fn
115+
80116
</CodeGroup>
81117

82118
<Info>

examples/hono/src/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { serve } from "@hono/node-server";
44
import { createMemoryDriver } from "@rivetkit/memory";
55

66
// Start RivetKit
7-
const { client, hono } = registry.run({
7+
const { client, hono } = registry.server({
88
driver: createMemoryDriver(),
99
});
1010

examples/rivet/.dockerignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

examples/rivet/Dockerfile

Lines changed: 0 additions & 39 deletions
This file was deleted.

examples/rivet/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
"typescript": "^5.5.2"
1515
},
1616
"dependencies": {
17-
"@rivetkit/worker": "https://pkg.pr.new/rivet-gg/rivetkit@65c3659",
18-
"@rivetkit/rivet": "https://pkg.pr.new/rivet-gg/rivetkit/@rivetkit/rivet@65c3659"
17+
"@rivetkit/worker": "workspace:*"
1918
},
2019
"example": {
2120
"platforms": [

examples/rivet/src/registry.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,3 @@ export const registry = setup({
1717
workers: { counter },
1818
});
1919

20-
export type Registry = typeof registry;

examples/rivet/src/server.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { startManager } from "@rivetkit/rivet/manager";
21
import { registry } from "./registry";
32

4-
startManager(registry);
3+
registry.runServer();

packages/core/package.json

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@
6666
"default": "./dist/utils.cjs"
6767
}
6868
},
69+
"./drivers/rivet": {
70+
"import": {
71+
"types": "./dist/drivers/rivet/mod.d.ts",
72+
"default": "./dist/drivers/rivet/mod.js"
73+
},
74+
"require": {
75+
"types": "./dist/drivers/rivet/mod.d.cts",
76+
"default": "./dist/drivers/rivet/mod.cjs"
77+
}
78+
},
6979
"./driver-helpers": {
7080
"import": {
7181
"types": "./dist/driver-helpers/mod.d.ts",
@@ -133,7 +143,7 @@
133143
"sideEffects": false,
134144
"scripts": {
135145
"dev": "pnpm build --watch",
136-
"build": "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/worker/errors.ts src/topologies/coordinate/mod.ts src/topologies/partition/mod.ts src/utils.ts src/driver-helpers/mod.ts src/driver-test-suite/mod.ts src/test/mod.ts",
146+
"build": "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/worker/errors.ts src/topologies/coordinate/mod.ts src/topologies/partition/mod.ts src/utils.ts src/drivers/rivet/mod.ts src/driver-helpers/mod.ts src/driver-test-suite/mod.ts src/test/mod.ts",
137147
"check-types": "tsc --noEmit",
138148
"boop": "tsc --outDir dist/test -d",
139149
"test": "vitest run",
@@ -152,6 +162,7 @@
152162
"devDependencies": {
153163
"@hono/node-server": "^1.14.0",
154164
"@hono/node-ws": "^1.1.1",
165+
"@rivet-gg/actor-core": "^25.1.0",
155166
"@types/invariant": "^2",
156167
"@types/node": "^22.13.1",
157168
"@types/ws": "^8",
@@ -165,10 +176,10 @@
165176
"ws": "^8.18.1"
166177
},
167178
"peerDependencies": {
168-
"eventsource": "^3.0.5",
169-
"ws": "^8.0.0",
170179
"@hono/node-server": "^1.14.0",
171-
"@hono/node-ws": "^1.1.1"
180+
"@hono/node-ws": "^1.1.1",
181+
"eventsource": "^3.0.5",
182+
"ws": "^8.0.0"
172183
},
173184
"peerDependenciesMeta": {
174185
"eventsource": {

packages/core/src/common/log.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { getEnvUniversal } from "@/utils";
12
import {
23
type LevelIndex,
34
LevelNameMap,
@@ -75,13 +76,7 @@ export class Logger {
7576
const loggers: Record<string, Logger> = {};
7677

7778
export function getLogger(name = "default"): Logger {
78-
let defaultLogLevelEnv: LogLevel | undefined = undefined;
79-
if (typeof Deno !== "undefined") {
80-
defaultLogLevelEnv = Deno.env.get("_LOG_LEVEL") as LogLevel;
81-
} else if (typeof process !== "undefined") {
82-
// Do this after Deno since `process` is sometimes polyfilled
83-
defaultLogLevelEnv = process.env._LOG_LEVEL as LogLevel;
84-
}
79+
const defaultLogLevelEnv: LogLevel | undefined = getEnvUniversal("_LOG_LEVEL") as LogLevel | undefined;
8580

8681
const defaultLogLevel: LogLevel = defaultLogLevelEnv ?? "INFO";
8782
if (!loggers[name]) {

packages/core/src/common/utils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { z } from "zod";
22
import type { ContentfulStatusCode } from "hono/utils/http-status";
33
import * as errors from "@/worker/errors";
44
import type { Logger } from "./log";
5+
import { getEnvUniversal } from "@/utils";
56

67
// Maximum size of a key component in bytes
78
// Set to 128 bytes to allow for separators and escape characters in the full key
@@ -206,7 +207,7 @@ export function stringifyError(error: unknown): string {
206207
if (error instanceof Error) {
207208
if (
208209
typeof process !== "undefined" &&
209-
process.env._RIVETKIT_ERROR_STACK === "1"
210+
getEnvUniversal("_RIVETKIT_ERROR_STACK") === "1"
210211
) {
211212
return `${error.name}: ${error.message}${error.stack ? `\n${error.stack}` : ""}`;
212213
} else {

0 commit comments

Comments
 (0)