@evjs/runtime 0.0.1-rc.7 → 0.0.1-rc.8

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/AGENT.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Overview
6
6
 
7
- Core runtime for evjs apps. Two entry points:
7
+ Core runtime for evjs apps. Three entry points:
8
8
  - `@evjs/runtime` + `@evjs/runtime/client` — client-side (React, TanStack)
9
9
  - `@evjs/runtime/server` — server-side (Hono)
10
10
  - `@evjs/runtime/server/ecma` — edge/serverless adapter
@@ -13,8 +13,15 @@ Core runtime for evjs apps. Two entry points:
13
13
 
14
14
  ### App Bootstrap
15
15
 
16
+ Separate route definitions from app bootstrap:
17
+
16
18
  ```tsx
17
- import { createApp, createAppRootRoute, createRoute } from "@evjs/runtime";
19
+ // src/routes.tsx route tree + components
20
+ import { createAppRootRoute, createRoute, Outlet } from "@evjs/runtime";
21
+
22
+ function RootLayout() {
23
+ return <div><Outlet /></div>;
24
+ }
18
25
 
19
26
  const rootRoute = createAppRootRoute({ component: RootLayout });
20
27
 
@@ -24,7 +31,13 @@ const homeRoute = createRoute({
24
31
  component: HomePage,
25
32
  });
26
33
 
27
- const routeTree = rootRoute.addChildren([homeRoute]);
34
+ export const routeTree = rootRoute.addChildren([homeRoute]);
35
+ ```
36
+
37
+ ```tsx
38
+ // src/main.tsx — app bootstrap (keep minimal)
39
+ import { createApp } from "@evjs/runtime";
40
+ import { routeTree } from "./routes";
28
41
 
29
42
  const app = createApp({ routeTree });
30
43
 
@@ -61,17 +74,21 @@ const { data } = query(getUser).useQuery(userId);
61
74
 
62
75
  // Mutations
63
76
  const { mutate, isPending } = mutation(createUser).useMutation();
64
- mutate([{ name: "Alice", email: "alice@example.com" }]);
77
+ mutate({ name: "Alice", email: "alice@example.com" });
65
78
 
66
79
  // queryOptions — for route loaders, prefetching, cache control
67
80
  const opts = query(getUsers).queryOptions();
68
81
  queryClient.ensureQueryData(opts);
69
82
  queryClient.prefetchQuery(opts);
70
83
 
71
- // Cache invalidation
84
+ // Cache invalidation via queryKey
72
85
  queryClient.invalidateQueries({ queryKey: query(getUsers).queryKey() });
73
- // or by evId
74
- queryClient.invalidateQueries({ queryKey: [getUsers.evId] });
86
+
87
+ // Auto-invalidation on mutation success
88
+ const { mutate } = mutation(createUser).useMutation({
89
+ invalidates: [getUsers], // auto-invalidates getUsers queries on success
90
+ });
91
+ mutate({ name: "Alice", email: "alice@example.com" });
75
92
 
76
93
  // Module proxy (for grouping)
77
94
  import { createQueryProxy, createMutationProxy } from "@evjs/runtime/client";
@@ -103,17 +120,18 @@ const usersRoute = createRoute({
103
120
 
104
121
  ```
105
122
  src/
106
- ├── main.tsx ← route tree wiring + type registration
123
+ ├── main.tsx ← app bootstrap (keep minimal ~12 lines)
124
+ ├── routes.tsx ← route tree + components
107
125
  ├── api/*.server.ts ← server functions
108
- └── pages/
109
- ├── __root.tsx ← root layout (nav + <Outlet />)
110
- ├── home.tsx ← static route
111
- ├── posts/index.tsx ← nested group (layout + index + $postId)
112
- ├── dashboard.tsx ← pathless layout + child route
113
- ├── search.tsx ← typed search params
114
- └── catch.tsx ← redirect + 404
126
+ └── pages/ ← route components (for larger apps)
127
+ ├── __root.tsx
128
+ ├── home.tsx
129
+ └── posts/
115
130
  ```
116
131
 
132
+ > For small apps, define routes and components together in `routes.tsx`.
133
+ > For larger apps, split components into `pages/` directory (like `complex-routing` example).
134
+
117
135
  **Key patterns:**
118
136
 
119
137
  | Pattern | Code | Notes |
@@ -130,7 +148,10 @@ src/
130
148
  **Type-safe routing (CRITICAL):**
131
149
 
132
150
  ```tsx
133
- // main.tsx — ALWAYS register the router type
151
+ // src/main.tsx — ALWAYS register the router type
152
+ import { createApp } from "@evjs/runtime";
153
+ import { routeTree } from "./routes";
154
+
134
155
  const app = createApp({ routeTree });
135
156
 
136
157
  declare module "@tanstack/react-router" {
@@ -152,7 +173,7 @@ const { postId } = postDetailRoute.useParams();
152
173
 
153
174
  // ❌ Untyped — returns any
154
175
  const params = useParams({ from: "/posts/$postId" });
155
-
176
+ ```
156
177
 
157
178
 
158
179
  ### Transport Configuration
@@ -181,8 +202,8 @@ initTransport({
181
202
  // Custom codec (e.g., MessagePack)
182
203
  initTransport({
183
204
  codec: {
184
- encode: (data) => msgpack.encode(data),
185
- decode: (buffer) => msgpack.decode(buffer),
205
+ serialize: (data) => msgpack.encode(data),
206
+ deserialize: (buffer) => msgpack.decode(buffer),
186
207
  contentType: "application/msgpack",
187
208
  },
188
209
  });
@@ -211,7 +232,7 @@ export async function getUsers() {
211
232
  export async function getUser(id: string) {
212
233
  const user = await db.users.find(id);
213
234
  if (!user) {
214
- throw new ServerError("NOT_FOUND", { message: "User not found", id });
235
+ throw new ServerError("User not found", { status: 404, data: { id } });
215
236
  }
216
237
  return user;
217
238
  }
@@ -254,10 +275,7 @@ const handler = createFetchHandler(app);
254
275
  // Deno
255
276
  Deno.serve(handler);
256
277
 
257
- // Bun
258
- export default { fetch: handler };
259
-
260
- // Cloudflare Workers
278
+ // Bun / other edge runtimes
261
279
  export default { fetch: handler };
262
280
  ```
263
281
 
@@ -269,33 +287,38 @@ import { ServerError } from "@evjs/runtime";
269
287
  // Server — throw structured errors
270
288
  export async function getUser(id: string) {
271
289
  const user = await db.users.find(id);
272
- if (!user) throw new ServerError("NOT_FOUND", { id });
290
+ if (!user) throw new ServerError("User not found", { status: 404, data: { id } });
273
291
  return user;
274
292
  }
275
293
 
276
294
  // Client — catch typed errors
277
- import { ServerError } from "@evjs/runtime";
295
+ import { ServerFunctionError } from "@evjs/runtime";
278
296
 
279
297
  try {
280
298
  await getUser("123");
281
299
  } catch (e) {
282
- if (e instanceof ServerError) {
283
- e.code; // "NOT_FOUND"
284
- e.data; // { id: "123" }
300
+ if (e instanceof ServerFunctionError) {
301
+ e.message; // "Server function \"getUser\" threw: User not found"
302
+ e.fnId; // the function ID
303
+ e.status; // 404
285
304
  }
286
305
  }
287
306
  ```
288
307
 
289
308
  ## Middleware
290
309
 
310
+ Middleware wraps server function calls, not HTTP requests. Use for auth, logging, rate limiting:
311
+
291
312
  ```ts
292
- // src/middleware/auth.ts
293
313
  import { registerMiddleware } from "@evjs/runtime/server";
294
314
 
295
- registerMiddleware(async (c, next) => {
296
- const token = c.req.header("Authorization");
297
- if (!token) return c.json({ error: "Unauthorized" }, 401);
298
- await next();
315
+ // ctx has { fnId: string, args: unknown[] }
316
+ registerMiddleware(async (ctx, next) => {
317
+ console.log(`Calling ${ctx.fnId} with`, ctx.args);
318
+ const start = Date.now();
319
+ const result = await next();
320
+ console.log(`${ctx.fnId} took ${Date.now() - start}ms`);
321
+ return result;
299
322
  });
300
323
  ```
301
324
 
@@ -305,6 +328,8 @@ registerMiddleware(async (c, next) => {
305
328
  2. **Arguments are spread, not wrapped** — `query(getUser).useQuery(id)` not `query(getUser).useQuery([id])`
306
329
  3. **Don't call server functions directly in components** — wrap with `query()` or `mutation()`
307
330
  4. **Don't forget `"use server";`** at the top of `.server.ts` files
308
- 5. **Import `ServerError` from `@evjs/runtime`** not from `/server` or `/client`
309
- 6. **Always register the router type** — without `declare module "@tanstack/react-router" { interface Register { router: typeof app.router } }`, all route params/search will be `any`
331
+ 5. **Throw `ServerError`** on the server, catch `ServerFunctionError` on the client
332
+ 6. **Always register the router type** — without `declare module "@tanstack/react-router" { ... }`, all route params/search will be `any`
310
333
  7. **Use `route.useParams()`** not the global `useParams()` — the route-scoped version gives proper type inference
334
+ 8. **Middleware receives `(ctx, next)`** where `ctx = { fnId, args }` — not a Hono context object
335
+ 9. **Use `invalidates` on `useMutation()`** for auto cache invalidation — `invalidate()` was removed
@@ -29,8 +29,6 @@ export interface QueryProxyHandler<TArgs extends unknown[], TResponse> {
29
29
  };
30
30
  /** Returns the query key for this function and arguments. */
31
31
  queryKey(...args: TArgs): unknown[];
32
- /** Invalidate cached queries for this function. */
33
- invalidate(...args: TArgs): void;
34
32
  }
35
33
  /**
36
34
  * The interface for a single server function's mutation proxy.
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/client/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/client/query.ts"],"names":[],"mappings":"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"}
@@ -70,12 +70,6 @@ function createHandler(fn, path) {
70
70
  queryKey: (...args) => {
71
71
  return [fnId || path.join("."), ...args];
72
72
  },
73
- invalidate: (...args) => {
74
- const queryClient = useQueryClient();
75
- queryClient.invalidateQueries({
76
- queryKey: [fnId || path.join("."), ...args],
77
- });
78
- },
79
73
  path: path.join("."),
80
74
  };
81
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/client/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/client/query.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ export interface DispatchError {
51
51
  }
52
52
  export type DispatchResult = DispatchSuccess | DispatchError;
53
53
  /**
54
- * Dispatch an server function call to a registered server function.
54
+ * Dispatch a server function call to a registered server function.
55
55
  *
56
56
  * @param fnId - The unique function ID.
57
57
  * @param args - The arguments to pass to the function.
@@ -18,7 +18,7 @@ export function registerMiddleware(fn) {
18
18
  middlewares.push(fn);
19
19
  }
20
20
  /**
21
- * Dispatch an server function call to a registered server function.
21
+ * Dispatch a server function call to a registered server function.
22
22
  *
23
23
  * @param fnId - The unique function ID.
24
24
  * @param args - The arguments to pass to the function.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@evjs/runtime",
3
- "version": "0.0.1-rc.7",
4
- "description": "",
3
+ "version": "0.0.1-rc.8",
4
+ "description": "Client and server runtime for the evjs framework",
5
5
  "dependencies": {
6
6
  "@hono/node-server": "^1.19.11",
7
7
  "@logtape/logtape": "^2.0.4",
@@ -69,11 +69,23 @@
69
69
  },
70
70
  "scripts": {
71
71
  "build": "tsc",
72
+ "test": "vitest run",
72
73
  "check-types": "tsc --noEmit",
73
74
  "prepublishOnly": "npm run build"
74
75
  },
75
76
  "files": [
76
77
  "esm",
77
78
  "AGENT.md"
79
+ ],
80
+ "keywords": [
81
+ "evjs",
82
+ "react",
83
+ "server-functions",
84
+ "rpc",
85
+ "routing",
86
+ "tanstack",
87
+ "typescript",
88
+ "full-stack",
89
+ "framework"
78
90
  ]
79
91
  }
@@ -1,31 +0,0 @@
1
- /**
2
- * Pluggable serialization interface.
3
- *
4
- * By default the framework uses JSON. Implement this interface to use
5
- * a custom serializer (e.g. protobuf, msgpack, superjson, devalue).
6
- *
7
- * @example
8
- * ```ts
9
- * import superjson from "superjson";
10
- *
11
- * const superJsonSerializer: Serializer = {
12
- * contentType: "application/json",
13
- * serialize: (data) => superjson.stringify(data),
14
- * deserialize: (raw) => superjson.parse(raw as string),
15
- * };
16
- * ```
17
- */
18
- export interface Serializer {
19
- /**
20
- * Content-Type header value for the serialized format.
21
- * Defaults to `"application/json"` when not specified.
22
- */
23
- contentType?: string;
24
- /** Serialize a JS value for transmission. */
25
- serialize(data: unknown): string | ArrayBuffer;
26
- /** Deserialize a raw payload back to a JS value. */
27
- deserialize(raw: string | ArrayBuffer): unknown;
28
- }
29
- /** Built-in JSON serializer (the default). */
30
- export declare const jsonSerializer: Serializer;
31
- //# sourceMappingURL=serializer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;IAE/C,oDAAoD;IACpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;CACjD;AAED,8CAA8C;AAC9C,eAAO,MAAM,cAAc,EAAE,UAI5B,CAAC"}
package/esm/serializer.js DELETED
@@ -1,7 +0,0 @@
1
- /** Built-in JSON serializer (the default). */
2
- export const jsonSerializer = {
3
- contentType: "application/json",
4
- serialize: (data) => JSON.stringify(data),
5
- deserialize: (raw) => JSON.parse(raw),
6
- };
7
- //# sourceMappingURL=serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AA+BA,8CAA8C;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAa,CAAC;CAChD,CAAC"}