@batijs/cli 0.0.196 → 0.0.198
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/dist/boilerplates/@batijs/biome/files/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/compiled/files/$package.json.js +2 -2
- package/dist/boilerplates/@batijs/drizzle/files/$README.md.js +29 -0
- package/dist/boilerplates/@batijs/drizzle/files/$package.json.js +112 -0
- package/dist/boilerplates/@batijs/drizzle/files/database/db.ts +6 -0
- package/dist/boilerplates/@batijs/drizzle/files/database/schema.ts +11 -0
- package/dist/boilerplates/@batijs/drizzle/files/database/seed.ts +12 -0
- package/dist/boilerplates/@batijs/drizzle/files/drizzle.config.ts +10 -0
- package/dist/boilerplates/@batijs/drizzle/types/database/db.d.ts +2 -0
- package/dist/boilerplates/@batijs/drizzle/types/database/schema.d.ts +33 -0
- package/dist/boilerplates/@batijs/drizzle/types/database/seed.d.ts +1 -0
- package/dist/boilerplates/@batijs/drizzle/types/drizzle.config.d.ts +2 -0
- package/dist/boilerplates/@batijs/edgedb/files/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/eslint/files/$package.json.js +2 -2
- package/dist/boilerplates/@batijs/express/files/$package.json.js +7 -5
- package/dist/boilerplates/@batijs/express/files/express-entry.ts +5 -0
- package/dist/boilerplates/@batijs/fastify/files/$package.json.js +7 -5
- package/dist/boilerplates/@batijs/fastify/files/fastify-entry.ts +5 -0
- package/dist/boilerplates/@batijs/firebase-auth/files/$package.json.js +3 -3
- package/dist/boilerplates/@batijs/h3/files/$package.json.js +7 -5
- package/dist/boilerplates/@batijs/h3/files/h3-entry.ts +5 -0
- package/dist/boilerplates/@batijs/hattip/files/$package.json.js +6 -4
- package/dist/boilerplates/@batijs/hattip/files/hattip-entry.ts +5 -0
- package/dist/boilerplates/@batijs/hono/files/$package.json.js +9 -7
- package/dist/boilerplates/@batijs/hono/files/hono-entry.ts +5 -0
- package/dist/boilerplates/@batijs/hono/types/hono-entry.d.ts +1 -1
- package/dist/boilerplates/@batijs/prettier/files/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/prisma/files/$package.json.js +2 -2
- package/dist/boilerplates/@batijs/react/files/$README.md.js +9 -3
- package/dist/boilerplates/@batijs/react/files/$package.json.js +25 -9
- package/dist/boilerplates/@batijs/react/files/layouts/LayoutDefault.tsx +1 -2
- package/dist/boilerplates/@batijs/react/files/pages/todo/+Page.tsx +14 -0
- package/dist/boilerplates/@batijs/react/files/pages/todo/TodoList.tsx +51 -0
- package/dist/boilerplates/@batijs/react/types/pages/+config.d.ts +9 -6
- package/dist/boilerplates/@batijs/react/types/pages/todo/TodoList.d.ts +5 -0
- package/dist/boilerplates/@batijs/shared/files/package.json +3 -3
- package/dist/boilerplates/@batijs/shared-no-db/files/$package.json.js +91 -0
- package/dist/boilerplates/@batijs/shared-no-db/files/database/todoItems.ts +13 -0
- package/dist/boilerplates/@batijs/shared-no-db/types/database/todoItems.d.ts +9 -0
- package/dist/boilerplates/@batijs/shared-todo/files/pages/todo/+data.ts +15 -0
- package/dist/boilerplates/@batijs/shared-todo/files/server/create-todo-handler.ts +24 -0
- package/dist/boilerplates/@batijs/shared-todo/types/pages/todo/+data.d.ts +4 -0
- package/dist/boilerplates/@batijs/shared-todo/types/server/create-todo-handler.d.ts +2 -0
- package/dist/boilerplates/@batijs/solid/files/$README.md.js +9 -3
- package/dist/boilerplates/@batijs/solid/files/$package.json.js +19 -3
- package/dist/boilerplates/@batijs/solid/files/layouts/LayoutDefault.tsx +1 -2
- package/dist/boilerplates/@batijs/solid/files/pages/todo/+Page.tsx +13 -0
- package/dist/boilerplates/@batijs/solid/files/pages/todo/TodoList.tsx +49 -0
- package/dist/boilerplates/@batijs/solid/types/pages/todo/TodoList.d.ts +5 -0
- package/dist/boilerplates/@batijs/tailwindcss/files/$package.json.js +4 -4
- package/dist/boilerplates/@batijs/telefunc/files/$package.json.js +12 -3
- package/dist/boilerplates/@batijs/telefunc/files/pages/todo/TodoList.telefunc.ts +11 -0
- package/dist/boilerplates/@batijs/telefunc/types/pages/todo/TodoList.telefunc.d.ts +3 -0
- package/dist/boilerplates/@batijs/trpc/files/$package.json.js +4 -2
- package/dist/boilerplates/@batijs/trpc/files/trpc/server.ts +8 -3
- package/dist/boilerplates/@batijs/trpc/types/trpc/client.d.ts +1 -3
- package/dist/boilerplates/@batijs/trpc/types/trpc/server.d.ts +1 -3
- package/dist/boilerplates/@batijs/vercel/files/$package.json.js +2 -2
- package/dist/boilerplates/@batijs/vue/files/$README.md.js +9 -3
- package/dist/boilerplates/@batijs/vue/files/$package.json.js +9 -5
- package/dist/boilerplates/@batijs/vue/files/layouts/LayoutDefault.vue +1 -4
- package/dist/boilerplates/@batijs/vue/files/pages/todo/+Page.vue +14 -0
- package/dist/boilerplates/@batijs/vue/files/pages/todo/TodoList.vue +49 -0
- package/dist/boilerplates/@batijs/vue/types/pages/+config.d.ts +95 -2
- package/dist/boilerplates/boilerplates.json +23 -98
- package/dist/{chunk-5DE3DJHR.js → chunk-TGVSJ5SD.js} +1 -1
- package/dist/index.js +21 -30
- package/dist/{prompt-YMZWKECL.js → prompt-XFX2ZGRD.js} +27 -54
- package/package.json +8 -8
- package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/+Page.tsx +0 -27
- package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/+data.ts +0 -9
- package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/TodoList.telefunc.ts +0 -6
- package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/TodoList.tsx +0 -30
- package/dist/boilerplates/@batijs/react-telefunc/types/pages/todo/+data.d.ts +0 -2
- package/dist/boilerplates/@batijs/react-telefunc/types/pages/todo/TodoList.d.ts +0 -4
- package/dist/boilerplates/@batijs/react-telefunc/types/pages/todo/TodoList.telefunc.d.ts +0 -4
- package/dist/boilerplates/@batijs/react-trpc/files/pages/todo-trpc/+Page.tsx +0 -27
- package/dist/boilerplates/@batijs/react-trpc/files/pages/todo-trpc/+config.ts +0 -5
- package/dist/boilerplates/@batijs/react-trpc/files/pages/todo-trpc/+data.ts +0 -9
- package/dist/boilerplates/@batijs/react-trpc/files/pages/todo-trpc/TodoList.tsx +0 -30
- package/dist/boilerplates/@batijs/react-trpc/types/pages/todo-trpc/+Page.d.ts +0 -1
- package/dist/boilerplates/@batijs/react-trpc/types/pages/todo-trpc/+config.d.ts +0 -4
- package/dist/boilerplates/@batijs/react-trpc/types/pages/todo-trpc/+data.d.ts +0 -2
- package/dist/boilerplates/@batijs/react-trpc/types/pages/todo-trpc/TodoList.d.ts +0 -4
- package/dist/boilerplates/@batijs/shared-db/files/database/todoItems.ts +0 -12
- package/dist/boilerplates/@batijs/shared-db/types/database/todoItems.d.ts +0 -6
- package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/+Page.tsx +0 -28
- package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/+config.ts +0 -3
- package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/+data.ts +0 -9
- package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/TodoList.telefunc.ts +0 -8
- package/dist/boilerplates/@batijs/solid-telefunc/files/pages/todo/TodoList.tsx +0 -28
- package/dist/boilerplates/@batijs/solid-telefunc/types/pages/todo/+config.d.ts +0 -4
- package/dist/boilerplates/@batijs/solid-telefunc/types/pages/todo/+data.d.ts +0 -2
- package/dist/boilerplates/@batijs/solid-telefunc/types/pages/todo/TodoList.d.ts +0 -4
- package/dist/boilerplates/@batijs/solid-telefunc/types/pages/todo/TodoList.telefunc.d.ts +0 -5
- package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/+Page.tsx +0 -28
- package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/+config.ts +0 -3
- package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/+data.ts +0 -9
- package/dist/boilerplates/@batijs/solid-trpc/files/pages/todo-trpc/TodoList.tsx +0 -28
- package/dist/boilerplates/@batijs/solid-trpc/types/pages/todo-trpc/+Page.d.ts +0 -1
- package/dist/boilerplates/@batijs/solid-trpc/types/pages/todo-trpc/+config.d.ts +0 -4
- package/dist/boilerplates/@batijs/solid-trpc/types/pages/todo-trpc/+data.d.ts +0 -2
- package/dist/boilerplates/@batijs/solid-trpc/types/pages/todo-trpc/TodoList.d.ts +0 -4
- package/dist/boilerplates/@batijs/vue-telefunc/files/components/TodoList.telefunc.ts +0 -8
- package/dist/boilerplates/@batijs/vue-telefunc/files/components/TodoList.vue +0 -33
- package/dist/boilerplates/@batijs/vue-telefunc/files/pages/todo/+Page.vue +0 -20
- package/dist/boilerplates/@batijs/vue-telefunc/files/pages/todo/+config.ts +0 -3
- package/dist/boilerplates/@batijs/vue-telefunc/files/pages/todo/+data.ts +0 -9
- package/dist/boilerplates/@batijs/vue-telefunc/types/components/TodoList.telefunc.d.ts +0 -5
- package/dist/boilerplates/@batijs/vue-telefunc/types/pages/todo/+config.d.ts +0 -4
- package/dist/boilerplates/@batijs/vue-telefunc/types/pages/todo/+data.d.ts +0 -2
- package/dist/boilerplates/@batijs/vue-trpc/files/components/TodoListTrpc.vue +0 -31
- package/dist/boilerplates/@batijs/vue-trpc/files/pages/todo-trpc/+Page.vue +0 -20
- package/dist/boilerplates/@batijs/vue-trpc/files/pages/todo-trpc/+config.ts +0 -3
- package/dist/boilerplates/@batijs/vue-trpc/files/pages/todo-trpc/+data.ts +0 -9
- package/dist/boilerplates/@batijs/vue-trpc/types/pages/todo-trpc/+config.d.ts +0 -4
- package/dist/boilerplates/@batijs/vue-trpc/types/pages/todo-trpc/+data.d.ts +0 -2
- /package/dist/boilerplates/@batijs/{react-telefunc → react}/types/pages/todo/+Page.d.ts +0 -0
- /package/dist/boilerplates/@batijs/{react-telefunc → shared-todo}/files/pages/todo/+config.ts +0 -0
- /package/dist/boilerplates/@batijs/{react-telefunc → shared-todo}/types/pages/todo/+config.d.ts +0 -0
- /package/dist/boilerplates/@batijs/{solid-telefunc → solid}/types/pages/todo/+Page.d.ts +0 -0
|
@@ -41,23 +41,27 @@ var require_package = __commonJS({
|
|
|
41
41
|
author: "",
|
|
42
42
|
license: "MIT",
|
|
43
43
|
devDependencies: {
|
|
44
|
-
"@
|
|
45
|
-
"@
|
|
46
|
-
"@
|
|
47
|
-
"@batijs/
|
|
44
|
+
"@batijs/compile": "workspace:^",
|
|
45
|
+
"@batijs/drizzle": "workspace:^",
|
|
46
|
+
"@batijs/shared-todo": "workspace:^",
|
|
47
|
+
"@batijs/telefunc": "workspace:^",
|
|
48
|
+
"@batijs/trpc": "workspace:^",
|
|
49
|
+
"@babel/core": "^7.24.7",
|
|
50
|
+
"@babel/plugin-syntax-flow": "^7.24.7",
|
|
51
|
+
"@babel/plugin-transform-react-jsx": "^7.24.7",
|
|
48
52
|
"@types/node": "^18.19.14",
|
|
49
53
|
"@types/react": "^18.3.3",
|
|
50
54
|
"@types/react-dom": "^18.3.0",
|
|
51
55
|
"@vitejs/plugin-react": "^4.3.0",
|
|
52
56
|
"cross-fetch": "^4.0.0",
|
|
53
|
-
"eslint-plugin-react": "^7.34.
|
|
57
|
+
"eslint-plugin-react": "^7.34.2",
|
|
54
58
|
react: "^18.3.1",
|
|
55
59
|
"react-dom": "^18.3.1",
|
|
56
|
-
tailwindcss: "^3.4.
|
|
60
|
+
tailwindcss: "^3.4.4",
|
|
57
61
|
typescript: "^5.4.5",
|
|
58
|
-
vike: "^0.4.
|
|
59
|
-
"vike-react": "^0.4.
|
|
60
|
-
vite: "^5.2.
|
|
62
|
+
vike: "^0.4.174",
|
|
63
|
+
"vike-react": "^0.4.13",
|
|
64
|
+
vite: "^5.2.12"
|
|
61
65
|
},
|
|
62
66
|
dependencies: {
|
|
63
67
|
"@batijs/core": "workspace:*"
|
|
@@ -118,6 +122,12 @@ var require_package = __commonJS({
|
|
|
118
122
|
},
|
|
119
123
|
"./pages/star-wars/index/+title": {
|
|
120
124
|
types: "./dist/types/pages/star-wars/index/+title.d.ts"
|
|
125
|
+
},
|
|
126
|
+
"./pages/todo/TodoList": {
|
|
127
|
+
types: "./dist/types/pages/todo/TodoList.d.ts"
|
|
128
|
+
},
|
|
129
|
+
"./pages/todo/+Page": {
|
|
130
|
+
types: "./dist/types/pages/todo/+Page.d.ts"
|
|
121
131
|
}
|
|
122
132
|
},
|
|
123
133
|
typesVersions: {
|
|
@@ -169,6 +179,12 @@ var require_package = __commonJS({
|
|
|
169
179
|
],
|
|
170
180
|
"pages/star-wars/index/+title": [
|
|
171
181
|
"./dist/types/pages/star-wars/index/+title.d.ts"
|
|
182
|
+
],
|
|
183
|
+
"pages/todo/TodoList": [
|
|
184
|
+
"./dist/types/pages/todo/TodoList.d.ts"
|
|
185
|
+
],
|
|
186
|
+
"pages/todo/+Page": [
|
|
187
|
+
"./dist/types/pages/todo/+Page.d.ts"
|
|
172
188
|
]
|
|
173
189
|
}
|
|
174
190
|
}
|
|
@@ -20,8 +20,7 @@ export default function LayoutDefault({ children }: { children: React.ReactNode
|
|
|
20
20
|
<Sidebar>
|
|
21
21
|
<Logo />
|
|
22
22
|
<Link href="/">Welcome</Link>
|
|
23
|
-
|
|
24
|
-
{BATI.has("trpc") ? <Link href="/todo-trpc">Todo (tRPC)</Link> : undefined}
|
|
23
|
+
<Link href="/todo">Todo</Link>
|
|
25
24
|
<Link href="/star-wars">Data Fetching</Link>
|
|
26
25
|
</Sidebar>
|
|
27
26
|
<Content>{children}</Content>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Data } from "@batijs/shared-todo/pages/todo/+data";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { useData } from "vike-react/useData";
|
|
4
|
+
import { TodoList } from "./TodoList.js";
|
|
5
|
+
|
|
6
|
+
export default function Page() {
|
|
7
|
+
const todoItemsInitial = useData<Data>();
|
|
8
|
+
return (
|
|
9
|
+
<>
|
|
10
|
+
<h1>To-do List</h1>
|
|
11
|
+
<TodoList initialTodoItems={todoItemsInitial} />
|
|
12
|
+
</>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { onNewTodo } from "@batijs/telefunc/pages/todo/TodoList.telefunc";
|
|
2
|
+
import { trpc } from "@batijs/trpc/trpc/client";
|
|
3
|
+
import React, { useState } from "react";
|
|
4
|
+
|
|
5
|
+
export function TodoList({ initialTodoItems }: { initialTodoItems: { text: string }[] }) {
|
|
6
|
+
const [todoItems, setTodoItems] = useState(initialTodoItems);
|
|
7
|
+
const [newTodo, setNewTodo] = useState("");
|
|
8
|
+
return (
|
|
9
|
+
<>
|
|
10
|
+
<ul>
|
|
11
|
+
{todoItems.map((todoItem) => (
|
|
12
|
+
<li key={todoItem.text}>{todoItem.text}</li>
|
|
13
|
+
))}
|
|
14
|
+
</ul>
|
|
15
|
+
<div>
|
|
16
|
+
<form
|
|
17
|
+
onSubmit={async (ev) => {
|
|
18
|
+
ev.preventDefault();
|
|
19
|
+
|
|
20
|
+
// Optimistic UI update
|
|
21
|
+
setTodoItems((prev) => [...prev, { text: newTodo }]);
|
|
22
|
+
try {
|
|
23
|
+
if (BATI.has("telefunc")) {
|
|
24
|
+
await onNewTodo({ text: newTodo });
|
|
25
|
+
} else if (BATI.has("trpc")) {
|
|
26
|
+
await trpc.onNewTodo.mutate(newTodo);
|
|
27
|
+
} else {
|
|
28
|
+
const response = await fetch("/api/todo/create", {
|
|
29
|
+
method: "POST",
|
|
30
|
+
body: JSON.stringify({ text: newTodo }),
|
|
31
|
+
headers: {
|
|
32
|
+
"Content-Type": "application/json",
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
await response.blob();
|
|
36
|
+
}
|
|
37
|
+
setNewTodo("");
|
|
38
|
+
} catch (e) {
|
|
39
|
+
console.error(e);
|
|
40
|
+
// rollback
|
|
41
|
+
setTodoItems((prev) => prev.slice(0, -1));
|
|
42
|
+
}
|
|
43
|
+
}}
|
|
44
|
+
>
|
|
45
|
+
<input type="text" onChange={(ev) => setNewTodo(ev.target.value)} value={newTodo} />{" "}
|
|
46
|
+
<button type="submit">Add to-do</button>
|
|
47
|
+
</form>
|
|
48
|
+
</div>
|
|
49
|
+
</>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
@@ -7,6 +7,9 @@ declare const _default: {
|
|
|
7
7
|
title: string;
|
|
8
8
|
extends: {
|
|
9
9
|
name: string;
|
|
10
|
+
require: {
|
|
11
|
+
vike: string;
|
|
12
|
+
};
|
|
10
13
|
onRenderHtml: "import:vike-react/renderer/onRenderHtml:onRenderHtml";
|
|
11
14
|
onRenderClient: "import:vike-react/renderer/onRenderClient:onRenderClient";
|
|
12
15
|
passToClient: string[];
|
|
@@ -53,7 +56,7 @@ declare const _default: {
|
|
|
53
56
|
server: true;
|
|
54
57
|
};
|
|
55
58
|
};
|
|
56
|
-
|
|
59
|
+
streamIsRequired: {
|
|
57
60
|
env: {
|
|
58
61
|
server: true;
|
|
59
62
|
};
|
|
@@ -68,19 +71,19 @@ declare const _default: {
|
|
|
68
71
|
client: true;
|
|
69
72
|
};
|
|
70
73
|
};
|
|
71
|
-
|
|
74
|
+
Wrapper: {
|
|
75
|
+
cumulative: true;
|
|
72
76
|
env: {
|
|
73
77
|
client: true;
|
|
74
78
|
server: true;
|
|
75
79
|
};
|
|
76
80
|
};
|
|
77
|
-
|
|
81
|
+
name: {
|
|
78
82
|
env: {
|
|
79
|
-
|
|
80
|
-
server: true;
|
|
83
|
+
config: true;
|
|
81
84
|
};
|
|
82
85
|
};
|
|
83
|
-
|
|
86
|
+
require: {
|
|
84
87
|
env: {
|
|
85
88
|
config: true;
|
|
86
89
|
};
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
"keywords": [],
|
|
12
12
|
"author": "",
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@auth/core": "^0.
|
|
14
|
+
"@auth/core": "^0.32.0",
|
|
15
15
|
"typescript": "^5.4.5",
|
|
16
|
-
"vike": "^0.4.
|
|
17
|
-
"vite": "^5.2.
|
|
16
|
+
"vike": "^0.4.174",
|
|
17
|
+
"vite": "^5.2.12"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {}
|
|
20
20
|
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
24
|
+
mod
|
|
25
|
+
));
|
|
26
|
+
|
|
27
|
+
// package.json
|
|
28
|
+
var require_package = __commonJS({
|
|
29
|
+
"package.json"(exports, module) {
|
|
30
|
+
module.exports = {
|
|
31
|
+
name: "@batijs/shared-no-db",
|
|
32
|
+
private: true,
|
|
33
|
+
version: "0.0.1",
|
|
34
|
+
description: "",
|
|
35
|
+
type: "module",
|
|
36
|
+
scripts: {
|
|
37
|
+
"check-types": "tsc --noEmit",
|
|
38
|
+
build: "bati-compile-boilerplate"
|
|
39
|
+
},
|
|
40
|
+
keywords: [],
|
|
41
|
+
author: "",
|
|
42
|
+
license: "MIT",
|
|
43
|
+
devDependencies: {
|
|
44
|
+
"@batijs/compile": "workspace:*",
|
|
45
|
+
"@types/node": "^18.19.14",
|
|
46
|
+
lowdb: "^7.0.1"
|
|
47
|
+
},
|
|
48
|
+
dependencies: {
|
|
49
|
+
"@batijs/core": "workspace:*"
|
|
50
|
+
},
|
|
51
|
+
files: [
|
|
52
|
+
"dist/"
|
|
53
|
+
],
|
|
54
|
+
bati: {
|
|
55
|
+
if: {
|
|
56
|
+
flag: {
|
|
57
|
+
$not: {
|
|
58
|
+
$in: [
|
|
59
|
+
"drizzle"
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
exports: {
|
|
66
|
+
"./database/todoItems": {
|
|
67
|
+
types: "./dist/types/database/todoItems.d.ts"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
typesVersions: {
|
|
71
|
+
"*": {
|
|
72
|
+
"database/todoItems": [
|
|
73
|
+
"./dist/types/database/todoItems.d.ts"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// files/$package.json.ts
|
|
82
|
+
import { addDependency, loadAsJson } from "@batijs/core";
|
|
83
|
+
async function getPackageJson(props) {
|
|
84
|
+
const packageJson = await loadAsJson(props);
|
|
85
|
+
return addDependency(packageJson, await Promise.resolve().then(() => __toESM(require_package(), 1)).then((x) => x.default), {
|
|
86
|
+
dependencies: ["lowdb"]
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export {
|
|
90
|
+
getPackageJson as default
|
|
91
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LowSync } from "lowdb";
|
|
2
|
+
import { JSONFileSyncPreset } from "lowdb/node";
|
|
3
|
+
|
|
4
|
+
interface TodoItem {
|
|
5
|
+
text: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const lowDb: LowSync<{ todo: TodoItem[] }> = JSONFileSyncPreset<{ todo: TodoItem[] }>("db.json", {
|
|
9
|
+
todo: [{ text: "Buy milk" }, { text: "Buy strawberries" }],
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export { lowDb };
|
|
13
|
+
export type { TodoItem };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// https://vike.dev/data
|
|
2
|
+
import { db } from "@batijs/drizzle/database/db";
|
|
3
|
+
import { todoTable } from "@batijs/drizzle/database/schema";
|
|
4
|
+
import { lowDb } from "@batijs/shared-no-db/database/todoItems";
|
|
5
|
+
|
|
6
|
+
export type Data = { text: string }[];
|
|
7
|
+
|
|
8
|
+
export default async function data(): Promise<Data> {
|
|
9
|
+
if (BATI.has("drizzle")) {
|
|
10
|
+
return db.select().from(todoTable).all();
|
|
11
|
+
} else {
|
|
12
|
+
lowDb.read();
|
|
13
|
+
return lowDb.data.todo;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { db } from "@batijs/drizzle/database/db";
|
|
2
|
+
import { todoTable } from "@batijs/drizzle/database/schema";
|
|
3
|
+
import { lowDb } from "@batijs/shared-no-db/database/todoItems";
|
|
4
|
+
|
|
5
|
+
export async function createTodoHandler<Context extends Record<string | number | symbol, unknown>>(
|
|
6
|
+
request: Request,
|
|
7
|
+
_context?: Context,
|
|
8
|
+
): Promise<Response> {
|
|
9
|
+
// In a real case, user-provided data should ALWAYS be validated with tools like zod
|
|
10
|
+
const newTodo = (await request.json()) as { text: string };
|
|
11
|
+
|
|
12
|
+
if (BATI.has("drizzle")) {
|
|
13
|
+
await db.insert(todoTable).values({ text: newTodo.text });
|
|
14
|
+
} else {
|
|
15
|
+
await lowDb.update(({ todo }) => todo.push({ text: newTodo.text }));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return new Response(JSON.stringify({ status: "OK" }), {
|
|
19
|
+
status: 200,
|
|
20
|
+
headers: {
|
|
21
|
+
"content-type": "application/json",
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -3,32 +3,38 @@ import { loadReadme } from "@batijs/core";
|
|
|
3
3
|
async function getReadme(props) {
|
|
4
4
|
const content = await loadReadme(props);
|
|
5
5
|
const about = `
|
|
6
|
+
|
|
6
7
|
This app is ready to start. It's powered by [Vike](https://vike.dev) and [SolidJS](https://www.solidjs.com/guides/getting-started).
|
|
7
8
|
|
|
8
9
|
### \`/pages/+config.ts\`
|
|
9
|
-
|
|
10
|
+
|
|
11
|
+
Such \`+\` files are [the interface](https://vike.dev/config) between Vike and your code. It defines:
|
|
10
12
|
- A default [\`<Layout>\` component](https://vike.dev/Layout) (that wraps your [\`<Page>\` components](https://vike.dev/Page)).
|
|
11
13
|
- A default [\`title\`](https://vike.dev/head).
|
|
12
14
|
- Default [\`<head>\` tags](https://vike.dev/head).
|
|
13
15
|
|
|
14
16
|
### Routing
|
|
17
|
+
|
|
15
18
|
[Vike's built-in router](https://vike.dev/routing) lets you choose between:
|
|
16
19
|
- [Filesystem Routing](https://vike.dev/filesystem-routing) (the URL of a page is determined based on where its \`+Page.jsx\` file is located on the filesystem)
|
|
17
20
|
- [Route Strings](https://vike.dev/route-string)
|
|
18
21
|
- [Route Functions](https://vike.dev/route-function)
|
|
19
22
|
|
|
20
23
|
### \`/pages/_error/+Page.jsx\`
|
|
24
|
+
|
|
21
25
|
The [error page](https://vike.dev/error-page) which is rendered when errors occur.
|
|
22
26
|
|
|
23
27
|
### \`/pages/+onPageTransitionStart.ts\` and \`/pages/+onPageTransitionEnd.ts\`
|
|
28
|
+
|
|
24
29
|
The [\`onPageTransitionStart()\` hook](https://vike.dev/onPageTransitionStart), together with [\`onPageTransitionEnd()\`](https://vike.dev/onPageTransitionEnd), enables you to implement page transition animations.
|
|
25
30
|
|
|
26
31
|
### SSR
|
|
32
|
+
|
|
27
33
|
SSR is enabled by default. You can [disable it](https://vike.dev/ssr) for all your pages or only for some pages.
|
|
28
34
|
|
|
29
35
|
### HTML Streaming
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
|
|
37
|
+
You can enable/disable [HTML streaming](https://vike.dev/streaming) for all your pages, or only for some pages while still using it for others.`;
|
|
32
38
|
content.addAbout(about);
|
|
33
39
|
return content.finalize();
|
|
34
40
|
}
|
|
@@ -42,15 +42,19 @@ var require_package = __commonJS({
|
|
|
42
42
|
license: "MIT",
|
|
43
43
|
devDependencies: {
|
|
44
44
|
"@batijs/compile": "workspace:*",
|
|
45
|
+
"@batijs/drizzle": "workspace:*",
|
|
46
|
+
"@batijs/shared-todo": "workspace:*",
|
|
47
|
+
"@batijs/telefunc": "workspace:*",
|
|
48
|
+
"@batijs/trpc": "workspace:^",
|
|
45
49
|
"@types/node": "^18.19.14",
|
|
46
50
|
"cross-fetch": "^4.0.0",
|
|
47
51
|
"eslint-plugin-solid": "^0.14.0",
|
|
48
52
|
"solid-js": "^1.8.17",
|
|
49
|
-
tailwindcss: "^3.4.
|
|
53
|
+
tailwindcss: "^3.4.4",
|
|
50
54
|
typescript: "^5.4.5",
|
|
51
|
-
vike: "^0.4.
|
|
55
|
+
vike: "^0.4.174",
|
|
52
56
|
"vike-solid": "^0.4.5",
|
|
53
|
-
vite: "^5.2.
|
|
57
|
+
vite: "^5.2.12",
|
|
54
58
|
"vite-plugin-solid": "^2.10.2"
|
|
55
59
|
},
|
|
56
60
|
dependencies: {
|
|
@@ -112,6 +116,12 @@ var require_package = __commonJS({
|
|
|
112
116
|
},
|
|
113
117
|
"./pages/star-wars/index/+title": {
|
|
114
118
|
types: "./dist/types/pages/star-wars/index/+title.d.ts"
|
|
119
|
+
},
|
|
120
|
+
"./pages/todo/TodoList": {
|
|
121
|
+
types: "./dist/types/pages/todo/TodoList.d.ts"
|
|
122
|
+
},
|
|
123
|
+
"./pages/todo/+Page": {
|
|
124
|
+
types: "./dist/types/pages/todo/+Page.d.ts"
|
|
115
125
|
}
|
|
116
126
|
},
|
|
117
127
|
typesVersions: {
|
|
@@ -163,6 +173,12 @@ var require_package = __commonJS({
|
|
|
163
173
|
],
|
|
164
174
|
"pages/star-wars/index/+title": [
|
|
165
175
|
"./dist/types/pages/star-wars/index/+title.d.ts"
|
|
176
|
+
],
|
|
177
|
+
"pages/todo/TodoList": [
|
|
178
|
+
"./dist/types/pages/todo/TodoList.d.ts"
|
|
179
|
+
],
|
|
180
|
+
"pages/todo/+Page": [
|
|
181
|
+
"./dist/types/pages/todo/+Page.d.ts"
|
|
166
182
|
]
|
|
167
183
|
}
|
|
168
184
|
}
|
|
@@ -20,8 +20,7 @@ export default function LayoutDefault(props: { children?: JSX.Element }) {
|
|
|
20
20
|
<Sidebar>
|
|
21
21
|
<Logo />
|
|
22
22
|
<Link href="/">Welcome</Link>
|
|
23
|
-
|
|
24
|
-
{BATI.has("trpc") ? <Link href="/todo-trpc">Todo (tRPC)</Link> : undefined}
|
|
23
|
+
<Link href="/todo">Todo</Link>
|
|
25
24
|
<Link href="/star-wars">Data Fetching</Link>
|
|
26
25
|
</Sidebar>
|
|
27
26
|
<Content>{props.children}</Content>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Data } from "@batijs/shared-todo/pages/todo/+data";
|
|
2
|
+
import { useData } from "vike-solid/useData";
|
|
3
|
+
import { TodoList } from "./TodoList.js";
|
|
4
|
+
|
|
5
|
+
export default function Page() {
|
|
6
|
+
const initialTodoItems = useData<Data>();
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<h1>To-do List</h1>
|
|
10
|
+
<TodoList initialTodoItems={initialTodoItems} />
|
|
11
|
+
</>
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { onNewTodo } from "@batijs/telefunc/pages/todo/TodoList.telefunc";
|
|
2
|
+
import { trpc } from "@batijs/trpc/trpc/client";
|
|
3
|
+
import { createSignal, For, untrack } from "solid-js";
|
|
4
|
+
|
|
5
|
+
export function TodoList(props: { initialTodoItems: { text: string }[] }) {
|
|
6
|
+
const [todoItems, setTodoItems] = createSignal(props.initialTodoItems);
|
|
7
|
+
const [newTodo, setNewTodo] = createSignal("");
|
|
8
|
+
return (
|
|
9
|
+
<>
|
|
10
|
+
<ul>
|
|
11
|
+
<For each={todoItems()}>{(todoItem) => <li>{todoItem.text}</li>}</For>
|
|
12
|
+
</ul>
|
|
13
|
+
<div>
|
|
14
|
+
<form
|
|
15
|
+
onSubmit={async (ev) => {
|
|
16
|
+
ev.preventDefault();
|
|
17
|
+
|
|
18
|
+
// Optimistic UI update
|
|
19
|
+
setTodoItems((prev) => [...prev, { text: untrack(newTodo) }]);
|
|
20
|
+
try {
|
|
21
|
+
if (BATI.has("telefunc")) {
|
|
22
|
+
await onNewTodo({ text: untrack(newTodo) });
|
|
23
|
+
} else if (BATI.has("trpc")) {
|
|
24
|
+
await trpc.onNewTodo.mutate(untrack(newTodo));
|
|
25
|
+
} else {
|
|
26
|
+
const response = await fetch("/api/todo/create", {
|
|
27
|
+
method: "POST",
|
|
28
|
+
body: JSON.stringify({ text: untrack(newTodo) }),
|
|
29
|
+
headers: {
|
|
30
|
+
"Content-Type": "application/json",
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
await response.blob();
|
|
34
|
+
}
|
|
35
|
+
setNewTodo("");
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.error(e);
|
|
38
|
+
// rollback
|
|
39
|
+
setTodoItems((prev) => prev.slice(0, -1));
|
|
40
|
+
}
|
|
41
|
+
}}
|
|
42
|
+
>
|
|
43
|
+
<input type="text" onChange={(ev) => setNewTodo(ev.target.value)} value={newTodo()} />{" "}
|
|
44
|
+
<button type="submit">Add to-do</button>
|
|
45
|
+
</form>
|
|
46
|
+
</div>
|
|
47
|
+
</>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
@@ -44,11 +44,11 @@ var require_package = __commonJS({
|
|
|
44
44
|
"@batijs/compile": "workspace:*",
|
|
45
45
|
"@types/node": "^18.19.14",
|
|
46
46
|
autoprefixer: "^10.4.19",
|
|
47
|
-
daisyui: "^4.
|
|
47
|
+
daisyui: "^4.12.2",
|
|
48
48
|
postcss: "^8.4.38",
|
|
49
|
-
tailwindcss: "^3.4.
|
|
50
|
-
vike: "^0.4.
|
|
51
|
-
vite: "^5.2.
|
|
49
|
+
tailwindcss: "^3.4.4",
|
|
50
|
+
vike: "^0.4.174",
|
|
51
|
+
vite: "^5.2.12"
|
|
52
52
|
},
|
|
53
53
|
dependencies: {
|
|
54
54
|
"@batijs/core": "workspace:*"
|
|
@@ -42,10 +42,13 @@ var require_package = __commonJS({
|
|
|
42
42
|
license: "MIT",
|
|
43
43
|
devDependencies: {
|
|
44
44
|
"@batijs/compile": "workspace:*",
|
|
45
|
+
"@batijs/drizzle": "workspace:*",
|
|
46
|
+
"@batijs/shared-no-db": "workspace:*",
|
|
47
|
+
"@batijs/shared-todo": "workspace:*",
|
|
45
48
|
"@types/node": "^18.19.14",
|
|
46
|
-
telefunc: "^0.1.
|
|
47
|
-
vike: "^0.4.
|
|
48
|
-
vite: "^5.2.
|
|
49
|
+
telefunc: "^0.1.74",
|
|
50
|
+
vike: "^0.4.174",
|
|
51
|
+
vite: "^5.2.12"
|
|
49
52
|
},
|
|
50
53
|
dependencies: {
|
|
51
54
|
"@batijs/core": "workspace:*"
|
|
@@ -59,12 +62,18 @@ var require_package = __commonJS({
|
|
|
59
62
|
}
|
|
60
63
|
},
|
|
61
64
|
exports: {
|
|
65
|
+
"./pages/todo/TodoList.telefunc": {
|
|
66
|
+
types: "./dist/types/pages/todo/TodoList.telefunc.d.ts"
|
|
67
|
+
},
|
|
62
68
|
"./server/telefunc-handler": {
|
|
63
69
|
types: "./dist/types/server/telefunc-handler.d.ts"
|
|
64
70
|
}
|
|
65
71
|
},
|
|
66
72
|
typesVersions: {
|
|
67
73
|
"*": {
|
|
74
|
+
"pages/todo/TodoList.telefunc": [
|
|
75
|
+
"./dist/types/pages/todo/TodoList.telefunc.d.ts"
|
|
76
|
+
],
|
|
68
77
|
"server/telefunc-handler": [
|
|
69
78
|
"./dist/types/server/telefunc-handler.d.ts"
|
|
70
79
|
]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { db } from "@batijs/drizzle/database/db";
|
|
2
|
+
import { todoTable } from "@batijs/drizzle/database/schema";
|
|
3
|
+
import { lowDb } from "@batijs/shared-no-db/database/todoItems";
|
|
4
|
+
|
|
5
|
+
export async function onNewTodo({ text }: { text: string }) {
|
|
6
|
+
if (BATI.has("drizzle")) {
|
|
7
|
+
await db.insert(todoTable).values({ text });
|
|
8
|
+
} else {
|
|
9
|
+
await lowDb.update(({ todo }) => todo.push({ text }));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -42,11 +42,13 @@ var require_package = __commonJS({
|
|
|
42
42
|
license: "MIT",
|
|
43
43
|
devDependencies: {
|
|
44
44
|
"@batijs/compile": "workspace:*",
|
|
45
|
-
"@batijs/
|
|
45
|
+
"@batijs/drizzle": "workspace:*",
|
|
46
|
+
"@batijs/shared-no-db": "workspace:*",
|
|
47
|
+
"@batijs/shared-todo": "workspace:*",
|
|
46
48
|
"@trpc/client": "^10.45.2",
|
|
47
49
|
"@trpc/server": "^10.45.2",
|
|
48
50
|
"@types/node": "^18.19.14",
|
|
49
|
-
vite: "^5.2.
|
|
51
|
+
vite: "^5.2.12"
|
|
50
52
|
},
|
|
51
53
|
dependencies: {
|
|
52
54
|
"@batijs/core": "workspace:*"
|