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,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultRpcHandler = exports.RpcHandler = void 0;
4
+ /**
5
+ * SwallowKit RPC APIハンドラー
6
+ * useServerFnからの呼び出しを処理
7
+ */
8
+ class RpcHandler {
9
+ constructor() {
10
+ this.serverFunctions = new Map();
11
+ }
12
+ /**
13
+ * サーバー関数を登録
14
+ */
15
+ registerFunction(name, fn) {
16
+ this.serverFunctions.set(name, fn);
17
+ }
18
+ /**
19
+ * 複数のサーバー関数を一括登録
20
+ */
21
+ registerFunctions(functions) {
22
+ Object.entries(functions).forEach(([name, fn]) => {
23
+ this.registerFunction(name, fn);
24
+ });
25
+ }
26
+ /**
27
+ * Express.js スタイルのミドルウェア
28
+ */
29
+ expressMiddleware() {
30
+ return async (req, res, next) => {
31
+ if (req.method !== 'POST') {
32
+ if (next)
33
+ return next();
34
+ return this.sendError(res, 405, 'Method not allowed');
35
+ }
36
+ if (req.path !== '/api/_swallowkit' && req.url !== '/api/_swallowkit') {
37
+ if (next)
38
+ return next();
39
+ return this.sendError(res, 404, 'Not found');
40
+ }
41
+ try {
42
+ const body = req.body;
43
+ const result = await this.handleRequest(body);
44
+ this.sendSuccess(res, result);
45
+ }
46
+ catch (error) {
47
+ this.sendError(res, 500, error instanceof Error ? error.message : 'Internal server error');
48
+ }
49
+ };
50
+ }
51
+ /**
52
+ * Next.js API Routes 対応
53
+ */
54
+ nextApiHandler() {
55
+ return async (req, res) => {
56
+ if (req.method !== 'POST') {
57
+ return this.sendError(res, 405, 'Method not allowed');
58
+ }
59
+ try {
60
+ const result = await this.handleRequest(req.body);
61
+ this.sendSuccess(res, result);
62
+ }
63
+ catch (error) {
64
+ this.sendError(res, 500, error instanceof Error ? error.message : 'Internal server error');
65
+ }
66
+ };
67
+ }
68
+ /**
69
+ * Azure Static Web Apps API 対応
70
+ */
71
+ azureStaticWebAppsHandler() {
72
+ return async (context, req) => {
73
+ context.log('SwallowKit RPC handler processing request');
74
+ if (req.method !== 'POST') {
75
+ context.res = {
76
+ status: 405,
77
+ body: { error: 'Method not allowed' }
78
+ };
79
+ return;
80
+ }
81
+ try {
82
+ const result = await this.handleRequest(req.body);
83
+ context.res = {
84
+ status: 200,
85
+ body: result
86
+ };
87
+ }
88
+ catch (error) {
89
+ context.log.error('RPC handler error:', error);
90
+ context.res = {
91
+ status: 500,
92
+ body: { error: error instanceof Error ? error.message : 'Internal server error' }
93
+ };
94
+ }
95
+ };
96
+ }
97
+ /**
98
+ * Node.js http サーバー対応
99
+ */
100
+ nodeHttpHandler() {
101
+ return async (req, res) => {
102
+ if (req.method !== 'POST') {
103
+ return this.sendError(res, 405, 'Method not allowed');
104
+ }
105
+ try {
106
+ const body = await this.parseRequestBody(req);
107
+ const result = await this.handleRequest(body);
108
+ this.sendSuccess(res, result);
109
+ }
110
+ catch (error) {
111
+ this.sendError(res, 500, error instanceof Error ? error.message : 'Internal server error');
112
+ }
113
+ };
114
+ }
115
+ /**
116
+ * リクエストを処理
117
+ */
118
+ async handleRequest(body) {
119
+ const { fnName, args } = body;
120
+ if (!fnName) {
121
+ throw new Error('Function name is required');
122
+ }
123
+ const serverFn = this.serverFunctions.get(fnName);
124
+ if (!serverFn) {
125
+ throw new Error(`Unknown function: ${fnName}`);
126
+ }
127
+ // 関数を実行
128
+ const result = await serverFn(...(args || []));
129
+ return result;
130
+ }
131
+ /**
132
+ * 成功レスポンスを送信
133
+ */
134
+ sendSuccess(res, data) {
135
+ const response = { success: true, data };
136
+ if (typeof res.json === 'function') {
137
+ // Express.js/Next.js スタイル
138
+ res.status(200).json(response);
139
+ }
140
+ else {
141
+ // Node.js http スタイル
142
+ res.statusCode = 200;
143
+ res.setHeader('Content-Type', 'application/json');
144
+ res.end(JSON.stringify(response));
145
+ }
146
+ }
147
+ /**
148
+ * エラーレスポンスを送信
149
+ */
150
+ sendError(res, status, message) {
151
+ const response = { success: false, error: message };
152
+ if (typeof res.json === 'function') {
153
+ // Express.js/Next.js スタイル
154
+ res.status(status).json(response);
155
+ }
156
+ else {
157
+ // Node.js http スタイル
158
+ res.statusCode = status;
159
+ res.setHeader('Content-Type', 'application/json');
160
+ res.end(JSON.stringify(response));
161
+ }
162
+ }
163
+ /**
164
+ * Node.js リクエストボディをパース
165
+ */
166
+ parseRequestBody(req) {
167
+ return new Promise((resolve, reject) => {
168
+ let body = '';
169
+ req.on('data', chunk => {
170
+ body += chunk.toString();
171
+ });
172
+ req.on('end', () => {
173
+ try {
174
+ resolve(JSON.parse(body));
175
+ }
176
+ catch (error) {
177
+ reject(new Error('Invalid JSON'));
178
+ }
179
+ });
180
+ req.on('error', reject);
181
+ });
182
+ }
183
+ /**
184
+ * 登録された関数一覧を取得
185
+ */
186
+ getRegisteredFunctions() {
187
+ return Array.from(this.serverFunctions.keys());
188
+ }
189
+ /**
190
+ * 関数の登録を削除
191
+ */
192
+ unregisterFunction(name) {
193
+ return this.serverFunctions.delete(name);
194
+ }
195
+ /**
196
+ * 全ての関数登録をクリア
197
+ */
198
+ clearFunctions() {
199
+ this.serverFunctions.clear();
200
+ }
201
+ }
202
+ exports.RpcHandler = RpcHandler;
203
+ // デフォルトインスタンス
204
+ exports.defaultRpcHandler = new RpcHandler();
205
+ //# sourceMappingURL=rpc-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-handler.js","sourceRoot":"","sources":["../../src/api/rpc-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface BuildOptions {
2
+ output: string;
3
+ }
4
+ export declare function buildCommand(options: BuildOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBAoBvD"}
@@ -0,0 +1,193 @@
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.buildCommand = buildCommand;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ async function buildCommand(options) {
40
+ console.log("🔨 SwallowKit プロジェクトをビルド中...");
41
+ const outputDir = path.join(process.cwd(), options.output);
42
+ try {
43
+ // 出力ディレクトリを作成
44
+ if (!fs.existsSync(outputDir)) {
45
+ fs.mkdirSync(outputDir, { recursive: true });
46
+ }
47
+ // Azure Static Web Apps用のファイル構造を作成
48
+ await buildForAzureStaticWebApps(outputDir);
49
+ console.log(`✅ ビルドが完了しました: ${outputDir}`);
50
+ console.log("\n📦 Azure Static Web Appsにデプロイする準備ができました!");
51
+ }
52
+ catch (error) {
53
+ console.error("❌ ビルドに失敗しました:", error);
54
+ process.exit(1);
55
+ }
56
+ }
57
+ async function buildForAzureStaticWebApps(outputDir) {
58
+ // 1. フロントエンドアプリをビルド
59
+ console.log("📦 フロントエンドアプリをビルド中...");
60
+ await buildFrontend(outputDir);
61
+ // 2. Azure Functions用のAPIをビルド
62
+ console.log("⚡ Azure Functions APIをビルド中...");
63
+ await buildFunctions(outputDir);
64
+ // 3. staticwebapp.config.json を生成
65
+ console.log("⚙️ Azure Static Web Apps設定を生成中...");
66
+ await generateStaticWebAppConfig(outputDir);
67
+ console.log("📁 ビルド構造:");
68
+ console.log(" dist/");
69
+ console.log(" ├── index.html # フロントエンドアプリ");
70
+ console.log(" ├── assets/ # 静的アセット");
71
+ console.log(" ├── api/ # Azure Functions");
72
+ console.log(" └── staticwebapp.config.json # SWA設定");
73
+ }
74
+ async function buildFrontend(outputDir) {
75
+ // 実際の実装ではViteやWebpackを使用
76
+ const indexHtml = `<!DOCTYPE html>
77
+ <html lang="ja">
78
+ <head>
79
+ <meta charset="UTF-8" />
80
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
81
+ <title>SwallowKit App</title>
82
+ </head>
83
+ <body>
84
+ <div id="root"></div>
85
+ <script>
86
+ // ビルドされたアプリのエントリーポイント
87
+ console.log("SwallowKit アプリが読み込まれました");
88
+ </script>
89
+ </body>
90
+ </html>`;
91
+ fs.writeFileSync(path.join(outputDir, "index.html"), indexHtml);
92
+ }
93
+ async function buildFunctions(outputDir) {
94
+ const apiDir = path.join(outputDir, "api");
95
+ fs.mkdirSync(apiDir, { recursive: true });
96
+ // SwallowKit RPC エンドポイント用のAzure Function
97
+ const functionJson = {
98
+ bindings: [
99
+ {
100
+ authLevel: "anonymous",
101
+ type: "httpTrigger",
102
+ direction: "in",
103
+ name: "req",
104
+ methods: ["post"],
105
+ route: "_swallowkit",
106
+ },
107
+ {
108
+ type: "http",
109
+ direction: "out",
110
+ name: "res",
111
+ },
112
+ ],
113
+ };
114
+ const swallowkitDir = path.join(apiDir, "_swallowkit");
115
+ fs.mkdirSync(swallowkitDir, { recursive: true });
116
+ fs.writeFileSync(path.join(swallowkitDir, "function.json"), JSON.stringify(functionJson, null, 2));
117
+ // Azure Function のコード
118
+ const functionCode = `const { app } = require('@azure/functions');
119
+
120
+ app.http('_swallowkit', {
121
+ methods: ['POST'],
122
+ authLevel: 'anonymous',
123
+ route: '_swallowkit',
124
+ handler: async (request, context) => {
125
+ try {
126
+ const { fnName, args } = await request.json();
127
+
128
+ // サーバー関数を実行
129
+ const serverFns = require('../serverFns');
130
+ const fn = serverFns[fnName];
131
+
132
+ if (!fn || typeof fn !== 'function') {
133
+ return {
134
+ status: 400,
135
+ jsonBody: {
136
+ success: false,
137
+ error: \`Function \${fnName} not found\`
138
+ }
139
+ };
140
+ }
141
+
142
+ const result = await fn(...args);
143
+
144
+ return {
145
+ status: 200,
146
+ jsonBody: {
147
+ success: true,
148
+ data: result
149
+ }
150
+ };
151
+ } catch (error) {
152
+ return {
153
+ status: 500,
154
+ jsonBody: {
155
+ success: false,
156
+ error: error.message
157
+ }
158
+ };
159
+ }
160
+ }
161
+ });
162
+ `;
163
+ fs.writeFileSync(path.join(swallowkitDir, "index.js"), functionCode);
164
+ // package.json for Azure Functions
165
+ const apiPackageJson = {
166
+ name: "swallowkit-api",
167
+ version: "1.0.0",
168
+ dependencies: {
169
+ "@azure/functions": "^4.0.0",
170
+ },
171
+ };
172
+ fs.writeFileSync(path.join(apiDir, "package.json"), JSON.stringify(apiPackageJson, null, 2));
173
+ }
174
+ async function generateStaticWebAppConfig(outputDir) {
175
+ const config = {
176
+ routes: [
177
+ {
178
+ route: "/api/*",
179
+ allowedRoles: ["anonymous"],
180
+ },
181
+ {
182
+ route: "/*",
183
+ serve: "/index.html",
184
+ statusCode: 200,
185
+ },
186
+ ],
187
+ navigationFallback: {
188
+ rewrite: "/index.html",
189
+ },
190
+ };
191
+ fs.writeFileSync(path.join(outputDir, "staticwebapp.config.json"), JSON.stringify(config, null, 2));
192
+ }
193
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const devCommand: Command;
3
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDpC,eAAO,MAAM,UAAU,SAanB,CAAC"}