swallowkit 0.1.0-alpha.1
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/LICENSE +21 -0
- package/README.md +563 -0
- package/dist/api/rpc-handler.d.ts +71 -0
- package/dist/api/rpc-handler.d.ts.map +1 -0
- package/dist/api/rpc-handler.js +205 -0
- package/dist/api/rpc-handler.js.map +1 -0
- package/dist/cli/commands/build.d.ts +6 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +193 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +3 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +305 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +4 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +238 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/index.d.ts +9 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +18 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +7 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +383 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +6 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +254 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +32 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config.d.ts +25 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +204 -0
- package/dist/core/config.js.map +1 -0
- package/dist/database/client.d.ts +46 -0
- package/dist/database/client.d.ts.map +1 -0
- package/dist/database/client.js +156 -0
- package/dist/database/client.js.map +1 -0
- package/dist/database/repository.d.ts +71 -0
- package/dist/database/repository.d.ts.map +1 -0
- package/dist/database/repository.js +89 -0
- package/dist/database/repository.js.map +1 -0
- package/dist/generator/api-generator.d.ts +53 -0
- package/dist/generator/api-generator.d.ts.map +1 -0
- package/dist/generator/api-generator.js +284 -0
- package/dist/generator/api-generator.js.map +1 -0
- package/dist/generator/schema-parser.d.ts +45 -0
- package/dist/generator/schema-parser.d.ts.map +1 -0
- package/dist/generator/schema-parser.js +198 -0
- package/dist/generator/schema-parser.js.map +1 -0
- package/dist/generator/templates/azure-functions.d.ts +15 -0
- package/dist/generator/templates/azure-functions.d.ts.map +1 -0
- package/dist/generator/templates/azure-functions.js +274 -0
- package/dist/generator/templates/azure-functions.js.map +1 -0
- package/dist/generator/templates/default-server-functions.d.ts +2 -0
- package/dist/generator/templates/default-server-functions.d.ts.map +1 -0
- package/dist/generator/templates/default-server-functions.js +67 -0
- package/dist/generator/templates/default-server-functions.js.map +1 -0
- package/dist/hooks/server-function-registry.d.ts +67 -0
- package/dist/hooks/server-function-registry.d.ts.map +1 -0
- package/dist/hooks/server-function-registry.js +153 -0
- package/dist/hooks/server-function-registry.js.map +1 -0
- package/dist/hooks/useQuery.d.ts +61 -0
- package/dist/hooks/useQuery.d.ts.map +1 -0
- package/dist/hooks/useQuery.js +147 -0
- package/dist/hooks/useQuery.js.map +1 -0
- package/dist/hooks/useServerFn.d.ts +27 -0
- package/dist/hooks/useServerFn.d.ts.map +1 -0
- package/dist/hooks/useServerFn.js +119 -0
- package/dist/hooks/useServerFn.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/example.d.ts +657 -0
- package/dist/schemas/example.d.ts.map +1 -0
- package/dist/schemas/example.js +133 -0
- package/dist/schemas/example.js.map +1 -0
- package/dist/server/todo-functions.d.ts +21 -0
- package/dist/server/todo-functions.d.ts.map +1 -0
- package/dist/server/todo-functions.js +121 -0
- package/dist/server/todo-functions.js.map +1 -0
- package/dist/types/index.d.ts +53 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.initCommand = initCommand;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
async function initCommand(options) {
|
|
40
|
+
console.log(`🚀 SwallowKitプロジェクトを初期化中: ${options.name}`);
|
|
41
|
+
console.log(`📦 テンプレート: ${options.template}`);
|
|
42
|
+
const projectDir = path.join(process.cwd(), options.name);
|
|
43
|
+
try {
|
|
44
|
+
// プロジェクトディレクトリを作成
|
|
45
|
+
if (!fs.existsSync(projectDir)) {
|
|
46
|
+
fs.mkdirSync(projectDir, { recursive: true });
|
|
47
|
+
}
|
|
48
|
+
// 基本的なプロジェクト構造を作成
|
|
49
|
+
await createProjectStructure(projectDir, options);
|
|
50
|
+
console.log(`✅ プロジェクト "${options.name}" が正常に作成されました!`);
|
|
51
|
+
console.log("\n次のステップ:");
|
|
52
|
+
console.log(` cd ${options.name}`);
|
|
53
|
+
console.log(" npm install");
|
|
54
|
+
console.log(" npm run dev");
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error("❌ プロジェクトの作成に失敗しました:", error);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async function createProjectStructure(projectDir, options) {
|
|
62
|
+
// package.json を作成
|
|
63
|
+
const packageJson = {
|
|
64
|
+
name: options.name,
|
|
65
|
+
version: "0.1.0",
|
|
66
|
+
description: "SwallowKit アプリケーション",
|
|
67
|
+
main: "src/index.tsx",
|
|
68
|
+
scripts: {
|
|
69
|
+
dev: "swallowkit dev",
|
|
70
|
+
build: "swallowkit build",
|
|
71
|
+
start: "serve -s dist",
|
|
72
|
+
},
|
|
73
|
+
dependencies: {
|
|
74
|
+
react: "^18.0.0",
|
|
75
|
+
"react-dom": "^18.0.0",
|
|
76
|
+
swallowkit: "^0.1.0",
|
|
77
|
+
zod: "^3.22.0",
|
|
78
|
+
},
|
|
79
|
+
devDependencies: {
|
|
80
|
+
"@types/react": "^18.0.0",
|
|
81
|
+
"@types/react-dom": "^18.0.0",
|
|
82
|
+
"@vitejs/plugin-react": "^4.0.0",
|
|
83
|
+
autoprefixer: "^10.4.0",
|
|
84
|
+
postcss: "^8.4.0",
|
|
85
|
+
tailwindcss: "^3.4.0",
|
|
86
|
+
typescript: "^5.0.0",
|
|
87
|
+
vite: "^4.5.0",
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
fs.writeFileSync(path.join(projectDir, "package.json"), JSON.stringify(packageJson, null, 2));
|
|
91
|
+
// TypeScript設定
|
|
92
|
+
const tsConfig = {
|
|
93
|
+
compilerOptions: {
|
|
94
|
+
target: "ES2020",
|
|
95
|
+
lib: ["ES2020", "DOM", "DOM.Iterable"],
|
|
96
|
+
allowJs: true,
|
|
97
|
+
skipLibCheck: true,
|
|
98
|
+
esModuleInterop: true,
|
|
99
|
+
allowSyntheticDefaultImports: true,
|
|
100
|
+
strict: true,
|
|
101
|
+
forceConsistentCasingInFileNames: true,
|
|
102
|
+
moduleResolution: "node",
|
|
103
|
+
resolveJsonModule: true,
|
|
104
|
+
isolatedModules: true,
|
|
105
|
+
noEmit: true,
|
|
106
|
+
jsx: "react-jsx",
|
|
107
|
+
},
|
|
108
|
+
include: ["src"],
|
|
109
|
+
references: [{ path: "./tsconfig.node.json" }],
|
|
110
|
+
};
|
|
111
|
+
fs.writeFileSync(path.join(projectDir, "tsconfig.json"), JSON.stringify(tsConfig, null, 2));
|
|
112
|
+
// SwallowKit設定ファイル
|
|
113
|
+
const swallowkitConfig = {
|
|
114
|
+
database: {
|
|
115
|
+
type: "mock",
|
|
116
|
+
},
|
|
117
|
+
api: {
|
|
118
|
+
endpoint: "/api/_swallowkit",
|
|
119
|
+
},
|
|
120
|
+
functions: {
|
|
121
|
+
outputDir: "api",
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
fs.writeFileSync(path.join(projectDir, "swallowkit.config.json"), JSON.stringify(swallowkitConfig, null, 2));
|
|
125
|
+
// srcディレクトリとファイルを作成
|
|
126
|
+
const srcDir = path.join(projectDir, "src");
|
|
127
|
+
fs.mkdirSync(srcDir, { recursive: true });
|
|
128
|
+
// メインのReactアプリ(Tailwind CSS + CRUD機能)
|
|
129
|
+
const appTsx = `import React, { useState } from "react";
|
|
130
|
+
import { useServerFn, callServerFn } from "swallowkit";
|
|
131
|
+
import { getTodos, addTodo, deleteTodo, toggleTodo } from "./serverFns";
|
|
132
|
+
|
|
133
|
+
interface Todo {
|
|
134
|
+
id: string;
|
|
135
|
+
text: string;
|
|
136
|
+
completed: boolean;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function App() {
|
|
140
|
+
const [newTodoText, setNewTodoText] = useState("");
|
|
141
|
+
const { data: todos, loading, error, refetch } = useServerFn<Todo[]>(getTodos, []);
|
|
142
|
+
|
|
143
|
+
const handleAddTodo = async () => {
|
|
144
|
+
if (!newTodoText.trim()) return;
|
|
145
|
+
|
|
146
|
+
await callServerFn(addTodo, { text: newTodoText });
|
|
147
|
+
setNewTodoText("");
|
|
148
|
+
refetch();
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const handleToggleTodo = async (id: string) => {
|
|
152
|
+
await callServerFn(toggleTodo, { id });
|
|
153
|
+
refetch();
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
const handleDeleteTodo = async (id: string) => {
|
|
157
|
+
await callServerFn(deleteTodo, { id });
|
|
158
|
+
refetch();
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
if (loading) {
|
|
162
|
+
return (
|
|
163
|
+
<div className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 flex items-center justify-center">
|
|
164
|
+
<div className="text-xl text-gray-600">読み込み中...</div>
|
|
165
|
+
</div>
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (error) {
|
|
170
|
+
return (
|
|
171
|
+
<div className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 flex items-center justify-center">
|
|
172
|
+
<div className="bg-red-50 border border-red-200 rounded-lg p-4 text-red-700">
|
|
173
|
+
エラー: {error.message}
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return (
|
|
180
|
+
<div className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 py-8 px-4">
|
|
181
|
+
<div className="max-w-2xl mx-auto">
|
|
182
|
+
<div className="bg-white rounded-xl shadow-lg p-8">
|
|
183
|
+
<h1 className="text-4xl font-bold text-gray-800 mb-2">
|
|
184
|
+
🚀 SwallowKit Todo
|
|
185
|
+
</h1>
|
|
186
|
+
<p className="text-gray-600 mb-8">
|
|
187
|
+
Azure Static Web Apps + React Hooks フレームワーク
|
|
188
|
+
</p>
|
|
189
|
+
|
|
190
|
+
{/* 新規Todo追加フォーム */}
|
|
191
|
+
<div className="flex gap-2 mb-6">
|
|
192
|
+
<input
|
|
193
|
+
type="text"
|
|
194
|
+
value={newTodoText}
|
|
195
|
+
onChange={(e) => setNewTodoText(e.target.value)}
|
|
196
|
+
onKeyPress={(e) => e.key === "Enter" && handleAddTodo()}
|
|
197
|
+
placeholder="新しいタスクを入力..."
|
|
198
|
+
className="flex-1 px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
|
|
199
|
+
/>
|
|
200
|
+
<button
|
|
201
|
+
onClick={handleAddTodo}
|
|
202
|
+
className="px-6 py-3 bg-blue-500 text-white font-semibold rounded-lg hover:bg-blue-600 transition-colors shadow-md hover:shadow-lg"
|
|
203
|
+
>
|
|
204
|
+
追加
|
|
205
|
+
</button>
|
|
206
|
+
</div>
|
|
207
|
+
|
|
208
|
+
{/* Todoリスト */}
|
|
209
|
+
<div className="space-y-2">
|
|
210
|
+
{todos && todos.length === 0 ? (
|
|
211
|
+
<div className="text-center py-12 text-gray-400">
|
|
212
|
+
タスクがありません。上のフォームから追加してください!
|
|
213
|
+
</div>
|
|
214
|
+
) : (
|
|
215
|
+
todos?.map((todo) => (
|
|
216
|
+
<div
|
|
217
|
+
key={todo.id}
|
|
218
|
+
className="flex items-center gap-3 p-4 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors group"
|
|
219
|
+
>
|
|
220
|
+
<input
|
|
221
|
+
type="checkbox"
|
|
222
|
+
checked={todo.completed}
|
|
223
|
+
onChange={() => handleToggleTodo(todo.id)}
|
|
224
|
+
className="w-5 h-5 text-blue-500 rounded focus:ring-2 focus:ring-blue-500"
|
|
225
|
+
/>
|
|
226
|
+
<span
|
|
227
|
+
className={\`flex-1 \${
|
|
228
|
+
todo.completed
|
|
229
|
+
? "line-through text-gray-400"
|
|
230
|
+
: "text-gray-700"
|
|
231
|
+
}\`}
|
|
232
|
+
>
|
|
233
|
+
{todo.text}
|
|
234
|
+
</span>
|
|
235
|
+
<button
|
|
236
|
+
onClick={() => handleDeleteTodo(todo.id)}
|
|
237
|
+
className="px-3 py-1 text-red-600 hover:bg-red-50 rounded transition-colors opacity-0 group-hover:opacity-100"
|
|
238
|
+
>
|
|
239
|
+
削除
|
|
240
|
+
</button>
|
|
241
|
+
</div>
|
|
242
|
+
))
|
|
243
|
+
)}
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
{/* フッター */}
|
|
247
|
+
<div className="mt-8 pt-6 border-t border-gray-200 text-center text-sm text-gray-500">
|
|
248
|
+
{todos && todos.length > 0 && (
|
|
249
|
+
<p>
|
|
250
|
+
{todos.filter((t) => !t.completed).length} 件の未完了タスク / 全 {todos.length} 件
|
|
251
|
+
</p>
|
|
252
|
+
)}
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
</div>
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export default App;
|
|
261
|
+
`;
|
|
262
|
+
fs.writeFileSync(path.join(srcDir, "App.tsx"), appTsx);
|
|
263
|
+
// サーバー関数の型定義(クライアント側)
|
|
264
|
+
// 実装は api/src/shared/server-functions.ts にあります
|
|
265
|
+
const serverFns = `// サーバー関数の型定義
|
|
266
|
+
// SwallowKit が自動的に RPC 呼び出しに変換します
|
|
267
|
+
// 実際の実装は api/src/shared/server-functions.ts にあります
|
|
268
|
+
|
|
269
|
+
interface Todo {
|
|
270
|
+
id: string;
|
|
271
|
+
text: string;
|
|
272
|
+
completed: boolean;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export async function getTodos(): Promise<Todo[]> {
|
|
276
|
+
// この関数は useServerFn によって RPC 呼び出しに自動変換されます
|
|
277
|
+
throw new Error("This is a server function and should be called via useServerFn");
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export async function addTodo({ text }: { text: string }): Promise<Todo> {
|
|
281
|
+
throw new Error("This is a server function and should be called via useServerFn");
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export async function deleteTodo({ id }: { id: string }): Promise<{ success: boolean }> {
|
|
285
|
+
throw new Error("This is a server function and should be called via useServerFn");
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export async function toggleTodo({ id }: { id: string }): Promise<Todo | null> {
|
|
289
|
+
throw new Error("This is a server function and should be called via useServerFn");
|
|
290
|
+
}
|
|
291
|
+
`;
|
|
292
|
+
fs.writeFileSync(path.join(srcDir, "serverFns.ts"), serverFns);
|
|
293
|
+
// index.tsx
|
|
294
|
+
const indexTsx = `import React from "react";
|
|
295
|
+
import ReactDOM from "react-dom/client";
|
|
296
|
+
import App from "./App";
|
|
297
|
+
import "./index.css";
|
|
298
|
+
|
|
299
|
+
const root = ReactDOM.createRoot(
|
|
300
|
+
document.getElementById("root") as HTMLElement
|
|
301
|
+
);
|
|
302
|
+
|
|
303
|
+
root.render(
|
|
304
|
+
<React.StrictMode>
|
|
305
|
+
<App />
|
|
306
|
+
</React.StrictMode>
|
|
307
|
+
);
|
|
308
|
+
`;
|
|
309
|
+
fs.writeFileSync(path.join(srcDir, "index.tsx"), indexTsx);
|
|
310
|
+
// CSS with Tailwind directives
|
|
311
|
+
const indexCss = `@tailwind base;
|
|
312
|
+
@tailwind components;
|
|
313
|
+
@tailwind utilities;
|
|
314
|
+
`;
|
|
315
|
+
fs.writeFileSync(path.join(srcDir, "index.css"), indexCss);
|
|
316
|
+
// HTML template
|
|
317
|
+
const indexHtml = `<!DOCTYPE html>
|
|
318
|
+
<html lang="ja">
|
|
319
|
+
<head>
|
|
320
|
+
<meta charset="UTF-8" />
|
|
321
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
322
|
+
<title>${options.name}</title>
|
|
323
|
+
</head>
|
|
324
|
+
<body>
|
|
325
|
+
<div id="root"></div>
|
|
326
|
+
<script type="module" src="/src/index.tsx"></script>
|
|
327
|
+
</body>
|
|
328
|
+
</html>
|
|
329
|
+
`;
|
|
330
|
+
fs.writeFileSync(path.join(projectDir, "index.html"), indexHtml);
|
|
331
|
+
// Vite設定ファイル
|
|
332
|
+
const viteConfig = `import { defineConfig } from 'vite';
|
|
333
|
+
import react from '@vitejs/plugin-react';
|
|
334
|
+
|
|
335
|
+
// https://vitejs.dev/config/
|
|
336
|
+
export default defineConfig({
|
|
337
|
+
plugins: [react()],
|
|
338
|
+
server: {
|
|
339
|
+
port: 5173,
|
|
340
|
+
},
|
|
341
|
+
optimizeDeps: {
|
|
342
|
+
include: ['swallowkit'],
|
|
343
|
+
},
|
|
344
|
+
});
|
|
345
|
+
`;
|
|
346
|
+
fs.writeFileSync(path.join(projectDir, "vite.config.ts"), viteConfig);
|
|
347
|
+
// Tailwind CSS設定
|
|
348
|
+
const tailwindConfig = `/** @type {import('tailwindcss').Config} */
|
|
349
|
+
export default {
|
|
350
|
+
content: [
|
|
351
|
+
"./index.html",
|
|
352
|
+
"./src/**/*.{js,ts,jsx,tsx}",
|
|
353
|
+
],
|
|
354
|
+
theme: {
|
|
355
|
+
extend: {},
|
|
356
|
+
},
|
|
357
|
+
plugins: [],
|
|
358
|
+
}
|
|
359
|
+
`;
|
|
360
|
+
fs.writeFileSync(path.join(projectDir, "tailwind.config.js"), tailwindConfig);
|
|
361
|
+
// PostCSS設定
|
|
362
|
+
const postcssConfig = `module.exports = {
|
|
363
|
+
plugins: {
|
|
364
|
+
tailwindcss: {},
|
|
365
|
+
autoprefixer: {},
|
|
366
|
+
},
|
|
367
|
+
}
|
|
368
|
+
`;
|
|
369
|
+
fs.writeFileSync(path.join(projectDir, "postcss.config.js"), postcssConfig);
|
|
370
|
+
// tsconfig.node.json (Vite設定用)
|
|
371
|
+
const tsConfigNode = {
|
|
372
|
+
compilerOptions: {
|
|
373
|
+
composite: true,
|
|
374
|
+
module: "ESNext",
|
|
375
|
+
moduleResolution: "bundler",
|
|
376
|
+
allowSyntheticDefaultImports: true,
|
|
377
|
+
},
|
|
378
|
+
include: ["vite.config.ts"],
|
|
379
|
+
};
|
|
380
|
+
fs.writeFileSync(path.join(projectDir, "tsconfig.node.json"), JSON.stringify(tsConfigNode, null, 2));
|
|
381
|
+
console.log("📁 プロジェクト構造を作成しました");
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,iBAiI5D"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.setupCommand = setupCommand;
|
|
37
|
+
const child_process_1 = require("child_process");
|
|
38
|
+
const readline = __importStar(require("readline"));
|
|
39
|
+
async function setupCommand(options = {}) {
|
|
40
|
+
console.log('🚀 SwallowKit セットアップを開始します...');
|
|
41
|
+
console.log('');
|
|
42
|
+
console.log('SwallowKit には以下のツールが必要です:');
|
|
43
|
+
console.log(' 1. Azure CLI');
|
|
44
|
+
console.log(' 2. Azure Static Web Apps CLI (SWA CLI)');
|
|
45
|
+
console.log(' 3. Azure Cosmos DB Emulator');
|
|
46
|
+
console.log('');
|
|
47
|
+
const results = {
|
|
48
|
+
azureCli: await checkAzureCLI(),
|
|
49
|
+
swaCli: await checkSWACLI(),
|
|
50
|
+
cosmosEmulator: await checkCosmosDBEmulator(),
|
|
51
|
+
};
|
|
52
|
+
console.log('📋 インストール状況:');
|
|
53
|
+
console.log(` Azure CLI: ${results.azureCli ? '✅ インストール済み' : '❌ 未インストール'}`);
|
|
54
|
+
console.log(` SWA CLI: ${results.swaCli ? '✅ インストール済み' : '❌ 未インストール'}`);
|
|
55
|
+
console.log(` Cosmos DB Emulator: ${results.cosmosEmulator ? '✅ インストール済み' : '❌ 未インストール'}`);
|
|
56
|
+
console.log('');
|
|
57
|
+
const missing = [];
|
|
58
|
+
if (!results.azureCli)
|
|
59
|
+
missing.push('Azure CLI');
|
|
60
|
+
if (!results.swaCli)
|
|
61
|
+
missing.push('SWA CLI');
|
|
62
|
+
if (!results.cosmosEmulator)
|
|
63
|
+
missing.push('Cosmos DB Emulator');
|
|
64
|
+
if (missing.length === 0) {
|
|
65
|
+
console.log('✅ すべての必須ツールがインストールされています!');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
console.log(`⚠️ ${missing.length} 個のツールが未インストールです: ${missing.join(', ')}`);
|
|
69
|
+
console.log('');
|
|
70
|
+
// Cosmos DB Emulator だけが未インストールの場合
|
|
71
|
+
const onlyCosmosDbMissing = missing.length === 1 && missing[0] === 'Cosmos DB Emulator';
|
|
72
|
+
if (onlyCosmosDbMissing) {
|
|
73
|
+
// Cosmos DB Emulator は自動インストールしない
|
|
74
|
+
console.log('📦 Cosmos DB Emulator について:');
|
|
75
|
+
console.log('');
|
|
76
|
+
console.log('SwallowKit は Cosmos DB を標準データストアとして使用します。');
|
|
77
|
+
console.log('以下のいずれかの方法でインストールしてください:');
|
|
78
|
+
console.log('');
|
|
79
|
+
console.log('1. Windows 版 (推奨):');
|
|
80
|
+
console.log(' https://aka.ms/cosmosdb-emulator');
|
|
81
|
+
console.log(' または: winget install Microsoft.Azure.CosmosEmulator');
|
|
82
|
+
console.log('');
|
|
83
|
+
console.log('2. Docker 版:');
|
|
84
|
+
console.log(' docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator');
|
|
85
|
+
console.log(' docker run -p 8081:8081 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator');
|
|
86
|
+
console.log('');
|
|
87
|
+
console.log('3. Linux Emulator:');
|
|
88
|
+
console.log(' https://docs.microsoft.com/azure/cosmos-db/linux-emulator');
|
|
89
|
+
console.log('');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (!options.yes) {
|
|
93
|
+
const answer = await askQuestion('Azure CLI / SWA CLI をインストールしますか? (Y/n): ');
|
|
94
|
+
if (answer.toLowerCase() !== 'y' && answer !== '') {
|
|
95
|
+
console.log('セットアップをキャンセルしました。');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
console.log('');
|
|
100
|
+
console.log('📦 インストールを開始します...');
|
|
101
|
+
console.log('');
|
|
102
|
+
// Azure CLI
|
|
103
|
+
if (!results.azureCli) {
|
|
104
|
+
console.log('🔄 Azure CLI をインストール中...');
|
|
105
|
+
const azureCliInstalled = await installWithWinget('Microsoft.AzureCLI', 'Azure CLI');
|
|
106
|
+
if (azureCliInstalled) {
|
|
107
|
+
console.log('✅ Azure CLI のインストールが完了しました');
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log('❌ Azure CLI のインストールに失敗しました');
|
|
111
|
+
console.log('💡 手動インストール: https://aka.ms/installazurecliwindows');
|
|
112
|
+
}
|
|
113
|
+
console.log('');
|
|
114
|
+
}
|
|
115
|
+
// SWA CLI
|
|
116
|
+
if (!results.swaCli) {
|
|
117
|
+
console.log('🔄 SWA CLI をインストール中...');
|
|
118
|
+
const swaCliInstalled = await installWithNpm('@azure/static-web-apps-cli', 'SWA CLI');
|
|
119
|
+
if (swaCliInstalled) {
|
|
120
|
+
console.log('✅ SWA CLI のインストールが完了しました');
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.log('❌ SWA CLI のインストールに失敗しました');
|
|
124
|
+
console.log('💡 手動インストール: npm install -g @azure/static-web-apps-cli');
|
|
125
|
+
}
|
|
126
|
+
console.log('');
|
|
127
|
+
}
|
|
128
|
+
// Cosmos DB Emulator(インストール方法を案内)
|
|
129
|
+
if (!results.cosmosEmulator) {
|
|
130
|
+
console.log('� Cosmos DB Emulator について:');
|
|
131
|
+
console.log('');
|
|
132
|
+
console.log('SwallowKit は Cosmos DB を標準データストアとして使用します。');
|
|
133
|
+
console.log('以下のいずれかの方法でインストールしてください:');
|
|
134
|
+
console.log('');
|
|
135
|
+
console.log('1. Windows 版 (推奨):');
|
|
136
|
+
console.log(' https://aka.ms/cosmosdb-emulator');
|
|
137
|
+
console.log(' または: winget install Microsoft.Azure.CosmosEmulator');
|
|
138
|
+
console.log('');
|
|
139
|
+
console.log('2. Docker 版:');
|
|
140
|
+
console.log(' docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator');
|
|
141
|
+
console.log(' docker run -p 8081:8081 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator');
|
|
142
|
+
console.log('');
|
|
143
|
+
console.log('3. Linux Emulator:');
|
|
144
|
+
console.log(' https://docs.microsoft.com/azure/cosmos-db/linux-emulator');
|
|
145
|
+
console.log('');
|
|
146
|
+
}
|
|
147
|
+
console.log('🎉 セットアップが完了しました!');
|
|
148
|
+
console.log('');
|
|
149
|
+
console.log('次のステップ:');
|
|
150
|
+
if (!results.cosmosEmulator) {
|
|
151
|
+
console.log(' 1. Cosmos DB Emulator をインストールして起動');
|
|
152
|
+
console.log(' 2. swallowkit init --name my-app');
|
|
153
|
+
console.log(' 3. cd my-app && npm install');
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log(' 1. swallowkit init --name my-app');
|
|
157
|
+
console.log(' 2. cd my-app && npm install');
|
|
158
|
+
}
|
|
159
|
+
console.log(' 4. swallowkit generate');
|
|
160
|
+
console.log(' 5. swallowkit dev');
|
|
161
|
+
}
|
|
162
|
+
async function checkAzureCLI() {
|
|
163
|
+
return new Promise((resolve) => {
|
|
164
|
+
const checkProcess = (0, child_process_1.spawn)('az', ['--version'], {
|
|
165
|
+
shell: true,
|
|
166
|
+
stdio: 'pipe',
|
|
167
|
+
});
|
|
168
|
+
checkProcess.on('close', (code) => {
|
|
169
|
+
resolve(code === 0);
|
|
170
|
+
});
|
|
171
|
+
checkProcess.on('error', () => {
|
|
172
|
+
resolve(false);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
async function checkSWACLI() {
|
|
177
|
+
return new Promise((resolve) => {
|
|
178
|
+
const checkProcess = (0, child_process_1.spawn)('swa', ['--version'], {
|
|
179
|
+
shell: true,
|
|
180
|
+
stdio: 'pipe',
|
|
181
|
+
});
|
|
182
|
+
checkProcess.on('close', (code) => {
|
|
183
|
+
resolve(code === 0);
|
|
184
|
+
});
|
|
185
|
+
checkProcess.on('error', () => {
|
|
186
|
+
resolve(false);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
async function checkCosmosDBEmulator() {
|
|
191
|
+
return new Promise((resolve) => {
|
|
192
|
+
const https = require('https');
|
|
193
|
+
const options = {
|
|
194
|
+
hostname: 'localhost',
|
|
195
|
+
port: 8081,
|
|
196
|
+
path: '/',
|
|
197
|
+
method: 'GET',
|
|
198
|
+
rejectUnauthorized: false,
|
|
199
|
+
timeout: 3000,
|
|
200
|
+
};
|
|
201
|
+
const req = https.request(options, (res) => {
|
|
202
|
+
resolve(res.statusCode === 200 || res.statusCode === 401);
|
|
203
|
+
});
|
|
204
|
+
req.on('error', () => {
|
|
205
|
+
resolve(false);
|
|
206
|
+
});
|
|
207
|
+
req.on('timeout', () => {
|
|
208
|
+
req.destroy();
|
|
209
|
+
resolve(false);
|
|
210
|
+
});
|
|
211
|
+
req.end();
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
async function installWithWinget(packageId, displayName) {
|
|
215
|
+
return new Promise((resolve) => {
|
|
216
|
+
const installProcess = (0, child_process_1.spawn)('winget', ['install', '--id', packageId, '--accept-source-agreements', '--accept-package-agreements'], {
|
|
217
|
+
shell: true,
|
|
218
|
+
stdio: 'inherit',
|
|
219
|
+
});
|
|
220
|
+
installProcess.on('close', (code) => {
|
|
221
|
+
resolve(code === 0);
|
|
222
|
+
});
|
|
223
|
+
installProcess.on('error', () => {
|
|
224
|
+
resolve(false);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
async function installWithNpm(packageName, displayName) {
|
|
229
|
+
return new Promise((resolve) => {
|
|
230
|
+
const installProcess = (0, child_process_1.spawn)('npm', ['install', '-g', packageName], {
|
|
231
|
+
shell: true,
|
|
232
|
+
stdio: 'inherit',
|
|
233
|
+
});
|
|
234
|
+
installProcess.on('close', (code) => {
|
|
235
|
+
resolve(code === 0);
|
|
236
|
+
});
|
|
237
|
+
installProcess.on('error', () => {
|
|
238
|
+
resolve(false);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
function askQuestion(question) {
|
|
243
|
+
const rl = readline.createInterface({
|
|
244
|
+
input: process.stdin,
|
|
245
|
+
output: process.stdout,
|
|
246
|
+
});
|
|
247
|
+
return new Promise((resolve) => {
|
|
248
|
+
rl.question(question, (answer) => {
|
|
249
|
+
rl.close();
|
|
250
|
+
resolve(answer);
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|