@metaobjectsdev/cli 0.5.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/LICENSE +189 -0
  2. package/README.md +184 -0
  3. package/dist/bin/meta.d.ts +3 -0
  4. package/dist/bin/meta.d.ts.map +1 -0
  5. package/dist/bin/meta.js +7 -0
  6. package/dist/bin/meta.js.map +1 -0
  7. package/dist/src/commands/export.d.ts +2 -0
  8. package/dist/src/commands/export.d.ts.map +1 -0
  9. package/dist/src/commands/export.js +45 -0
  10. package/dist/src/commands/export.js.map +1 -0
  11. package/dist/src/commands/gen.d.ts +2 -0
  12. package/dist/src/commands/gen.d.ts.map +1 -0
  13. package/dist/src/commands/gen.js +86 -0
  14. package/dist/src/commands/gen.js.map +1 -0
  15. package/dist/src/commands/init.d.ts +16 -0
  16. package/dist/src/commands/init.d.ts.map +1 -0
  17. package/dist/src/commands/init.js +222 -0
  18. package/dist/src/commands/init.js.map +1 -0
  19. package/dist/src/commands/migrate.d.ts +2 -0
  20. package/dist/src/commands/migrate.d.ts.map +1 -0
  21. package/dist/src/commands/migrate.js +361 -0
  22. package/dist/src/commands/migrate.js.map +1 -0
  23. package/dist/src/index.d.ts +4 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +105 -0
  26. package/dist/src/index.js.map +1 -0
  27. package/dist/src/lib/args.d.ts +34 -0
  28. package/dist/src/lib/args.d.ts.map +1 -0
  29. package/dist/src/lib/args.js +103 -0
  30. package/dist/src/lib/args.js.map +1 -0
  31. package/dist/src/lib/config.d.ts +17 -0
  32. package/dist/src/lib/config.d.ts.map +1 -0
  33. package/dist/src/lib/config.js +48 -0
  34. package/dist/src/lib/config.js.map +1 -0
  35. package/dist/src/lib/kysely.d.ts +28 -0
  36. package/dist/src/lib/kysely.d.ts.map +1 -0
  37. package/dist/src/lib/kysely.js +100 -0
  38. package/dist/src/lib/kysely.js.map +1 -0
  39. package/dist/src/lib/load-metaobjects-config.d.ts +3 -0
  40. package/dist/src/lib/load-metaobjects-config.d.ts.map +1 -0
  41. package/dist/src/lib/load-metaobjects-config.js +83 -0
  42. package/dist/src/lib/load-metaobjects-config.js.map +1 -0
  43. package/dist/src/lib/log.d.ts +6 -0
  44. package/dist/src/lib/log.d.ts.map +1 -0
  45. package/dist/src/lib/log.js +6 -0
  46. package/dist/src/lib/log.js.map +1 -0
  47. package/dist/src/lib/output.d.ts +38 -0
  48. package/dist/src/lib/output.d.ts.map +1 -0
  49. package/dist/src/lib/output.js +96 -0
  50. package/dist/src/lib/output.js.map +1 -0
  51. package/dist/src/lib/projection-migrations.d.ts +34 -0
  52. package/dist/src/lib/projection-migrations.d.ts.map +1 -0
  53. package/dist/src/lib/projection-migrations.js +112 -0
  54. package/dist/src/lib/projection-migrations.js.map +1 -0
  55. package/package.json +71 -0
  56. package/src/commands/export.ts +50 -0
  57. package/src/commands/gen.ts +88 -0
  58. package/src/commands/init.ts +272 -0
  59. package/src/commands/migrate.ts +390 -0
  60. package/src/index.ts +109 -0
  61. package/src/lib/args.ts +157 -0
  62. package/src/lib/config.ts +78 -0
  63. package/src/lib/kysely.ts +114 -0
  64. package/src/lib/load-metaobjects-config.ts +89 -0
  65. package/src/lib/log.ts +5 -0
  66. package/src/lib/output.ts +156 -0
  67. package/src/lib/projection-migrations.ts +159 -0
@@ -0,0 +1,222 @@
1
+ import { mkdir, writeFile, readFile, stat } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { basename } from "node:path";
4
+ import { DEFAULT_CONFIG, ConfigSchema, saveConfig, PACKAGE_MANIFEST_FILE, DEFAULT_METADATA_DIR, DEFAULT_METAOBJECTS_DIR } from "@metaobjectsdev/sdk";
5
+ import { parseInitArgs } from "../lib/args.js";
6
+ import { log } from "../lib/log.js";
7
+ import { AGENT_DOCS_BODY, withContentHash, isUnmodified } from "@metaobjectsdev/sdk/agent-docs";
8
+ const META_COMMON_JSON = JSON.stringify({
9
+ metadata: {
10
+ package: "",
11
+ children: [],
12
+ },
13
+ }, null, 2) + "\n";
14
+ const METAOBJECTS_GITIGNORE_BODY = `.gen-state/
15
+ `;
16
+ const FORGE_CONFIG_BODY = `import { defineConfig } from "@metaobjectsdev/cli";
17
+ import {
18
+ entityFile,
19
+ queriesFile,
20
+ routesFile,
21
+ // formFile, // opt-in: emit React form components
22
+ barrel,
23
+ } from "@metaobjectsdev/codegen-ts/generators";
24
+
25
+ export default defineConfig({
26
+ outDir: "./src/db",
27
+ extStyle: "none",
28
+ dbImport: "../db",
29
+ dialect: "sqlite",
30
+ apiPrefix: "", // set to "/api" if your routes mount under /api
31
+ generators: [
32
+ entityFile(),
33
+ queriesFile(),
34
+ routesFile(),
35
+ barrel(),
36
+ ],
37
+ });
38
+ `;
39
+ const NEXT_STEPS = `
40
+ Initialized metaobjects/ + .metaobjects/ + metaobjects.config.ts
41
+
42
+ Next steps (when later sub-projects ship):
43
+ meta ingest # propose entities from your existing TS code
44
+ meta gen # codegen TS targets from entities
45
+ meta serve # local viewer
46
+ meta install-hooks # register MCP server + Claude Code hooks
47
+ `;
48
+ const AGENT_DOC_FILES = ["AGENTS.md", "CLAUDE.md"];
49
+ async function writeAgentDocs(agentDir, result) {
50
+ const docsBody = withContentHash(AGENT_DOCS_BODY);
51
+ for (const filename of AGENT_DOC_FILES) {
52
+ const path = join(agentDir, filename);
53
+ const exists = await fileExists(path);
54
+ if (!exists) {
55
+ await writeFile(path, docsBody, "utf8");
56
+ result.created.push(`.metaobjects/${filename}`);
57
+ continue;
58
+ }
59
+ const existingBody = await readFile(path, "utf8");
60
+ if (isUnmodified(existingBody)) {
61
+ await writeFile(path, docsBody, "utf8");
62
+ result.created.push(`.metaobjects/${filename}`);
63
+ }
64
+ else {
65
+ await writeFile(`${path}.new`, docsBody, "utf8");
66
+ result.created.push(`.metaobjects/${filename}.new`);
67
+ result.warnings.push(`${filename} appears to have been hand-edited; refreshed docs written to ${filename}.new`);
68
+ }
69
+ }
70
+ }
71
+ export async function init(opts) {
72
+ const result = { created: [], preserved: [], warnings: [] };
73
+ const agentDir = join(opts.cwd, DEFAULT_METAOBJECTS_DIR);
74
+ const metaobjectsDir = join(opts.cwd, DEFAULT_METADATA_DIR);
75
+ const agentDirExists = await dirExists(agentDir);
76
+ const metaobjectsExists = await dirExists(metaobjectsDir);
77
+ const exists = agentDirExists || metaobjectsExists;
78
+ if (opts.refreshDocs && exists && !opts.force) {
79
+ // Refresh-only path: scaffold agent docs, leave everything else alone.
80
+ await writeAgentDocs(agentDir, result);
81
+ return result;
82
+ }
83
+ if (exists && !opts.force && !opts.refreshDocs) {
84
+ throw new Error("metaobjects/ or .metaobjects/ already exists; use --force to overwrite scaffold files (existing records are preserved), or --refresh-docs to update only agent docs");
85
+ }
86
+ const dirs = [
87
+ DEFAULT_METADATA_DIR,
88
+ DEFAULT_METAOBJECTS_DIR,
89
+ `${DEFAULT_METAOBJECTS_DIR}/.gen-state`,
90
+ ];
91
+ if (opts.printOnly) {
92
+ for (const d of dirs)
93
+ result.created.push(d);
94
+ result.created.push("metaobjects/meta.common.json", ".metaobjects/config.json", ".metaobjects/.gitignore", `.metaobjects/${PACKAGE_MANIFEST_FILE}`);
95
+ for (const filename of AGENT_DOC_FILES)
96
+ result.created.push(`.metaobjects/${filename}`);
97
+ result.created.push("metaobjects.config.ts");
98
+ return result;
99
+ }
100
+ for (const d of dirs) {
101
+ await mkdir(join(opts.cwd, d), { recursive: true });
102
+ if (!result.created.includes(d))
103
+ result.created.push(d);
104
+ }
105
+ // metaobjects/meta.common.json — placeholder, only if absent
106
+ const commonJsonPath = join(metaobjectsDir, "meta.common.json");
107
+ if (!(await fileExists(commonJsonPath))) {
108
+ await writeFile(commonJsonPath, META_COMMON_JSON, "utf8");
109
+ result.created.push("metaobjects/meta.common.json");
110
+ }
111
+ else {
112
+ result.preserved.push("metaobjects/meta.common.json");
113
+ }
114
+ // .metaobjects/config.json
115
+ if (agentDirExists) {
116
+ const configPath = join(agentDir, "config.json");
117
+ let priorContent;
118
+ try {
119
+ priorContent = await readFile(configPath, "utf8");
120
+ const parsed = ConfigSchema.parse(JSON.parse(priorContent));
121
+ const merged = ConfigSchema.parse({ ...DEFAULT_CONFIG, ...parsed });
122
+ await saveConfig(agentDir, merged);
123
+ result.preserved.push(".metaobjects/config.json");
124
+ }
125
+ catch {
126
+ if (priorContent !== undefined) {
127
+ log.warn("existing .metaobjects/config.json was invalid — writing fresh defaults. Prior content:");
128
+ log.warn(priorContent);
129
+ result.warnings.push("invalid .metaobjects/config.json replaced with defaults");
130
+ }
131
+ await writeFile(join(agentDir, "config.json"), JSON.stringify(DEFAULT_CONFIG, null, 2) + "\n", "utf8");
132
+ if (priorContent === undefined) {
133
+ result.created.push(".metaobjects/config.json");
134
+ }
135
+ }
136
+ }
137
+ else {
138
+ await writeFile(join(agentDir, "config.json"), JSON.stringify(DEFAULT_CONFIG, null, 2) + "\n", "utf8");
139
+ result.created.push(".metaobjects/config.json");
140
+ }
141
+ // .metaobjects/.gitignore
142
+ await writeFile(join(agentDir, ".gitignore"), METAOBJECTS_GITIGNORE_BODY, "utf8");
143
+ result.created.push(".metaobjects/.gitignore");
144
+ // .metaobjects/package.meta.json — scaffold v0.3 package manifest if absent
145
+ const manifestPath = join(agentDir, PACKAGE_MANIFEST_FILE);
146
+ if (!(await fileExists(manifestPath))) {
147
+ const defaultPackageName = basename(opts.cwd);
148
+ const manifestBody = {
149
+ name: defaultPackageName,
150
+ version: "0.1.0",
151
+ extends: [],
152
+ };
153
+ await writeFile(manifestPath, JSON.stringify(manifestBody, null, 2) + "\n", "utf8");
154
+ result.created.push(`.metaobjects/${PACKAGE_MANIFEST_FILE}`);
155
+ }
156
+ else {
157
+ result.preserved.push(`.metaobjects/${PACKAGE_MANIFEST_FILE}`);
158
+ }
159
+ await writeAgentDocs(agentDir, result);
160
+ // Scaffold metaobjects.config.ts at the project root. Never overwrite if it exists.
161
+ const forgeConfigPath = join(opts.cwd, "metaobjects.config.ts");
162
+ if (!(await fileExists(forgeConfigPath))) {
163
+ await writeFile(forgeConfigPath, FORGE_CONFIG_BODY, "utf8");
164
+ result.created.push("metaobjects.config.ts");
165
+ }
166
+ return result;
167
+ }
168
+ export function nextStepsBlock() {
169
+ return NEXT_STEPS;
170
+ }
171
+ async function dirExists(p) {
172
+ try {
173
+ const s = await stat(p);
174
+ return s.isDirectory();
175
+ }
176
+ catch {
177
+ return false;
178
+ }
179
+ }
180
+ async function fileExists(p) {
181
+ try {
182
+ const s = await stat(p);
183
+ return s.isFile();
184
+ }
185
+ catch {
186
+ return false;
187
+ }
188
+ }
189
+ export async function initCommand(args, cwd) {
190
+ let flags;
191
+ try {
192
+ flags = parseInitArgs(args);
193
+ }
194
+ catch (err) {
195
+ log.error(err.message);
196
+ return 2;
197
+ }
198
+ try {
199
+ const result = await init({
200
+ cwd,
201
+ force: flags.force,
202
+ quiet: flags.quiet,
203
+ printOnly: flags.printOnly,
204
+ refreshDocs: flags.refreshDocs,
205
+ });
206
+ if (flags.printOnly) {
207
+ log.info("Would create:");
208
+ for (const path of result.created)
209
+ log.info(` ${path}`);
210
+ return 0;
211
+ }
212
+ if (!flags.quiet) {
213
+ log.info(nextStepsBlock());
214
+ }
215
+ return 0;
216
+ }
217
+ catch (err) {
218
+ log.error(err.message);
219
+ return 1;
220
+ }
221
+ }
222
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function migrateCommand(args: string[], cwd: string): Promise<number>;
2
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate.ts"],"names":[],"mappings":"AAoHA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyOjF"}
@@ -0,0 +1,361 @@
1
+ import { resolve } from "node:path";
2
+ import { mkdir } from "node:fs/promises";
3
+ import { parseMigrateArgs } from "../lib/args.js";
4
+ import { resolveMigrateConfig } from "../lib/config.js";
5
+ import { formatMigrateResult } from "../lib/output.js";
6
+ import { buildKyselyFromUrl } from "../lib/kysely.js";
7
+ import { log } from "../lib/log.js";
8
+ import { loadMemory } from "@metaobjectsdev/sdk";
9
+ import { loadMetaobjectsConfig } from "../lib/load-metaobjects-config.js";
10
+ import { buildExpectedSchema, introspect, diff, emit, writeMigration, BlockedChangesError, } from "@metaobjectsdev/migrate-ts";
11
+ import { computeProjectionMigrations, computeProjectionViewDependencies, } from "../lib/projection-migrations.js";
12
+ // Map CLI allow tokens → migrate-ts AllowOptions field names
13
+ const ALLOW_TOKEN_MAP = {
14
+ "drop-column": "dropColumn",
15
+ "drop-table": "dropTable",
16
+ "type-change": "typeChange",
17
+ "drop-index": "dropIndex",
18
+ "drop-fk": "dropFk",
19
+ "nullable-to-not-null": "nullableToNotNull",
20
+ };
21
+ function mapOnAmbiguous(v) {
22
+ return v === "drop-add" ? "drop+add" : v;
23
+ }
24
+ function tokensToAllowOptions(tokens) {
25
+ const opts = {};
26
+ for (const tok of tokens) {
27
+ const field = ALLOW_TOKEN_MAP[tok];
28
+ if (field !== undefined) {
29
+ opts[field] = true;
30
+ }
31
+ }
32
+ return opts;
33
+ }
34
+ function summarizeChanges(changes) {
35
+ const counts = {};
36
+ for (const c of changes) {
37
+ counts[c.kind] = (counts[c.kind] ?? 0) + 1;
38
+ }
39
+ return counts;
40
+ }
41
+ function describeChangeForOutput(c) {
42
+ switch (c.kind) {
43
+ case "create-table": return c.table.name;
44
+ case "drop-table": return c.table;
45
+ case "rename-table": return `${c.from} → ${c.to}`;
46
+ case "add-column": return `${c.table}.${c.column.name}`;
47
+ case "drop-column": return `${c.table}.${c.column}`;
48
+ case "rename-column": return `${c.table}.${c.from} → ${c.table}.${c.to}`;
49
+ case "change-column-type": return `${c.table}.${c.column} (${c.from.kind} → ${c.to.kind})`;
50
+ case "change-column-nullable": return `${c.table}.${c.column} (${c.from ? "NULL" : "NOT NULL"} → ${c.to ? "NULL" : "NOT NULL"})`;
51
+ case "change-column-default": return `${c.table}.${c.column}`;
52
+ case "add-index": return `${c.table} idx ${c.index.name}`;
53
+ case "drop-index": return `${c.table} idx ${c.index}`;
54
+ case "add-fk": return `${c.table} fk ${c.fk.name}`;
55
+ case "drop-fk": return `${c.table} fk ${c.fk}`;
56
+ default: return JSON.stringify(c);
57
+ }
58
+ }
59
+ function allowFlagFor(kind) {
60
+ switch (kind) {
61
+ case "drop-column": return "drop-column";
62
+ case "drop-table": return "drop-table";
63
+ case "drop-index": return "drop-index";
64
+ case "drop-fk": return "drop-fk";
65
+ case "change-column-type": return "type-change";
66
+ case "change-column-nullable": return "nullable-to-not-null";
67
+ default: return kind;
68
+ }
69
+ }
70
+ function blockedToEntries(err) {
71
+ return err.blocked.map((c) => ({
72
+ kind: c.kind,
73
+ description: describeChangeForOutput(c),
74
+ allowFlag: allowFlagFor(c.kind),
75
+ }));
76
+ }
77
+ function ambiguousToEntries(amb) {
78
+ return amb.map((a) => {
79
+ if (a.kind === "possible-column-rename") {
80
+ return {
81
+ kind: a.kind,
82
+ description: `${a.table}.${a.from.name} → ${a.table}.${a.to.name}`,
83
+ hint: `${a.from.sqlType.kind} → ${a.to.sqlType.kind}`,
84
+ };
85
+ }
86
+ return {
87
+ kind: a.kind,
88
+ description: `${a.from.name} → ${a.to.name}`,
89
+ hint: `column-set overlap ${a.columnOverlap.toFixed(2)}`,
90
+ };
91
+ });
92
+ }
93
+ export async function migrateCommand(args, cwd) {
94
+ let flags;
95
+ try {
96
+ flags = parseMigrateArgs(args);
97
+ }
98
+ catch (err) {
99
+ log.error(`migrate: ${err.message}`);
100
+ return 2;
101
+ }
102
+ const metaRoot = cwd;
103
+ const config = await resolveMigrateConfig(flags, metaRoot);
104
+ if (config.databaseUrl === undefined) {
105
+ log.error(`migrate: --db <url> required (or set DATABASE_URL, or add migrate.databaseUrl to .metaobjects/config.json)`);
106
+ return 2;
107
+ }
108
+ let metadata;
109
+ try {
110
+ metadata = await loadMemory(metaRoot);
111
+ }
112
+ catch (err) {
113
+ const msg = err.message;
114
+ if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
115
+ log.error(`no metaobjects/ found in ${metaRoot}; run 'meta init' to scaffold`);
116
+ }
117
+ else {
118
+ log.error(`failed to load metadata: ${msg}`);
119
+ }
120
+ return 2;
121
+ }
122
+ let kysely;
123
+ try {
124
+ kysely = await buildKyselyFromUrl(config.databaseUrl, config.dialect);
125
+ }
126
+ catch (err) {
127
+ log.error(`migrate: ${err.message}`);
128
+ return 2;
129
+ }
130
+ let exitCode = 0;
131
+ let writtenPaths = [];
132
+ let blocked = [];
133
+ let ambiguous = [];
134
+ let changeCounts = {};
135
+ try {
136
+ const expected = buildExpectedSchema(metadata, { dialect: kysely.dialect });
137
+ let actual;
138
+ try {
139
+ actual = await introspect(kysely.db, kysely.dialect);
140
+ }
141
+ catch (err) {
142
+ log.error(`migrate: failed to connect to ${kysely.displayUrl}: ${err.message}`);
143
+ await kysely.close();
144
+ return 2;
145
+ }
146
+ const collectedAmbiguous = [];
147
+ const onAmbiguousResolution = mapOnAmbiguous(config.onAmbiguous);
148
+ let diffResult;
149
+ try {
150
+ diffResult = await diff({
151
+ expected,
152
+ actual,
153
+ allow: tokensToAllowOptions(config.allow),
154
+ onAmbiguous: async (a) => {
155
+ collectedAmbiguous.push(a);
156
+ return onAmbiguousResolution;
157
+ },
158
+ });
159
+ }
160
+ catch (err) {
161
+ // diff() throws when onAmbiguous returns "abort" — surface as exit 1
162
+ // with the collected ambiguity list.
163
+ if (err.message.includes("aborted by onAmbiguous")) {
164
+ ambiguous = ambiguousToEntries(collectedAmbiguous);
165
+ const output = formatMigrateResult({
166
+ dialect: kysely.dialect,
167
+ displayUrl: kysely.displayUrl,
168
+ changeCounts: {},
169
+ blocked: [],
170
+ ambiguous,
171
+ writtenPaths: [],
172
+ dryRun: config.dryRun,
173
+ }, { isTTY: !!process.stdout.isTTY });
174
+ log.info(output);
175
+ await kysely.close();
176
+ return 1;
177
+ }
178
+ throw err;
179
+ }
180
+ changeCounts = summarizeChanges(diffResult.changes);
181
+ // Load metaobjects config to pick up columnNamingStrategy for view DDL emit.
182
+ // If metaobjects.config.ts is absent (e.g. in projects that don't use codegen),
183
+ // fall back to snake_case so migrate still works without it.
184
+ let columnNamingStrategy = "snake_case";
185
+ try {
186
+ const forgeConfig = await loadMetaobjectsConfig(metaRoot);
187
+ if (forgeConfig.columnNamingStrategy) {
188
+ columnNamingStrategy = forgeConfig.columnNamingStrategy;
189
+ }
190
+ }
191
+ catch {
192
+ // metaobjects.config.ts absent or invalid — use default snake_case
193
+ }
194
+ // Pull existing view CREATE SQL from the DB so unchanged views can be
195
+ // skipped (no DROP+CREATE noise when the body hasn't changed).
196
+ const existingViewSql = await readExistingViewSql(kysely.db, kysely.dialect);
197
+ // Compute view migrations (projections) independently of table changes.
198
+ const viewResult = computeProjectionMigrations({
199
+ metadata,
200
+ dialect: kysely.dialect,
201
+ allowBreaking: false,
202
+ columnNamingStrategy,
203
+ existingViewSql,
204
+ });
205
+ if (viewResult.errors.length > 0) {
206
+ for (const err of viewResult.errors)
207
+ log.error(err);
208
+ await kysely.close();
209
+ return 1;
210
+ }
211
+ const viewUpSql = viewResult.migrations.join("\n\n");
212
+ const hasTableChanges = diffResult.changes.length > 0;
213
+ const hasViewChanges = viewResult.migrations.length > 0;
214
+ if (!hasTableChanges && !hasViewChanges) {
215
+ // no-op — output will say "No schema changes"
216
+ }
217
+ else {
218
+ // Emit table SQL (may be empty if only views changed).
219
+ let tableSql;
220
+ if (hasTableChanges) {
221
+ try {
222
+ tableSql = emit(diffResult.changes, {
223
+ dialect: kysely.dialect,
224
+ expectedSchema: expected,
225
+ ...(actual.meta !== undefined ? { actualMeta: actual.meta } : {}),
226
+ });
227
+ }
228
+ catch (err) {
229
+ if (err instanceof BlockedChangesError) {
230
+ blocked = blockedToEntries(err);
231
+ exitCode = 1;
232
+ }
233
+ else {
234
+ throw err;
235
+ }
236
+ }
237
+ }
238
+ // Combine table + view SQL into a single migration if no errors.
239
+ if (exitCode === 0) {
240
+ // Extract view names from the CREATE VIEW statements (used by both the
241
+ // pre-drop and down-migration paths below).
242
+ const viewNames = viewResult.migrations
243
+ .map((s) => {
244
+ const m = /CREATE(?:\s+OR\s+REPLACE)?\s+VIEW\s+(\S+)/i.exec(s);
245
+ return m ? m[1] : undefined;
246
+ })
247
+ .filter((n) => Boolean(n));
248
+ // Pre-drop dependent views, BUT only the ones whose source tables are
249
+ // being recreated. SQLite's ALTER TABLE ... RENAME re-parses dependent
250
+ // view definitions and errors if any of them reference a source table
251
+ // that's mid-recreate (the recreate-and-copy pattern temporarily drops
252
+ // the source table and creates __new_<table>, then RENAMEs). The
253
+ // viewUpSql block below recreates the dropped views fresh.
254
+ const recreatedTables = tableSql?.recreatedTables ?? new Set();
255
+ const viewPreDropSql = recreatedTables.size > 0 && viewNames.length > 0
256
+ ? (() => {
257
+ const deps = computeProjectionViewDependencies({
258
+ metadata,
259
+ columnNamingStrategy,
260
+ });
261
+ const affected = viewNames.filter((n) => {
262
+ const sources = deps.get(n);
263
+ if (!sources)
264
+ return false;
265
+ for (const t of sources)
266
+ if (recreatedTables.has(t))
267
+ return true;
268
+ return false;
269
+ });
270
+ return affected.length > 0
271
+ ? affected.map((n) => `DROP VIEW IF EXISTS ${n};`).join("\n")
272
+ : "";
273
+ })()
274
+ : "";
275
+ const upParts = [viewPreDropSql, tableSql?.up, viewUpSql].filter(Boolean);
276
+ const combinedUp = upParts.join("\n\n");
277
+ // Down SQL: DROP VIEW statements for any views we created.
278
+ const viewDownSql = viewNames
279
+ .map((n) => `DROP VIEW IF EXISTS ${n};`)
280
+ .join("\n");
281
+ const downParts = [viewDownSql, tableSql?.down].filter(Boolean);
282
+ const combinedDown = downParts.join("\n\n");
283
+ if (config.slug === undefined) {
284
+ log.error(`migrate: --slug <name> required when there are changes (e.g., --slug add-user-shipping)`);
285
+ await kysely.close();
286
+ return 2;
287
+ }
288
+ if (config.dryRun) {
289
+ log.info(`-- UP --\n${combinedUp}\n\n-- DOWN --\n${combinedDown}`);
290
+ }
291
+ else {
292
+ const outDir = resolve(metaRoot, config.outDir);
293
+ await mkdir(outDir, { recursive: true });
294
+ const res = await writeMigration({ up: combinedUp, down: combinedDown }, { dir: outDir, slug: config.slug });
295
+ writtenPaths = [res.upPath, res.downPath];
296
+ }
297
+ }
298
+ }
299
+ }
300
+ finally {
301
+ try {
302
+ await kysely.close();
303
+ }
304
+ catch (err) {
305
+ log.warn(`migrate: failed to close DB cleanly: ${err.message}`);
306
+ }
307
+ }
308
+ const output = formatMigrateResult({
309
+ dialect: kysely.dialect,
310
+ displayUrl: kysely.displayUrl,
311
+ changeCounts,
312
+ blocked,
313
+ ambiguous,
314
+ writtenPaths,
315
+ dryRun: config.dryRun,
316
+ }, { isTTY: !!process.stdout.isTTY });
317
+ log.info(output);
318
+ return exitCode;
319
+ }
320
+ /**
321
+ * Read existing view CREATE SQL from the DB. Returns an empty map on any
322
+ * introspection failure — the worst case is over-eager DROP+CREATE
323
+ * (the original behaviour), not data loss.
324
+ */
325
+ async function readExistingViewSql(
326
+ // biome-ignore lint/suspicious/noExplicitAny: kysely raw query, dialect-dispatched
327
+ db, dialect) {
328
+ const result = new Map();
329
+ try {
330
+ if (dialect === "sqlite") {
331
+ const { sql } = await import("kysely");
332
+ const rows = await sql `
333
+ SELECT name, sql FROM sqlite_master WHERE type='view' AND name NOT LIKE 'sqlite_%'
334
+ `.execute(db);
335
+ for (const r of rows.rows) {
336
+ if (r.name && r.sql)
337
+ result.set(r.name, r.sql);
338
+ }
339
+ }
340
+ else {
341
+ const { sql } = await import("kysely");
342
+ const rows = await sql `
343
+ SELECT viewname AS name, definition AS def
344
+ FROM pg_views
345
+ WHERE schemaname = 'public'
346
+ `.execute(db);
347
+ for (const r of rows.rows) {
348
+ // Postgres pg_views.definition returns only the SELECT body, not the
349
+ // full "CREATE VIEW ... AS ...". Synthesize so comparison is apples-
350
+ // to-apples with what emitViewDdl produces.
351
+ if (r.name && r.def)
352
+ result.set(r.name, `CREATE VIEW ${r.name} AS ${r.def}`);
353
+ }
354
+ }
355
+ }
356
+ catch {
357
+ // ignore — empty map means over-eager recreate, same as before this fix
358
+ }
359
+ return result;
360
+ }
361
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { defineConfig } from "@metaobjectsdev/codegen-ts";
2
+ export type { MetaobjectsGenConfig } from "@metaobjectsdev/codegen-ts";
3
+ export declare function run(argv: string[]): Promise<number>;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AA4CvE,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DzD"}