@rawsql-ts/ztd-cli 0.19.0 → 0.20.2
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/LICENSE +21 -0
- package/README.md +4 -4
- package/dist/commands/agents.d.ts +2 -0
- package/dist/commands/agents.js +68 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/checkContract.d.ts +46 -0
- package/dist/commands/checkContract.js +359 -0
- package/dist/commands/checkContract.js.map +1 -0
- package/dist/commands/connectionOptions.d.ts +12 -0
- package/dist/commands/connectionOptions.js +22 -0
- package/dist/commands/connectionOptions.js.map +1 -0
- package/dist/commands/ddl.d.ts +7 -0
- package/dist/commands/ddl.js +145 -0
- package/dist/commands/ddl.js.map +1 -0
- package/dist/commands/describe.d.ts +23 -0
- package/dist/commands/describe.js +399 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/diff.d.ts +24 -0
- package/dist/commands/diff.js +73 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/genEntities.d.ts +14 -0
- package/dist/commands/genEntities.js +58 -0
- package/dist/commands/genEntities.js.map +1 -0
- package/dist/commands/init.d.ts +104 -0
- package/dist/commands/init.js +1480 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lint.d.ts +89 -0
- package/dist/commands/lint.js +501 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/modelGen.d.ts +60 -0
- package/dist/commands/modelGen.js +572 -0
- package/dist/commands/modelGen.js.map +1 -0
- package/dist/commands/options.d.ts +9 -0
- package/dist/commands/options.js +48 -0
- package/dist/commands/options.js.map +1 -0
- package/dist/commands/perf.d.ts +9 -0
- package/dist/commands/perf.js +374 -0
- package/dist/commands/perf.js.map +1 -0
- package/dist/commands/pull.d.ts +21 -0
- package/dist/commands/pull.js +115 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/query.d.ts +9 -0
- package/dist/commands/query.js +377 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/testEvidence.d.ts +237 -0
- package/dist/commands/testEvidence.js +1220 -0
- package/dist/commands/testEvidence.js.map +1 -0
- package/dist/commands/ztdConfig.d.ts +30 -0
- package/dist/commands/ztdConfig.js +224 -0
- package/dist/commands/ztdConfig.js.map +1 -0
- package/dist/commands/ztdConfigCommand.d.ts +18 -0
- package/dist/commands/ztdConfigCommand.js +268 -0
- package/dist/commands/ztdConfigCommand.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +127 -0
- package/dist/index.js.map +1 -0
- package/dist/perf/benchmark.d.ts +277 -0
- package/dist/perf/benchmark.js +2186 -0
- package/dist/perf/benchmark.js.map +1 -0
- package/dist/perf/sandbox.d.ts +73 -0
- package/dist/perf/sandbox.js +492 -0
- package/dist/perf/sandbox.js.map +1 -0
- package/dist/query/analysis.d.ts +20 -0
- package/dist/query/analysis.js +192 -0
- package/dist/query/analysis.js.map +1 -0
- package/dist/query/analyzeColumnUsage.d.ts +10 -0
- package/dist/query/analyzeColumnUsage.js +451 -0
- package/dist/query/analyzeColumnUsage.js.map +1 -0
- package/dist/query/analyzeTableUsage.d.ts +10 -0
- package/dist/query/analyzeTableUsage.js +318 -0
- package/dist/query/analyzeTableUsage.js.map +1 -0
- package/dist/query/execute.d.ts +40 -0
- package/dist/query/execute.js +784 -0
- package/dist/query/execute.js.map +1 -0
- package/dist/query/format.d.ts +1 -0
- package/dist/query/format.js +9 -0
- package/dist/query/format.js.map +1 -0
- package/dist/query/lint.d.ts +29 -0
- package/dist/query/lint.js +340 -0
- package/dist/query/lint.js.map +1 -0
- package/dist/query/location.d.ts +18 -0
- package/dist/query/location.js +204 -0
- package/dist/query/location.js.map +1 -0
- package/dist/query/patch.d.ts +21 -0
- package/dist/query/patch.js +151 -0
- package/dist/query/patch.js.map +1 -0
- package/dist/query/planner.d.ts +31 -0
- package/dist/query/planner.js +134 -0
- package/dist/query/planner.js.map +1 -0
- package/dist/query/report.d.ts +7 -0
- package/dist/query/report.js +19 -0
- package/dist/query/report.js.map +1 -0
- package/dist/query/scalarFilterAnalysis.d.ts +6 -0
- package/dist/query/scalarFilterAnalysis.js +212 -0
- package/dist/query/scalarFilterAnalysis.js.map +1 -0
- package/dist/query/slice.d.ts +17 -0
- package/dist/query/slice.js +204 -0
- package/dist/query/slice.js.map +1 -0
- package/dist/query/structure.d.ts +24 -0
- package/dist/query/structure.js +135 -0
- package/dist/query/structure.js.map +1 -0
- package/dist/query/targets.d.ts +2 -0
- package/dist/query/targets.js +6 -0
- package/dist/query/targets.js.map +1 -0
- package/dist/query/types.d.ts +97 -0
- package/dist/query/types.js +3 -0
- package/dist/query/types.js.map +1 -0
- package/dist/specs/sql/activeOrders.catalog.d.ts +12 -0
- package/dist/specs/sql/activeOrders.catalog.js +36 -0
- package/dist/specs/sql/activeOrders.catalog.js.map +1 -0
- package/dist/specs/sql/usersList.catalog.d.ts +8 -0
- package/dist/specs/sql/usersList.catalog.js +14 -0
- package/dist/specs/sql/usersList.catalog.js.map +1 -0
- package/dist/specs/sqlCatalogDefinition.d.ts +20 -0
- package/dist/specs/sqlCatalogDefinition.js +10 -0
- package/dist/specs/sqlCatalogDefinition.js.map +1 -0
- package/dist/utils/agentCli.d.ts +23 -0
- package/dist/utils/agentCli.js +84 -0
- package/dist/utils/agentCli.js.map +1 -0
- package/dist/utils/agentSafety.d.ts +4 -0
- package/dist/utils/agentSafety.js +50 -0
- package/dist/utils/agentSafety.js.map +1 -0
- package/dist/utils/agents.d.ts +31 -0
- package/dist/utils/agents.js +362 -0
- package/dist/utils/agents.js.map +1 -0
- package/dist/utils/collectSqlFiles.d.ts +9 -0
- package/dist/utils/collectSqlFiles.js +58 -0
- package/dist/utils/collectSqlFiles.js.map +1 -0
- package/dist/utils/connectionSummary.d.ts +3 -0
- package/dist/utils/connectionSummary.js +29 -0
- package/dist/utils/connectionSummary.js.map +1 -0
- package/dist/utils/dbConnection.d.ts +31 -0
- package/dist/utils/dbConnection.js +151 -0
- package/dist/utils/dbConnection.js.map +1 -0
- package/dist/utils/fs.d.ts +1 -0
- package/dist/utils/fs.js +12 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/modelGenBinder.d.ts +8 -0
- package/dist/utils/modelGenBinder.js +31 -0
- package/dist/utils/modelGenBinder.js.map +1 -0
- package/dist/utils/modelGenRender.d.ts +29 -0
- package/dist/utils/modelGenRender.js +158 -0
- package/dist/utils/modelGenRender.js.map +1 -0
- package/dist/utils/modelGenScanner.d.ts +24 -0
- package/dist/utils/modelGenScanner.js +196 -0
- package/dist/utils/modelGenScanner.js.map +1 -0
- package/dist/utils/modelProbe.d.ts +14 -0
- package/dist/utils/modelProbe.js +121 -0
- package/dist/utils/modelProbe.js.map +1 -0
- package/dist/utils/normalizePulledSchema.d.ts +12 -0
- package/dist/utils/normalizePulledSchema.js +213 -0
- package/dist/utils/normalizePulledSchema.js.map +1 -0
- package/dist/utils/optionalDependencies.d.ts +43 -0
- package/dist/utils/optionalDependencies.js +134 -0
- package/dist/utils/optionalDependencies.js.map +1 -0
- package/dist/utils/pgDump.d.ts +12 -0
- package/dist/utils/pgDump.js +58 -0
- package/dist/utils/pgDump.js.map +1 -0
- package/dist/utils/queryFingerprint.d.ts +14 -0
- package/dist/utils/queryFingerprint.js +34 -0
- package/dist/utils/queryFingerprint.js.map +1 -0
- package/dist/utils/sqlCatalogDiscovery.d.ts +44 -0
- package/dist/utils/sqlCatalogDiscovery.js +166 -0
- package/dist/utils/sqlCatalogDiscovery.js.map +1 -0
- package/dist/utils/sqlCatalogStatements.d.ts +20 -0
- package/dist/utils/sqlCatalogStatements.js +23 -0
- package/dist/utils/sqlCatalogStatements.js.map +1 -0
- package/dist/utils/sqlLintHelpers.d.ts +18 -0
- package/dist/utils/sqlLintHelpers.js +270 -0
- package/dist/utils/sqlLintHelpers.js.map +1 -0
- package/dist/utils/telemetry.d.ts +71 -0
- package/dist/utils/telemetry.js +597 -0
- package/dist/utils/telemetry.js.map +1 -0
- package/dist/utils/typeMapper.d.ts +4 -0
- package/dist/utils/typeMapper.js +79 -0
- package/dist/utils/typeMapper.js.map +1 -0
- package/dist/utils/ztdProjectConfig.d.ts +41 -0
- package/dist/utils/ztdProjectConfig.js +182 -0
- package/dist/utils/ztdProjectConfig.js.map +1 -0
- package/package.json +19 -20
- package/templates/README.md +1 -1
- package/templates/README.webapi.md +1 -1
- package/templates/src/catalog/runtime/_coercions.local-source.ts +0 -30
- package/templates/src/local/sql-contract.ts +0 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DDL_DIFF_SPAN_NAMES = void 0;
|
|
7
|
+
exports.runDiffSchema = runDiffSchema;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const diff_1 = require("diff");
|
|
11
|
+
const collectSqlFiles_1 = require("../utils/collectSqlFiles");
|
|
12
|
+
const connectionSummary_1 = require("../utils/connectionSummary");
|
|
13
|
+
const fs_1 = require("../utils/fs");
|
|
14
|
+
const pgDump_1 = require("../utils/pgDump");
|
|
15
|
+
const telemetry_1 = require("../utils/telemetry");
|
|
16
|
+
exports.DDL_DIFF_SPAN_NAMES = {
|
|
17
|
+
collectLocalDdl: 'collect-local-ddl',
|
|
18
|
+
pullRemoteDdl: 'pull-remote-ddl',
|
|
19
|
+
computeDiffPlan: 'compute-diff-plan',
|
|
20
|
+
emitDiffPlan: 'emit-diff-plan',
|
|
21
|
+
};
|
|
22
|
+
function runDiffSchema(options) {
|
|
23
|
+
const localSources = (0, telemetry_1.withSpanSync)(exports.DDL_DIFF_SPAN_NAMES.collectLocalDdl, () => {
|
|
24
|
+
const discovered = (0, collectSqlFiles_1.collectSqlFiles)(options.directories, options.extensions);
|
|
25
|
+
if (discovered.length === 0) {
|
|
26
|
+
throw new Error(`No SQL files were discovered under ${options.directories.join(', ')}`);
|
|
27
|
+
}
|
|
28
|
+
return discovered;
|
|
29
|
+
}, {
|
|
30
|
+
directoryCount: options.directories.length,
|
|
31
|
+
extensionCount: options.extensions.length,
|
|
32
|
+
});
|
|
33
|
+
// Concatenate the local DDL files in a stable order for deterministic diff outputs.
|
|
34
|
+
const localSql = localSources.map((source) => source.sql).join('\n\n');
|
|
35
|
+
const remoteSql = (0, telemetry_1.withSpanSync)(exports.DDL_DIFF_SPAN_NAMES.pullRemoteDdl, () => {
|
|
36
|
+
return (0, pgDump_1.runPgDump)({
|
|
37
|
+
url: options.url,
|
|
38
|
+
pgDumpPath: options.pgDumpPath,
|
|
39
|
+
pgDumpShell: options.pgDumpShell,
|
|
40
|
+
connectionContext: options.connectionContext
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
const plan = (0, telemetry_1.withSpanSync)(exports.DDL_DIFF_SPAN_NAMES.computeDiffPlan, () => {
|
|
44
|
+
const hasChanges = localSql !== remoteSql;
|
|
45
|
+
const patch = hasChanges
|
|
46
|
+
? (0, diff_1.createTwoFilesPatch)('local', 'database', localSql, remoteSql, '', '', { context: 3 })
|
|
47
|
+
: '-- No schema differences detected.';
|
|
48
|
+
const databaseTarget = (0, connectionSummary_1.formatConnectionTarget)(options.connectionContext) || 'target: unknown';
|
|
49
|
+
const header = `-- ztd ddl diff plan\n-- Local DDL: ${options.directories.join(', ')}\n-- Database: ${databaseTarget}\n-- Generated: ${new Date().toISOString()}\n\n`;
|
|
50
|
+
return {
|
|
51
|
+
hasChanges,
|
|
52
|
+
patch: `${header}${patch}\n`,
|
|
53
|
+
};
|
|
54
|
+
}, {
|
|
55
|
+
localFileCount: localSources.length,
|
|
56
|
+
});
|
|
57
|
+
if (!options.dryRun) {
|
|
58
|
+
(0, telemetry_1.withSpanSync)(exports.DDL_DIFF_SPAN_NAMES.emitDiffPlan, () => {
|
|
59
|
+
(0, fs_1.ensureDirectory)(node_path_1.default.dirname(options.out));
|
|
60
|
+
(0, node_fs_1.writeFileSync)(options.out, plan.patch, 'utf8');
|
|
61
|
+
console.log(`DDL diff plan written to ${options.out}`);
|
|
62
|
+
}, {
|
|
63
|
+
outFile: options.out,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
outFile: options.out,
|
|
68
|
+
patch: plan.patch,
|
|
69
|
+
dryRun: Boolean(options.dryRun),
|
|
70
|
+
hasChanges: plan.hasChanges
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type TableMetadata } from './ztdConfig';
|
|
2
|
+
export interface GenerateEntitiesOptions {
|
|
3
|
+
directories: string[];
|
|
4
|
+
extensions: string[];
|
|
5
|
+
out: string;
|
|
6
|
+
dryRun?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface GenerateEntitiesResult {
|
|
9
|
+
outFile: string;
|
|
10
|
+
rendered: string;
|
|
11
|
+
tables: TableMetadata[];
|
|
12
|
+
dryRun: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function runGenerateEntities(options: GenerateEntitiesOptions): GenerateEntitiesResult;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runGenerateEntities = runGenerateEntities;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const collectSqlFiles_1 = require("../utils/collectSqlFiles");
|
|
10
|
+
const fs_1 = require("../utils/fs");
|
|
11
|
+
const typeMapper_1 = require("../utils/typeMapper");
|
|
12
|
+
const ztdConfig_1 = require("./ztdConfig");
|
|
13
|
+
function runGenerateEntities(options) {
|
|
14
|
+
const sources = (0, collectSqlFiles_1.collectSqlFiles)(options.directories, options.extensions);
|
|
15
|
+
if (sources.length === 0) {
|
|
16
|
+
throw new Error(`No SQL files were discovered under ${options.directories.join(', ')}`);
|
|
17
|
+
}
|
|
18
|
+
const tables = (0, ztdConfig_1.snapshotTableMetadata)(sources);
|
|
19
|
+
if (tables.length === 0) {
|
|
20
|
+
throw new Error('The provided DDL sources did not contain any CREATE TABLE statements.');
|
|
21
|
+
}
|
|
22
|
+
const output = renderEntitiesFile(tables);
|
|
23
|
+
if (!options.dryRun) {
|
|
24
|
+
(0, fs_1.ensureDirectory)(node_path_1.default.dirname(options.out));
|
|
25
|
+
(0, node_fs_1.writeFileSync)(options.out, output, 'utf8');
|
|
26
|
+
console.log(`Generated ${tables.length} schema helpers at ${options.out}`);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
outFile: options.out,
|
|
30
|
+
rendered: output,
|
|
31
|
+
tables,
|
|
32
|
+
dryRun: Boolean(options.dryRun)
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function renderEntitiesFile(tables) {
|
|
36
|
+
// The header reminds maintainers that this file is a secondary reference next to tests/generated/ztd-row-map.generated.ts.
|
|
37
|
+
const header = [
|
|
38
|
+
'// ENTITY HELPERS - AUTO GENERATED',
|
|
39
|
+
'// Complementary reference for tooling. TestRowMap in tests/generated/ztd-row-map.generated.ts remains authoritative.',
|
|
40
|
+
''
|
|
41
|
+
].join('\n');
|
|
42
|
+
// Emit an interface per table to keep column metadata available for optional helpers.
|
|
43
|
+
const definitions = tables
|
|
44
|
+
.map((table) => {
|
|
45
|
+
const entityName = table.testRowInterfaceName.replace(/TestRow$/, 'Entity');
|
|
46
|
+
const fields = table.columns
|
|
47
|
+
.map((column) => {
|
|
48
|
+
const baseType = (0, typeMapper_1.mapSqlTypeToTs)(column.typeName, `${table.name}.${column.name}`);
|
|
49
|
+
const tsType = column.isNullable ? `${baseType} | null` : baseType;
|
|
50
|
+
return ` ${column.name}: ${tsType};`;
|
|
51
|
+
})
|
|
52
|
+
.join('\n');
|
|
53
|
+
return `export interface ${entityName} {\n${fields}\n}`;
|
|
54
|
+
})
|
|
55
|
+
.join('\n\n');
|
|
56
|
+
return `${header}${definitions}\n`;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=genEntities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genEntities.js","sourceRoot":"","sources":["../../src/commands/genEntities.ts"],"names":[],"mappings":";;;;;AAqBA,kDAuBC;AA5CD,qCAAwC;AACxC,0DAA6B;AAC7B,8DAA2D;AAC3D,oCAA8C;AAC9C,oDAAqD;AACrD,2CAAwE;AAgBxE,SAAgB,mBAAmB,CAAC,OAAgC;IAClE,MAAM,OAAO,GAAG,IAAA,iCAAe,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,IAAA,oBAAe,EAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAA,uBAAa,EAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,sBAAsB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG;QACpB,QAAQ,EAAE,MAAM;QAChB,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAuB;IACjD,2HAA2H;IAC3H,MAAM,MAAM,GAAG;QACb,oCAAoC;QACpC,uHAAuH;QACvH,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,sFAAsF;IACtF,MAAM,WAAW,GAAG,MAAM;SACvB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,UAAU,GAAG,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO;aACzB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,MAAM,QAAQ,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnE,OAAO,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,oBAAoB,UAAU,OAAO,MAAM,KAAK,CAAC;IAC1D,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,GAAG,MAAM,GAAG,WAAW,IAAI,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type ZtdConfigGenerationOptions } from './ztdConfig';
|
|
3
|
+
import { type PullSchemaOptions } from './pull';
|
|
4
|
+
type PackageManager = 'pnpm' | 'npm' | 'yarn';
|
|
5
|
+
type PackageInstallKind = 'devDependencies' | 'install';
|
|
6
|
+
interface PnpmWorkspaceGuard {
|
|
7
|
+
workspaceRoot: string | null;
|
|
8
|
+
shouldIgnoreWorkspace: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Prompt interface for interactive input during `ztd init`.
|
|
12
|
+
*/
|
|
13
|
+
export interface Prompter {
|
|
14
|
+
selectChoice(question: string, choices: string[]): Promise<number>;
|
|
15
|
+
promptInput(question: string, example?: string): Promise<string>;
|
|
16
|
+
promptInputWithDefault(question: string, defaultValue: string, example?: string): Promise<string>;
|
|
17
|
+
confirm(question: string): Promise<boolean>;
|
|
18
|
+
close(): void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a readline-backed prompter that reads from stdin/stdout.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createConsolePrompter(): Prompter;
|
|
24
|
+
/**
|
|
25
|
+
* Summarizes how an individual file was created during initialization.
|
|
26
|
+
*/
|
|
27
|
+
export interface FileSummary {
|
|
28
|
+
relativePath: string;
|
|
29
|
+
outcome: 'created' | 'overwritten' | 'unchanged';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result payload for `ztd init` describing outputs and next steps.
|
|
33
|
+
*/
|
|
34
|
+
export interface InitResult {
|
|
35
|
+
summary: string;
|
|
36
|
+
files: FileSummary[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Dependency overrides used to orchestrate the init flow and IO side effects.
|
|
40
|
+
*/
|
|
41
|
+
export interface ZtdConfigWriterDependencies {
|
|
42
|
+
ensureDirectory: (directory: string) => void;
|
|
43
|
+
writeFile: (filePath: string, contents: string) => void;
|
|
44
|
+
fileExists: (filePath: string) => boolean;
|
|
45
|
+
runPullSchema: (options: PullSchemaOptions) => Promise<unknown> | unknown;
|
|
46
|
+
runGenerateZtdConfig: (options: ZtdConfigGenerationOptions) => Promise<unknown> | unknown;
|
|
47
|
+
checkPgDump: () => boolean;
|
|
48
|
+
log: (message: string) => void;
|
|
49
|
+
copyAgentsTemplate: (rootDir: string) => string | null;
|
|
50
|
+
installPackages: (options: {
|
|
51
|
+
rootDir: string;
|
|
52
|
+
kind: PackageInstallKind;
|
|
53
|
+
packages: string[];
|
|
54
|
+
packageManager: PackageManager;
|
|
55
|
+
}) => Promise<void> | void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Options for configuring the `ztd init` command execution.
|
|
59
|
+
*/
|
|
60
|
+
export interface InitCommandOptions {
|
|
61
|
+
rootDir?: string;
|
|
62
|
+
dependencies?: Partial<ZtdConfigWriterDependencies>;
|
|
63
|
+
appShape?: InitAppShape;
|
|
64
|
+
withSqlClient?: boolean;
|
|
65
|
+
withAiGuidance?: boolean;
|
|
66
|
+
withAppInterface?: boolean;
|
|
67
|
+
forceOverwrite?: boolean;
|
|
68
|
+
nonInteractive?: boolean;
|
|
69
|
+
workflow?: InitWorkflow;
|
|
70
|
+
validator?: ValidatorBackend;
|
|
71
|
+
localSourceRoot?: string;
|
|
72
|
+
dryRun?: boolean;
|
|
73
|
+
}
|
|
74
|
+
type ValidatorBackend = 'zod' | 'arktype';
|
|
75
|
+
type InitAppShape = 'default' | 'webapi';
|
|
76
|
+
type InitWorkflow = 'pg_dump' | 'empty' | 'demo';
|
|
77
|
+
/**
|
|
78
|
+
* Run the interactive `ztd init` workflow and return the resulting summary.
|
|
79
|
+
*/
|
|
80
|
+
export declare function runInitCommand(prompter: Prompter, options?: InitCommandOptions): Promise<InitResult>;
|
|
81
|
+
export declare function findAncestorPnpmWorkspaceRoot(rootDir: string): string | null;
|
|
82
|
+
export declare function resolvePnpmWorkspaceGuard(rootDir: string, packageManager: PackageManager): PnpmWorkspaceGuard;
|
|
83
|
+
export interface InitInstallStrategy {
|
|
84
|
+
installCommand: string;
|
|
85
|
+
workspaceGuard: PnpmWorkspaceGuard;
|
|
86
|
+
shouldDeferAutoInstall: boolean;
|
|
87
|
+
}
|
|
88
|
+
export declare function resolveInitInstallStrategy(rootDir: string, packageManager: PackageManager, environment?: {
|
|
89
|
+
platform?: NodeJS.Platform;
|
|
90
|
+
npmCommand?: string;
|
|
91
|
+
}): InitInstallStrategy;
|
|
92
|
+
export declare function buildPackageManagerArgs(kind: PackageInstallKind, packageManager: PackageManager, packages: string[], rootDir?: string): string[];
|
|
93
|
+
/**
|
|
94
|
+
* Normalizes a schema identifier into the canonical lowercase form used by ztd-cli file naming.
|
|
95
|
+
* Empty input falls back to the configured default schema.
|
|
96
|
+
*/
|
|
97
|
+
export declare function normalizeSchemaName(value: string): string;
|
|
98
|
+
/**
|
|
99
|
+
* Sanitizes a normalized schema identifier so it can be used as a filesystem-safe file stem.
|
|
100
|
+
* Returns `schema` when all characters are stripped by sanitization.
|
|
101
|
+
*/
|
|
102
|
+
export declare function sanitizeSchemaFileName(schemaName: string): string;
|
|
103
|
+
export declare function registerInitCommand(program: Command): void;
|
|
104
|
+
export {};
|