swallowkit 1.0.0-beta.5 → 1.0.0-beta.50

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 (222) hide show
  1. package/LICENSE +21 -21
  2. package/README.ja.md +153 -242
  3. package/README.md +153 -243
  4. package/dist/__tests__/fixtures.d.ts +22 -0
  5. package/dist/__tests__/fixtures.d.ts.map +1 -0
  6. package/dist/__tests__/fixtures.js +146 -0
  7. package/dist/__tests__/fixtures.js.map +1 -0
  8. package/dist/cli/commands/add-auth.d.ts +13 -0
  9. package/dist/cli/commands/add-auth.d.ts.map +1 -0
  10. package/dist/cli/commands/add-auth.js +759 -0
  11. package/dist/cli/commands/add-auth.js.map +1 -0
  12. package/dist/cli/commands/add-connector.d.ts +20 -0
  13. package/dist/cli/commands/add-connector.d.ts.map +1 -0
  14. package/dist/cli/commands/add-connector.js +163 -0
  15. package/dist/cli/commands/add-connector.js.map +1 -0
  16. package/dist/cli/commands/create-model.d.ts +1 -4
  17. package/dist/cli/commands/create-model.d.ts.map +1 -1
  18. package/dist/cli/commands/create-model.js +19 -81
  19. package/dist/cli/commands/create-model.js.map +1 -1
  20. package/dist/cli/commands/dev-seeds.d.ts +57 -0
  21. package/dist/cli/commands/dev-seeds.d.ts.map +1 -0
  22. package/dist/cli/commands/dev-seeds.js +470 -0
  23. package/dist/cli/commands/dev-seeds.js.map +1 -0
  24. package/dist/cli/commands/dev.d.ts +37 -0
  25. package/dist/cli/commands/dev.d.ts.map +1 -1
  26. package/dist/cli/commands/dev.js +720 -156
  27. package/dist/cli/commands/dev.js.map +1 -1
  28. package/dist/cli/commands/index.d.ts +1 -0
  29. package/dist/cli/commands/index.d.ts.map +1 -1
  30. package/dist/cli/commands/index.js +3 -1
  31. package/dist/cli/commands/index.js.map +1 -1
  32. package/dist/cli/commands/init.d.ts +67 -0
  33. package/dist/cli/commands/init.d.ts.map +1 -1
  34. package/dist/cli/commands/init.js +3080 -1771
  35. package/dist/cli/commands/init.js.map +1 -1
  36. package/dist/cli/commands/scaffold.d.ts +13 -0
  37. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  38. package/dist/cli/commands/scaffold.js +513 -129
  39. package/dist/cli/commands/scaffold.js.map +1 -1
  40. package/dist/cli/index.d.ts +5 -1
  41. package/dist/cli/index.d.ts.map +1 -1
  42. package/dist/cli/index.js +206 -55
  43. package/dist/cli/index.js.map +1 -1
  44. package/dist/core/config.d.ts +14 -3
  45. package/dist/core/config.d.ts.map +1 -1
  46. package/dist/core/config.js +172 -5
  47. package/dist/core/config.js.map +1 -1
  48. package/dist/core/mock/connector-mock-server.d.ts +101 -0
  49. package/dist/core/mock/connector-mock-server.d.ts.map +1 -0
  50. package/dist/core/mock/connector-mock-server.js +480 -0
  51. package/dist/core/mock/connector-mock-server.js.map +1 -0
  52. package/dist/core/mock/zod-mock-generator.d.ts +14 -0
  53. package/dist/core/mock/zod-mock-generator.d.ts.map +1 -0
  54. package/dist/core/mock/zod-mock-generator.js +163 -0
  55. package/dist/core/mock/zod-mock-generator.js.map +1 -0
  56. package/dist/core/operations/create-model.d.ts +15 -0
  57. package/dist/core/operations/create-model.d.ts.map +1 -0
  58. package/dist/core/operations/create-model.js +171 -0
  59. package/dist/core/operations/create-model.js.map +1 -0
  60. package/dist/core/operations/runtime.d.ts +32 -0
  61. package/dist/core/operations/runtime.d.ts.map +1 -0
  62. package/dist/core/operations/runtime.js +225 -0
  63. package/dist/core/operations/runtime.js.map +1 -0
  64. package/dist/core/operations/scaffold-machine.d.ts +16 -0
  65. package/dist/core/operations/scaffold-machine.d.ts.map +1 -0
  66. package/dist/core/operations/scaffold-machine.js +63 -0
  67. package/dist/core/operations/scaffold-machine.js.map +1 -0
  68. package/dist/core/project/manifest.d.ts +92 -0
  69. package/dist/core/project/manifest.d.ts.map +1 -0
  70. package/dist/core/project/manifest.js +321 -0
  71. package/dist/core/project/manifest.js.map +1 -0
  72. package/dist/core/project/validation.d.ts +20 -0
  73. package/dist/core/project/validation.d.ts.map +1 -0
  74. package/dist/core/project/validation.js +226 -0
  75. package/dist/core/project/validation.js.map +1 -0
  76. package/dist/core/scaffold/auth-generator.d.ts +63 -0
  77. package/dist/core/scaffold/auth-generator.d.ts.map +1 -0
  78. package/dist/core/scaffold/auth-generator.js +1714 -0
  79. package/dist/core/scaffold/auth-generator.js.map +1 -0
  80. package/dist/core/scaffold/connector-functions-generator.d.ts +41 -0
  81. package/dist/core/scaffold/connector-functions-generator.d.ts.map +1 -0
  82. package/dist/core/scaffold/connector-functions-generator.js +1029 -0
  83. package/dist/core/scaffold/connector-functions-generator.js.map +1 -0
  84. package/dist/core/scaffold/functions-generator.d.ts +7 -1
  85. package/dist/core/scaffold/functions-generator.d.ts.map +1 -1
  86. package/dist/core/scaffold/functions-generator.js +922 -220
  87. package/dist/core/scaffold/functions-generator.js.map +1 -1
  88. package/dist/core/scaffold/model-parser.d.ts +20 -1
  89. package/dist/core/scaffold/model-parser.d.ts.map +1 -1
  90. package/dist/core/scaffold/model-parser.js +333 -139
  91. package/dist/core/scaffold/model-parser.js.map +1 -1
  92. package/dist/core/scaffold/native-schema-generator.d.ts +13 -0
  93. package/dist/core/scaffold/native-schema-generator.d.ts.map +1 -0
  94. package/dist/core/scaffold/native-schema-generator.js +696 -0
  95. package/dist/core/scaffold/native-schema-generator.js.map +1 -0
  96. package/dist/core/scaffold/nextjs-generator.d.ts +8 -0
  97. package/dist/core/scaffold/nextjs-generator.d.ts.map +1 -1
  98. package/dist/core/scaffold/nextjs-generator.js +326 -182
  99. package/dist/core/scaffold/nextjs-generator.js.map +1 -1
  100. package/dist/core/scaffold/openapi-generator.d.ts +3 -0
  101. package/dist/core/scaffold/openapi-generator.d.ts.map +1 -0
  102. package/dist/core/scaffold/openapi-generator.js +190 -0
  103. package/dist/core/scaffold/openapi-generator.js.map +1 -0
  104. package/dist/core/scaffold/ui-generator.d.ts +13 -4
  105. package/dist/core/scaffold/ui-generator.d.ts.map +1 -1
  106. package/dist/core/scaffold/ui-generator.js +772 -663
  107. package/dist/core/scaffold/ui-generator.js.map +1 -1
  108. package/dist/database/base-model.d.ts +3 -3
  109. package/dist/database/base-model.js +3 -3
  110. package/dist/index.d.ts +2 -2
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +2 -1
  113. package/dist/index.js.map +1 -1
  114. package/dist/machine/contracts.d.ts +16 -0
  115. package/dist/machine/contracts.d.ts.map +1 -0
  116. package/dist/machine/contracts.js +3 -0
  117. package/dist/machine/contracts.js.map +1 -0
  118. package/dist/machine/errors.d.ts +11 -0
  119. package/dist/machine/errors.d.ts.map +1 -0
  120. package/dist/machine/errors.js +34 -0
  121. package/dist/machine/errors.js.map +1 -0
  122. package/dist/machine/index.d.ts +3 -0
  123. package/dist/machine/index.d.ts.map +1 -0
  124. package/dist/machine/index.js +156 -0
  125. package/dist/machine/index.js.map +1 -0
  126. package/dist/mcp/index.d.ts +25 -0
  127. package/dist/mcp/index.d.ts.map +1 -0
  128. package/dist/mcp/index.js +202 -0
  129. package/dist/mcp/index.js.map +1 -0
  130. package/dist/types/index.d.ts +95 -0
  131. package/dist/types/index.d.ts.map +1 -1
  132. package/dist/utils/package-manager.d.ts +5 -2
  133. package/dist/utils/package-manager.d.ts.map +1 -1
  134. package/dist/utils/package-manager.js +34 -13
  135. package/dist/utils/package-manager.js.map +1 -1
  136. package/dist/utils/python-uv.d.ts +21 -0
  137. package/dist/utils/python-uv.d.ts.map +1 -0
  138. package/dist/utils/python-uv.js +111 -0
  139. package/dist/utils/python-uv.js.map +1 -0
  140. package/dist/version.d.ts +2 -0
  141. package/dist/version.d.ts.map +1 -0
  142. package/dist/version.js +49 -0
  143. package/dist/version.js.map +1 -0
  144. package/package.json +84 -74
  145. package/src/__tests__/__snapshots__/functions-generator.test.ts.snap +1139 -0
  146. package/src/__tests__/__snapshots__/nextjs-generator.test.ts.snap +206 -0
  147. package/src/__tests__/__snapshots__/ui-generator.test.ts.snap +532 -0
  148. package/src/__tests__/auth.test.ts +761 -0
  149. package/src/__tests__/config.test.ts +295 -0
  150. package/src/__tests__/connector-functions-generator.test.ts +288 -0
  151. package/src/__tests__/connector-mock-server.test.ts +439 -0
  152. package/src/__tests__/connector-model-bff.test.ts +162 -0
  153. package/src/__tests__/dev-seeds.test.ts +173 -0
  154. package/src/__tests__/dev.test.ts +287 -0
  155. package/src/__tests__/fixtures.ts +144 -0
  156. package/src/__tests__/functions-generator.test.ts +237 -0
  157. package/src/__tests__/init.test.ts +327 -0
  158. package/src/__tests__/jest-globals.d.ts +8 -0
  159. package/src/__tests__/machine.test.ts +356 -0
  160. package/src/__tests__/mcp.test.ts +145 -0
  161. package/src/__tests__/model-parser.test.ts +52 -0
  162. package/src/__tests__/multi-auth.test.ts +133 -0
  163. package/src/__tests__/nextjs-generator.test.ts +105 -0
  164. package/src/__tests__/openapi-generator.test.ts +43 -0
  165. package/src/__tests__/package-manager.test.ts +227 -0
  166. package/src/__tests__/python-uv.test.ts +48 -0
  167. package/src/__tests__/scaffold.test.ts +191 -0
  168. package/src/__tests__/string-utils.test.ts +75 -0
  169. package/src/__tests__/tsconfig.json +15 -0
  170. package/src/__tests__/ui-generator.test.ts +144 -0
  171. package/src/__tests__/zod-mock-generator.test.ts +132 -0
  172. package/src/cli/commands/add-auth.ts +815 -0
  173. package/src/cli/commands/add-connector.ts +158 -0
  174. package/src/cli/commands/create-model.ts +62 -0
  175. package/src/cli/commands/dev-seeds.ts +614 -0
  176. package/src/cli/commands/dev.ts +1234 -0
  177. package/src/cli/commands/index.ts +9 -0
  178. package/src/cli/commands/init.ts +3902 -0
  179. package/src/cli/commands/provision.ts +193 -0
  180. package/src/cli/commands/scaffold.ts +1067 -0
  181. package/src/cli/index.ts +202 -0
  182. package/src/core/config.ts +379 -0
  183. package/src/core/mock/connector-mock-server.ts +555 -0
  184. package/src/core/mock/zod-mock-generator.ts +205 -0
  185. package/src/core/operations/create-model.ts +174 -0
  186. package/src/core/operations/runtime.ts +235 -0
  187. package/src/core/operations/scaffold-machine.ts +91 -0
  188. package/src/core/project/manifest.ts +402 -0
  189. package/src/core/project/validation.ts +245 -0
  190. package/src/core/scaffold/auth-generator.ts +1760 -0
  191. package/src/core/scaffold/connector-functions-generator.ts +1133 -0
  192. package/src/core/scaffold/functions-generator.ts +972 -0
  193. package/src/core/scaffold/model-parser.ts +847 -0
  194. package/src/core/scaffold/native-schema-generator.ts +822 -0
  195. package/src/core/scaffold/nextjs-generator.ts +382 -0
  196. package/src/core/scaffold/openapi-generator.ts +212 -0
  197. package/src/core/scaffold/ui-generator.ts +1068 -0
  198. package/src/database/base-model.ts +184 -0
  199. package/src/database/client.ts +140 -0
  200. package/src/database/repository.ts +104 -0
  201. package/src/database/runtime-check.ts +25 -0
  202. package/src/index.ts +27 -0
  203. package/src/machine/contracts.ts +17 -0
  204. package/src/machine/errors.ts +34 -0
  205. package/src/machine/index.ts +173 -0
  206. package/src/mcp/index.ts +209 -0
  207. package/src/types/index.ts +165 -0
  208. package/src/utils/package-manager.ts +246 -0
  209. package/src/utils/python-uv.ts +96 -0
  210. package/src/version.ts +13 -0
  211. package/dist/cli/commands/build.d.ts +0 -6
  212. package/dist/cli/commands/build.d.ts.map +0 -1
  213. package/dist/cli/commands/build.js +0 -177
  214. package/dist/cli/commands/build.js.map +0 -1
  215. package/dist/cli/commands/deploy.d.ts +0 -3
  216. package/dist/cli/commands/deploy.d.ts.map +0 -1
  217. package/dist/cli/commands/deploy.js +0 -147
  218. package/dist/cli/commands/deploy.js.map +0 -1
  219. package/dist/cli/commands/setup.d.ts +0 -6
  220. package/dist/cli/commands/setup.d.ts.map +0 -1
  221. package/dist/cli/commands/setup.js +0 -254
  222. package/dist/cli/commands/setup.js.map +0 -1
@@ -36,18 +36,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.loadConfig = loadConfig;
37
37
  exports.generateConfig = generateConfig;
38
38
  exports.loadConfigFromEnv = loadConfigFromEnv;
39
+ exports.getBackendLanguage = getBackendLanguage;
39
40
  exports.getFullConfig = getFullConfig;
41
+ exports.getConnectorDefinition = getConnectorDefinition;
42
+ exports.getAuthConfig = getAuthConfig;
43
+ exports.getValidatedFullConfig = getValidatedFullConfig;
44
+ exports.normalizeAuthConfig = normalizeAuthConfig;
45
+ exports.getNormalizedAuthConfig = getNormalizedAuthConfig;
40
46
  exports.validateConfig = validateConfig;
41
47
  exports.isSwallowKitProject = isSwallowKitProject;
42
48
  exports.ensureSwallowKitProject = ensureSwallowKitProject;
43
49
  const fs = __importStar(require("fs"));
50
+ const module_1 = require("module");
44
51
  const path = __importStar(require("path"));
45
52
  const package_manager_1 = require("../utils/package-manager");
53
+ const requireFromHere = (0, module_1.createRequire)(__filename);
54
+ function unwrapConfigModule(loadedConfig) {
55
+ if (typeof loadedConfig === "object" && loadedConfig !== null && "default" in loadedConfig) {
56
+ return loadedConfig.default ?? {};
57
+ }
58
+ return loadedConfig;
59
+ }
60
+ const VALID_BACKEND_LANGUAGES = ["typescript", "csharp", "python"];
46
61
  /**
47
62
  * デフォルト設定
48
63
  */
49
64
  const DEFAULT_CONFIG = {
50
65
  database: {},
66
+ backend: {
67
+ language: "typescript",
68
+ },
51
69
  api: {
52
70
  endpoint: "/api/_swallowkit",
53
71
  cors: {
@@ -59,7 +77,7 @@ const DEFAULT_CONFIG = {
59
77
  /**
60
78
  * 設定ファイルを読み込み
61
79
  */
62
- function loadConfig(configPath) {
80
+ function loadConfig(configPath, throwOnError = false) {
63
81
  const defaultPaths = [
64
82
  "swallowkit.config.json",
65
83
  "swallowkit.config.js",
@@ -77,12 +95,14 @@ function loadConfig(configPath) {
77
95
  return mergeConfig(DEFAULT_CONFIG, userConfig);
78
96
  }
79
97
  else if (filePath.endsWith(".js")) {
80
- delete require.cache[fullPath];
81
- const userConfig = require(fullPath);
82
- return mergeConfig(DEFAULT_CONFIG, userConfig.default || userConfig);
98
+ delete requireFromHere.cache[fullPath];
99
+ const loadedConfig = requireFromHere(fullPath);
100
+ return mergeConfig(DEFAULT_CONFIG, unwrapConfigModule(loadedConfig));
83
101
  }
84
102
  }
85
103
  catch (error) {
104
+ if (throwOnError)
105
+ throw error;
86
106
  console.warn(`⚠️ 設定ファイルの読み込みに失敗: ${filePath}`, error);
87
107
  }
88
108
  }
@@ -99,6 +119,10 @@ function mergeConfig(defaultConfig, userConfig) {
99
119
  ...defaultConfig.database,
100
120
  ...userConfig.database,
101
121
  },
122
+ backend: {
123
+ ...defaultConfig.backend,
124
+ ...userConfig.backend,
125
+ },
102
126
  api: {
103
127
  ...defaultConfig.api,
104
128
  ...userConfig.api,
@@ -107,6 +131,10 @@ function mergeConfig(defaultConfig, userConfig) {
107
131
  ...userConfig.api?.cors,
108
132
  },
109
133
  },
134
+ connectors: userConfig.connectors ?? defaultConfig.connectors,
135
+ auth: userConfig.auth
136
+ ? { ...defaultConfig.auth, ...userConfig.auth }
137
+ : defaultConfig.auth,
110
138
  };
111
139
  }
112
140
  /**
@@ -119,6 +147,9 @@ function generateConfig(outputPath = "swallowkit.config.json") {
119
147
  connectionString: "your-cosmos-connection-string",
120
148
  databaseName: "SwallowKitDB",
121
149
  },
150
+ backend: {
151
+ language: "typescript",
152
+ },
122
153
  api: {
123
154
  endpoint: "/api/_swallowkit",
124
155
  cors: {
@@ -155,8 +186,21 @@ function loadConfigFromEnv() {
155
186
  endpoint: process.env.SWALLOWKIT_API_ENDPOINT,
156
187
  };
157
188
  }
189
+ if (process.env.SWALLOWKIT_BACKEND_LANGUAGE) {
190
+ config.backend = {
191
+ ...config.backend,
192
+ language: process.env.SWALLOWKIT_BACKEND_LANGUAGE,
193
+ };
194
+ }
158
195
  return config;
159
196
  }
197
+ function getBackendLanguage(configPath) {
198
+ const language = getFullConfig(configPath).backend?.language;
199
+ if (language && VALID_BACKEND_LANGUAGES.includes(language)) {
200
+ return language;
201
+ }
202
+ return "typescript";
203
+ }
160
204
  /**
161
205
  * 完全な設定を取得(ファイル + 環境変数)
162
206
  */
@@ -165,19 +209,142 @@ function getFullConfig(configPath) {
165
209
  const envConfig = loadConfigFromEnv();
166
210
  return mergeConfig(fileConfig, envConfig);
167
211
  }
212
+ /**
213
+ * コネクタ定義を名前で取得
214
+ */
215
+ function getConnectorDefinition(connectorName, configPath) {
216
+ const config = getFullConfig(configPath);
217
+ return config.connectors?.[connectorName];
218
+ }
219
+ /**
220
+ * 認証設定を取得
221
+ */
222
+ function getAuthConfig(configPath) {
223
+ const config = getFullConfig(configPath);
224
+ return config.auth;
225
+ }
226
+ /** Load configuration for mutating/generation commands and fail instead of silently falling back. */
227
+ function getValidatedFullConfig(configPath) {
228
+ const config = mergeConfig(loadConfig(configPath, true), loadConfigFromEnv());
229
+ const validation = validateConfig(config);
230
+ if (!validation.valid)
231
+ throw new Error(`Invalid SwallowKit configuration:\n${validation.errors.map(error => `- ${error}`).join("\n")}`);
232
+ return config;
233
+ }
234
+ const VALID_AUTH_PROVIDERS = ["custom-jwt", "swa", "external-token", "swa-custom", "none"];
235
+ const AUTH_NAME = /^[A-Za-z][A-Za-z0-9_-]*$/;
236
+ /** Convert the legacy single-provider shape to the canonical named-scheme shape. */
237
+ function normalizeAuthConfig(auth) {
238
+ if (!auth)
239
+ return undefined;
240
+ const schemes = { ...(auth.schemes ?? {}) };
241
+ if (auth.provider && auth.provider !== "none" && !schemes.default) {
242
+ schemes.default = { provider: auth.provider, customJwt: auth.customJwt, swa: auth.swa };
243
+ }
244
+ const rawDefault = auth.authorization?.defaultPolicy ?? (Object.keys(schemes).length ? "authenticated" : "anonymous");
245
+ return {
246
+ ...auth,
247
+ schemes,
248
+ authorization: {
249
+ ...auth.authorization,
250
+ defaultPolicy: rawDefault === "public" ? "anonymous" : rawDefault,
251
+ policies: { ...(auth.authorization?.policies ?? {}) },
252
+ },
253
+ };
254
+ }
255
+ function getNormalizedAuthConfig(configPath) {
256
+ return normalizeAuthConfig(getAuthConfig(configPath));
257
+ }
168
258
  /**
169
259
  * 設定の検証
170
260
  */
261
+ const VALID_CONNECTOR_TYPES = ["rdb", "api"];
262
+ const VALID_RDB_PROVIDERS = ["mysql", "postgres", "sqlserver"];
263
+ const VALID_API_AUTH_TYPES = ["apiKey", "bearer", "oauth2"];
264
+ function hasConfiguredDatabase(config) {
265
+ return Boolean(config.database && Object.keys(config.database).length > 0);
266
+ }
171
267
  function validateConfig(config) {
172
268
  const errors = [];
269
+ const auth = normalizeAuthConfig(config.auth);
270
+ if (auth) {
271
+ for (const [name, scheme] of Object.entries(auth.schemes)) {
272
+ const base = `auth.schemes.${name}`;
273
+ if (!AUTH_NAME.test(name))
274
+ errors.push(`${base}: scheme name must match ${AUTH_NAME}; rename the scheme`);
275
+ if (!VALID_AUTH_PROVIDERS.includes(scheme.provider))
276
+ errors.push(`${base}.provider: unsupported provider '${scheme.provider}'; use ${VALID_AUTH_PROVIDERS.join(", ")}`);
277
+ if (scheme.provider === "none" || scheme.provider === "swa-custom")
278
+ errors.push(`${base}.provider: '${scheme.provider}' cannot be used as a named scheme; use swa, external-token, or custom-jwt`);
279
+ if (scheme.provider === "custom-jwt") {
280
+ const jwt = scheme.customJwt ?? (name === "default" ? auth.customJwt : undefined);
281
+ for (const key of ["userConnector", "userTable", "loginIdColumn", "passwordHashColumn", "rolesColumn"]) {
282
+ if (!jwt?.[key])
283
+ errors.push(`${base}.customJwt.${key}: required for custom-jwt; configure this value`);
284
+ }
285
+ }
286
+ }
287
+ for (const [name, policy] of Object.entries(auth.authorization.policies)) {
288
+ const base = `auth.authorization.policies.${name}`;
289
+ if (!AUTH_NAME.test(name))
290
+ errors.push(`${base}: policy name must match ${AUTH_NAME}; rename the policy`);
291
+ if (!Array.isArray(policy.schemes) || policy.schemes.length === 0)
292
+ errors.push(`${base}.schemes: provide at least one named scheme`);
293
+ for (const scheme of policy.schemes ?? [])
294
+ if (!auth.schemes[scheme])
295
+ errors.push(`${base}.schemes: undefined scheme '${scheme}'; define auth.schemes.${scheme}`);
296
+ const sources = new Map();
297
+ for (const schemeName of policy.schemes ?? []) {
298
+ const provider = auth.schemes[schemeName]?.provider;
299
+ const source = provider === "swa" ? "x-ms-client-principal" : provider === "custom-jwt" || provider === "external-token" ? "authorization-bearer" : provider;
300
+ if (source && sources.has(source))
301
+ errors.push(`${base}.schemes: '${sources.get(source)}' and '${schemeName}' both use ${source}; split the policy so credential selection is deterministic`);
302
+ else if (source)
303
+ sources.set(source, schemeName);
304
+ }
305
+ }
306
+ const defaultPolicy = auth.authorization.defaultPolicy;
307
+ if (defaultPolicy === "authenticated" && !auth.schemes.default && Object.keys(auth.schemes).length !== 1)
308
+ errors.push("auth.authorization.defaultPolicy: 'authenticated' requires auth.schemes.default (or exactly one scheme); set a default scheme or use a named policy");
309
+ else if (!["anonymous", "authenticated"].includes(defaultPolicy) && !auth.authorization.policies[defaultPolicy])
310
+ errors.push(`auth.authorization.defaultPolicy: undefined policy '${defaultPolicy}'; define auth.authorization.policies.${defaultPolicy}`);
311
+ }
173
312
  // データベース設定の検証
174
- if (config.database && !config.database.connectionString) {
313
+ if (hasConfiguredDatabase(config) && !config.database?.connectionString) {
175
314
  errors.push("Cosmos DB connection string is required");
176
315
  }
177
316
  // API設定の検証
178
317
  if (config.api?.endpoint && !config.api.endpoint.startsWith("/")) {
179
318
  errors.push("API endpoint must start with '/'");
180
319
  }
320
+ if (config.backend?.language && !VALID_BACKEND_LANGUAGES.includes(config.backend.language)) {
321
+ errors.push("Backend language must be one of: typescript, csharp, python");
322
+ }
323
+ // コネクタ設定の検証
324
+ if (config.connectors) {
325
+ for (const [name, connector] of Object.entries(config.connectors)) {
326
+ if (!VALID_CONNECTOR_TYPES.includes(connector.type)) {
327
+ errors.push(`Connector '${name}': type must be one of: ${VALID_CONNECTOR_TYPES.join(", ")}`);
328
+ continue;
329
+ }
330
+ if (connector.type === "rdb") {
331
+ if (!connector.provider || !VALID_RDB_PROVIDERS.includes(connector.provider)) {
332
+ errors.push(`Connector '${name}': provider must be one of: ${VALID_RDB_PROVIDERS.join(", ")}`);
333
+ }
334
+ if (!connector.connectionEnvVar) {
335
+ errors.push(`Connector '${name}': connectionEnvVar is required`);
336
+ }
337
+ }
338
+ if (connector.type === "api") {
339
+ if (!connector.baseUrlEnvVar) {
340
+ errors.push(`Connector '${name}': baseUrlEnvVar is required`);
341
+ }
342
+ if (connector.auth && !VALID_API_AUTH_TYPES.includes(connector.auth.type)) {
343
+ errors.push(`Connector '${name}': auth.type must be one of: ${VALID_API_AUTH_TYPES.join(", ")}`);
344
+ }
345
+ }
346
+ }
347
+ }
181
348
  return {
182
349
  valid: errors.length === 0,
183
350
  errors,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,gCAkCC;AAiCD,wCAqBC;AAKD,8CAkCC;AAED,gDAOC;AAKD,sCAKC;AAKD,wDAGC;AAKD,sCAGC;AAGD,wDAKC;AAMD,kDAgBC;AAED,0DAEC;AAaD,wCAiFC;AAgBD,kDAYC;AAQD,0DAaC;AA1XD,uCAAyB;AACzB,mCAAuC;AACvC,2CAA6B;AAE7B,8DAA0E;AAE1E,MAAM,eAAe,GAAG,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC;AAElD,SAAS,kBAAkB,CACzB,YAAiF;IAEjF,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;QAC3F,OAAO,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,YAAyC,CAAC;AACnD,CAAC;AAED,MAAM,uBAAuB,GAAsB,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEtF;;GAEG;AACH,MAAM,cAAc,GAAqB;IACvC,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE;QACP,QAAQ,EAAE,YAAY;KACvB;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE;YACJ,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,IAAI;SAClB;KACF;CACF,CAAC;AAEF;;GAEG;AACH,SAAgB,UAAU,CAAC,UAAmB,EAAE,YAAY,GAAG,KAAK;IAClE,MAAM,YAAY,GAAG;QACnB,wBAAwB;QACxB,sBAAsB;QACtB,oBAAoB;KACrB,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEvD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEvD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;gBAE3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC1C,OAAO,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,OAAO,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACvC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAwE,CAAC;oBACtH,OAAO,WAAW,CAAC,cAAc,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,YAAY;oBAAE,MAAM,KAAK,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,aAA+B,EAAE,UAAqC;IACzF,OAAO;QACL,QAAQ,EAAE;YACR,GAAG,aAAa,CAAC,QAAQ;YACzB,GAAG,UAAU,CAAC,QAAQ;SACvB;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,OAAO;YACxB,GAAG,UAAU,CAAC,OAAO;SACtB;QACD,GAAG,EAAE;YACH,GAAG,aAAa,CAAC,GAAG;YACpB,GAAG,UAAU,CAAC,GAAG;YACjB,IAAI,EAAE;gBACJ,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI;gBAC1B,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI;aACxB;SACF;QACD,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU;QAC7D,IAAI,EAAE,UAAU,CAAC,IAAI;YACnB,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE;YAC/C,CAAC,CAAC,aAAa,CAAC,IAAI;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,aAAqB,wBAAwB;IAC1E,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,oCAAoC;QAC7C,QAAQ,EAAE;YACR,gBAAgB,EAAE,+BAA+B;YACjD,YAAY,EAAE,cAAc;SAC7B;QACD,OAAO,EAAE;YACP,QAAQ,EAAE,YAAY;SACvB;QACD,GAAG,EAAE;YACH,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE;gBACJ,MAAM,EAAE,CAAC,uBAAuB,CAAC;gBACjC,WAAW,EAAE,IAAI;aAClB;SACF;KACF,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,MAAM,GAA8B,EAAE,CAAC;IAE7C,WAAW;IACX,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,CAAC;QAChD,MAAM,CAAC,QAAQ,GAAG;YAChB,GAAG,MAAM,CAAC,QAAQ;YAClB,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B;SAC9D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACnC,MAAM,CAAC,QAAQ,GAAG;YAChB,GAAG,MAAM,CAAC,QAAQ;YAClB,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;SAC7C,CAAC;IACJ,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,GAAG;YACX,GAAG,MAAM,CAAC,GAAG;YACb,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;SAC9C,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC5C,MAAM,CAAC,OAAO,GAAG;YACf,GAAG,MAAM,CAAC,OAAO;YACjB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA8C;SACrE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,kBAAkB,CAAC,UAAmB;IACpD,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC7D,IAAI,QAAQ,IAAI,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,UAAmB;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEtC,OAAO,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,aAAqB,EAAE,UAAmB;IAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,UAAmB;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,qGAAqG;AACrG,SAAgB,sBAAsB,CAAC,UAAmB;IACxD,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxI,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,oBAAoB,GAAmB,CAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAC3G,MAAM,SAAS,GAAG,0BAA0B,CAAC;AAE7C,oFAAoF;AACpF,SAAgB,mBAAmB,CAAC,IAAiB;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IAC5C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClE,OAAO,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1F,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACtH,OAAO;QACL,GAAG,IAAI;QACP,OAAO;QACP,aAAa,EAAE;YACb,GAAG,IAAI,CAAC,aAAa;YACrB,aAAa,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;YACjE,QAAQ,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE;SACtD;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,UAAmB;IACzD,OAAO,mBAAmB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7C,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC/D,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE5D,SAAS,qBAAqB,CAAC,MAAwB;IACrD,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,cAAc,CAAC,MAAwB;IACrD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,gBAAgB,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,4BAA4B,SAAS,qBAAqB,CAAC,CAAC;YAC1G,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,oCAAoC,MAAM,CAAC,QAAQ,UAAU,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxK,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,MAAM,CAAC,QAAQ,4EAA4E,CAAC,CAAC;YACnM,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAClF,KAAK,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,CAAU,EAAE,CAAC;oBAChH,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,cAAc,GAAG,iDAAiD,CAAC,CAAC;gBAC1G,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,GAAG,+BAA+B,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,4BAA4B,SAAS,qBAAqB,CAAC,CAAC;YAC1G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,6CAA6C,CAAC,CAAC;YACrI,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,+BAA+B,MAAM,0BAA0B,MAAM,EAAE,CAAC,CAAC;YAClK,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC1C,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;gBACpD,MAAM,MAAM,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC7J,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,cAAc,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,UAAU,cAAc,MAAM,6DAA6D,CAAC,CAAC;qBACzL,IAAI,MAAM;oBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QACvD,IAAI,aAAa,KAAK,eAAe,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,qJAAqJ,CAAC,CAAC;aACxQ,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,uDAAuD,aAAa,yCAAyC,aAAa,EAAE,CAAC,CAAC;IAC7P,CAAC;IAED,cAAc;IACd,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,WAAW;IACX,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,2BAA2B,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7F,SAAS;YACX,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7E,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,+BAA+B,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjG,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,iCAAiC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,8BAA8B,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1E,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,gCAAgC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,0BAA0B,GAAG;IACjC,sBAAsB;IACtB,wBAAwB;IACxB,oBAAoB;CACrB,CAAC;AAEF;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,WAAoB;IACtD,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,4BAA4B;IAC5B,KAAK,MAAM,MAAM,IAAI,0BAA0B,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,WAAmB,EAAE,WAAoB;IAC/E,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,aAAa,WAAW,4DAA4D,CAAC,CAAC;QACpG,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,KAAK,MAAM,MAAM,IAAI,0BAA0B,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,KAAK,GAAG,IAAA,6BAAW,EAAC,IAAA,mCAAiB,GAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,GAAG,6DAA6D,CAAC,CAAC;QACxG,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * コネクタモデル用モックサーバー
3
+ * - コネクタモデルへのリクエスト → Zodベースのインメモリ CRUD で応答
4
+ * - その他のリクエスト → 実Azure Functions へプロキシ
5
+ */
6
+ import { ModelInfo } from "../scaffold/model-parser";
7
+ export interface ConnectorMockServerOptions {
8
+ /** モックサーバーのリッスンポート */
9
+ port: number;
10
+ /** Azure Functions の転送先ホスト:ポート(例: "localhost:7071") */
11
+ functionsTarget: string;
12
+ /** コネクタモデル一覧 */
13
+ connectorModels: ModelInfo[];
14
+ /** 全モデル一覧(dev-seeds 読み込み用) */
15
+ allModels?: ModelInfo[];
16
+ /** dev-seeds 環境名(指定時はシードデータを初期データとして読み込む) */
17
+ seedEnv?: string;
18
+ /** dev-seeds ディレクトリ */
19
+ seedsDir?: string;
20
+ /** 各モデルの初期生成レコード数(デフォルト: 5) */
21
+ mockCount?: number;
22
+ /** ホスト名 */
23
+ host?: string;
24
+ /** Auth config — auth functions use RDB connector, mocked the same way */
25
+ authConfig?: {
26
+ /** JWT secret for mock token generation/verification */
27
+ jwtSecret: string;
28
+ /** Token expiry (e.g., '24h') */
29
+ tokenExpiry?: string;
30
+ /** Custom JWT config from swallowkit.config.js */
31
+ customJwt?: {
32
+ /** RDB table name that holds user records (e.g., "users") */
33
+ userTable: string;
34
+ loginIdColumn: string;
35
+ passwordHashColumn: string;
36
+ rolesColumn: string;
37
+ };
38
+ /** Default auth policy: 'authenticated' = all models need auth, 'anonymous' = only models with authPolicy */
39
+ defaultPolicy?: "authenticated" | "anonymous";
40
+ };
41
+ }
42
+ type MockDocument = Record<string, unknown>;
43
+ /**
44
+ * コネクタモデル用モックサーバー
45
+ */
46
+ export declare class ConnectorMockServer {
47
+ private server;
48
+ private stores;
49
+ private routeMap;
50
+ private options;
51
+ constructor(options: ConnectorMockServerOptions);
52
+ /**
53
+ * モックデータを初期化し、サーバーを起動
54
+ */
55
+ start(): Promise<void>;
56
+ /**
57
+ * サーバーを停止
58
+ */
59
+ stop(): Promise<void>;
60
+ /**
61
+ * 特定モデルの現在のストアデータを取得(テスト用)
62
+ */
63
+ getStore(modelName: string): MockDocument[];
64
+ private initializeStores;
65
+ private handleRequest;
66
+ /**
67
+ * URL パス解析: /api/backlogIssue/123 → { route: "backlogIssue", id: "123" }
68
+ */
69
+ private parseRoute;
70
+ private handleMockCrud;
71
+ /**
72
+ * コネクタモデル以外のリクエストをAzure Functionsへプロキシ
73
+ */
74
+ private proxyToFunctions;
75
+ private handleAuthRequest;
76
+ private handleLogin;
77
+ private handleMe;
78
+ /**
79
+ * authConfig.customJwt.userTable に対応するモデルのストアを返す。
80
+ * ユーザーテーブルが見つからない場合は null を返す。
81
+ */
82
+ private resolveUserStore;
83
+ /**
84
+ * JWT を検証し、ペイロード(roles 含む)を返す。
85
+ * 認証不要な場合は null を返す。401/403 の場合はレスポンスを送信して 'error' を返す。
86
+ */
87
+ private checkAuth;
88
+ /**
89
+ * モデルの authPolicy から read/write に必要なロールを解決
90
+ */
91
+ private resolveRequiredRoles;
92
+ private readBody;
93
+ private sendJson;
94
+ /**
95
+ * リクエストボディを完全に読み捨ててからレスポンスを送信
96
+ * POST/PUT の 405 等で未読ボディがある場合に Linux で RST を防ぐ
97
+ */
98
+ private drainAndRespond;
99
+ }
100
+ export {};
101
+ //# sourceMappingURL=connector-mock-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-mock-server.d.ts","sourceRoot":"","sources":["../../../src/core/mock/connector-mock-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAe,MAAM,0BAA0B,CAAC;AAIlE,MAAM,WAAW,0BAA0B;IACzC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB;IAChB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,UAAU,CAAC,EAAE;QACX,wDAAwD;QACxD,SAAS,EAAE,MAAM,CAAC;QAClB,iCAAiC;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kDAAkD;QAClD,SAAS,CAAC,EAAE;YACV,6DAA6D;YAC7D,SAAS,EAAE,MAAM,CAAC;YAClB,aAAa,EAAE,MAAM,CAAC;YACtB,kBAAkB,EAAE,MAAM,CAAC;YAC3B,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,6GAA6G;QAC7G,aAAa,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC;KAC/C,CAAC;CACH;AAED,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5C;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,OAAO,CAA6B;gBAEhC,OAAO,EAAE,0BAA0B;IAU/C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAcrB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;YAO7B,gBAAgB;IA+B9B,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,cAAc;IAiFtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,WAAW;IA6EnB,OAAO,CAAC,QAAQ;IA0BhB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA6CjB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,QAAQ;IAahB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAexB"}