@batijs/cli 0.0.194 → 0.0.196

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.
Files changed (59) hide show
  1. package/dist/boilerplates/@batijs/auth0/files/$.env.js +5 -9
  2. package/dist/boilerplates/@batijs/auth0/files/$README.md.js +8 -17
  3. package/dist/boilerplates/@batijs/authjs/files/server/authjs-handler.ts +100 -0
  4. package/dist/boilerplates/@batijs/authjs/types/server/authjs-handler.d.ts +16 -0
  5. package/dist/boilerplates/@batijs/edgedb/files/$package.json.js +1 -1
  6. package/dist/boilerplates/@batijs/eslint/files/$package.json.js +2 -2
  7. package/dist/boilerplates/@batijs/eslint/files/.eslintrc.json +15 -2
  8. package/dist/boilerplates/@batijs/express/files/$package.json.js +10 -11
  9. package/dist/boilerplates/@batijs/express/files/express-entry.ts +51 -144
  10. package/dist/boilerplates/@batijs/express/types/express-entry.d.ts +5 -0
  11. package/dist/boilerplates/@batijs/fastify/files/$package.json.js +8 -12
  12. package/dist/boilerplates/@batijs/fastify/files/fastify-entry.ts +63 -149
  13. package/dist/boilerplates/@batijs/fastify/types/fastify-entry.d.ts +6 -0
  14. package/dist/boilerplates/@batijs/firebase-auth/files/$package.json.js +11 -3
  15. package/dist/boilerplates/@batijs/firebase-auth/files/libs/firebaseAdmin.ts +2 -1
  16. package/dist/boilerplates/@batijs/firebase-auth/files/server/firebase-auth-middleware.ts +72 -0
  17. package/dist/boilerplates/@batijs/firebase-auth/types/libs/firebaseAdmin.d.ts +2 -1
  18. package/dist/boilerplates/@batijs/firebase-auth/types/server/firebase-auth-middleware.d.ts +4 -0
  19. package/dist/boilerplates/@batijs/h3/files/$package.json.js +6 -8
  20. package/dist/boilerplates/@batijs/h3/files/h3-entry.ts +36 -175
  21. package/dist/boilerplates/@batijs/h3/types/h3-entry.d.ts +5 -0
  22. package/dist/boilerplates/@batijs/hattip/files/$package.json.js +8 -4
  23. package/dist/boilerplates/@batijs/hattip/files/hattip-entry.ts +40 -60
  24. package/dist/boilerplates/@batijs/hattip/types/hattip-entry.d.ts +1 -0
  25. package/dist/boilerplates/@batijs/hono/files/$package.json.js +8 -6
  26. package/dist/boilerplates/@batijs/hono/files/hono-entry.ts +54 -116
  27. package/dist/boilerplates/@batijs/hono/types/hono-entry.d.ts +5 -0
  28. package/dist/boilerplates/@batijs/react/files/$.eslintrc.json.js +0 -4
  29. package/dist/boilerplates/@batijs/react/files/$package.json.js +6 -6
  30. package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/TodoList.tsx +4 -4
  31. package/dist/boilerplates/@batijs/shared/files/package.json +2 -1
  32. package/dist/boilerplates/@batijs/shared-server/files/server/vike-handler.ts +15 -0
  33. package/dist/boilerplates/@batijs/shared-server/types/server/vike-handler.d.ts +2 -0
  34. package/dist/boilerplates/@batijs/solid/files/$package.json.js +1 -1
  35. package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/+Page.tsx +6 -3
  36. package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/+data.ts +9 -0
  37. package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/TodoList.tsx +4 -4
  38. package/dist/boilerplates/@batijs/solid-telefunc/types/pages/todo/+Page.d.ts +1 -4
  39. package/dist/boilerplates/@batijs/solid-telefunc/types/pages/todo/+data.d.ts +2 -0
  40. package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/+Page.tsx +6 -3
  41. package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/+data.ts +9 -0
  42. package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/TodoList.tsx +4 -4
  43. package/dist/boilerplates/@batijs/solid-trpc/types/pages/todo-trpc/+Page.d.ts +1 -4
  44. package/dist/boilerplates/@batijs/solid-trpc/types/pages/todo-trpc/+data.d.ts +2 -0
  45. package/dist/boilerplates/@batijs/tailwindcss/files/$package.json.js +1 -1
  46. package/dist/boilerplates/@batijs/telefunc/files/$package.json.js +13 -1
  47. package/dist/boilerplates/@batijs/telefunc/files/server/telefunc-handler.ts +20 -0
  48. package/dist/boilerplates/@batijs/telefunc/types/server/telefunc-handler.d.ts +2 -0
  49. package/dist/boilerplates/@batijs/vercel/files/$package.json.js +3 -3
  50. package/dist/boilerplates/@batijs/vue/files/$package.json.js +1 -1
  51. package/dist/boilerplates/@batijs/vue-telefunc/files/components/TodoList.vue +6 -6
  52. package/dist/boilerplates/@batijs/vue-trpc/files/components/TodoListTrpc.vue +6 -6
  53. package/dist/boilerplates/boilerplates.json +35 -0
  54. package/dist/index.js +3 -6
  55. package/package.json +7 -7
  56. package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/+onBeforeRender.ts +0 -15
  57. package/dist/boilerplates/@batijs/solid-telefunc/types/pages/todo/+onBeforeRender.d.ts +0 -8
  58. package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/+onBeforeRender.ts +0 -15
  59. package/dist/boilerplates/@batijs/solid-trpc/types/pages/todo-trpc/+onBeforeRender.d.ts +0 -8
@@ -1,20 +1,49 @@
1
- import CredentialsProvider from "@auth/core/providers/credentials";
2
- import { firebaseAdmin } from "@batijs/firebase-auth/libs/firebaseAdmin";
1
+ // BATI.has("auth0")
2
+ import "dotenv/config";
3
+ import { authjsHandler, authjsSessionMiddleware } from "@batijs/authjs/server/authjs-handler";
4
+ import {
5
+ firebaseAuthLoginHandler,
6
+ firebaseAuthLogoutHandler,
7
+ firebaseAuthMiddleware,
8
+ } from "@batijs/firebase-auth/server/firebase-auth-middleware";
9
+ import { vikeHandler } from "@batijs/shared-server/server/vike-handler";
10
+ import { telefuncHandler } from "@batijs/telefunc/server/telefunc-handler";
3
11
  import { appRouter } from "@batijs/trpc/trpc/server";
4
12
  import { serve } from "@hono/node-server";
5
13
  import { serveStatic } from "@hono/node-server/serve-static";
6
14
  import { fetchRequestHandler, type FetchCreateContextFnOptions } from "@trpc/server/adapters/fetch";
7
- import { getAuth } from "firebase-admin/auth";
8
15
  import { Hono } from "hono";
9
16
  import { compress } from "hono/compress";
10
- import { deleteCookie, getCookie, setCookie } from "hono/cookie";
11
- import { telefunc } from "telefunc";
12
- import { VikeAuth } from "vike-authjs";
13
- import { renderPage } from "vike/server";
17
+ import { createMiddleware } from "hono/factory";
14
18
 
15
19
  const isProduction = process.env.NODE_ENV === "production";
16
20
  const port = process.env.PORT ? parseInt(process.env.PORT, 10) : 3000;
17
21
 
22
+ interface Middleware<Context extends Record<string | number | symbol, unknown>> {
23
+ (request: Request, context: Context): Response | void | Promise<Response> | Promise<void>;
24
+ }
25
+
26
+ export function handlerAdapter<Context extends Record<string | number | symbol, unknown>>(
27
+ handler: Middleware<Context>,
28
+ ) {
29
+ return createMiddleware(async (context, next) => {
30
+ let ctx = context.get("context");
31
+ if (!ctx) {
32
+ ctx = {};
33
+ context.set("context", ctx);
34
+ }
35
+
36
+ const res = await handler(context.req.raw, ctx as Context);
37
+ context.set("context", ctx);
38
+
39
+ if (!res) {
40
+ await next();
41
+ }
42
+
43
+ return res;
44
+ });
45
+ }
46
+
18
47
  const app = new Hono();
19
48
 
20
49
  app.use(compress());
@@ -28,86 +57,23 @@ if (isProduction) {
28
57
  );
29
58
  }
30
59
 
31
- if (BATI.has("authjs")) {
60
+ if (BATI.has("authjs") || BATI.has("auth0")) {
32
61
  /**
33
- * AuthJS
34
- *
35
- * TODO: Replace secret {@see https://authjs.dev/reference/core#secret}
36
- * TODO: Choose and implement providers
37
- *
38
- * @link {@see https://authjs.dev/guides/providers/custom-provider}
62
+ * Append Auth.js session to context
39
63
  **/
40
- const Auth = VikeAuth({
41
- secret: "MY_SECRET",
42
- providers: [
43
- CredentialsProvider({
44
- name: "Credentials",
45
- credentials: {
46
- username: { label: "Username", type: "text", placeholder: "jsmith" },
47
- password: { label: "Password", type: "password" },
48
- },
49
- async authorize() {
50
- // Add logic here to look up the user from the credentials supplied
51
- const user = { id: "1", name: "J Smith", email: "jsmith@example.com" };
52
-
53
- // Any object returned will be saved in `user` property of the JWT
54
- // If you return null then an error will be displayed advising the user to check their details.
55
- // You can also Reject this callback with an Error thus the user will be sent to the error page with the error message as a query parameter
56
- return user ?? null;
57
- },
58
- }),
59
- ],
60
- });
64
+ app.use(handlerAdapter(authjsSessionMiddleware));
61
65
 
62
- app.use("/api/auth/**", (c) =>
63
- Auth({
64
- request: c.req.raw,
65
- }),
66
- );
66
+ /**
67
+ * Auth.js route
68
+ * @link {@see https://authjs.dev/getting-started/installation}
69
+ **/
70
+ app.use("/api/auth/**", handlerAdapter(authjsHandler));
67
71
  }
68
72
 
69
73
  if (BATI.has("firebase-auth")) {
70
- app.use(async (c, next) => {
71
- const sessionCookie: string = getCookie(c, "__session") || "";
72
- if (sessionCookie) {
73
- const auth = getAuth(firebaseAdmin);
74
- try {
75
- const decodedIdToken = await auth.verifySessionCookie(sessionCookie, true);
76
- const user = await auth.getUser(decodedIdToken.sub);
77
- c.set("user", user);
78
- } catch (error) {
79
- console.debug("verifySessionCookie:", error);
80
- c.set("user", null);
81
- }
82
- }
83
- await next();
84
- });
85
-
86
- app.post("/api/sessionLogin", async (c) => {
87
- const body = await c.req.json();
88
- const idToken: string = body.idToken || "";
89
-
90
- let expiresIn = 60 * 60 * 24 * 5 * 1000; // 5 days. The auth.createSessionCookie() function of Firebase expects time to be specified in miliseconds.
91
-
92
- const auth = getAuth(firebaseAdmin);
93
- try {
94
- const sessionCookie = await auth.createSessionCookie(idToken, { expiresIn });
95
- const options = { maxAge: expiresIn, httpOnly: true, secure: true };
96
-
97
- expiresIn = 60 * 60 * 24 * 5; // 5 days. The setCookie() function of Hono expects time to be specified in seconds.
98
- setCookie(c, "__session", sessionCookie, options);
99
-
100
- return c.json({ status: "success" }, 200);
101
- } catch (error) {
102
- console.error("createSessionCookie failed :", error);
103
- return c.text("Unathorized", 401);
104
- }
105
- });
106
-
107
- app.post("/api/sessionLogout", (c) => {
108
- deleteCookie(c, "__session");
109
- return c.text("Logged Out", 200);
110
- });
74
+ app.use(handlerAdapter(firebaseAuthMiddleware));
75
+ app.post("/api/sessionLogin", handlerAdapter(firebaseAuthLoginHandler));
76
+ app.post("/api/sessionLogout", handlerAdapter(firebaseAuthLogoutHandler));
111
77
  }
112
78
 
113
79
  if (BATI.has("trpc")) {
@@ -134,43 +100,15 @@ if (BATI.has("telefunc")) {
134
100
  *
135
101
  * @link {@see https://telefunc.com}
136
102
  **/
137
- app.post("/_telefunc", async (c) => {
138
- const httpResponse = await telefunc({
139
- url: c.req.url.toString(),
140
- method: c.req.method,
141
- body: await c.req.text(),
142
- context: c,
143
- });
144
- const { body, statusCode, contentType } = httpResponse;
145
-
146
- c.status(statusCode);
147
- c.header("Content-Type", contentType);
148
-
149
- return c.body(body);
150
- });
103
+ app.post("/_telefunc", handlerAdapter(telefuncHandler));
151
104
  }
152
105
 
153
- app.all("*", async (c, next) => {
154
- const pageContextInit = BATI.has("firebase-auth")
155
- ? {
156
- urlOriginal: c.req.url,
157
- user: c.get("user"),
158
- }
159
- : {
160
- urlOriginal: c.req.url,
161
- };
162
- const pageContext = await renderPage(pageContextInit);
163
- const { httpResponse } = pageContext;
164
- if (!httpResponse) {
165
- return next();
166
- } else {
167
- const { body, statusCode, headers } = httpResponse;
168
- headers.forEach(([name, value]) => c.header(name, value));
169
- c.status(statusCode);
170
-
171
- return c.body(body);
172
- }
173
- });
106
+ /**
107
+ * Vike route
108
+ *
109
+ * @link {@see https://vike.dev}
110
+ **/
111
+ app.all("*", handlerAdapter(vikeHandler));
174
112
 
175
113
  if (isProduction) {
176
114
  console.log(`Server listening on http://localhost:${port}`);
@@ -1,3 +1,8 @@
1
+ import "dotenv/config";
1
2
  import { Hono } from "hono";
3
+ interface Middleware<Context extends Record<string | number | symbol, unknown>> {
4
+ (request: Request, context: Context): Response | void | Promise<Response> | Promise<void>;
5
+ }
6
+ export declare function handlerAdapter<Context extends Record<string | number | symbol, unknown>>(handler: Middleware<Context>): import("hono").MiddlewareHandler<any, any, {}>;
2
7
  declare const app: Hono<import("hono").Env, import("hono/types").BlankSchema, "/">;
3
8
  export default app;
@@ -3,11 +3,7 @@ import { loadAsJson } from "@batijs/core";
3
3
  async function getEslintConfig(props) {
4
4
  if (!props.meta.BATI.has("eslint")) return;
5
5
  const eslintConfig = await loadAsJson(props);
6
- eslintConfig.extends = eslintConfig.extends.filter(
7
- (p) => p !== "eslint:recommended" && p !== "plugin:@typescript-eslint/recommended"
8
- );
9
6
  eslintConfig.extends.push("plugin:react/recommended");
10
- eslintConfig.plugins = eslintConfig.plugins.filter((p) => p !== "@typescript-eslint");
11
7
  eslintConfig.plugins.push("react");
12
8
  eslintConfig.settings ??= {};
13
9
  eslintConfig.settings.react = { version: "detect" };
@@ -41,21 +41,21 @@ var require_package = __commonJS({
41
41
  author: "",
42
42
  license: "MIT",
43
43
  devDependencies: {
44
- "@babel/core": "^7.24.5",
45
- "@babel/plugin-syntax-flow": "^7.24.1",
46
- "@babel/plugin-transform-react-jsx": "^7.23.4",
44
+ "@babel/core": "^7.24.6",
45
+ "@babel/plugin-syntax-flow": "^7.24.6",
46
+ "@babel/plugin-transform-react-jsx": "^7.24.6",
47
47
  "@batijs/compile": "workspace:*",
48
48
  "@types/node": "^18.19.14",
49
- "@types/react": "^18.3.2",
49
+ "@types/react": "^18.3.3",
50
50
  "@types/react-dom": "^18.3.0",
51
- "@vitejs/plugin-react": "^4.2.1",
51
+ "@vitejs/plugin-react": "^4.3.0",
52
52
  "cross-fetch": "^4.0.0",
53
53
  "eslint-plugin-react": "^7.34.1",
54
54
  react: "^18.3.1",
55
55
  "react-dom": "^18.3.1",
56
56
  tailwindcss: "^3.4.3",
57
57
  typescript: "^5.4.5",
58
- vike: "^0.4.171",
58
+ vike: "^0.4.172",
59
59
  "vike-react": "^0.4.10",
60
60
  vite: "^5.2.11"
61
61
  },
@@ -4,7 +4,7 @@ import { onNewTodo } from "./TodoList.telefunc.js";
4
4
 
5
5
  export function TodoList({ todoItemsInitial }: { todoItemsInitial: TodoItem[] }) {
6
6
  const [todoItems, setTodoItems] = useState(todoItemsInitial);
7
- const [draft, setDraft] = useState("");
7
+ const [newTodo, setNewTodo] = useState("");
8
8
  return (
9
9
  <>
10
10
  <ul>
@@ -15,12 +15,12 @@ export function TodoList({ todoItemsInitial }: { todoItemsInitial: TodoItem[] })
15
15
  <form
16
16
  onSubmit={async (ev) => {
17
17
  ev.preventDefault();
18
- const { todoItems } = await onNewTodo({ text: draft });
19
- setDraft("");
18
+ const { todoItems } = await onNewTodo({ text: newTodo });
19
+ setNewTodo("");
20
20
  setTodoItems(todoItems);
21
21
  }}
22
22
  >
23
- <input type="text" onChange={(ev) => setDraft(ev.target.value)} value={draft} />{" "}
23
+ <input type="text" onChange={(ev) => setNewTodo(ev.target.value)} value={newTodo} />{" "}
24
24
  <button type="submit">Add to-do</button>
25
25
  </form>
26
26
  </li>
@@ -11,8 +11,9 @@
11
11
  "keywords": [],
12
12
  "author": "",
13
13
  "devDependencies": {
14
+ "@auth/core": "^0.31.0",
14
15
  "typescript": "^5.4.5",
15
- "vike": "^0.4.171",
16
+ "vike": "^0.4.172",
16
17
  "vite": "^5.2.11"
17
18
  },
18
19
  "dependencies": {}
@@ -0,0 +1,15 @@
1
+ import { renderPage } from "vike/server";
2
+
3
+ export async function vikeHandler<Context extends Record<string | number | symbol, unknown>>(
4
+ request: Request,
5
+ context?: Context,
6
+ ): Promise<Response> {
7
+ const pageContextInit = { ...(context ?? {}), urlOriginal: request.url };
8
+ const pageContext = await renderPage(pageContextInit);
9
+ const response = pageContext.httpResponse;
10
+
11
+ return new Response(response?.getReadableWebStream(), {
12
+ status: response?.statusCode,
13
+ headers: response?.headers,
14
+ });
15
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="node" />
2
+ export declare function vikeHandler<Context extends Record<string | number | symbol, unknown>>(request: Request, context?: Context): Promise<Response>;
@@ -48,7 +48,7 @@ var require_package = __commonJS({
48
48
  "solid-js": "^1.8.17",
49
49
  tailwindcss: "^3.4.3",
50
50
  typescript: "^5.4.5",
51
- vike: "^0.4.171",
51
+ vike: "^0.4.172",
52
52
  "vike-solid": "^0.4.5",
53
53
  vite: "^5.2.11",
54
54
  "vite-plugin-solid": "^2.10.2"
@@ -1,12 +1,15 @@
1
- import type { TodoItem } from "@batijs/shared-db/database/todoItems";
2
1
  import { createSignal } from "solid-js";
2
+ import { useData } from "vike-solid/useData";
3
+ import type { Data } from "./+data.js";
3
4
  import { TodoList } from "./TodoList.js";
4
5
 
5
- export default function Page(props: { initialTodoItems: TodoItem[] }) {
6
+ export default function Page() {
7
+ const initialTodoItems = useData<Data>();
8
+
6
9
  return (
7
10
  <>
8
11
  <h1>To-do List</h1>
9
- <TodoList initialTodoItems={props.initialTodoItems} />
12
+ <TodoList initialTodoItems={initialTodoItems} />
10
13
  <Counter />
11
14
  </>
12
15
  );
@@ -0,0 +1,9 @@
1
+ // https://vike.dev/data
2
+ import { todoItems } from "@batijs/shared-db/database/todoItems";
3
+
4
+ export type Data = ReturnType<typeof data>;
5
+
6
+ export default function data() {
7
+ const initialTodoItems = todoItems;
8
+ return initialTodoItems;
9
+ }
@@ -4,7 +4,7 @@ import { onNewTodo } from "./TodoList.telefunc.js";
4
4
 
5
5
  export function TodoList(props: { initialTodoItems: TodoItem[] }) {
6
6
  const [todoItems, setTodoItems] = createSignal(props.initialTodoItems);
7
- const [draft, setDraft] = createSignal("");
7
+ const [newTodo, setNewTodo] = createSignal("");
8
8
  return (
9
9
  <>
10
10
  <ul>
@@ -13,12 +13,12 @@ export function TodoList(props: { initialTodoItems: TodoItem[] }) {
13
13
  <form
14
14
  onSubmit={async (ev) => {
15
15
  ev.preventDefault();
16
- const { todoItems } = await onNewTodo({ text: untrack(draft) });
17
- setDraft("");
16
+ const { todoItems } = await onNewTodo({ text: untrack(newTodo) });
17
+ setNewTodo("");
18
18
  setTodoItems(todoItems);
19
19
  }}
20
20
  >
21
- <input type="text" onChange={(ev) => setDraft(ev.target.value)} value={draft()} />{" "}
21
+ <input type="text" onChange={(ev) => setNewTodo(ev.target.value)} value={newTodo()} />{" "}
22
22
  <button type="submit">Add to-do</button>
23
23
  </form>
24
24
  </li>
@@ -1,4 +1 @@
1
- import type { TodoItem } from "@batijs/shared-db/database/todoItems";
2
- export default function Page(props: {
3
- initialTodoItems: TodoItem[];
4
- }): import("solid-js").JSX.Element;
1
+ export default function Page(): import("solid-js").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export type Data = ReturnType<typeof data>;
2
+ export default function data(): import("@batijs/shared-db/database/todoItems").TodoItem[];
@@ -1,12 +1,15 @@
1
- import type { TodoItem } from "@batijs/shared-db/database/todoItems";
2
1
  import { createSignal } from "solid-js";
2
+ import { useData } from "vike-solid/useData";
3
+ import type { Data } from "./+data.js";
3
4
  import { TodoList } from "./TodoList.js";
4
5
 
5
- export default function Page(props: { initialTodoItems: TodoItem[] }) {
6
+ export default function Page() {
7
+ const initialTodoItems = useData<Data>();
8
+
6
9
  return (
7
10
  <>
8
11
  <h1>To-do List</h1>
9
- <TodoList initialTodoItems={props.initialTodoItems} />
12
+ <TodoList initialTodoItems={initialTodoItems} />
10
13
  <Counter />
11
14
  </>
12
15
  );
@@ -0,0 +1,9 @@
1
+ // https://vike.dev/data
2
+ import { todoItems } from "@batijs/shared-db/database/todoItems";
3
+
4
+ export type Data = ReturnType<typeof data>;
5
+
6
+ export default function data() {
7
+ const initialTodoItems = todoItems;
8
+ return initialTodoItems;
9
+ }
@@ -4,7 +4,7 @@ import { createSignal, For, untrack } from "solid-js";
4
4
 
5
5
  export function TodoList(props: { initialTodoItems: TodoItem[] }) {
6
6
  const [todoItems, setTodoItems] = createSignal(props.initialTodoItems);
7
- const [draft, setDraft] = createSignal("");
7
+ const [newTodo, setNewTodo] = createSignal("");
8
8
  return (
9
9
  <>
10
10
  <ul>
@@ -13,12 +13,12 @@ export function TodoList(props: { initialTodoItems: TodoItem[] }) {
13
13
  <form
14
14
  onSubmit={async (ev) => {
15
15
  ev.preventDefault();
16
- const { todoItems } = await trpc.onNewTodo.mutate(untrack(draft));
17
- setDraft("");
16
+ const { todoItems } = await trpc.onNewTodo.mutate(untrack(newTodo));
17
+ setNewTodo("");
18
18
  setTodoItems(todoItems);
19
19
  }}
20
20
  >
21
- <input type="text" onChange={(ev) => setDraft(ev.target.value)} value={draft()} />{" "}
21
+ <input type="text" onChange={(ev) => setNewTodo(ev.target.value)} value={newTodo()} />{" "}
22
22
  <button type="submit">Add to-do</button>
23
23
  </form>
24
24
  </li>
@@ -1,4 +1 @@
1
- import type { TodoItem } from "@batijs/shared-db/database/todoItems";
2
- export default function Page(props: {
3
- initialTodoItems: TodoItem[];
4
- }): import("solid-js").JSX.Element;
1
+ export default function Page(): import("solid-js").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export type Data = ReturnType<typeof data>;
2
+ export default function data(): import("@batijs/shared-db/database/todoItems").TodoItem[];
@@ -47,7 +47,7 @@ var require_package = __commonJS({
47
47
  daisyui: "^4.11.1",
48
48
  postcss: "^8.4.38",
49
49
  tailwindcss: "^3.4.3",
50
- vike: "^0.4.171",
50
+ vike: "^0.4.172",
51
51
  vite: "^5.2.11"
52
52
  },
53
53
  dependencies: {
@@ -44,7 +44,7 @@ var require_package = __commonJS({
44
44
  "@batijs/compile": "workspace:*",
45
45
  "@types/node": "^18.19.14",
46
46
  telefunc: "^0.1.72",
47
- vike: "^0.4.171",
47
+ vike: "^0.4.172",
48
48
  vite: "^5.2.11"
49
49
  },
50
50
  dependencies: {
@@ -57,6 +57,18 @@ var require_package = __commonJS({
57
57
  if: {
58
58
  flag: "telefunc"
59
59
  }
60
+ },
61
+ exports: {
62
+ "./server/telefunc-handler": {
63
+ types: "./dist/types/server/telefunc-handler.d.ts"
64
+ }
65
+ },
66
+ typesVersions: {
67
+ "*": {
68
+ "server/telefunc-handler": [
69
+ "./dist/types/server/telefunc-handler.d.ts"
70
+ ]
71
+ }
60
72
  }
61
73
  };
62
74
  }
@@ -0,0 +1,20 @@
1
+ import { telefunc } from "telefunc";
2
+
3
+ export async function telefuncHandler<Context extends Record<string | number | symbol, unknown>>(
4
+ request: Request,
5
+ context?: Context,
6
+ ): Promise<Response> {
7
+ const httpResponse = await telefunc({
8
+ url: request.url.toString(),
9
+ method: request.method,
10
+ body: await request.text(),
11
+ context,
12
+ });
13
+ const { body, statusCode, contentType } = httpResponse;
14
+ return new Response(body, {
15
+ status: statusCode,
16
+ headers: {
17
+ "content-type": contentType,
18
+ },
19
+ });
20
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="node" />
2
+ export declare function telefuncHandler<Context extends Record<string | number | symbol, unknown>>(request: Request, context?: Context): Promise<Response>;
@@ -43,10 +43,10 @@ var require_package = __commonJS({
43
43
  devDependencies: {
44
44
  "@batijs/compile": "workspace:*",
45
45
  "@types/node": "^18.19.14",
46
- "@vite-plugin-vercel/vike": "^6.0.1",
47
- vike: "^0.4.171",
46
+ "@vite-plugin-vercel/vike": "^7.0.0",
47
+ vike: "^0.4.172",
48
48
  vite: "^5.2.11",
49
- "vite-plugin-vercel": "^6.0.1"
49
+ "vite-plugin-vercel": "^7.0.0"
50
50
  },
51
51
  dependencies: {
52
52
  "@batijs/core": "workspace:*"
@@ -51,7 +51,7 @@ var require_package = __commonJS({
51
51
  tailwindcss: "^3.4.3",
52
52
  typescript: "^5.4.5",
53
53
  "unplugin-vue-markdown": "^0.26.2",
54
- vike: "^0.4.171",
54
+ vike: "^0.4.172",
55
55
  "vike-vue": "^0.6.6",
56
56
  vite: "^5.2.11",
57
57
  vue: "^3.4.27",
@@ -4,8 +4,8 @@
4
4
  {{ item.text }}
5
5
  </li>
6
6
  <li>
7
- <form @submit.prevent="submitDraft()">
8
- <input v-model="draft" type="text" />{{ " " }}
7
+ <form @submit.prevent="submitNewTodo()">
8
+ <input v-model="newTodo" type="text" />{{ " " }}
9
9
  <button type="submit">Add to-do</button>
10
10
  </form>
11
11
  </li>
@@ -21,13 +21,13 @@ type TodoItem = { text: string };
21
21
  const attrs = useAttrs();
22
22
 
23
23
  const todoItems = ref(attrs["todo-items-initial"]) as Ref<TodoItem[]>;
24
- const draft = ref("");
24
+ const newTodo = ref("");
25
25
 
26
- const submitDraft = async () => {
26
+ const submitNewTodo = async () => {
27
27
  const result = await onNewTodo({
28
- text: draft.value,
28
+ text: newTodo.value,
29
29
  });
30
- draft.value = "";
30
+ newTodo.value = "";
31
31
  todoItems.value = result.todoItems;
32
32
  };
33
33
  </script>
@@ -4,8 +4,8 @@
4
4
  {{ item.text }}
5
5
  </li>
6
6
  <li>
7
- <form @submit.prevent="submitDraft()">
8
- <input v-model="draft" type="text" />{{ " " }}
7
+ <form @submit.prevent="submitNewTodo()">
8
+ <input v-model="newTodo" type="text" />{{ " " }}
9
9
  <button type="submit">Add to-do</button>
10
10
  </form>
11
11
  </li>
@@ -21,11 +21,11 @@ type TodoItem = { text: string };
21
21
  const attrs = useAttrs();
22
22
 
23
23
  const todoItems = ref(attrs["todo-items-initial"]) as Ref<TodoItem[]>;
24
- const draft = ref("");
24
+ const newTodo = ref("");
25
25
 
26
- const submitDraft = async () => {
27
- const result = await trpc.onNewTodo.mutate(draft.value);
28
- draft.value = "";
26
+ const submitNewTodo = async () => {
27
+ const result = await trpc.onNewTodo.mutate(newTodo.value);
28
+ newTodo.value = "";
29
29
  todoItems.value = result.todoItems;
30
30
  };
31
31
  </script>
@@ -10,6 +10,22 @@
10
10
  "files"
11
11
  ]
12
12
  },
13
+ {
14
+ "config": {
15
+ "if": {
16
+ "flag": {
17
+ "$in": [
18
+ "authjs",
19
+ "auth0"
20
+ ]
21
+ }
22
+ }
23
+ },
24
+ "folder": "@batijs/authjs",
25
+ "subfolders": [
26
+ "files"
27
+ ]
28
+ },
13
29
  {
14
30
  "config": {
15
31
  "if": {
@@ -259,6 +275,25 @@
259
275
  "files"
260
276
  ]
261
277
  },
278
+ {
279
+ "config": {
280
+ "if": {
281
+ "flag": {
282
+ "$in": [
283
+ "h3",
284
+ "hattip",
285
+ "hono",
286
+ "express",
287
+ "fastify"
288
+ ]
289
+ }
290
+ }
291
+ },
292
+ "folder": "@batijs/shared-server",
293
+ "subfolders": [
294
+ "files"
295
+ ]
296
+ },
262
297
  {
263
298
  "config": {
264
299
  "if": {