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.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +563 -0
  3. package/dist/api/rpc-handler.d.ts +71 -0
  4. package/dist/api/rpc-handler.d.ts.map +1 -0
  5. package/dist/api/rpc-handler.js +205 -0
  6. package/dist/api/rpc-handler.js.map +1 -0
  7. package/dist/cli/commands/build.d.ts +6 -0
  8. package/dist/cli/commands/build.d.ts.map +1 -0
  9. package/dist/cli/commands/build.js +193 -0
  10. package/dist/cli/commands/build.js.map +1 -0
  11. package/dist/cli/commands/dev.d.ts +3 -0
  12. package/dist/cli/commands/dev.d.ts.map +1 -0
  13. package/dist/cli/commands/dev.js +305 -0
  14. package/dist/cli/commands/dev.js.map +1 -0
  15. package/dist/cli/commands/generate.d.ts +4 -0
  16. package/dist/cli/commands/generate.d.ts.map +1 -0
  17. package/dist/cli/commands/generate.js +238 -0
  18. package/dist/cli/commands/generate.js.map +1 -0
  19. package/dist/cli/commands/index.d.ts +9 -0
  20. package/dist/cli/commands/index.d.ts.map +1 -0
  21. package/dist/cli/commands/index.js +18 -0
  22. package/dist/cli/commands/index.js.map +1 -0
  23. package/dist/cli/commands/init.d.ts +7 -0
  24. package/dist/cli/commands/init.d.ts.map +1 -0
  25. package/dist/cli/commands/init.js +383 -0
  26. package/dist/cli/commands/init.js.map +1 -0
  27. package/dist/cli/commands/setup.d.ts +6 -0
  28. package/dist/cli/commands/setup.d.ts.map +1 -0
  29. package/dist/cli/commands/setup.js +254 -0
  30. package/dist/cli/commands/setup.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +32 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/core/config.d.ts +25 -0
  36. package/dist/core/config.d.ts.map +1 -0
  37. package/dist/core/config.js +204 -0
  38. package/dist/core/config.js.map +1 -0
  39. package/dist/database/client.d.ts +46 -0
  40. package/dist/database/client.d.ts.map +1 -0
  41. package/dist/database/client.js +156 -0
  42. package/dist/database/client.js.map +1 -0
  43. package/dist/database/repository.d.ts +71 -0
  44. package/dist/database/repository.d.ts.map +1 -0
  45. package/dist/database/repository.js +89 -0
  46. package/dist/database/repository.js.map +1 -0
  47. package/dist/generator/api-generator.d.ts +53 -0
  48. package/dist/generator/api-generator.d.ts.map +1 -0
  49. package/dist/generator/api-generator.js +284 -0
  50. package/dist/generator/api-generator.js.map +1 -0
  51. package/dist/generator/schema-parser.d.ts +45 -0
  52. package/dist/generator/schema-parser.d.ts.map +1 -0
  53. package/dist/generator/schema-parser.js +198 -0
  54. package/dist/generator/schema-parser.js.map +1 -0
  55. package/dist/generator/templates/azure-functions.d.ts +15 -0
  56. package/dist/generator/templates/azure-functions.d.ts.map +1 -0
  57. package/dist/generator/templates/azure-functions.js +274 -0
  58. package/dist/generator/templates/azure-functions.js.map +1 -0
  59. package/dist/generator/templates/default-server-functions.d.ts +2 -0
  60. package/dist/generator/templates/default-server-functions.d.ts.map +1 -0
  61. package/dist/generator/templates/default-server-functions.js +67 -0
  62. package/dist/generator/templates/default-server-functions.js.map +1 -0
  63. package/dist/hooks/server-function-registry.d.ts +67 -0
  64. package/dist/hooks/server-function-registry.d.ts.map +1 -0
  65. package/dist/hooks/server-function-registry.js +153 -0
  66. package/dist/hooks/server-function-registry.js.map +1 -0
  67. package/dist/hooks/useQuery.d.ts +61 -0
  68. package/dist/hooks/useQuery.d.ts.map +1 -0
  69. package/dist/hooks/useQuery.js +147 -0
  70. package/dist/hooks/useQuery.js.map +1 -0
  71. package/dist/hooks/useServerFn.d.ts +27 -0
  72. package/dist/hooks/useServerFn.d.ts.map +1 -0
  73. package/dist/hooks/useServerFn.js +119 -0
  74. package/dist/hooks/useServerFn.js.map +1 -0
  75. package/dist/index.d.ts +17 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +73 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/schemas/example.d.ts +657 -0
  80. package/dist/schemas/example.d.ts.map +1 -0
  81. package/dist/schemas/example.js +133 -0
  82. package/dist/schemas/example.js.map +1 -0
  83. package/dist/server/todo-functions.d.ts +21 -0
  84. package/dist/server/todo-functions.d.ts.map +1 -0
  85. package/dist/server/todo-functions.js +121 -0
  86. package/dist/server/todo-functions.js.map +1 -0
  87. package/dist/types/index.d.ts +53 -0
  88. package/dist/types/index.d.ts.map +1 -0
  89. package/dist/types/index.js +6 -0
  90. package/dist/types/index.js.map +1 -0
  91. 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,6 @@
1
+ interface SetupOptions {
2
+ yes?: boolean;
3
+ }
4
+ export declare function setupCommand(options?: SetupOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=setup.d.ts.map
@@ -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,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}