swallowkit 1.0.0-beta.12 → 1.0.0-beta.13

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 (67) hide show
  1. package/README.ja.md +33 -9
  2. package/README.md +33 -9
  3. package/dist/__tests__/fixtures.d.ts +8 -0
  4. package/dist/__tests__/fixtures.d.ts.map +1 -1
  5. package/dist/__tests__/fixtures.js +60 -0
  6. package/dist/__tests__/fixtures.js.map +1 -1
  7. package/dist/cli/commands/add-connector.d.ts +20 -0
  8. package/dist/cli/commands/add-connector.d.ts.map +1 -0
  9. package/dist/cli/commands/add-connector.js +161 -0
  10. package/dist/cli/commands/add-connector.js.map +1 -0
  11. package/dist/cli/commands/create-model.d.ts +1 -0
  12. package/dist/cli/commands/create-model.d.ts.map +1 -1
  13. package/dist/cli/commands/create-model.js +65 -1
  14. package/dist/cli/commands/create-model.js.map +1 -1
  15. package/dist/cli/commands/dev.d.ts.map +1 -1
  16. package/dist/cli/commands/dev.js +49 -3
  17. package/dist/cli/commands/dev.js.map +1 -1
  18. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  19. package/dist/cli/commands/scaffold.js +97 -6
  20. package/dist/cli/commands/scaffold.js.map +1 -1
  21. package/dist/cli/index.js +15 -0
  22. package/dist/cli/index.js.map +1 -1
  23. package/dist/core/config.d.ts +3 -2
  24. package/dist/core/config.d.ts.map +1 -1
  25. package/dist/core/config.js +37 -0
  26. package/dist/core/config.js.map +1 -1
  27. package/dist/core/mock/connector-mock-server.d.ts +67 -0
  28. package/dist/core/mock/connector-mock-server.d.ts.map +1 -0
  29. package/dist/core/mock/connector-mock-server.js +285 -0
  30. package/dist/core/mock/connector-mock-server.js.map +1 -0
  31. package/dist/core/mock/zod-mock-generator.d.ts +14 -0
  32. package/dist/core/mock/zod-mock-generator.d.ts.map +1 -0
  33. package/dist/core/mock/zod-mock-generator.js +163 -0
  34. package/dist/core/mock/zod-mock-generator.js.map +1 -0
  35. package/dist/core/scaffold/connector-functions-generator.d.ts +41 -0
  36. package/dist/core/scaffold/connector-functions-generator.d.ts.map +1 -0
  37. package/dist/core/scaffold/connector-functions-generator.js +1009 -0
  38. package/dist/core/scaffold/connector-functions-generator.js.map +1 -0
  39. package/dist/core/scaffold/model-parser.d.ts +6 -0
  40. package/dist/core/scaffold/model-parser.d.ts.map +1 -1
  41. package/dist/core/scaffold/model-parser.js +94 -0
  42. package/dist/core/scaffold/model-parser.js.map +1 -1
  43. package/dist/core/scaffold/nextjs-generator.d.ts +8 -0
  44. package/dist/core/scaffold/nextjs-generator.d.ts.map +1 -1
  45. package/dist/core/scaffold/nextjs-generator.js +133 -0
  46. package/dist/core/scaffold/nextjs-generator.js.map +1 -1
  47. package/dist/types/index.d.ts +31 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/package.json +1 -1
  50. package/src/__tests__/config.test.ts +141 -0
  51. package/src/__tests__/connector-functions-generator.test.ts +288 -0
  52. package/src/__tests__/connector-mock-server.test.ts +252 -0
  53. package/src/__tests__/connector-model-bff.test.ts +162 -0
  54. package/src/__tests__/fixtures.ts +60 -0
  55. package/src/__tests__/zod-mock-generator.test.ts +132 -0
  56. package/src/cli/commands/add-connector.ts +157 -0
  57. package/src/cli/commands/create-model.ts +72 -2
  58. package/src/cli/commands/dev.ts +55 -4
  59. package/src/cli/commands/scaffold.ts +176 -10
  60. package/src/cli/index.ts +16 -0
  61. package/src/core/config.ts +42 -1
  62. package/src/core/mock/connector-mock-server.ts +307 -0
  63. package/src/core/mock/zod-mock-generator.ts +205 -0
  64. package/src/core/scaffold/connector-functions-generator.ts +1106 -0
  65. package/src/core/scaffold/model-parser.ts +103 -0
  66. package/src/core/scaffold/nextjs-generator.ts +154 -0
  67. package/src/types/index.ts +47 -0
package/README.ja.md CHANGED
@@ -28,6 +28,7 @@ Zod スキーマから自動的に CRUD 操作を生成する Scaffold 機能を
28
28
  - **☁️ Azure 最適化** - Static Web Apps + Functions + Cosmos DB で最小コスト構成
29
29
  - **🚀 簡単デプロイ** - Bicep IaC + CI/CD ワークフローを自動生成
30
30
  - **🤖 AI フレンドリー** - 自動生成される指示ファイル(`AGENTS.md`、`CLAUDE.md`、`.github/copilot-instructions.md`)とレイヤー別ルールにより、GitHub Copilot・Claude Code・OpenAI Codex がプロジェクト規約に従ってコードを生成
31
+ - **🔌 外部データコネクタ** - MySQL・PostgreSQL・REST API などの外部データソースを Cosmos DB と並行して統合。同じ Zod 駆動の scaffold ワークフローで完全な型安全性を維持
31
32
  - **🧩 [VS Code 拡張機能](https://marketplace.visualstudio.com/items?itemName=himanago.swallowkit-vscode)** - init/scaffold/dev の GUI ウィザード、モデルファイル右クリックでスキャフォールド、開発サーバーステータスバー、TypeScript スニペット
32
33
 
33
34
 
@@ -37,6 +38,7 @@ Zod スキーマから自動的に CRUD 操作を生成する Scaffold 機能を
37
38
 
38
39
  - **[CLI リファレンス](https://himanago.github.io/swallowkit/ja/cli-reference)** - 全コマンドの詳細
39
40
  - **[Scaffold ガイド](https://himanago.github.io/swallowkit/ja/scaffold-guide)** - CRUD コード生成
41
+ - **[Connector ガイド](https://himanago.github.io/swallowkit/ja/connector-guide)** - 外部データソース統合
40
42
  - **[Zod スキーマ共有ガイド](https://himanago.github.io/swallowkit/ja/zod-schema-sharing-guide)** - スキーマ設計
41
43
  - **[デプロイガイド](https://himanago.github.io/swallowkit/ja/deployment-guide)** - Azure へのデプロイ
42
44
 
@@ -162,6 +164,27 @@ const updated = await api.put<Todo>('/api/todos/123', { completed: true });
162
164
  await api.delete('/api/todos/123');
163
165
  ```
164
166
 
167
+ ### 6. 外部データソースの統合(オプション)
168
+
169
+ SwallowKit は **コネクタ** により、Cosmos DB と併用して外部 RDB データベースや REST API を統合できます。同じ Zod 駆動のワークフローをそのまま使えます:
170
+
171
+ ```bash
172
+ # コネクタを登録
173
+ npx swallowkit add-connector mysql --type rdb --provider mysql --connection-env MYSQL_CONNECTION_STRING
174
+
175
+ # コネクタ対応モデルを作成
176
+ npx swallowkit create-model user --connector mysql
177
+ # shared/models/user.ts を編集(スキーマ + connectorConfig をカスタマイズ)
178
+
179
+ # scaffold がコネクタ固有の Functions コードを生成
180
+ npx swallowkit scaffold shared/models/user.ts
181
+
182
+ # 実際の MySQL がなくてもモックデータでローカル開発
183
+ npx swallowkit dev --mock-connectors
184
+ ```
185
+
186
+ フロントエンドと BFF レイヤーはデータソースの違いを意識しません — `callFunction()` は Cosmos DB モデルでもコネクタモデルでも同一です。詳しくは **[Connector ガイド](https://himanago.github.io/swallowkit/ja/connector-guide)** を参照してください。
187
+
165
188
  ## 🏗️ アーキテクチャ
166
189
 
167
190
  ```
@@ -184,21 +207,22 @@ await api.delete('/api/todos/123');
184
207
  │ - HTTP Triggers (CRUD) │
185
208
  │ - Zod Validation (Re-check) │
186
209
  │ - Business Logic │
187
- │ - Cosmos DB Bindings
188
- └──────────────────────────┬───────────────────────────────────┘
189
-
190
-
191
- ┌─────────────────────────────────────────────────────────────┐
192
- │ Azure Cosmos DB
193
- - NoSQL Database
194
- - Zod Schema Validation
195
- └─────────────────────────────────────────────────────────────┘
210
+ │ - Data Source Bindings
211
+ └──────────┬───────────────┼───────────────┬──────────────────┘
212
+ │ │
213
+ ▼ ▼
214
+ ┌────────────────┐ ┌──────────────┐ ┌──────────────────┐
215
+ │ Azure Cosmos 外部 RDB │ │ 外部 SaaS API │
216
+ DB (既定) │ (MySQL, │ │ (REST) │
217
+ │ │ PostgreSQL)
218
+ └────────────────┘ └──────────────┘ └──────────────────┘
196
219
  ```
197
220
 
198
221
  **重要なパターン:**
199
222
  - **BFF (Backend For Frontend)**: Next.js API Routes が Azure Functions へのプロキシ
200
223
  - **共有スキーマ**: `shared/models/` の Zod スキーマを唯一のソースとして扱う
201
224
  - **C#/Python 向け OpenAPI ブリッジ**: TypeScript 以外の Functions は `functions/generated/` の生成資産を利用
225
+ - **外部コネクタ**: MySQL・PostgreSQL・REST API — scaffold 生成の Functions で同じ BFF パターンを維持
202
226
  - **契約安全性**: 共有 Zod または生成モデルで BFF とバックエンドの整合を保つ
203
227
  - **マネージド ID**: サービス間の安全な接続(接続文字列不要)
204
228
 
package/README.md CHANGED
@@ -30,6 +30,7 @@ Featuring Scaffold functionality to automatically generate CRUD operations from
30
30
  - **☁️ Azure Optimized** - Minimal-cost architecture with Static Web Apps + Functions + Cosmos DB
31
31
  - **🚀 Easy Deployment** - Auto-generated Bicep IaC + CI/CD workflows
32
32
  - **🤖 AI-Friendly** - Auto-generated instruction files (`AGENTS.md`, `CLAUDE.md`, `.github/copilot-instructions.md`) and layer-specific rules help GitHub Copilot, Claude Code, and OpenAI Codex follow project conventions
33
+ - **🔌 External Data Connectors** - Integrate MySQL, PostgreSQL, REST APIs, and other external data sources alongside Cosmos DB — same Zod-driven scaffold workflow with full type safety
33
34
  - **🧩 [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=himanago.swallowkit-vscode)** - GUI wizard for init/scaffold/dev, right-click model scaffolding, dev server status bar, and TypeScript snippets
34
35
 
35
36
  ## 📚 Documentation
@@ -38,6 +39,7 @@ Visit the **[SwallowKit Documentation](https://himanago.github.io/swallowkit/)**
38
39
 
39
40
  - **[CLI Reference](https://himanago.github.io/swallowkit/en/cli-reference)** - All commands in detail
40
41
  - **[Scaffold Guide](https://himanago.github.io/swallowkit/en/scaffold-guide)** - CRUD code generation
42
+ - **[Connector Guide](https://himanago.github.io/swallowkit/en/connector-guide)** - External data source integration
41
43
  - **[Zod Schema Sharing Guide](https://himanago.github.io/swallowkit/en/zod-schema-sharing-guide)** - Schema design
42
44
  - **[Deployment Guide](https://himanago.github.io/swallowkit/en/deployment-guide)** - Deploy to Azure
43
45
 
@@ -219,6 +221,27 @@ const updated = await api.put<Todo>('/api/todos/123', { completed: true });
219
221
  await api.delete('/api/todos/123');
220
222
  ```
221
223
 
224
+ ### 6. Connect External Data Sources (Optional)
225
+
226
+ SwallowKit supports **connectors** for integrating external RDB databases and REST APIs alongside Cosmos DB, using the same Zod-driven workflow:
227
+
228
+ ```bash
229
+ # Register a connector
230
+ npx swallowkit add-connector mysql --type rdb --provider mysql --connection-env MYSQL_CONNECTION_STRING
231
+
232
+ # Create a connector-aware model
233
+ npx swallowkit create-model user --connector mysql
234
+ # edit shared/models/user.ts (customize schema + connectorConfig)
235
+
236
+ # Scaffold generates connector-specific Functions code
237
+ npx swallowkit scaffold shared/models/user.ts
238
+
239
+ # Develop locally with mock data (no real MySQL needed)
240
+ npx swallowkit dev --mock-connectors
241
+ ```
242
+
243
+ The frontend and BFF layer are completely transparent to data source differences — `callFunction()` works identically for Cosmos DB and connector models. See the **[Connector Guide](https://himanago.github.io/swallowkit/en/connector-guide)** for details.
244
+
222
245
  ## 🏗️ Architecture
223
246
 
224
247
  ```
@@ -241,21 +264,22 @@ await api.delete('/api/todos/123');
241
264
  │ - HTTP Triggers (CRUD) │
242
265
  │ - Zod Validation (Re-check) │
243
266
  │ - Business Logic │
244
- │ - Cosmos DB Bindings
245
- └──────────────────────────┬───────────────────────────────────┘
246
-
247
-
248
- ┌─────────────────────────────────────────────────────────────┐
249
- │ Azure Cosmos DB
250
- - NoSQL Database
251
- - Zod Schema Validation
252
- └─────────────────────────────────────────────────────────────┘
267
+ │ - Data Source Bindings
268
+ └──────────┬───────────────┼───────────────┬──────────────────┘
269
+ │ │
270
+ ▼ ▼
271
+ ┌────────────────┐ ┌──────────────┐ ┌──────────────────┐
272
+ │ Azure Cosmos External │ │ External SaaS │
273
+ DB (Default) │ RDB (MySQL │ │ APIs (REST) │
274
+ │ │ PostgreSQL)
275
+ └────────────────┘ └──────────────┘ └──────────────────┘
253
276
  ```
254
277
 
255
278
  **Key Patterns:**
256
279
  - **BFF (Backend For Frontend)**: Next.js API Routes proxy to Azure Functions
257
280
  - **Shared Schemas**: Zod schemas stay in `shared/models/` as the source of truth
258
281
  - **OpenAPI Bridge for C#/Python**: Non-TypeScript Functions consume generated assets under `functions/generated/`
282
+ - **External Connectors**: MySQL, PostgreSQL, REST APIs — scaffold-generated Functions with the same BFF pattern
259
283
  - **Contract Safety**: BFF and backend stay aligned through shared Zod or generated backend models
260
284
  - **Managed Identity**: Secure service connections (no connection strings)
261
285
 
@@ -3,6 +3,14 @@ import { ModelInfo } from "../core/scaffold/model-parser";
3
3
  * テスト用の基本的な ModelInfo フィクスチャ
4
4
  */
5
5
  export declare function createBasicModelInfo(overrides?: Partial<ModelInfo>): ModelInfo;
6
+ /**
7
+ * RDB コネクタ (read-only) 付きの ModelInfo フィクスチャ
8
+ */
9
+ export declare function createRdbConnectorModelInfo(overrides?: Partial<ModelInfo>): ModelInfo;
10
+ /**
11
+ * API コネクタ (read-write) 付きの ModelInfo フィクスチャ
12
+ */
13
+ export declare function createApiConnectorModelInfo(overrides?: Partial<ModelInfo>): ModelInfo;
6
14
  /**
7
15
  * 外部キーを含む ModelInfo フィクスチャ
8
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/__tests__/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAoB9E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,SAAS,CAqBzD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,CA0BnD"}
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/__tests__/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAoB9E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAuBrF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CA2BrF;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,SAAS,CAqBzD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,CA0BnD"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createBasicModelInfo = createBasicModelInfo;
4
+ exports.createRdbConnectorModelInfo = createRdbConnectorModelInfo;
5
+ exports.createApiConnectorModelInfo = createApiConnectorModelInfo;
4
6
  exports.createModelInfoWithForeignKey = createModelInfoWithForeignKey;
5
7
  exports.createModelInfoWithEnum = createModelInfoWithEnum;
6
8
  /**
@@ -27,6 +29,64 @@ function createBasicModelInfo(overrides) {
27
29
  ...overrides,
28
30
  };
29
31
  }
32
+ /**
33
+ * RDB コネクタ (read-only) 付きの ModelInfo フィクスチャ
34
+ */
35
+ function createRdbConnectorModelInfo(overrides) {
36
+ return createBasicModelInfo({
37
+ name: "User",
38
+ displayName: "User",
39
+ schemaName: "userSchema",
40
+ filePath: "/models/user.ts",
41
+ fields: [
42
+ { name: "id", type: "string", isOptional: false, isArray: false },
43
+ { name: "employeeCode", type: "string", isOptional: false, isArray: false },
44
+ { name: "name", type: "string", isOptional: false, isArray: false },
45
+ { name: "email", type: "string", isOptional: false, isArray: false },
46
+ { name: "department", type: "string", isOptional: true, isArray: false },
47
+ { name: "createdAt", type: "string", isOptional: true, isArray: false },
48
+ { name: "updatedAt", type: "string", isOptional: true, isArray: false },
49
+ ],
50
+ connectorConfig: {
51
+ connector: "mysql",
52
+ operations: ["getAll", "getById"],
53
+ table: "users",
54
+ idColumn: "id",
55
+ },
56
+ ...overrides,
57
+ });
58
+ }
59
+ /**
60
+ * API コネクタ (read-write) 付きの ModelInfo フィクスチャ
61
+ */
62
+ function createApiConnectorModelInfo(overrides) {
63
+ return createBasicModelInfo({
64
+ name: "BacklogIssue",
65
+ displayName: "BacklogIssue",
66
+ schemaName: "backlogIssueSchema",
67
+ filePath: "/models/backlog-issue.ts",
68
+ fields: [
69
+ { name: "id", type: "string", isOptional: false, isArray: false },
70
+ { name: "projectId", type: "string", isOptional: false, isArray: false },
71
+ { name: "issueKey", type: "string", isOptional: false, isArray: false },
72
+ { name: "summary", type: "string", isOptional: false, isArray: false },
73
+ { name: "description", type: "string", isOptional: true, isArray: false },
74
+ { name: "createdAt", type: "string", isOptional: true, isArray: false },
75
+ { name: "updatedAt", type: "string", isOptional: true, isArray: false },
76
+ ],
77
+ connectorConfig: {
78
+ connector: "backlog",
79
+ operations: ["getAll", "getById", "create", "update"],
80
+ endpoints: {
81
+ getAll: "GET /issues",
82
+ getById: "GET /issues/{id}",
83
+ create: "POST /issues",
84
+ update: "PATCH /issues/{id}",
85
+ },
86
+ },
87
+ ...overrides,
88
+ });
89
+ }
30
90
  /**
31
91
  * 外部キーを含む ModelInfo フィクスチャ
32
92
  */
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/__tests__/fixtures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/__tests__/fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SwallowKit Add-Connector コマンド
3
+ * swallowkit.config.js にコネクタ設定を追加する
4
+ */
5
+ import { ConnectorDefinition } from "../../types";
6
+ interface AddConnectorOptions {
7
+ name: string;
8
+ type: "rdb" | "api";
9
+ provider?: "mysql" | "postgres" | "sqlserver";
10
+ }
11
+ /**
12
+ * add-connector コマンド
13
+ */
14
+ export declare function addConnectorCommand(options: AddConnectorOptions): Promise<void>;
15
+ /**
16
+ * swallowkit.config.js にコネクタ設定を追加
17
+ */
18
+ export declare function updateConfigWithConnector(configPath: string, connectorName: string, connectorDef: ConnectorDefinition, options: AddConnectorOptions): void;
19
+ export {};
20
+ //# sourceMappingURL=add-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-connector.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add-connector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,iBAsBrE;AAoCD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,mBAAmB,EACjC,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAwCN"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * SwallowKit Add-Connector コマンド
4
+ * swallowkit.config.js にコネクタ設定を追加する
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.addConnectorCommand = addConnectorCommand;
41
+ exports.updateConfigWithConnector = updateConfigWithConnector;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const config_1 = require("../../core/config");
45
+ /**
46
+ * add-connector コマンド
47
+ */
48
+ async function addConnectorCommand(options) {
49
+ (0, config_1.ensureSwallowKitProject)("add-connector");
50
+ console.log(`🔌 SwallowKit Add-Connector: Adding '${options.name}' connector...\n`);
51
+ const configPath = findConfigFile();
52
+ if (!configPath) {
53
+ console.error("❌ swallowkit.config.js not found. Run 'swallowkit init' first.");
54
+ process.exit(1);
55
+ }
56
+ // Build connector definition
57
+ const connectorDef = buildConnectorDefinition(options);
58
+ // Update config file
59
+ updateConfigWithConnector(configPath, options.name, connectorDef, options);
60
+ console.log(`\n✅ Connector '${options.name}' added successfully!`);
61
+ console.log("\n📝 Next steps:");
62
+ console.log(` 1. Review the connector settings in ${configPath}`);
63
+ console.log(` 2. Set the required environment variables in functions/local.settings.json`);
64
+ console.log(` 3. Create models with: npx swallowkit create-model <name> --connector=${options.name}`);
65
+ }
66
+ function findConfigFile() {
67
+ const candidates = ["swallowkit.config.js", "swallowkit.config.json", ".swallowkitrc.json"];
68
+ for (const candidate of candidates) {
69
+ const fullPath = path.resolve(process.cwd(), candidate);
70
+ if (fs.existsSync(fullPath)) {
71
+ return fullPath;
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ function buildConnectorDefinition(options) {
77
+ const name = options.name.toUpperCase().replace(/[^A-Z0-9]/g, "_");
78
+ if (options.type === "rdb") {
79
+ return {
80
+ type: "rdb",
81
+ provider: options.provider || "mysql",
82
+ connectionEnvVar: `${name}_CONNECTION_STRING`,
83
+ };
84
+ }
85
+ return {
86
+ type: "api",
87
+ baseUrlEnvVar: `${name}_API_BASE_URL`,
88
+ auth: {
89
+ type: "apiKey",
90
+ envVar: `${name}_API_KEY`,
91
+ placement: "query",
92
+ paramName: "apiKey",
93
+ },
94
+ };
95
+ }
96
+ /**
97
+ * swallowkit.config.js にコネクタ設定を追加
98
+ */
99
+ function updateConfigWithConnector(configPath, connectorName, connectorDef, options) {
100
+ const content = fs.readFileSync(configPath, "utf-8");
101
+ if (configPath.endsWith(".json")) {
102
+ // JSON config
103
+ const config = JSON.parse(content);
104
+ if (!config.connectors) {
105
+ config.connectors = {};
106
+ }
107
+ config.connectors[connectorName] = connectorDef;
108
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
109
+ console.log(`✅ Updated: ${configPath}`);
110
+ return;
111
+ }
112
+ // JS config — append connectors section
113
+ if (content.includes("connectors:") || content.includes("connectors :")) {
114
+ console.log(`⚠️ 'connectors' section already exists in ${configPath}. Please add the connector manually:`);
115
+ console.log(formatConnectorSnippet(connectorName, connectorDef, options));
116
+ return;
117
+ }
118
+ // Find the last property before the closing of module.exports
119
+ const closingBraceIdx = content.lastIndexOf("}");
120
+ if (closingBraceIdx === -1) {
121
+ console.error("❌ Could not parse config file structure. Please add the connector manually:");
122
+ console.log(formatConnectorSnippet(connectorName, connectorDef, options));
123
+ return;
124
+ }
125
+ // Check if we need a comma before inserting
126
+ const beforeClosing = content.substring(0, closingBraceIdx).trimEnd();
127
+ const needsComma = !beforeClosing.endsWith(",") && !beforeClosing.endsWith("{");
128
+ const connectorBlock = generateConnectorJSBlock(connectorName, connectorDef, options);
129
+ const insertion = `${needsComma ? "," : ""}\n // コネクタ定義\n connectors: {\n${connectorBlock}\n },\n`;
130
+ const newContent = content.substring(0, closingBraceIdx) + insertion + content.substring(closingBraceIdx);
131
+ fs.writeFileSync(configPath, newContent, "utf-8");
132
+ console.log(`✅ Updated: ${configPath}`);
133
+ }
134
+ function generateConnectorJSBlock(name, def, options) {
135
+ if (def.type === "rdb") {
136
+ return ` ${name}: {
137
+ type: 'rdb',
138
+ provider: '${def.provider}',
139
+ connectionEnvVar: '${def.connectionEnvVar}',
140
+ },`;
141
+ }
142
+ const apiDef = def;
143
+ let authBlock = "";
144
+ if (apiDef.auth) {
145
+ authBlock = `
146
+ auth: {
147
+ type: '${apiDef.auth.type}',
148
+ envVar: '${apiDef.auth.envVar}',
149
+ placement: '${apiDef.auth.placement || "query"}',
150
+ paramName: '${apiDef.auth.paramName || "apiKey"}',
151
+ },`;
152
+ }
153
+ return ` ${name}: {
154
+ type: 'api',
155
+ baseUrlEnvVar: '${apiDef.baseUrlEnvVar}',${authBlock}
156
+ },`;
157
+ }
158
+ function formatConnectorSnippet(name, def, options) {
159
+ return `\n ${name}: ${JSON.stringify(def, null, 4)}\n`;
160
+ }
161
+ //# sourceMappingURL=add-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-connector.js","sourceRoot":"","sources":["../../../src/cli/commands/add-connector.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  interface CreateModelOptions {
6
6
  names: string[];
7
7
  modelsDir?: string;
8
+ connector?: string;
8
9
  }
9
10
  /**
10
11
  * create-model コマンド
@@ -1 +1 @@
1
- {"version":3,"file":"create-model.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0CD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,iBA2DnE"}
1
+ {"version":3,"file":"create-model.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8FD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,iBA4EnE"}
@@ -65,6 +65,54 @@ export type ${pascalName} = z.infer<typeof ${pascalName}>;
65
65
  export const displayName = '${pascalName}';
66
66
  `;
67
67
  }
68
+ /**
69
+ * コネクタ付きモデルテンプレートを生成
70
+ */
71
+ function generateConnectorModelTemplate(modelName, connectorName, connectorType) {
72
+ const pascalName = (0, model_parser_1.toPascalCase)(modelName);
73
+ const kebabName = modelName.toLowerCase().replace(/[^a-z0-9]+/g, '-');
74
+ const pluralName = kebabName + 's';
75
+ const schema = `import { z } from 'zod/v4';
76
+
77
+ // ${pascalName} model (Zod official pattern: same name for value and type)
78
+ export const ${pascalName} = z.object({
79
+ id: z.string(),
80
+ name: z.string().min(1),
81
+ createdAt: z.string().optional(),
82
+ updatedAt: z.string().optional(),
83
+ });
84
+
85
+ export type ${pascalName} = z.infer<typeof ${pascalName}>;
86
+
87
+ // Display name for UI
88
+ export const displayName = '${pascalName}';
89
+ `;
90
+ if (connectorType === 'rdb') {
91
+ return schema + `
92
+ // SwallowKit Connector Metadata
93
+ export const connectorConfig = {
94
+ connector: '${connectorName}',
95
+ operations: ['getAll', 'getById'] as const,
96
+ table: '${pluralName}',
97
+ idColumn: 'id',
98
+ };
99
+ `;
100
+ }
101
+ // API connector
102
+ return schema + `
103
+ // SwallowKit Connector Metadata
104
+ export const connectorConfig = {
105
+ connector: '${connectorName}',
106
+ operations: ['getAll', 'getById', 'create', 'update'] as const,
107
+ endpoints: {
108
+ getAll: 'GET /${pluralName}',
109
+ getById: 'GET /${pluralName}/{id}',
110
+ create: 'POST /${pluralName}',
111
+ update: 'PATCH /${pluralName}/{id}',
112
+ },
113
+ };
114
+ `;
115
+ }
68
116
  /**
69
117
  * ユーザーに確認を求める
70
118
  */
@@ -87,6 +135,20 @@ async function createModelCommand(options) {
87
135
  // SwallowKit プロジェクトディレクトリかどうかを検証
88
136
  (0, config_1.ensureSwallowKitProject)("create-model");
89
137
  console.log("🏗️ SwallowKit Create-Model: Generating model templates...\n");
138
+ // コネクタ指定時はコネクタの存在を検証
139
+ let connectorType;
140
+ if (options.connector) {
141
+ const config = (0, config_1.loadConfig)();
142
+ const connectorDef = config.connectors?.[options.connector];
143
+ if (!connectorDef) {
144
+ console.error(`❌ Connector '${options.connector}' not found in swallowkit.config.js.`);
145
+ console.error(` Available connectors: ${Object.keys(config.connectors || {}).join(', ') || '(none)'}`);
146
+ console.error(` Run 'swallowkit add-connector ${options.connector} --type=<rdb|api>' first.`);
147
+ process.exit(1);
148
+ }
149
+ connectorType = connectorDef.type;
150
+ console.log(`🔌 Using connector: ${options.connector} (${connectorType})\n`);
151
+ }
90
152
  const modelsDir = options.modelsDir || "shared/models";
91
153
  // shared/models ディレクトリが存在しなければ作成
92
154
  if (!fs.existsSync(modelsDir)) {
@@ -109,7 +171,9 @@ async function createModelCommand(options) {
109
171
  }
110
172
  }
111
173
  // モデルファイルを生成
112
- const content = generateModelTemplate(name);
174
+ const content = options.connector && connectorType
175
+ ? generateConnectorModelTemplate(name, options.connector, connectorType)
176
+ : generateModelTemplate(name);
113
177
  fs.writeFileSync(filePath, content);
114
178
  console.log(`✅ Created: ${filePath}`);
115
179
  created.push(kebabName);
@@ -1 +1 @@
1
- {"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AAsBpC,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGnE;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAUA;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAW3G;AAiQD,eAAO,MAAM,UAAU,SAoBnB,CAAC"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGnE;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAUA;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAW3G;AAiQD,eAAO,MAAM,UAAU,SAqBnB,CAAC"}