@supatype/cli 0.1.0-alpha.10 → 0.1.0-alpha.12
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +98 -65
- package/.turbo/turbo-typecheck.log +1 -1
- package/dist/app/framework.js +1 -3
- package/dist/app/framework.js.map +1 -1
- package/dist/app/proxy-dev-app.d.ts +14 -0
- package/dist/app/proxy-dev-app.d.ts.map +1 -1
- package/dist/app/proxy-dev-app.js +109 -6
- package/dist/app/proxy-dev-app.js.map +1 -1
- package/dist/binary-cache.d.ts +1 -1
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +6 -1
- package/dist/binary-cache.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +3 -0
- package/dist/commands/adopt.d.ts.map +1 -0
- package/dist/commands/adopt.js +58 -0
- package/dist/commands/adopt.js.map +1 -0
- package/dist/commands/cloud.d.ts +4 -9
- package/dist/commands/cloud.d.ts.map +1 -1
- package/dist/commands/cloud.js +49 -91
- package/dist/commands/cloud.js.map +1 -1
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +25 -47
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +117 -74
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +21 -3
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +37 -37
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +77 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/functions.d.ts.map +1 -1
- package/dist/commands/functions.js +80 -33
- package/dist/commands/functions.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/introspect.d.ts +3 -0
- package/dist/commands/introspect.d.ts.map +1 -0
- package/dist/commands/introspect.js +34 -0
- package/dist/commands/introspect.js.map +1 -0
- package/dist/commands/link-helpers.d.ts +15 -0
- package/dist/commands/link-helpers.d.ts.map +1 -0
- package/dist/commands/link-helpers.js +187 -0
- package/dist/commands/link-helpers.js.map +1 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +116 -14
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +32 -5
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +102 -129
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +93 -29
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +6 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/dev-compose.d.ts +23 -0
- package/dist/dev-compose.d.ts.map +1 -1
- package/dist/dev-compose.js +183 -6
- package/dist/dev-compose.js.map +1 -1
- package/dist/diff-output.d.ts +5 -1
- package/dist/diff-output.d.ts.map +1 -1
- package/dist/diff-output.js +69 -0
- package/dist/diff-output.js.map +1 -1
- package/dist/engine-client.d.ts +10 -1
- package/dist/engine-client.d.ts.map +1 -1
- package/dist/engine-client.js +64 -13
- package/dist/engine-client.js.map +1 -1
- package/dist/engine-push-output.d.ts +1 -0
- package/dist/engine-push-output.d.ts.map +1 -1
- package/dist/engine-push-output.js +4 -1
- package/dist/engine-push-output.js.map +1 -1
- package/dist/gitignore.d.ts +8 -0
- package/dist/gitignore.d.ts.map +1 -0
- package/dist/gitignore.js +41 -0
- package/dist/gitignore.js.map +1 -0
- package/dist/link.d.ts +66 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +159 -0
- package/dist/link.js.map +1 -0
- package/dist/process-manager.d.ts +2 -0
- package/dist/process-manager.d.ts.map +1 -1
- package/dist/process-manager.js +2 -0
- package/dist/process-manager.js.map +1 -1
- package/dist/project-config.d.ts +8 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js.map +1 -1
- package/dist/pull-utils.d.ts +50 -14
- package/dist/pull-utils.d.ts.map +1 -1
- package/dist/pull-utils.js +152 -12
- package/dist/pull-utils.js.map +1 -1
- package/dist/resolve-target.d.ts +86 -0
- package/dist/resolve-target.d.ts.map +1 -0
- package/dist/resolve-target.js +291 -0
- package/dist/resolve-target.js.map +1 -0
- package/dist/runtime-routes.d.ts.map +1 -1
- package/dist/runtime-routes.js +7 -0
- package/dist/runtime-routes.js.map +1 -1
- package/dist/schema-ast-v2.d.ts +1 -1
- package/dist/schema-ast-v2.d.ts.map +1 -1
- package/dist/schema-ast-v2.js +2 -2
- package/dist/schema-ast-v2.js.map +1 -1
- package/dist/schema-sources.d.ts +40 -0
- package/dist/schema-sources.d.ts.map +1 -0
- package/dist/schema-sources.js +183 -0
- package/dist/schema-sources.js.map +1 -0
- package/dist/self-host-compose.d.ts +10 -0
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +85 -3
- package/dist/self-host-compose.js.map +1 -1
- package/dist/storage-provision.d.ts +4 -0
- package/dist/storage-provision.d.ts.map +1 -1
- package/dist/storage-provision.js +24 -2
- package/dist/storage-provision.js.map +1 -1
- package/dist/target-client.d.ts +10 -0
- package/dist/target-client.d.ts.map +1 -0
- package/dist/target-client.js +22 -0
- package/dist/target-client.js.map +1 -0
- package/dist/type-extractor.d.ts +11 -0
- package/dist/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor.js +95 -8
- package/dist/type-extractor.js.map +1 -1
- package/package.json +1 -1
- package/src/app/framework.ts +1 -3
- package/src/app/proxy-dev-app.ts +113 -6
- package/src/binary-cache.ts +6 -1
- package/src/cli.ts +6 -0
- package/src/commands/adopt.ts +83 -0
- package/src/commands/cloud.ts +66 -108
- package/src/commands/db.ts +28 -52
- package/src/commands/deploy.ts +162 -104
- package/src/commands/dev.ts +24 -10
- package/src/commands/diff.ts +40 -41
- package/src/commands/doctor.ts +102 -0
- package/src/commands/functions.ts +95 -37
- package/src/commands/init.ts +25 -4
- package/src/commands/introspect.ts +47 -0
- package/src/commands/link-helpers.ts +228 -0
- package/src/commands/migrate.ts +163 -15
- package/src/commands/pull.ts +37 -9
- package/src/commands/push.ts +132 -166
- package/src/commands/status.ts +100 -33
- package/src/commands/update.ts +6 -2
- package/src/config.ts +2 -1
- package/src/dev-compose.ts +240 -6
- package/src/diff-output.ts +79 -1
- package/src/engine-client.ts +70 -13
- package/src/engine-push-output.ts +7 -3
- package/src/gitignore.ts +48 -0
- package/src/link.ts +242 -0
- package/src/process-manager.ts +4 -0
- package/src/project-config.ts +8 -0
- package/src/pull-utils.ts +217 -23
- package/src/resolve-target.ts +419 -0
- package/src/runtime-routes.ts +7 -0
- package/src/schema-ast-v2.ts +2 -1
- package/src/schema-sources.ts +248 -0
- package/src/self-host-compose.ts +87 -3
- package/src/storage-provision.ts +33 -1
- package/src/target-client.ts +40 -0
- package/src/type-extractor.ts +124 -11
- package/tests/cli-help.test.ts +27 -2
- package/tests/init.test.ts +1 -1
- package/tests/link.test.ts +148 -0
- package/tests/proxy-dev-app.test.ts +45 -1
- package/tests/pull-utils.test.ts +5 -4
- package/tests/runtime-contract.test.ts +44 -1
- package/tests/schema-sources.test.ts +119 -0
- package/tests/storage-provision.test.ts +100 -0
- package/tsconfig.tsbuildinfo +1 -1
package/dist/commands/migrate.js
CHANGED
|
@@ -1,9 +1,52 @@
|
|
|
1
1
|
import { createInterface } from "node:readline";
|
|
2
|
+
import { join } from "node:path";
|
|
2
3
|
import { loadConfig, loadSchemaAst } from "../config.js";
|
|
3
|
-
import { connectionString, schemaPathFromProject } from "../project-config.js";
|
|
4
|
+
import { connectionString, projectRootFromConfig, schemaPathFromProject } from "../project-config.js";
|
|
4
5
|
import { ensureEngine, engineRequest } from "../engine-client.js";
|
|
6
|
+
import { loadProjectLink } from "../link.js";
|
|
7
|
+
import { resolveTarget, targetSchemaDiff, targetSchemaRollback, targetListMigrations, schemaPgSchema, } from "../resolve-target.js";
|
|
8
|
+
import { restoreSchemaSourcesFromGz, findOrphanSchemaFiles, } from "../schema-sources.js";
|
|
5
9
|
export function registerMigrate(program) {
|
|
6
|
-
|
|
10
|
+
const migrations = program
|
|
11
|
+
.command("migrations")
|
|
12
|
+
.description("Migration history utilities");
|
|
13
|
+
migrations
|
|
14
|
+
.command("list")
|
|
15
|
+
.description("List applied migrations with schema snapshot metadata")
|
|
16
|
+
.option("--connection <url>", "Database connection URL (overrides config)")
|
|
17
|
+
.option("--env <name>", "Target environment when linked")
|
|
18
|
+
.option("--direct", "Use local engine subprocess (skip control plane)")
|
|
19
|
+
.action(async (opts) => {
|
|
20
|
+
const cwd = process.cwd();
|
|
21
|
+
const link = loadProjectLink(cwd);
|
|
22
|
+
const useDirect = opts.direct || Boolean(opts.connection);
|
|
23
|
+
let target;
|
|
24
|
+
if (link && !useDirect && !opts.connection) {
|
|
25
|
+
target = resolveTarget(cwd, { env: opts.env });
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
target = resolveTarget(cwd, {
|
|
29
|
+
env: opts.env,
|
|
30
|
+
direct: true,
|
|
31
|
+
connection: opts.connection,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const list = await targetListMigrations(target);
|
|
35
|
+
if (list.length === 0) {
|
|
36
|
+
console.log("No migrations applied.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
for (const m of list) {
|
|
40
|
+
const manifest = m.schemaSourcesManifest;
|
|
41
|
+
const size = manifest?.compressedBytes !== undefined
|
|
42
|
+
? `${(manifest.compressedBytes / 1024).toFixed(1)} KB`
|
|
43
|
+
: "—";
|
|
44
|
+
const files = manifest?.fileCount ?? "—";
|
|
45
|
+
const author = manifest?.pushedBy ?? "—";
|
|
46
|
+
const rolled = m.rolledBack ? " (rolled back)" : "";
|
|
47
|
+
console.log(`${m.name}${rolled}\n applied: ${m.appliedAt} status: ${m.status}\n author: ${author} files: ${files} snapshot: ${size}`);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
7
50
|
program
|
|
8
51
|
.command("migrate")
|
|
9
52
|
.description("Apply pending migrations from the migration history")
|
|
@@ -19,23 +62,37 @@ export function registerMigrate(program) {
|
|
|
19
62
|
});
|
|
20
63
|
console.log(result.message ?? "Migrations applied.");
|
|
21
64
|
});
|
|
22
|
-
// rollback — undo the last applied migration
|
|
23
65
|
program
|
|
24
66
|
.command("rollback")
|
|
25
67
|
.description("Roll back the last applied migration")
|
|
26
68
|
.option("--connection <url>", "Database connection URL (overrides config)")
|
|
69
|
+
.option("--env <name>", "Target environment when linked")
|
|
70
|
+
.option("--direct", "Use local engine subprocess (skip control plane)")
|
|
71
|
+
.option("--sync-schema", "Restore schema source files from DB snapshot without prompting")
|
|
72
|
+
.option("--no-sync-schema", "Revert database only; do not restore schema files")
|
|
27
73
|
.action(async (opts) => {
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
74
|
+
const cwd = process.cwd();
|
|
75
|
+
const config = loadConfig(cwd);
|
|
76
|
+
const pgSchema = schemaPgSchema(cwd);
|
|
77
|
+
const link = loadProjectLink(cwd);
|
|
78
|
+
const useDirect = opts.direct || Boolean(opts.connection);
|
|
79
|
+
let target;
|
|
80
|
+
if (link && !useDirect && !opts.connection) {
|
|
81
|
+
target = resolveTarget(cwd, { env: opts.env });
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
target = resolveTarget(cwd, {
|
|
85
|
+
env: opts.env,
|
|
86
|
+
direct: true,
|
|
87
|
+
connection: opts.connection,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const result = await targetSchemaRollback(target, { schema: pgSchema });
|
|
36
91
|
console.log(result.message ?? "Rolled back.");
|
|
92
|
+
if (!opts.noSyncSchema) {
|
|
93
|
+
await offerSchemaRestore(cwd, config, target, result, pgSchema, opts.syncSchema ?? false);
|
|
94
|
+
}
|
|
37
95
|
});
|
|
38
|
-
// reset — drop all tables and re-apply from scratch
|
|
39
96
|
program
|
|
40
97
|
.command("reset")
|
|
41
98
|
.description("Drop all managed tables and re-apply the schema from scratch (destructive)")
|
|
@@ -63,12 +120,57 @@ export function registerMigrate(program) {
|
|
|
63
120
|
console.log(result.message ?? "Reset complete.");
|
|
64
121
|
});
|
|
65
122
|
}
|
|
123
|
+
async function offerSchemaRestore(cwd, config, target, result, pgSchema, autoSync) {
|
|
124
|
+
const manifest = result.schemaSourcesManifest;
|
|
125
|
+
const gzB64 = result.schemaSourcesBase64;
|
|
126
|
+
if (!gzB64 || !manifest) {
|
|
127
|
+
console.warn("No schema source snapshot on the restored migration (legacy push). Run `supatype pull` to draft from DB if needed.");
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const ast = loadSchemaAst(schemaPathFromProject(config, cwd), cwd);
|
|
131
|
+
const diff = await targetSchemaDiff(target, ast, { schema: pgSchema });
|
|
132
|
+
const drift = (diff.operations ?? []).length > 0;
|
|
133
|
+
if (!drift && !autoSync) {
|
|
134
|
+
console.log("Schema files match reverted database (no restore needed).");
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const fileList = manifest.files.map((f) => f.path).join(", ");
|
|
138
|
+
const sizeKb = (manifest.compressedBytes / 1024).toFixed(1);
|
|
139
|
+
const label = result.restoredMigrationName ?? result.name;
|
|
140
|
+
let proceed = autoSync;
|
|
141
|
+
if (!proceed) {
|
|
142
|
+
proceed = await confirm(`\nRolled back migration ${result.name}.\nRestore ${manifest.fileCount} schema files from database snapshot (${sizeKb} KB)?\n ${fileList}\n [Y/n] `);
|
|
143
|
+
}
|
|
144
|
+
if (!proceed) {
|
|
145
|
+
console.log("Skipped schema file restore. Run `supatype diff` to review drift.");
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const root = projectRootFromConfig(config, cwd);
|
|
149
|
+
const backupDir = join(cwd, ".supatype", "schema-backups", `${Date.now()}`);
|
|
150
|
+
const gz = Buffer.from(gzB64, "base64");
|
|
151
|
+
restoreSchemaSourcesFromGz(gz, manifest, root, { backupDir });
|
|
152
|
+
const manifestPaths = new Set(manifest.files.map((f) => f.path));
|
|
153
|
+
const orphans = findOrphanSchemaFiles(root, manifest.entryPoint, manifestPaths);
|
|
154
|
+
for (const orphan of orphans) {
|
|
155
|
+
console.warn(`Warning: ${orphan} not in snapshot — review manually`);
|
|
156
|
+
}
|
|
157
|
+
console.log(`Restored schema files from migration ${label}.`);
|
|
158
|
+
console.log(`Backup saved to ${backupDir}`);
|
|
159
|
+
const postDiff = await targetSchemaDiff(target, ast, { schema: pgSchema });
|
|
160
|
+
if ((postDiff.operations ?? []).length === 0) {
|
|
161
|
+
console.log("Schema matches database after restore.");
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
console.log("Run `supatype diff` — schema may still differ from database.");
|
|
165
|
+
}
|
|
166
|
+
}
|
|
66
167
|
async function confirm(prompt) {
|
|
67
168
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
68
|
-
return new Promise((
|
|
169
|
+
return new Promise((resolveConfirm) => {
|
|
69
170
|
rl.question(prompt, (answer) => {
|
|
70
171
|
rl.close();
|
|
71
|
-
|
|
172
|
+
const trimmed = answer.trim().toLowerCase();
|
|
173
|
+
resolveConfirm(trimmed === "" || trimmed === "y" || trimmed === "yes");
|
|
72
174
|
});
|
|
73
175
|
});
|
|
74
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoCnD"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -1,12 +1,39 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { writeFileSync } from "node:fs";
|
|
2
|
+
import { loadConfig } from "../config.js";
|
|
3
|
+
import { schemaPathFromProject } from "../project-config.js";
|
|
4
|
+
import { ensureEngine, engineRequest } from "../engine-client.js";
|
|
5
|
+
import { resolveHostEngineDatabaseUrl } from "../dev-compose.js";
|
|
6
|
+
import { databaseStateToSchemaScaffold } from "../pull-utils.js";
|
|
2
7
|
export function registerPull(program) {
|
|
3
8
|
program
|
|
4
9
|
.command("pull")
|
|
5
|
-
.description("
|
|
6
|
-
.
|
|
10
|
+
.description("Scaffold schema/index.ts from live database introspection (draft — review before push)")
|
|
11
|
+
.option("--connection <url>", "Database connection URL (overrides config)")
|
|
12
|
+
.option("--out <path>", "Write scaffold to file (default: stdout)")
|
|
13
|
+
.option("--dry-run", "Print scaffold to stdout without writing files")
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
const cwd = process.cwd();
|
|
16
|
+
const config = loadConfig(cwd);
|
|
17
|
+
const connection = await resolveHostEngineDatabaseUrl(cwd, config, opts.connection);
|
|
18
|
+
const pgSchema = config.schema?.pg_schema ?? "public";
|
|
7
19
|
await ensureEngine();
|
|
8
|
-
|
|
9
|
-
|
|
20
|
+
console.error("Introspecting database...");
|
|
21
|
+
const state = await engineRequest("/introspect", {
|
|
22
|
+
database_url: connection,
|
|
23
|
+
schema: pgSchema,
|
|
24
|
+
});
|
|
25
|
+
const scaffold = databaseStateToSchemaScaffold(state);
|
|
26
|
+
const defaultOut = schemaPathFromProject(config, cwd);
|
|
27
|
+
if (opts.dryRun || !opts.out) {
|
|
28
|
+
console.log(scaffold);
|
|
29
|
+
if (!opts.dryRun && !opts.out) {
|
|
30
|
+
console.error("\n(draft printed to stdout — use --out to write a file)");
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
writeFileSync(opts.out ?? defaultOut, scaffold, "utf8");
|
|
35
|
+
console.log(`Wrote draft schema to ${opts.out ?? defaultOut}`);
|
|
36
|
+
console.log("Review access rules and relations, then run `supatype generate`.");
|
|
10
37
|
});
|
|
11
38
|
}
|
|
12
39
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,6BAA6B,EAA0B,MAAM,kBAAkB,CAAA;AAExF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wFAAwF,CAAC;SACrG,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;SAC1E,MAAM,CAAC,cAAc,EAAE,0CAA0C,CAAC;SAClE,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,IAA6D,EAAE,EAAE;QAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,QAAQ,CAAA;QAErD,MAAM,YAAY,EAAE,CAAA;QAEpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAoB,aAAa,EAAE;YAClE,YAAY,EAAE,UAAU;YACxB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAErD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;YAC1E,CAAC;YACD,OAAM;QACR,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+BxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkDnD"}
|
package/dist/commands/push.js
CHANGED
|
@@ -2,15 +2,17 @@ import { mkdirSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { createInterface } from "node:readline";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { loadConfig, loadSchemaAst } from "../config.js";
|
|
5
|
-
import {
|
|
6
|
-
import { isCloudLinked, pushSchemaToLinkedProject } from "./cloud.js";
|
|
5
|
+
import { resolveRuntimeProvider, schemaPathFromProject, serverBaseUrl } from "../project-config.js";
|
|
7
6
|
import { ensureEngine, engineRequest } from "../engine-client.js";
|
|
8
|
-
import { printDiffWarnings } from "../diff-output.js";
|
|
7
|
+
import { printDiffOperations, printDiffWarnings } from "../diff-output.js";
|
|
9
8
|
import { signJwt } from "../jwt.js";
|
|
10
|
-
import {
|
|
9
|
+
import { provisionBucketsFromAst } from "../storage-provision.js";
|
|
11
10
|
import { promptFirstAdminUser } from "./admin.js";
|
|
12
11
|
import { withAdminRoles } from "../studio-admin-roles.js";
|
|
13
12
|
import { restoreSystemRelationTargets } from "../restore-system-relation-targets.js";
|
|
13
|
+
import { resolveTarget, targetSchemaDiff, targetSchemaPush, schemaPgSchema, } from "../resolve-target.js";
|
|
14
|
+
import { loadProjectLink } from "../link.js";
|
|
15
|
+
import { buildSchemaSourcesPayload, cacheSchemaSourcesLocally, resolvePushedBy, } from "../schema-sources.js";
|
|
14
16
|
const DEV_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
15
17
|
export function registerPush(program) {
|
|
16
18
|
program
|
|
@@ -18,160 +20,131 @@ export function registerPush(program) {
|
|
|
18
20
|
.description("Push schema to the database: diff, prompt for destructive changes, apply migration, generate types")
|
|
19
21
|
.option("--yes", "Skip confirmation prompts for destructive changes")
|
|
20
22
|
.option("--connection <url>", "Database connection URL (overrides config)")
|
|
23
|
+
.option("--env <name>", "Target environment when linked")
|
|
24
|
+
.option("--direct", "Use local engine subprocess (skip control plane)")
|
|
25
|
+
.option("--local", "Alias for --direct")
|
|
21
26
|
.action(async (opts) => {
|
|
22
27
|
const cwd = process.cwd();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
const config = loadConfig(cwd);
|
|
29
|
+
const pgSchema = schemaPgSchema(cwd);
|
|
30
|
+
const ast = loadSchemaAst(schemaPathFromProject(config, cwd), cwd);
|
|
31
|
+
const linked = loadProjectLink(cwd);
|
|
32
|
+
const useDirect = opts.direct || opts.local || Boolean(opts.connection);
|
|
33
|
+
if (linked && !useDirect && !opts.connection) {
|
|
34
|
+
const target = resolveTarget(cwd, { env: opts.env });
|
|
35
|
+
await pushViaTarget(cwd, config, target, ast, pgSchema, opts.yes ?? false);
|
|
29
36
|
return;
|
|
30
37
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
if (!opts.connection && !useDirect && resolveRuntimeProvider(config) === "docker") {
|
|
39
|
+
const localTarget = resolveTarget(cwd, { env: opts.env });
|
|
40
|
+
if (localTarget.mode === "local" && localTarget.token) {
|
|
41
|
+
await pushViaTarget(cwd, config, localTarget, ast, pgSchema, opts.yes ?? false);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
36
44
|
const { pushSchemaDocker } = await import("../dev-compose.js");
|
|
37
45
|
await pushSchemaDocker(cwd, config);
|
|
38
46
|
return;
|
|
39
47
|
}
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
console.log("Diffing against database...");
|
|
45
|
-
const diff = await engineRequest("/diff", {
|
|
46
|
-
ast,
|
|
47
|
-
database_url: connection,
|
|
48
|
-
schema: "public",
|
|
48
|
+
const target = resolveTarget(cwd, {
|
|
49
|
+
env: opts.env,
|
|
50
|
+
direct: true,
|
|
51
|
+
connection: opts.connection,
|
|
49
52
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
await pushViaTarget(cwd, config, target, ast, pgSchema, opts.yes ?? false);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
async function pushViaTarget(cwd, config, target, ast, pgSchema, skipConfirm) {
|
|
57
|
+
console.log("Diffing against database...");
|
|
58
|
+
const diff = await targetSchemaDiff(target, ast, { schema: pgSchema });
|
|
59
|
+
const ops = diff.operations ?? [];
|
|
60
|
+
printDiffWarnings(diff);
|
|
61
|
+
if (ops.length === 0) {
|
|
62
|
+
console.log("Schema matches the database (no DDL). Syncing Studio metadata...");
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
printDiffOperations({ operations: ops });
|
|
66
|
+
const risky = ops.filter((o) => o.risk === "cautious" || o.risk === "destructive" || o.risk === "warn" || o.risk === "danger");
|
|
67
|
+
if (risky.length > 0 && !skipConfirm) {
|
|
68
|
+
const confirmed = await confirm(`\n${risky.length} risky operation(s) above. Proceed? [y/N] `);
|
|
69
|
+
if (!confirmed) {
|
|
70
|
+
console.log("Aborted.");
|
|
71
|
+
return;
|
|
64
72
|
}
|
|
65
73
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
}
|
|
75
|
+
console.log(ops.length > 0 ? "\nApplying migration..." : "\nSyncing with engine...");
|
|
76
|
+
const schemaSources = buildSchemaSourcesPayload(cwd, resolvePushedBy());
|
|
77
|
+
const pushResult = await targetSchemaPush(target, ast, {
|
|
78
|
+
force: true,
|
|
79
|
+
schema: pgSchema,
|
|
80
|
+
schemaSources,
|
|
81
|
+
});
|
|
82
|
+
if (pushResult.status === "up_to_date") {
|
|
83
|
+
console.log("Schema is up to date.");
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(pushResult.message ?? "Migration applied.");
|
|
87
|
+
const migrationName = pushResult.name;
|
|
88
|
+
if (migrationName && schemaSources) {
|
|
89
|
+
cacheSchemaSourcesLocally(cwd, migrationName, schemaSources.gz);
|
|
80
90
|
}
|
|
91
|
+
}
|
|
92
|
+
if (target.mode === "direct" || target.mode === "local") {
|
|
81
93
|
await writeLocalAdminConfig(ast, config);
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (ops.length > 0) {
|
|
85
|
-
await promptFirstAdminUser(connection);
|
|
86
|
-
}
|
|
87
|
-
// Provision storage buckets declared in the schema.
|
|
88
|
-
const baseUrl = serverBaseUrl(config);
|
|
89
|
-
const serviceRoleKey = process.env["SUPATYPE_SERVICE_ROLE_KEY"] ??
|
|
90
|
-
(config.server.mode === "dev"
|
|
91
|
-
? signJwt({ role: "service_role", iss: "supatype", iat: Math.floor(Date.now() / 1000) }, DEV_JWT_SECRET)
|
|
92
|
-
: undefined);
|
|
93
|
-
if (baseUrl && serviceRoleKey) {
|
|
94
|
-
const parsedAst = await engineRequest("/parse", { ast });
|
|
95
|
-
const buckets = (parsedAst.storageBuckets ?? []).map((b) => ({
|
|
96
|
-
id: b.id,
|
|
97
|
-
public: b.public,
|
|
98
|
-
...(b.accessMode !== undefined && { access_mode: b.accessMode }),
|
|
99
|
-
...(b.allowedMimeTypes != null && { allowed_mime_types: b.allowedMimeTypes }),
|
|
100
|
-
...(b.fileSizeLimit != null && { file_size_limit: b.fileSizeLimit }),
|
|
101
|
-
...(b.s3BucketPolicy != null &&
|
|
102
|
-
b.s3BucketPolicy !== "" && { s3_bucket_policy: b.s3BucketPolicy }),
|
|
103
|
-
}));
|
|
104
|
-
if (buckets.length > 0) {
|
|
105
|
-
console.log("Provisioning storage buckets...");
|
|
106
|
-
await provisionBuckets(`${baseUrl}/storage/v1`, serviceRoleKey, buckets);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
if (config.output?.types ?? config.output?.client) {
|
|
110
|
-
console.log("Generating types...");
|
|
111
|
-
const genBody = { ast, lang: "typescript" };
|
|
112
|
-
if (config.output?.types)
|
|
113
|
-
genBody["types_path"] = config.output.types;
|
|
114
|
-
if (config.output?.client)
|
|
115
|
-
genBody["client_path"] = config.output.client;
|
|
116
|
-
const genResult = await engineRequest("/generate", genBody);
|
|
117
|
-
console.log(genResult.message ?? "Types generated.");
|
|
118
|
-
}
|
|
119
|
-
const studioBase = baseUrl?.replace(/\/$/, "") ?? "";
|
|
120
|
-
if (studioBase) {
|
|
121
|
-
console.log(`\nStudio: ${studioBase}/studio/ — sign in with the admin user you created.`);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
console.log("\nDone.");
|
|
94
|
+
if (ops.length > 0 && target.databaseUrl) {
|
|
95
|
+
await promptFirstAdminUser(target.databaseUrl);
|
|
125
96
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
function printDiff(ops) {
|
|
129
|
-
const symbol = {
|
|
130
|
-
safe: "+",
|
|
131
|
-
warn: "~",
|
|
132
|
-
cautious: "~",
|
|
133
|
-
danger: "!",
|
|
134
|
-
destructive: "!",
|
|
135
|
-
};
|
|
136
|
-
console.log(`\n${ops.length} change(s) planned:\n`);
|
|
137
|
-
for (const op of ops) {
|
|
138
|
-
const riskKey = op.risk ?? "safe";
|
|
139
|
-
const s = symbol[riskKey] ?? "?";
|
|
140
|
-
const label = op.warning ?? op.description ?? formatOperation(op);
|
|
141
|
-
console.log(` [${s}] ${label}`);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
function formatOperation(op) {
|
|
145
|
-
if (typeof op.description === "string" && op.description.trim().length > 0) {
|
|
146
|
-
return op.description;
|
|
97
|
+
await generateTypesLocal(ast, config);
|
|
98
|
+
await provisionLocalStorage(ast, config);
|
|
147
99
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const table = raw["table"];
|
|
151
|
-
const column = raw["column"];
|
|
152
|
-
if (typeof table === "string" && typeof column === "string") {
|
|
153
|
-
return `${kind} ${table}.${column}`;
|
|
100
|
+
else {
|
|
101
|
+
console.log(`Pushed to ${target.mode} (${target.environment}).`);
|
|
154
102
|
}
|
|
155
|
-
|
|
156
|
-
|
|
103
|
+
const baseUrl = (serverBaseUrl(config) ?? "").replace(/\/$/, "");
|
|
104
|
+
if (baseUrl) {
|
|
105
|
+
console.log(`\nStudio: ${baseUrl}/studio/`);
|
|
157
106
|
}
|
|
158
|
-
|
|
159
|
-
|
|
107
|
+
}
|
|
108
|
+
async function generateTypesLocal(ast, config) {
|
|
109
|
+
if (!config.output?.types && !config.output?.client)
|
|
110
|
+
return;
|
|
111
|
+
console.log("Generating types...");
|
|
112
|
+
await ensureEngine();
|
|
113
|
+
const genBody = { ast, lang: "typescript" };
|
|
114
|
+
if (config.output?.types)
|
|
115
|
+
genBody["types_path"] = config.output.types;
|
|
116
|
+
if (config.output?.client)
|
|
117
|
+
genBody["client_path"] = config.output.client;
|
|
118
|
+
const genResult = await engineRequest("/generate", genBody);
|
|
119
|
+
console.log(genResult.message ?? "Types generated.");
|
|
120
|
+
}
|
|
121
|
+
async function provisionLocalStorage(ast, config) {
|
|
122
|
+
const baseUrl = serverBaseUrl(config);
|
|
123
|
+
const serviceRoleKey = process.env["SUPATYPE_SERVICE_ROLE_KEY"] ??
|
|
124
|
+
process.env["SERVICE_ROLE_KEY"] ??
|
|
125
|
+
(config.server.mode === "dev"
|
|
126
|
+
? signJwt({ role: "service_role", iss: "supatype", iat: Math.floor(Date.now() / 1000) }, DEV_JWT_SECRET)
|
|
127
|
+
: undefined);
|
|
128
|
+
if (!baseUrl || !serviceRoleKey)
|
|
129
|
+
return;
|
|
130
|
+
await ensureEngine();
|
|
131
|
+
const parsedAst = await engineRequest("/parse", { ast });
|
|
132
|
+
await provisionBucketsFromAst(parsedAst, `${baseUrl}/storage/v1`, serviceRoleKey);
|
|
160
133
|
}
|
|
161
134
|
async function confirm(prompt) {
|
|
162
135
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
163
|
-
return new Promise((
|
|
136
|
+
return new Promise((resolveConfirm) => {
|
|
164
137
|
rl.question(prompt, (answer) => {
|
|
165
138
|
rl.close();
|
|
166
|
-
|
|
139
|
+
resolveConfirm(answer.toLowerCase() === "y");
|
|
167
140
|
});
|
|
168
141
|
});
|
|
169
142
|
}
|
|
170
|
-
/** Write `.supatype/admin-config.json` for local Studio (same layout as `supatype dev`). */
|
|
171
143
|
async function writeLocalAdminConfig(ast, config) {
|
|
172
144
|
const cwd = process.cwd();
|
|
173
145
|
const dir = join(cwd, ".supatype");
|
|
174
146
|
mkdirSync(dir, { recursive: true });
|
|
147
|
+
await ensureEngine();
|
|
175
148
|
const admin = withAdminRoles(await engineRequest("/admin", { ast }), config);
|
|
176
149
|
restoreSystemRelationTargets(admin, ast);
|
|
177
150
|
writeFileSync(join(dir, "admin-config.json"), `${JSON.stringify(admin, null, 2)}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0BrD"}
|