@rawsql-ts/ddl-docs-cli 0.2.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.
Files changed (69) hide show
  1. package/AGENTS.md +27 -0
  2. package/README.md +86 -0
  3. package/dist/src/analyzer/columnConcepts.d.ts +12 -0
  4. package/dist/src/analyzer/columnConcepts.js +185 -0
  5. package/dist/src/analyzer/columnConcepts.js.map +1 -0
  6. package/dist/src/analyzer/dictionary.d.ts +3 -0
  7. package/dist/src/analyzer/dictionary.js +39 -0
  8. package/dist/src/analyzer/dictionary.js.map +1 -0
  9. package/dist/src/analyzer/typeNormalization.d.ts +7 -0
  10. package/dist/src/analyzer/typeNormalization.js +76 -0
  11. package/dist/src/analyzer/typeNormalization.js.map +1 -0
  12. package/dist/src/cli.d.ts +8 -0
  13. package/dist/src/cli.js +264 -0
  14. package/dist/src/cli.js.map +1 -0
  15. package/dist/src/commands/generate.d.ts +5 -0
  16. package/dist/src/commands/generate.js +266 -0
  17. package/dist/src/commands/generate.js.map +1 -0
  18. package/dist/src/commands/prune.d.ts +2 -0
  19. package/dist/src/commands/prune.js +17 -0
  20. package/dist/src/commands/prune.js.map +1 -0
  21. package/dist/src/config.d.ts +5 -0
  22. package/dist/src/config.js +57 -0
  23. package/dist/src/config.js.map +1 -0
  24. package/dist/src/index.d.ts +2 -0
  25. package/dist/src/index.js +9 -0
  26. package/dist/src/index.js.map +1 -0
  27. package/dist/src/parser/snapshotTableDocs.d.ts +6 -0
  28. package/dist/src/parser/snapshotTableDocs.js +1001 -0
  29. package/dist/src/parser/snapshotTableDocs.js.map +1 -0
  30. package/dist/src/render/columnPages.d.ts +6 -0
  31. package/dist/src/render/columnPages.js +226 -0
  32. package/dist/src/render/columnPages.js.map +1 -0
  33. package/dist/src/render/indexPages.d.ts +6 -0
  34. package/dist/src/render/indexPages.js +156 -0
  35. package/dist/src/render/indexPages.js.map +1 -0
  36. package/dist/src/render/referencesPage.d.ts +6 -0
  37. package/dist/src/render/referencesPage.js +51 -0
  38. package/dist/src/render/referencesPage.js.map +1 -0
  39. package/dist/src/render/tableMarkdown.d.ts +36 -0
  40. package/dist/src/render/tableMarkdown.js +243 -0
  41. package/dist/src/render/tableMarkdown.js.map +1 -0
  42. package/dist/src/render/types.d.ts +7 -0
  43. package/dist/src/render/types.js +3 -0
  44. package/dist/src/render/types.js.map +1 -0
  45. package/dist/src/state/manifest.d.ts +14 -0
  46. package/dist/src/state/manifest.js +153 -0
  47. package/dist/src/state/manifest.js.map +1 -0
  48. package/dist/src/types.d.ts +193 -0
  49. package/dist/src/types.js +3 -0
  50. package/dist/src/types.js.map +1 -0
  51. package/dist/src/utils/ddlInputDedupe.d.ts +9 -0
  52. package/dist/src/utils/ddlInputDedupe.js +25 -0
  53. package/dist/src/utils/ddlInputDedupe.js.map +1 -0
  54. package/dist/src/utils/fs.d.ts +13 -0
  55. package/dist/src/utils/fs.js +187 -0
  56. package/dist/src/utils/fs.js.map +1 -0
  57. package/dist/src/utils/io.d.ts +2 -0
  58. package/dist/src/utils/io.js +13 -0
  59. package/dist/src/utils/io.js.map +1 -0
  60. package/dist/src/utils/markdown.d.ts +12 -0
  61. package/dist/src/utils/markdown.js +34 -0
  62. package/dist/src/utils/markdown.js.map +1 -0
  63. package/dist/src/utils/pgDumpFilter.d.ts +8 -0
  64. package/dist/src/utils/pgDumpFilter.js +104 -0
  65. package/dist/src/utils/pgDumpFilter.js.map +1 -0
  66. package/dist/src/utils/slug.d.ts +1 -0
  67. package/dist/src/utils/slug.js +13 -0
  68. package/dist/src/utils/slug.js.map +1 -0
  69. package/package.json +43 -0
@@ -0,0 +1,264 @@
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.runCli = runCli;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const generate_1 = require("./commands/generate");
9
+ const prune_1 = require("./commands/prune");
10
+ const ddlInputDedupe_1 = require("./utils/ddlInputDedupe");
11
+ const DEFAULT_DDL_DIRECTORY = 'ztd/ddl';
12
+ const DEFAULT_OUT_DIR = node_path_1.default.join('ztd', 'docs', 'tables');
13
+ /**
14
+ * Runs ddl-docs-cli command dispatch and executes generate/prune subcommands.
15
+ *
16
+ * @param argv Command-line arguments without the node executable and script path.
17
+ * @returns A promise that resolves when command execution completes.
18
+ * Side effects include console output and filesystem writes/removals via subcommands.
19
+ */
20
+ async function runCli(argv) {
21
+ const [command, ...rest] = argv;
22
+ if (!command || command === '--help' || command === '-h') {
23
+ printHelp('all');
24
+ return;
25
+ }
26
+ if (command === 'help') {
27
+ const target = rest[0];
28
+ if (!target) {
29
+ printHelp('all');
30
+ return;
31
+ }
32
+ if (target === 'generate' || target === 'prune') {
33
+ printHelp(target);
34
+ return;
35
+ }
36
+ throw new Error(`Unknown command for help: ${target}`);
37
+ }
38
+ if (command === 'generate') {
39
+ const options = parseGenerateOptions(rest);
40
+ if (!options) {
41
+ return;
42
+ }
43
+ await (0, generate_1.runGenerateDocs)(options);
44
+ return;
45
+ }
46
+ if (command === 'prune') {
47
+ const options = parsePruneOptions(rest);
48
+ if (!options) {
49
+ return;
50
+ }
51
+ await (0, prune_1.runPruneDocs)(options);
52
+ return;
53
+ }
54
+ throw new Error(`Unknown command: ${command}`);
55
+ }
56
+ function parseGenerateOptions(args) {
57
+ const options = {
58
+ ddlDirectories: [],
59
+ ddlFiles: [],
60
+ ddlGlobs: [],
61
+ extensions: ['.sql'],
62
+ outDir: DEFAULT_OUT_DIR,
63
+ includeIndexes: true,
64
+ strict: false,
65
+ dialect: 'postgres',
66
+ columnOrder: 'definition',
67
+ labelSeparator: undefined,
68
+ locale: undefined,
69
+ dictionaryPath: undefined,
70
+ configPath: undefined,
71
+ defaultSchema: undefined,
72
+ searchPath: undefined,
73
+ };
74
+ let currentInstance = '';
75
+ for (let index = 0; index < args.length; index += 1) {
76
+ const arg = args[index];
77
+ if (arg === '--ddl-instance') {
78
+ currentInstance = readRequiredValue(args, ++index, '--ddl-instance');
79
+ continue;
80
+ }
81
+ if (arg === '--ddl-dir') {
82
+ options.ddlDirectories.push({ path: readRequiredValue(args, ++index, '--ddl-dir'), instance: currentInstance });
83
+ continue;
84
+ }
85
+ if (arg === '--ddl-file') {
86
+ options.ddlFiles.push({ path: readRequiredValue(args, ++index, '--ddl-file'), instance: currentInstance });
87
+ continue;
88
+ }
89
+ if (arg === '--ddl') {
90
+ options.ddlFiles.push({ path: readRequiredValue(args, ++index, '--ddl'), instance: currentInstance });
91
+ continue;
92
+ }
93
+ if (arg === '--ddl-glob') {
94
+ options.ddlGlobs.push({ path: readRequiredValue(args, ++index, '--ddl-glob'), instance: currentInstance });
95
+ continue;
96
+ }
97
+ if (arg === '--extensions') {
98
+ options.extensions = parseExtensions(readRequiredValue(args, ++index, '--extensions'));
99
+ continue;
100
+ }
101
+ if (arg === '--out-dir') {
102
+ options.outDir = readRequiredValue(args, ++index, '--out-dir');
103
+ continue;
104
+ }
105
+ if (arg === '--config') {
106
+ options.configPath = readRequiredValue(args, ++index, '--config');
107
+ continue;
108
+ }
109
+ if (arg === '--dictionary') {
110
+ options.dictionaryPath = readRequiredValue(args, ++index, '--dictionary');
111
+ continue;
112
+ }
113
+ if (arg === '--locale') {
114
+ options.locale = readRequiredValue(args, ++index, '--locale');
115
+ continue;
116
+ }
117
+ if (arg === '--default-schema') {
118
+ options.defaultSchema = readRequiredValue(args, ++index, '--default-schema');
119
+ continue;
120
+ }
121
+ if (arg === '--search-path') {
122
+ options.searchPath = parseCsvList(readRequiredValue(args, ++index, '--search-path'));
123
+ continue;
124
+ }
125
+ if (arg === '--no-index') {
126
+ options.includeIndexes = false;
127
+ continue;
128
+ }
129
+ if (arg === '--strict') {
130
+ options.strict = true;
131
+ continue;
132
+ }
133
+ if (arg === '--column-order') {
134
+ const value = readRequiredValue(args, ++index, '--column-order');
135
+ if (value !== 'definition' && value !== 'name') {
136
+ throw new Error('--column-order must be "definition" or "name".');
137
+ }
138
+ options.columnOrder = value;
139
+ continue;
140
+ }
141
+ if (arg === '--label-separator') {
142
+ options.labelSeparator = readRequiredValue(args, ++index, '--label-separator');
143
+ continue;
144
+ }
145
+ if (arg === '--filter-pg-dump') {
146
+ options.filterPgDump = true;
147
+ continue;
148
+ }
149
+ if (arg === '--help' || arg === '-h') {
150
+ printHelp('generate');
151
+ return null;
152
+ }
153
+ throw new Error(`Unknown option for generate: ${arg}`);
154
+ }
155
+ if (options.ddlDirectories.length === 0 && options.ddlFiles.length === 0 && options.ddlGlobs.length === 0) {
156
+ options.ddlDirectories = [{ path: DEFAULT_DDL_DIRECTORY, instance: '' }];
157
+ }
158
+ options.ddlDirectories = (0, ddlInputDedupe_1.dedupeDdlInputsByInstanceAndPath)(options.ddlDirectories);
159
+ options.ddlFiles = (0, ddlInputDedupe_1.dedupeDdlInputsByInstanceAndPath)(options.ddlFiles);
160
+ options.ddlGlobs = (0, ddlInputDedupe_1.dedupeDdlInputsByInstanceAndPath)(options.ddlGlobs);
161
+ options.extensions = dedupe(options.extensions);
162
+ return options;
163
+ }
164
+ function parsePruneOptions(args) {
165
+ const options = {
166
+ outDir: DEFAULT_OUT_DIR,
167
+ dryRun: false,
168
+ pruneOrphans: false,
169
+ };
170
+ for (let index = 0; index < args.length; index += 1) {
171
+ const arg = args[index];
172
+ if (arg === '--out-dir') {
173
+ options.outDir = readRequiredValue(args, ++index, '--out-dir');
174
+ continue;
175
+ }
176
+ if (arg === '--dry-run') {
177
+ options.dryRun = true;
178
+ continue;
179
+ }
180
+ if (arg === '--prune-orphans') {
181
+ options.pruneOrphans = true;
182
+ continue;
183
+ }
184
+ if (arg === '--help' || arg === '-h') {
185
+ printHelp('prune');
186
+ return null;
187
+ }
188
+ throw new Error(`Unknown option for prune: ${arg}`);
189
+ }
190
+ return options;
191
+ }
192
+ function readRequiredValue(args, index, optionName) {
193
+ const value = args[index];
194
+ if (!value || value.startsWith('--')) {
195
+ throw new Error(`Missing value for ${optionName}`);
196
+ }
197
+ return value;
198
+ }
199
+ function parseExtensions(rawValue) {
200
+ const tokens = rawValue
201
+ .split(',')
202
+ .map((entry) => entry.trim())
203
+ .filter(Boolean)
204
+ .map((entry) => (entry.startsWith('.') ? entry : `.${entry}`))
205
+ .map((entry) => entry.toLowerCase());
206
+ if (tokens.length === 0) {
207
+ throw new Error('Expected at least one extension value.');
208
+ }
209
+ return tokens;
210
+ }
211
+ function parseCsvList(rawValue) {
212
+ return rawValue
213
+ .split(',')
214
+ .map((entry) => entry.trim())
215
+ .filter(Boolean)
216
+ .map((entry) => entry.replace(/^"|"$/g, '').toLowerCase());
217
+ }
218
+ function dedupe(values) {
219
+ return Array.from(new Set(values));
220
+ }
221
+ function printHelp(target) {
222
+ const generateHelp = `ddl-docs generate [options]
223
+ --ddl-instance <name> DB instance name for subsequent --ddl-dir/--ddl-file/--ddl-glob (repeatable)
224
+ --ddl-dir <directory> Recursively scan DDL files under directory (repeatable)
225
+ --ddl-file <file> Include explicit DDL file (repeatable)
226
+ --ddl <file> Alias of --ddl-file
227
+ --ddl-glob <pattern> Glob pattern for DDL files (repeatable)
228
+ --extensions <list> Comma-separated extensions (default: .sql)
229
+ --out-dir <directory> Output root directory (default: ztd/docs/tables)
230
+ --config <path> Optional ztd.config.json path
231
+ --dictionary <path> Optional column dictionary json
232
+ --locale <code> Dictionary locale (fallback: LANG -> en -> first)
233
+ --default-schema <name> Override default schema for unqualified tables
234
+ --search-path <list> Comma-separated schema search path
235
+ --no-index Skip schema/table index page generation
236
+ --strict Exit non-zero when warnings exist
237
+ --column-order <mode> Column order: definition|name (default: definition)
238
+ --label-separator <pat> Regex to split comment into Label+Comment columns (if omitted, no Label column)
239
+ --filter-pg-dump Strip GRANT/REVOKE/OWNER TO/SET/\\connect statements from pg_dump output
240
+ `;
241
+ const pruneHelp = `ddl-docs prune [options]
242
+ --out-dir <directory> Output root directory (default: ztd/docs/tables)
243
+ --dry-run Print deletion targets without deleting files
244
+ --prune-orphans Also prune generated markdown not listed in manifest
245
+ `;
246
+ if (target === 'generate') {
247
+ console.log(generateHelp);
248
+ return;
249
+ }
250
+ if (target === 'prune') {
251
+ console.log(pruneHelp);
252
+ return;
253
+ }
254
+ console.log(`ddl-docs <command> [options]
255
+
256
+ Commands:
257
+ generate Generate markdown docs from DDL
258
+ prune Remove stale generated markdown docs
259
+ help [command] Show help for all commands or one command
260
+
261
+ ${generateHelp}
262
+ ${pruneHelp}`);
263
+ }
264
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { GenerateDocsOptions } from '../types';
2
+ /**
3
+ * Generates markdown docs and metadata files from DDL inputs.
4
+ */
5
+ export declare function runGenerateDocs(options: GenerateDocsOptions): void;
@@ -0,0 +1,266 @@
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.runGenerateDocs = runGenerateDocs;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const dictionary_1 = require("../analyzer/dictionary");
9
+ const columnConcepts_1 = require("../analyzer/columnConcepts");
10
+ const config_1 = require("../config");
11
+ const snapshotTableDocs_1 = require("../parser/snapshotTableDocs");
12
+ const columnPages_1 = require("../render/columnPages");
13
+ const indexPages_1 = require("../render/indexPages");
14
+ const referencesPage_1 = require("../render/referencesPage");
15
+ const tableMarkdown_1 = require("../render/tableMarkdown");
16
+ const manifest_1 = require("../state/manifest");
17
+ const ddlInputDedupe_1 = require("../utils/ddlInputDedupe");
18
+ const fs_1 = require("../utils/fs");
19
+ const pgDumpFilter_1 = require("../utils/pgDumpFilter");
20
+ const io_1 = require("../utils/io");
21
+ const GENERATOR_VERSION = '1.0.0';
22
+ /**
23
+ * Generates markdown docs and metadata files from DDL inputs.
24
+ */
25
+ function runGenerateDocs(options) {
26
+ var _a, _b;
27
+ const normalizedDirectories = normalizeDdlInputs(options.ddlDirectories);
28
+ const normalizedFiles = normalizeDdlInputs(options.ddlFiles);
29
+ const normalizedGlobs = normalizeDdlInputs(options.ddlGlobs);
30
+ if (normalizedDirectories.length === 0 && normalizedFiles.length === 0 && normalizedGlobs.length === 0) {
31
+ throw new Error('At least one DDL input is required via --ddl-dir, --ddl-file, or --ddl-glob.');
32
+ }
33
+ const mergedFiles = [...normalizedFiles];
34
+ for (const globInput of normalizedGlobs) {
35
+ for (const p of (0, fs_1.expandGlobPatterns)([globInput.path])) {
36
+ mergedFiles.push({ path: p, instance: (_a = globInput.instance) !== null && _a !== void 0 ? _a : '' });
37
+ }
38
+ }
39
+ const uniqueFiles = (0, ddlInputDedupe_1.dedupeDdlInputsByInstanceAndPath)(mergedFiles);
40
+ const rawSources = (0, fs_1.collectSqlFiles)(normalizedDirectories, uniqueFiles, options.extensions);
41
+ const sources = options.filterPgDump
42
+ ? rawSources.map((s) => ({ ...s, sql: (0, pgDumpFilter_1.filterPgDump)(s.sql) }))
43
+ : rawSources;
44
+ if (options.filterPgDump) {
45
+ for (const source of sources) {
46
+ if (source.sql.trim().length === 0) {
47
+ throw new Error(`No schema DDL remained after --filter-pg-dump for input: ${source.path}.`);
48
+ }
49
+ }
50
+ }
51
+ if (sources.length === 0) {
52
+ throw new Error('No SQL files were discovered from the provided inputs.');
53
+ }
54
+ const schemaSettings = (0, config_1.resolveSchemaSettings)(options.configPath, options.defaultSchema, options.searchPath);
55
+ const snapshot = (0, snapshotTableDocs_1.snapshotTableDocs)(sources, schemaSettings, { columnOrder: options.columnOrder });
56
+ if (snapshot.tables.length === 0) {
57
+ throw new Error('No table definitions were detected in the supplied DDL.');
58
+ }
59
+ const dictionary = (0, dictionary_1.loadDictionary)(options.dictionaryPath);
60
+ const locale = (0, dictionary_1.resolveLocale)(options.locale, dictionary);
61
+ const analysis = (0, columnConcepts_1.analyzeColumns)(snapshot.tables, { locale, dictionary });
62
+ const referenceSuggestions = buildReferenceSuggestions(snapshot.tables);
63
+ const allSuggestions = [...analysis.suggestions, ...referenceSuggestions].sort((a, b) => a.sql.localeCompare(b.sql));
64
+ const tableSuggestSet = new Set(allSuggestions.map((item) => `${item.schema}.${item.table}`));
65
+ const generatedFiles = [];
66
+ const tableOutputs = [];
67
+ const columnOutputs = [];
68
+ const nameMap = {};
69
+ const suggestionsByTable = groupSuggestionsByTable(allSuggestions);
70
+ for (const table of snapshot.tables) {
71
+ const outputPath = (0, tableMarkdown_1.tableDocPath)(options.outDir, table.schemaSlug, table.tableSlug);
72
+ (0, fs_1.ensureDirectory)(node_path_1.default.dirname(outputPath));
73
+ const tableSuggestions = (_b = suggestionsByTable.get(`${table.schema}.${table.table}`)) !== null && _b !== void 0 ? _b : {
74
+ columnCommentSql: [],
75
+ foreignKeySql: [],
76
+ };
77
+ (0, io_1.writeTextFileNormalized)(outputPath, (0, tableMarkdown_1.renderTableMarkdown)(table, tableSuggestions, { labelSeparator: options.labelSeparator }));
78
+ generatedFiles.push(outputPath);
79
+ tableOutputs.push(outputPath);
80
+ nameMap[`${table.schema}.${table.table}`] = `${table.schemaSlug}/${table.tableSlug}.md`;
81
+ }
82
+ if (options.includeIndexes) {
83
+ const indexPages = (0, indexPages_1.renderIndexPages)(options.outDir, snapshot.tables, analysis.findings, tableSuggestSet);
84
+ for (const page of indexPages) {
85
+ (0, fs_1.ensureDirectory)(node_path_1.default.dirname(page.path));
86
+ (0, io_1.writeTextFileNormalized)(page.path, page.content);
87
+ generatedFiles.push(page.path);
88
+ tableOutputs.push(page.path);
89
+ }
90
+ }
91
+ const columnPages = (0, columnPages_1.renderColumnPages)(options.outDir, analysis.observed, analysis.findings);
92
+ for (const page of columnPages) {
93
+ (0, fs_1.ensureDirectory)(node_path_1.default.dirname(page.path));
94
+ (0, io_1.writeTextFileNormalized)(page.path, page.content);
95
+ generatedFiles.push(page.path);
96
+ columnOutputs.push(page.path);
97
+ }
98
+ const referencesPage = (0, referencesPage_1.renderReferencesPage)(options.outDir, snapshot.tables);
99
+ (0, fs_1.ensureDirectory)(node_path_1.default.dirname(referencesPage.path));
100
+ (0, io_1.writeTextFileNormalized)(referencesPage.path, referencesPage.content);
101
+ generatedFiles.push(referencesPage.path);
102
+ tableOutputs.push(referencesPage.path);
103
+ const metaDir = node_path_1.default.join(options.outDir, '_meta');
104
+ (0, fs_1.ensureDirectory)(metaDir);
105
+ const warningsJsonPath = node_path_1.default.join(metaDir, 'warnings.json');
106
+ const warningsMdPath = node_path_1.default.join(metaDir, 'warnings.md');
107
+ const findingsJsonPath = node_path_1.default.join(metaDir, 'findings.json');
108
+ const findingsMdPath = node_path_1.default.join(metaDir, 'findings.md');
109
+ const snapshotPath = node_path_1.default.join(metaDir, 'snapshot.json');
110
+ const observedPath = node_path_1.default.join(metaDir, 'observed-column-dictionary.json');
111
+ const suggestedPath = node_path_1.default.join(metaDir, 'suggested.sql');
112
+ (0, io_1.writeTextFileNormalized)(warningsJsonPath, JSON.stringify(snapshot.warnings, null, 2));
113
+ (0, io_1.writeTextFileNormalized)(warningsMdPath, renderWarningsMarkdown(snapshot.warnings));
114
+ (0, io_1.writeTextFileNormalized)(findingsJsonPath, JSON.stringify(analysis.findings, null, 2));
115
+ (0, io_1.writeTextFileNormalized)(findingsMdPath, renderFindingsMarkdown(analysis.findings));
116
+ (0, io_1.writeTextFileNormalized)(snapshotPath, JSON.stringify(snapshot.tables, null, 2));
117
+ (0, io_1.writeTextFileNormalized)(observedPath, JSON.stringify(analysis.observed, null, 2));
118
+ (0, io_1.writeTextFileNormalized)(suggestedPath, renderSuggestedSql(allSuggestions));
119
+ generatedFiles.push(warningsJsonPath, warningsMdPath, findingsJsonPath, findingsMdPath, snapshotPath, observedPath, suggestedPath);
120
+ const manifest = (0, manifest_1.writeManifest)({
121
+ outDir: options.outDir,
122
+ generatorVersion: GENERATOR_VERSION,
123
+ dialect: options.dialect,
124
+ optionsForHash: {
125
+ dialect: options.dialect,
126
+ locale,
127
+ includeIndexes: options.includeIndexes,
128
+ columnOrder: options.columnOrder,
129
+ strict: options.strict,
130
+ extensions: options.extensions,
131
+ ddlDirectories: normalizedDirectories,
132
+ ddlFiles: uniqueFiles,
133
+ ddlGlobs: normalizedGlobs,
134
+ },
135
+ nameMap,
136
+ tableOutputs,
137
+ columnOutputs,
138
+ });
139
+ const totalIssues = snapshot.warnings.length + analysis.findings.length;
140
+ if (options.strict && totalIssues > 0) {
141
+ throw new Error(`Strict mode failed: ${totalIssues} issues found.`);
142
+ }
143
+ }
144
+ function normalizeDdlInputs(inputs) {
145
+ return inputs
146
+ .map((entry) => {
147
+ var _a;
148
+ if (typeof entry === 'string') {
149
+ return { path: entry, instance: '' };
150
+ }
151
+ return { path: entry.path, instance: (_a = entry.instance) !== null && _a !== void 0 ? _a : '' };
152
+ })
153
+ .filter((entry) => Boolean(entry.path));
154
+ }
155
+ function groupSuggestionsByTable(suggestions) {
156
+ var _a;
157
+ const map = new Map();
158
+ for (const suggestion of suggestions) {
159
+ const key = `${suggestion.schema}.${suggestion.table}`;
160
+ const bucket = (_a = map.get(key)) !== null && _a !== void 0 ? _a : { columnCommentSql: [], foreignKeySql: [] };
161
+ if (suggestion.kind === 'column_comment') {
162
+ bucket.columnCommentSql.push(suggestion.sql);
163
+ }
164
+ else {
165
+ bucket.foreignKeySql.push(suggestion.sql);
166
+ }
167
+ map.set(key, bucket);
168
+ }
169
+ for (const [key, bucket] of map.entries()) {
170
+ map.set(key, {
171
+ columnCommentSql: Array.from(new Set(bucket.columnCommentSql)).sort(),
172
+ foreignKeySql: Array.from(new Set(bucket.foreignKeySql)).sort(),
173
+ });
174
+ }
175
+ return map;
176
+ }
177
+ function renderWarningsMarkdown(warnings) {
178
+ const lines = [];
179
+ lines.push('# Warnings');
180
+ lines.push('');
181
+ if (warnings.length === 0) {
182
+ lines.push('- None');
183
+ lines.push('');
184
+ return lines.join('\n');
185
+ }
186
+ for (const warning of warnings) {
187
+ lines.push(`- [${warning.kind}] ${warning.message}`);
188
+ lines.push(` - source: ${warning.source.filePath}${warning.source.statementIndex != null ? `#${warning.source.statementIndex}` : ''}`);
189
+ lines.push(` - statement: ${warning.statementPreview}`);
190
+ }
191
+ lines.push('');
192
+ return lines.join('\n');
193
+ }
194
+ function renderFindingsMarkdown(findings) {
195
+ const lines = [];
196
+ lines.push('# Findings');
197
+ lines.push('');
198
+ if (findings.length === 0) {
199
+ lines.push('- None');
200
+ lines.push('');
201
+ return lines.join('\n');
202
+ }
203
+ for (const finding of findings) {
204
+ lines.push(`- [${finding.kind}] (${finding.severity}) ${finding.message}`);
205
+ }
206
+ lines.push('');
207
+ return lines.join('\n');
208
+ }
209
+ function renderSuggestedSql(suggestions) {
210
+ const lines = [];
211
+ lines.push('-- suggested: v1 (not applied)');
212
+ if (suggestions.length === 0) {
213
+ lines.push('-- none');
214
+ return lines.join('\n');
215
+ }
216
+ for (const suggestion of suggestions.sort((a, b) => a.sql.localeCompare(b.sql))) {
217
+ lines.push(suggestion.sql);
218
+ }
219
+ return lines.join('\n');
220
+ }
221
+ function buildReferenceSuggestions(tables) {
222
+ var _a, _b;
223
+ const dedupe = new Set();
224
+ const suggestions = [];
225
+ for (const table of tables) {
226
+ for (const reference of table.outgoingReferences) {
227
+ if (reference.source !== 'suggested') {
228
+ continue;
229
+ }
230
+ const key = `${reference.fromTableKey}|${reference.fromColumns.join(',')}|${reference.targetTableKey}|${reference.targetColumns.join(',')}`;
231
+ if (dedupe.has(key)) {
232
+ continue;
233
+ }
234
+ dedupe.add(key);
235
+ const tableKeyParts = reference.fromTableKey.split('.');
236
+ const schema = (_a = tableKeyParts[0]) !== null && _a !== void 0 ? _a : '';
237
+ const tableName = (_b = tableKeyParts[1]) !== null && _b !== void 0 ? _b : '';
238
+ if (!schema || !tableName) {
239
+ continue;
240
+ }
241
+ suggestions.push({
242
+ kind: 'foreign_key',
243
+ schema,
244
+ table: tableName,
245
+ column: reference.fromColumns.join(','),
246
+ sql: `ALTER TABLE ${quoteQualifiedName(reference.fromTableKey)} ADD FOREIGN KEY (${reference.fromColumns
247
+ .map((column) => quoteIdentifier(column))
248
+ .join(', ')}) REFERENCES ${quoteQualifiedName(reference.targetTableKey)}(${reference.targetColumns
249
+ .map((column) => quoteIdentifier(column))
250
+ .join(', ')});`,
251
+ });
252
+ }
253
+ }
254
+ return suggestions.sort((a, b) => a.sql.localeCompare(b.sql));
255
+ }
256
+ function quoteQualifiedName(value) {
257
+ return value
258
+ .split('.')
259
+ .map((part) => quoteIdentifier(part))
260
+ .join('.');
261
+ }
262
+ function quoteIdentifier(value) {
263
+ const normalized = value.replace(/^"|"$/g, '');
264
+ return `"${normalized.replace(/"/g, '""')}"`;
265
+ }
266
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { PruneDocsOptions } from '../types';
2
+ export declare function runPruneDocs(options: PruneDocsOptions): void;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runPruneDocs = runPruneDocs;
4
+ const manifest_1 = require("../state/manifest");
5
+ function runPruneDocs(options) {
6
+ const result = (0, manifest_1.pruneManagedFiles)(options.outDir, options.dryRun, options.pruneOrphans);
7
+ if (result.removed.length === 0) {
8
+ console.log(`No managed files were found in ${options.outDir}`);
9
+ return;
10
+ }
11
+ const mode = result.dryRun ? 'Dry-run candidates' : 'Pruned';
12
+ console.log(`${mode}: ${result.removed.length} files in ${options.outDir}`);
13
+ for (const file of result.removed) {
14
+ console.log(` - ${file}`);
15
+ }
16
+ }
17
+ //# sourceMappingURL=prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../src/commands/prune.ts"],"names":[],"mappings":";;AAGA,oCAWC;AAdD,gDAAsD;AAGtD,SAAgB,YAAY,CAAC,OAAyB;IACpD,MAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ResolvedSchemaSettings } from './types';
2
+ /**
3
+ * Resolves default schema and search path from CLI options and optional ztd config.
4
+ */
5
+ export declare function resolveSchemaSettings(explicitConfigPath: string | undefined, cliDefaultSchema: string | undefined, cliSearchPath: string[] | undefined): ResolvedSchemaSettings;