swallowkit 1.0.0-beta.18 → 1.0.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/add-auth.d.ts.map +1 -1
- package/dist/cli/commands/add-auth.js +1 -4
- package/dist/cli/commands/add-auth.js.map +1 -1
- package/dist/cli/commands/add-connector.d.ts +1 -1
- package/dist/cli/commands/add-connector.d.ts.map +1 -1
- package/dist/cli/commands/add-connector.js +7 -7
- package/dist/cli/commands/add-connector.js.map +1 -1
- package/dist/cli/commands/dev.d.ts +11 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +32 -22
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/init.js +1 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +3 -6
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/index.d.ts +4 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +153 -79
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/mock/connector-mock-server.d.ts.map +1 -1
- package/dist/core/mock/connector-mock-server.js +20 -17
- package/dist/core/mock/connector-mock-server.js.map +1 -1
- package/dist/core/scaffold/auth-generator.d.ts +1 -1
- package/dist/core/scaffold/auth-generator.d.ts.map +1 -1
- package/dist/core/scaffold/auth-generator.js +2 -1
- package/dist/core/scaffold/auth-generator.js.map +1 -1
- package/dist/core/scaffold/connector-functions-generator.d.ts.map +1 -1
- package/dist/core/scaffold/connector-functions-generator.js +0 -1
- package/dist/core/scaffold/connector-functions-generator.js.map +1 -1
- package/dist/core/scaffold/functions-generator.d.ts.map +1 -1
- package/dist/core/scaffold/functions-generator.js +0 -8
- package/dist/core/scaffold/functions-generator.js.map +1 -1
- package/dist/core/scaffold/model-parser.d.ts.map +1 -1
- package/dist/core/scaffold/model-parser.js +8 -10
- package/dist/core/scaffold/model-parser.js.map +1 -1
- package/dist/core/scaffold/nextjs-generator.d.ts.map +1 -1
- package/dist/core/scaffold/nextjs-generator.js +0 -1
- package/dist/core/scaffold/nextjs-generator.js.map +1 -1
- package/dist/core/scaffold/ui-generator.d.ts.map +1 -1
- package/dist/core/scaffold/ui-generator.js +0 -3
- package/dist/core/scaffold/ui-generator.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/dev.test.ts +106 -0
- package/src/cli/commands/add-auth.ts +1 -5
- package/src/cli/commands/add-connector.ts +10 -11
- package/src/cli/commands/dev.ts +44 -25
- package/src/cli/commands/init.ts +1 -3
- package/src/cli/commands/scaffold.ts +0 -4
- package/src/cli/index.ts +167 -83
- package/src/core/config.ts +15 -3
- package/src/core/mock/connector-mock-server.ts +12 -12
- package/src/core/scaffold/auth-generator.ts +3 -2
- package/src/core/scaffold/connector-functions-generator.ts +0 -2
- package/src/core/scaffold/functions-generator.ts +0 -9
- package/src/core/scaffold/model-parser.ts +5 -9
- package/src/core/scaffold/nextjs-generator.ts +1 -2
- package/src/core/scaffold/ui-generator.ts +1 -5
|
@@ -15,7 +15,6 @@ import { generateAuthImportTS, generateAuthGuardTS, generateAuthGuardCSharp, gen
|
|
|
15
15
|
export function generateCompactAzureFunctionsCRUD(model: ModelInfo, sharedPackageName: string, authPolicy?: ModelAuthPolicy): string {
|
|
16
16
|
const modelName = model.name;
|
|
17
17
|
const modelCamel = toCamelCase(modelName);
|
|
18
|
-
const modelKebab = toKebabCase(modelName);
|
|
19
18
|
const schemaName = model.schemaName;
|
|
20
19
|
|
|
21
20
|
const partitionKeyPath = model.partitionKey; // e.g. "/tenantId"
|
|
@@ -789,14 +788,6 @@ export function generatePythonAzureFunctionsCRUD(model: ModelInfo, authPolicy?:
|
|
|
789
788
|
const authCatch = hasAuth ? `\n auth_err = handle_auth_error(exc)\n if auth_err:\n return auth_err` : '';
|
|
790
789
|
|
|
791
790
|
// getById / update の読み取りロジック
|
|
792
|
-
const getByIdRead = isIdPartition
|
|
793
|
-
? `container.read_item(item=item_id, partition_key=item_id)`
|
|
794
|
-
: `list(container.query_items(
|
|
795
|
-
query="SELECT * FROM c WHERE c.id = @id",
|
|
796
|
-
parameters=[{"name": "@id", "value": item_id}],
|
|
797
|
-
enable_cross_partition_query=True,
|
|
798
|
-
))`;
|
|
799
|
-
|
|
800
791
|
const getByIdBody = isIdPartition
|
|
801
792
|
? ` container = _get_container()
|
|
802
793
|
item = container.read_item(item=item_id, partition_key=item_id)
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import * as fs from "fs";
|
|
6
|
+
import { execSync } from "child_process";
|
|
6
7
|
import * as path from "path";
|
|
7
|
-
import { pathToFileURL } from "url";
|
|
8
8
|
|
|
9
9
|
import { ModelConnectorConfig, ModelAuthPolicy } from "../../types";
|
|
10
|
+
import { detectFromProject, getCommands } from "../../utils/package-manager";
|
|
10
11
|
|
|
11
12
|
export interface ModelInfo {
|
|
12
13
|
name: string; // モデル名(例: "Todo")
|
|
@@ -383,12 +384,8 @@ async function extractFieldsFromSchema(modelPath: string, schemaName: string): P
|
|
|
383
384
|
const fields: FieldInfo[] = [];
|
|
384
385
|
|
|
385
386
|
try {
|
|
386
|
-
// child_processでtsxを実行
|
|
387
|
-
const { execSync } = require('child_process');
|
|
388
|
-
const { writeFileSync, unlinkSync, readFileSync } = require('fs');
|
|
389
|
-
|
|
390
387
|
// モデルファイルの内容を読み込む
|
|
391
|
-
let modelContent = readFileSync(modelPath, 'utf8');
|
|
388
|
+
let modelContent = fs.readFileSync(modelPath, 'utf8');
|
|
392
389
|
const modelDir = path.dirname(path.resolve(modelPath));
|
|
393
390
|
|
|
394
391
|
// ローカル相対インポートを再帰的にインライン化して保持
|
|
@@ -543,12 +540,11 @@ if (isObject) {
|
|
|
543
540
|
}
|
|
544
541
|
`;
|
|
545
542
|
|
|
546
|
-
writeFileSync(tempScript, scriptCode, 'utf8');
|
|
543
|
+
fs.writeFileSync(tempScript, scriptCode, 'utf8');
|
|
547
544
|
|
|
548
545
|
try {
|
|
549
546
|
// プロジェクトルートでtsxを実行 (npm/pnpm 両対応)
|
|
550
547
|
// Detect package manager from project lockfile
|
|
551
|
-
const { detectFromProject, getCommands } = require('../../utils/package-manager');
|
|
552
548
|
const pm = detectFromProject(projectRoot);
|
|
553
549
|
const pmCmd = getCommands(pm);
|
|
554
550
|
const result = execSync(`${pmCmd.exec} tsx "${tempScript}"`, {
|
|
@@ -565,7 +561,7 @@ if (isObject) {
|
|
|
565
561
|
} finally {
|
|
566
562
|
// 一時ファイルを削除
|
|
567
563
|
try {
|
|
568
|
-
unlinkSync(tempScript);
|
|
564
|
+
fs.unlinkSync(tempScript);
|
|
569
565
|
} catch (e) {
|
|
570
566
|
// ファイル削除失敗は無視
|
|
571
567
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* callFunction ヘルパー方式
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { ModelInfo, toCamelCase
|
|
7
|
+
import { ModelInfo, toCamelCase } from "./model-parser";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* BFF callFunction ヘルパー (lib/api/call-function.ts) のコードを生成
|
|
@@ -129,7 +129,6 @@ export function generateCompactBFFRoutes(model: ModelInfo, sharedPackageName: st
|
|
|
129
129
|
} {
|
|
130
130
|
const modelName = model.name;
|
|
131
131
|
const modelCamel = toCamelCase(modelName);
|
|
132
|
-
const modelKebab = toKebabCase(modelName);
|
|
133
132
|
const schemaName = model.schemaName;
|
|
134
133
|
|
|
135
134
|
const listRoute = `import { NextRequest } from 'next/server';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* CRUD 画面(一覧、詳細、新規作成、編集)を生成する
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ModelInfo,
|
|
6
|
+
import { ModelInfo, toCamelCase, toKebabCase } from "./model-parser";
|
|
7
7
|
import { ModelAuthPolicy } from "../../types";
|
|
8
8
|
|
|
9
9
|
/** auth が有効かつ authPolicy が存在する場合に渡されるオプション */
|
|
@@ -33,10 +33,6 @@ export function generateListPage(model: ModelInfo, sharedPackageName: string, au
|
|
|
33
33
|
const foreignKeyFields = displayFields.filter(f => f.isForeignKey);
|
|
34
34
|
const hasForeignKeys = foreignKeyFields.length > 0;
|
|
35
35
|
|
|
36
|
-
// ネストスキーマフィールドを検出
|
|
37
|
-
const nestedFields = displayFields.filter(f => f.isNestedSchema);
|
|
38
|
-
const hasNestedSchemas = nestedFields.length > 0;
|
|
39
|
-
|
|
40
36
|
// 外部キー用のstate定義を生成
|
|
41
37
|
const foreignKeyStates = foreignKeyFields.map(f => {
|
|
42
38
|
const refModel = f.referencedModel!;
|