@blujosi/rivetkit-svelte 2.3.4 → 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -101,6 +101,36 @@ The handler automatically:
101
101
  | `registry` | `Registry` | Your RivetKit registry instance |
102
102
  | `isDev` | `boolean` | Enables auto-engine spawn and runner pool config |
103
103
  | `rivetSiteUrl` | `string?` | Base URL for the site. Falls back to `PUBLIC_RIVET_ENDPOINT` env var |
104
+ | `headers` | `Record<string, string>?` | Static headers added to every request |
105
+ | `getHeaders` | `(event: RequestEvent) => Record<string, string>?` | Dynamic per-request headers |
106
+ | `runtime` | `"default" \| "cloudflare"?` | Runtime to use. `"default"` uses the built-in registry handler; `"cloudflare"` delegates to `@rivetkit/cloudflare-workers`. Defaults to `"default"` |
107
+
108
+ #### Cloudflare Workers Runtime
109
+
110
+ To deploy your SvelteKit app on Cloudflare Workers, set `runtime: "cloudflare"` and install the Cloudflare Workers adapter:
111
+
112
+ ```bash
113
+ npm install @rivetkit/cloudflare-workers
114
+ ```
115
+
116
+ Then update your handler:
117
+
118
+ ```typescript
119
+ // src/routes/api/rivet/[...rest]/+server.ts
120
+ import { createRivetKitHandler } from "@blujosi/rivetkit-svelte/sveltekit";
121
+ import { dev } from "$app/environment";
122
+ import { registry } from "$backend/registry";
123
+
124
+ export const { GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS } =
125
+ createRivetKitHandler({
126
+ isDev: !!dev,
127
+ registry,
128
+ rivetSiteUrl: "http://localhost:5173",
129
+ runtime: "cloudflare",
130
+ });
131
+ ```
132
+
133
+ When `runtime: "cloudflare"` is set, the handler dynamically imports `@rivetkit/cloudflare-workers` and uses its `createHandler` to process requests via Cloudflare's Durable Objects. The SvelteKit adapter automatically passes `event.platform.env` and `event.platform.ctx` from the Cloudflare Workers environment. The `@rivetkit/cloudflare-workers` package is an optional peer dependency — it only needs to be installed when using the Cloudflare runtime.
104
134
 
105
135
  ### 3. Create the Client
106
136
 
@@ -0,0 +1,10 @@
1
+ declare module "@rivetkit/cloudflare-workers" {
2
+ import type { Registry } from "rivetkit"
3
+
4
+ export function createHandler(registry: Registry<any>): {
5
+ handler: {
6
+ fetch: (req: Request, env: unknown, ctx: unknown) => Promise<Response>
7
+ }
8
+ ActorHandler: unknown
9
+ }
10
+ }
@@ -8,6 +8,16 @@ interface RivetKitHandlerOpts {
8
8
  headers?: Record<string, string>;
9
9
  /** Dynamic headers resolved per-request. Receives the full SvelteKit RequestEvent. */
10
10
  getHeaders?: (event: RequestEvent) => Record<string, string> | Promise<Record<string, string>>;
11
+ /**
12
+ * The runtime to use for handling requests.
13
+ *
14
+ * - `"default"` — uses the built-in registry handler (Node.js / Bun compatible).
15
+ * - `"cloudflare"` — delegates to `@rivetkit/cloudflare-workers`'s `createHandler`.
16
+ * Requires `@rivetkit/cloudflare-workers` to be installed as a peer dependency.
17
+ *
18
+ * @default "default"
19
+ */
20
+ runtime?: "default" | "cloudflare";
11
21
  }
12
22
  export declare const createRivetKitHandler: (opts?: RivetKitHandlerOpts) => {
13
23
  GET: RequestHandler;
@@ -59,6 +59,10 @@ const handler = async (request, event, opts) => {
59
59
  // return fetch(newRequest, { method: request.method, redirect: "manual" })
60
60
  };
61
61
  export const createRivetKitHandler = (opts) => {
62
+ const runtime = opts?.runtime ?? "default";
63
+ if (runtime === "cloudflare") {
64
+ return createCloudflareHandler(opts);
65
+ }
62
66
  const requestHandler = async (event) => {
63
67
  return handler(event.request, event, opts);
64
68
  };
@@ -72,3 +76,41 @@ export const createRivetKitHandler = (opts) => {
72
76
  OPTIONS: requestHandler,
73
77
  };
74
78
  };
79
+ /**
80
+ * Resolves the Cloudflare Workers handler by dynamically importing
81
+ * `@rivetkit/cloudflare-workers`. The package must be installed as a
82
+ * peer dependency when `runtime: "cloudflare"` is used.
83
+ */
84
+ function createCloudflareHandler(opts) {
85
+ const registry = opts?.registry;
86
+ if (!registry) {
87
+ throw new Error("registry is required for cloudflare runtime");
88
+ }
89
+ let cfHandlerPromise;
90
+ const getCfHandler = () => {
91
+ if (!cfHandlerPromise) {
92
+ cfHandlerPromise = import("@rivetkit/cloudflare-workers").then((mod) => mod.createHandler(registry), () => {
93
+ throw new Error('runtime "cloudflare" requires @rivetkit/cloudflare-workers to be installed. ' +
94
+ "Install it with: npm install @rivetkit/cloudflare-workers");
95
+ });
96
+ }
97
+ return cfHandlerPromise;
98
+ };
99
+ const requestHandler = async (event) => {
100
+ const { handler: cfHandler } = await getCfHandler();
101
+ // Cloudflare handler expects (request, env, ctx). In SvelteKit we pass
102
+ // platform env if available and a minimal execution context.
103
+ const env = event.platform?.env ?? {};
104
+ const ctx = event.platform?.ctx ?? { waitUntil: () => { }, passThroughOnException: () => { } };
105
+ return cfHandler.fetch(event.request, env, ctx);
106
+ };
107
+ return {
108
+ GET: requestHandler,
109
+ POST: requestHandler,
110
+ PUT: requestHandler,
111
+ DELETE: requestHandler,
112
+ PATCH: requestHandler,
113
+ HEAD: requestHandler,
114
+ OPTIONS: requestHandler,
115
+ };
116
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blujosi/rivetkit-svelte",
3
- "version": "2.3.4",
3
+ "version": "2.3.5",
4
4
  "scripts": {
5
5
  "build": "vite build && npm run prepack",
6
6
  "preview": "vite preview",
@@ -38,7 +38,13 @@
38
38
  }
39
39
  },
40
40
  "peerDependencies": {
41
- "svelte": "^5.0.0"
41
+ "svelte": "^5.0.0",
42
+ "@rivetkit/cloudflare-workers": "^2.0.0"
43
+ },
44
+ "peerDependenciesMeta": {
45
+ "@rivetkit/cloudflare-workers": {
46
+ "optional": true
47
+ }
42
48
  },
43
49
  "devDependencies": {
44
50
  "@rivetkit/framework-base": "^2.1.3",