@supatype/cli 0.1.0-alpha.10 → 0.1.0-alpha.11
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 +104 -71
- 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/status.js
CHANGED
|
@@ -1,40 +1,104 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { resolve } from "node:path";
|
|
2
4
|
import { LOCAL_KONG_HOST_PORT, localKongBaseUrl } from "../local-gateway.js";
|
|
5
|
+
import { loadLocalEnvironment, loadProjectLink } from "../link.js";
|
|
6
|
+
import { resolveTarget, targetStatus } from "../resolve-target.js";
|
|
3
7
|
export function registerStatus(program) {
|
|
4
8
|
program
|
|
5
9
|
.command("status")
|
|
6
|
-
.description("Show
|
|
7
|
-
.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const status = svc.status.padEnd(8);
|
|
26
|
-
const port = svc.port ? `:${svc.port}` : "";
|
|
27
|
-
const uptime = svc.uptime ? ` (${svc.uptime})` : "";
|
|
28
|
-
console.log(` ${icon} ${svc.name.padEnd(maxName)} ${status} ${port}${uptime}`);
|
|
10
|
+
.description("Show linked target status or local dev services")
|
|
11
|
+
.option("--env <name>", "Target environment when linked")
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
const link = loadProjectLink(cwd);
|
|
15
|
+
const localEnv = loadLocalEnvironment(cwd);
|
|
16
|
+
if (link || localEnv) {
|
|
17
|
+
try {
|
|
18
|
+
const target = resolveTarget(cwd, { env: opts.env });
|
|
19
|
+
if (target.mode !== "direct") {
|
|
20
|
+
await printLinkedStatus(target);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error(err.message);
|
|
26
|
+
process.exitCode = 1;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
printLocalStackStatus(cwd);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async function printLinkedStatus(target) {
|
|
34
|
+
console.log(`Target: ${target.mode} (${target.environment})`);
|
|
35
|
+
console.log(`Project: ${target.projectRef}`);
|
|
36
|
+
console.log(`API: ${target.apiBaseUrl}${target.apiPrefix}\n`);
|
|
37
|
+
try {
|
|
38
|
+
const data = (await targetStatus(target));
|
|
39
|
+
if (data.functions && Array.isArray(data.functions)) {
|
|
40
|
+
console.log(`Functions (${data.functions.length}):`);
|
|
41
|
+
for (const fn of data.functions) {
|
|
42
|
+
const name = typeof fn === "string" ? fn : fn.name;
|
|
43
|
+
if (name)
|
|
44
|
+
console.log(` • ${name}`);
|
|
45
|
+
}
|
|
46
|
+
console.log();
|
|
47
|
+
}
|
|
48
|
+
if (data.deploymentId) {
|
|
49
|
+
console.log(`Active deployment: ${data.deploymentId}`);
|
|
50
|
+
}
|
|
51
|
+
if (data.controlPlane) {
|
|
52
|
+
console.log(`Control plane: ${data.controlPlane}`);
|
|
36
53
|
}
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.warn(`Could not fetch remote status: ${err.message}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function printLocalStackStatus(cwd) {
|
|
60
|
+
const localEnv = loadLocalEnvironment(cwd);
|
|
61
|
+
const kongPort = localEnv?.kongPort ?? LOCAL_KONG_HOST_PORT;
|
|
62
|
+
const services = [
|
|
63
|
+
{ name: "Postgres", container: "supatype-postgres", port: 5432 },
|
|
64
|
+
{ name: "PostgREST", container: "supatype-postgrest", port: 3000 },
|
|
65
|
+
{ name: "GoTrue", container: "supatype-gotrue", port: 9999 },
|
|
66
|
+
{ name: "Kong", container: "supatype-kong", port: kongPort },
|
|
67
|
+
{ name: "Control plane", container: "supatype-control-plane" },
|
|
68
|
+
{ name: "MinIO", container: "supatype-minio", port: 9000 },
|
|
69
|
+
{ name: "Realtime", container: "supatype-realtime", port: 4000 },
|
|
70
|
+
{ name: "Studio", container: "supatype-studio", port: 3100 },
|
|
71
|
+
].map((svc) => {
|
|
72
|
+
const status = getContainerStatus(svc.container);
|
|
73
|
+
const uptime = getContainerUptime(svc.container);
|
|
74
|
+
return { ...svc, status, ...(uptime !== undefined && { uptime }) };
|
|
37
75
|
});
|
|
76
|
+
console.log("Supatype Local Development Stack\n");
|
|
77
|
+
const maxName = Math.max(...services.map((s) => s.name.length));
|
|
78
|
+
for (const svc of services) {
|
|
79
|
+
const icon = svc.status === "running" ? "●" : svc.status === "stopped" ? "○" : "✕";
|
|
80
|
+
const status = svc.status.padEnd(8);
|
|
81
|
+
const port = svc.port ? `:${svc.port}` : "";
|
|
82
|
+
const uptime = svc.uptime ? ` (${svc.uptime})` : "";
|
|
83
|
+
console.log(` ${icon} ${svc.name.padEnd(maxName)} ${status} ${port}${uptime}`);
|
|
84
|
+
}
|
|
85
|
+
const running = services.filter((s) => s.status === "running");
|
|
86
|
+
console.log(`\n${running.length}/${services.length} services running`);
|
|
87
|
+
if (running.length > 0) {
|
|
88
|
+
const apiUrl = localEnv?.apiUrl ?? localKongBaseUrl();
|
|
89
|
+
console.log(`\nAPI URL: ${apiUrl}`);
|
|
90
|
+
console.log(`Studio: http://localhost:3100`);
|
|
91
|
+
if (localEnv?.databaseUrl) {
|
|
92
|
+
console.log(`Database: ${localEnv.databaseUrl}`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(`Database: postgresql://supatype_admin:postgres@localhost:5432/postgres`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (existsSync(resolve(cwd, ".supatype/environment.json"))) {
|
|
99
|
+
console.log("\nLocal environment file: .supatype/environment.json");
|
|
100
|
+
console.log("Link remote ops: supatype link --url <api> --token $SERVICE_ROLE_KEY");
|
|
101
|
+
}
|
|
38
102
|
}
|
|
39
103
|
function getContainerStatus(name) {
|
|
40
104
|
const result = spawnSync("docker", ["inspect", "--format", "{{.State.Status}}", name], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmBxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmBxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmHrD"}
|
package/dist/commands/update.js
CHANGED
|
@@ -6,7 +6,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
6
6
|
import { basename, resolve } from "node:path";
|
|
7
7
|
import { loadConfig } from "../config.js";
|
|
8
8
|
import { resolveRuntimeProvider } from "../project-config.js";
|
|
9
|
-
import { runDockerCompose, writeSelfHostCompose } from "../self-host-compose.js";
|
|
9
|
+
import { runDockerCompose, writeSelfHostCompose, composePullNeedsIgnoreFailures } from "../self-host-compose.js";
|
|
10
10
|
import { syncComposeImagePins } from "../dev-compose.js";
|
|
11
11
|
import { download, currentPlatform, fetchAllLatestVersions, pinnedVersion } from "../binary-cache.js";
|
|
12
12
|
const CONFIG_CANDIDATES = ["supatype.config.ts", "supatype.config.js", "supatype.config.mjs"];
|
|
@@ -35,7 +35,11 @@ export function registerUpdate(program) {
|
|
|
35
35
|
const paths = writeSelfHostCompose(cwd, config, { devLocal: true });
|
|
36
36
|
syncComposeImagePins(cwd, config);
|
|
37
37
|
console.log("Pulling self-host compose images...");
|
|
38
|
-
const
|
|
38
|
+
const pullArgs = ["pull"];
|
|
39
|
+
if (composePullNeedsIgnoreFailures(config, cwd)) {
|
|
40
|
+
pullArgs.push("--ignore-pull-failures");
|
|
41
|
+
}
|
|
42
|
+
const status = runDockerCompose(paths.composePath, pullArgs, cwd);
|
|
39
43
|
if (status !== 0)
|
|
40
44
|
process.exit(status);
|
|
41
45
|
console.log("Compose images updated.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SupatypeProjectConfig } from "./project-config.js";
|
|
2
|
+
import type { ExtractedSchemaAstV2 } from "./schema-ast-v2.js";
|
|
2
3
|
export type { SupatypeProjectConfig } from "./project-config.js";
|
|
3
4
|
/** Canonical project configuration shape (alias for clarity at call sites). */
|
|
4
5
|
export type SupatypeConfig = SupatypeProjectConfig;
|
|
@@ -61,5 +62,5 @@ export declare function defineConfig(config: SupatypeProjectConfig): SupatypePro
|
|
|
61
62
|
*/
|
|
62
63
|
export declare function loadConfig(cwd?: string): SupatypeProjectConfig;
|
|
63
64
|
/** Load schema AST by evaluating the user's schema entry point via tsx. */
|
|
64
|
-
export declare function loadSchemaAst(schemaPath: string, cwd?: string):
|
|
65
|
+
export declare function loadSchemaAst(schemaPath: string, cwd?: string): ExtractedSchemaAstV2;
|
|
65
66
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,+EAA+E;AAC/E,MAAM,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAElD,MAAM,WAAW,iBAAiB;IAChC,iHAAiH;IACjH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,GAAG,CAAC,EAAE;QACJ,kEAAkE;QAClE,UAAU,EAAE,MAAM,CAAA;QAClB,+BAA+B;QAC/B,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,GAAG,CAAC,EAAE;QACJ,gFAAgF;QAChF,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;QAC1B,+EAA+E;QAC/E,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,iBAAiB,CAAA;QACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;QAC1B,SAAS,CAAC,EAAE,iBAAiB,CAAA;QAC7B,IAAI,CAAC,EAAE,iBAAiB,CAAA;QACxB,KAAK,CAAC,EAAE,iBAAiB,CAAA;QACzB,SAAS,CAAC,EAAE,iBAAiB,CAAA;KAC9B,CAAA;CACF;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEtG,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,SAAS,CAAC,EAAE,YAAY,CAAA;IACxB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0FAA0F;IAC1F,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,CAEjF;AAiCD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,qBAAqB,CAyB7E;AAmED,2EAA2E;AAC3E,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAsB,GAC1B,oBAAoB,CActB"}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/dev-compose.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* `supatype dev` when `provider: docker` — full self-host Compose stack (Kong gateway).
|
|
3
3
|
*/
|
|
4
4
|
import { type SupatypeProjectConfig } from "./project-config.js";
|
|
5
|
+
import { type DiffResult } from "./engine-client.js";
|
|
5
6
|
/** Sync optional Docker image pins from config into `.env` (no JWT rotation). */
|
|
6
7
|
export declare function syncComposeImagePins(cwd: string, config: SupatypeProjectConfig): void;
|
|
7
8
|
export interface DevComposeOptions {
|
|
@@ -9,6 +10,28 @@ export interface DevComposeOptions {
|
|
|
9
10
|
}
|
|
10
11
|
/** In-compose Postgres URL (SCRAM; not published to the host). */
|
|
11
12
|
export declare function composeDbUrl(): string;
|
|
13
|
+
/**
|
|
14
|
+
* When `provider: docker` and `overrides.engine` is set, ensure Postgres is published
|
|
15
|
+
* on the host (SUPATYPE_DEV_DB_PORT) so the local engine binary can connect.
|
|
16
|
+
*/
|
|
17
|
+
export declare function ensureDockerDbPublishedForHostEngine(cwd: string, config: SupatypeProjectConfig): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* True when CLI should publish local Compose Postgres for the host-side engine
|
|
20
|
+
* (local dev with overrides.engine). False for remote DB URLs via config or --connection.
|
|
21
|
+
*/
|
|
22
|
+
export declare function usesLocalDockerEngineDb(config: SupatypeProjectConfig, explicitConnection?: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve a Postgres URL reachable from the host-side engine binary.
|
|
25
|
+
* Local docker + overrides.engine → SUPATYPE_DEV_DB_PORT on localhost.
|
|
26
|
+
* Remote self-host → set `connection` in config or pass `--connection`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveHostEngineDatabaseUrl(cwd: string, config: SupatypeProjectConfig, explicit?: string): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* `supatype diff` when `provider: docker`. Uses in-compose schema-engine unless
|
|
31
|
+
* `overrides.engine` is set — then Postgres is published to the host and diff runs
|
|
32
|
+
* through the local engine binary.
|
|
33
|
+
*/
|
|
34
|
+
export declare function diffSchemaDocker(cwd: string, config: SupatypeProjectConfig): Promise<DiffResult>;
|
|
12
35
|
/**
|
|
13
36
|
* `supatype push` when `provider: docker`. Uses in-compose schema-engine unless
|
|
14
37
|
* `overrides.engine` is set — then Postgres is published to the host and push runs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-compose.d.ts","sourceRoot":"","sources":["../src/dev-compose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,
|
|
1
|
+
{"version":3,"file":"dev-compose.d.ts","sourceRoot":"","sources":["../src/dev-compose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAc5B,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAqBjF,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAIrF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;CACf;AAED,kEAAkE;AAClE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAoCD;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,qBAAqB,EAC7B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAIT;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAgYD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsDtG;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhG;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqItH"}
|
package/dist/dev-compose.js
CHANGED
|
@@ -7,18 +7,21 @@ import { dirname, join, resolve } from "node:path";
|
|
|
7
7
|
import { spawnSync } from "node:child_process";
|
|
8
8
|
import { startProxyDevApp } from "./app/proxy-dev-app.js";
|
|
9
9
|
import { loadSchemaAst } from "./config.js";
|
|
10
|
-
import { COMPOSE_DEV_KONG_PORT, projectRootFromConfig, resolveRuntimeProvider, schemaPathFromProject, } from "./project-config.js";
|
|
10
|
+
import { COMPOSE_DEV_KONG_PORT, connectionString, projectRootFromConfig, resolveRuntimeProvider, schemaPathFromProject, } from "./project-config.js";
|
|
11
11
|
import { signJwt } from "./jwt.js";
|
|
12
12
|
import { isPortInUse } from "./postgres-ctl.js";
|
|
13
13
|
import { COMPOSE_PINNED_IMAGE_ENV_KEYS, composeDockerImageEnv, composeProjectName, runDockerCompose, schemaEngineImageForPush, writeSelfHostCompose, } from "./self-host-compose.js";
|
|
14
14
|
import { hasEngineOverride } from "./binary-cache.js";
|
|
15
15
|
import { startStudioViteDevServer } from "./studio-dev-server.js";
|
|
16
16
|
import { ensureEngine, engineRequest } from "./engine-client.js";
|
|
17
|
+
import { writeSchemaSourcePushArtifacts } from "./schema-sources.js";
|
|
17
18
|
import { endDevSession } from "./dev-session.js";
|
|
19
|
+
import { writeLocalEnvironment } from "./link.js";
|
|
18
20
|
import { registerDevShutdown } from "./dev-shutdown.js";
|
|
19
|
-
import { filterComposeNoise, formatEnginePushMessage, parseEnginePushOutput, } from "./engine-push-output.js";
|
|
21
|
+
import { filterComposeNoise, formatEnginePushMessage, parseEngineJsonOutput, parseEnginePushOutput, } from "./engine-push-output.js";
|
|
20
22
|
import { withAdminRoles } from "./studio-admin-roles.js";
|
|
21
23
|
import { restoreSystemRelationTargets } from "./restore-system-relation-targets.js";
|
|
24
|
+
import { provisionBucketsFromAst } from "./storage-provision.js";
|
|
22
25
|
const LOCAL_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
23
26
|
/** Default host port for compose Postgres when `overrides.engine` is set (devLocal). */
|
|
24
27
|
const COMPOSE_DEV_DB_PORT = 54329;
|
|
@@ -66,6 +69,59 @@ function hostComposeDbUrl(cwd) {
|
|
|
66
69
|
const db = readEnvValue(cwd, "POSTGRES_DB", "supatype");
|
|
67
70
|
return `postgresql://${user}:${pass}@127.0.0.1:${port}/${db}?sslmode=disable`;
|
|
68
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* When `provider: docker` and `overrides.engine` is set, ensure Postgres is published
|
|
74
|
+
* on the host (SUPATYPE_DEV_DB_PORT) so the local engine binary can connect.
|
|
75
|
+
*/
|
|
76
|
+
export async function ensureDockerDbPublishedForHostEngine(cwd, config) {
|
|
77
|
+
if (resolveRuntimeProvider(config) !== "docker") {
|
|
78
|
+
throw new Error("ensureDockerDbPublishedForHostEngine requires provider: docker");
|
|
79
|
+
}
|
|
80
|
+
if (!hasEngineOverride(config)) {
|
|
81
|
+
throw new Error("Docker Postgres is not published to the host without overrides.engine. " +
|
|
82
|
+
"Set overrides.engine in supatype.local.config.ts or pass --connection.");
|
|
83
|
+
}
|
|
84
|
+
const project = composeProjectName(config.project.name);
|
|
85
|
+
const kongPort = await resolveKongPort(cwd);
|
|
86
|
+
const devDbPort = await resolveDevDbPort(cwd);
|
|
87
|
+
const now = Math.floor(Date.now() / 1000);
|
|
88
|
+
const jwtBase = { iss: "supatype", iat: now, exp: now + 315_360_000 };
|
|
89
|
+
const anonKey = signJwt({ ...jwtBase, role: "anon" }, LOCAL_JWT_SECRET);
|
|
90
|
+
const serviceRoleKey = signJwt({ ...jwtBase, role: "service_role" }, LOCAL_JWT_SECRET);
|
|
91
|
+
ensureDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort);
|
|
92
|
+
const paths = writeSelfHostCompose(cwd, config, { devLocal: true });
|
|
93
|
+
const up = runDockerCompose(paths.composePath, ["up", "-d", "db"], cwd, project, { quiet: true });
|
|
94
|
+
if (up !== 0)
|
|
95
|
+
process.exit(up);
|
|
96
|
+
await waitComposeHealthy(paths, cwd, 120_000, project);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* True when CLI should publish local Compose Postgres for the host-side engine
|
|
100
|
+
* (local dev with overrides.engine). False for remote DB URLs via config or --connection.
|
|
101
|
+
*/
|
|
102
|
+
export function usesLocalDockerEngineDb(config, explicitConnection) {
|
|
103
|
+
if (explicitConnection?.trim())
|
|
104
|
+
return false;
|
|
105
|
+
if (config.connection?.trim())
|
|
106
|
+
return false;
|
|
107
|
+
return resolveRuntimeProvider(config) === "docker" && hasEngineOverride(config);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Resolve a Postgres URL reachable from the host-side engine binary.
|
|
111
|
+
* Local docker + overrides.engine → SUPATYPE_DEV_DB_PORT on localhost.
|
|
112
|
+
* Remote self-host → set `connection` in config or pass `--connection`.
|
|
113
|
+
*/
|
|
114
|
+
export async function resolveHostEngineDatabaseUrl(cwd, config, explicit) {
|
|
115
|
+
if (explicit?.trim())
|
|
116
|
+
return explicit;
|
|
117
|
+
if (config.connection?.trim())
|
|
118
|
+
return config.connection;
|
|
119
|
+
if (usesLocalDockerEngineDb(config)) {
|
|
120
|
+
await ensureDockerDbPublishedForHostEngine(cwd, config);
|
|
121
|
+
return hostComposeDbUrl(cwd);
|
|
122
|
+
}
|
|
123
|
+
return connectionString(config);
|
|
124
|
+
}
|
|
69
125
|
async function resolveKongPort(cwd) {
|
|
70
126
|
const envPath = join(cwd, ".env");
|
|
71
127
|
if (existsSync(envPath)) {
|
|
@@ -112,6 +168,8 @@ function ensureDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, dev
|
|
|
112
168
|
};
|
|
113
169
|
if (devDbPort !== undefined) {
|
|
114
170
|
updates.SUPATYPE_DEV_DB_PORT = String(devDbPort);
|
|
171
|
+
updates.DATABASE_URL =
|
|
172
|
+
`postgresql://supatype_admin:postgres@localhost:${devDbPort}/supatype?sslmode=disable`;
|
|
115
173
|
}
|
|
116
174
|
const removeImageKeys = COMPOSE_PINNED_IMAGE_ENV_KEYS.filter((key) => !(key in imagePins));
|
|
117
175
|
upsertEnvFile(cwd, updates, removeImageKeys);
|
|
@@ -146,6 +204,9 @@ async function waitKongReady(kongPort, maxSec) {
|
|
|
146
204
|
}
|
|
147
205
|
throw new Error(`Kong gateway at ${base} did not become ready within ${maxSec}s`);
|
|
148
206
|
}
|
|
207
|
+
async function provisionDockerStorageBuckets(ast, kongPort, serviceRoleKey) {
|
|
208
|
+
await provisionBucketsFromAst(ast, `http://localhost:${kongPort}/storage/v1`, serviceRoleKey);
|
|
209
|
+
}
|
|
149
210
|
let _lastPushedAst = null;
|
|
150
211
|
let _lastFailedAst = null;
|
|
151
212
|
let _composePushInFlight = false;
|
|
@@ -218,12 +279,19 @@ async function runComposeSchemaPush(cwd, config, paths, schemaPath, composeProje
|
|
|
218
279
|
console.log("[supatype] Applying schema via local engine (overrides.engine)...");
|
|
219
280
|
await ensureEngine();
|
|
220
281
|
const pgSchema = config.schema?.pg_schema ?? "public";
|
|
282
|
+
const sources = writeSchemaSourcePushArtifacts(cwd);
|
|
221
283
|
try {
|
|
222
284
|
await engineRequest("/push", {
|
|
223
285
|
ast,
|
|
224
286
|
database_url: hostComposeDbUrl(cwd),
|
|
225
287
|
schema: pgSchema,
|
|
226
288
|
force: true,
|
|
289
|
+
...(sources
|
|
290
|
+
? {
|
|
291
|
+
schema_sources_gz_base64: sources.payload.dataBase64,
|
|
292
|
+
schema_sources_manifest: sources.payload.manifest,
|
|
293
|
+
}
|
|
294
|
+
: {}),
|
|
227
295
|
});
|
|
228
296
|
}
|
|
229
297
|
catch (err) {
|
|
@@ -239,11 +307,12 @@ async function runComposeSchemaPush(cwd, config, paths, schemaPath, composeProje
|
|
|
239
307
|
return;
|
|
240
308
|
}
|
|
241
309
|
console.log("[supatype] Applying schema via compose schema-engine...");
|
|
242
|
-
|
|
310
|
+
const sources = writeSchemaSourcePushArtifacts(cwd);
|
|
311
|
+
let push = await runComposeEnginePush(paths, cwd, composeProject, config, sources);
|
|
243
312
|
// Windows Docker bind mounts can lag briefly after the host write.
|
|
244
313
|
if (push.status !== 0) {
|
|
245
314
|
await new Promise((r) => setTimeout(r, 250));
|
|
246
|
-
push = await runComposeEnginePush(paths, cwd, composeProject, config);
|
|
315
|
+
push = await runComposeEnginePush(paths, cwd, composeProject, config, sources);
|
|
247
316
|
}
|
|
248
317
|
if (push.status !== 0) {
|
|
249
318
|
_lastFailedAst = astJson;
|
|
@@ -273,7 +342,7 @@ async function runComposeSchemaPushQueued(cwd, config, paths, schemaPath, compos
|
|
|
273
342
|
_composePushInFlight = false;
|
|
274
343
|
}
|
|
275
344
|
}
|
|
276
|
-
async function runComposeEnginePush(paths, cwd, composeProject, config) {
|
|
345
|
+
async function runComposeEnginePush(paths, cwd, composeProject, config, sources) {
|
|
277
346
|
const envFile = resolve(cwd, ".env");
|
|
278
347
|
const composeArgs = ["compose", "--progress", "quiet"];
|
|
279
348
|
if (composeProject)
|
|
@@ -284,6 +353,9 @@ async function runComposeEnginePush(paths, cwd, composeProject, config) {
|
|
|
284
353
|
composeArgs.push("--env-file", envFile);
|
|
285
354
|
}
|
|
286
355
|
composeArgs.push("--profile", "tools", "run", "--rm", "schema-engine", "push", "-i", "/project/.supatype/schema.ast.json", "--database-url", composeDbUrl(), "--force", "--non-interactive");
|
|
356
|
+
if (sources) {
|
|
357
|
+
composeArgs.push("--schema-sources-gz", sources.dockerGzPath, "--schema-sources-manifest", sources.dockerManifestPath);
|
|
358
|
+
}
|
|
287
359
|
const pushEnv = {
|
|
288
360
|
...process.env,
|
|
289
361
|
COMPOSE_PROGRESS: "quiet",
|
|
@@ -311,6 +383,90 @@ async function runComposeEnginePush(paths, cwd, composeProject, config) {
|
|
|
311
383
|
}
|
|
312
384
|
return { status: exitStatus, output };
|
|
313
385
|
}
|
|
386
|
+
async function runComposeEngineDiff(paths, cwd, composeProject, config, pgSchema) {
|
|
387
|
+
const envFile = resolve(cwd, ".env");
|
|
388
|
+
const composeArgs = ["compose", "--progress", "quiet"];
|
|
389
|
+
if (composeProject)
|
|
390
|
+
composeArgs.push("-p", composeProject);
|
|
391
|
+
composeArgs.push("--project-directory", cwd);
|
|
392
|
+
composeArgs.push("-f", paths.composePath);
|
|
393
|
+
if (existsSync(envFile)) {
|
|
394
|
+
composeArgs.push("--env-file", envFile);
|
|
395
|
+
}
|
|
396
|
+
composeArgs.push("--profile", "tools", "run", "--rm", "schema-engine", "diff", "-i", "/project/.supatype/schema.ast.json", "--database-url", composeDbUrl(), "--schema", pgSchema);
|
|
397
|
+
const diffEnv = {
|
|
398
|
+
...process.env,
|
|
399
|
+
COMPOSE_PROGRESS: "quiet",
|
|
400
|
+
};
|
|
401
|
+
const engineImage = await schemaEngineImageForPush(config);
|
|
402
|
+
if (engineImage) {
|
|
403
|
+
diffEnv.SUPATYPE_ENGINE_IMAGE = engineImage;
|
|
404
|
+
}
|
|
405
|
+
const result = spawnSync("docker", composeArgs, {
|
|
406
|
+
cwd,
|
|
407
|
+
encoding: "utf8",
|
|
408
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
409
|
+
env: diffEnv,
|
|
410
|
+
});
|
|
411
|
+
const output = `${result.stdout ?? ""}${result.stderr ?? ""}`.trim();
|
|
412
|
+
const exitStatus = result.status ?? 1;
|
|
413
|
+
const diff = parseEngineJsonOutput(output);
|
|
414
|
+
return { status: exitStatus, output, diff };
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* `supatype diff` when `provider: docker`. Uses in-compose schema-engine unless
|
|
418
|
+
* `overrides.engine` is set — then Postgres is published to the host and diff runs
|
|
419
|
+
* through the local engine binary.
|
|
420
|
+
*/
|
|
421
|
+
export async function diffSchemaDocker(cwd, config) {
|
|
422
|
+
if (resolveRuntimeProvider(config) !== "docker") {
|
|
423
|
+
throw new Error("diffSchemaDocker requires provider: docker");
|
|
424
|
+
}
|
|
425
|
+
const project = composeProjectName(config.project.name);
|
|
426
|
+
const pgSchema = config.schema?.pg_schema ?? "public";
|
|
427
|
+
if (hasEngineOverride(config)) {
|
|
428
|
+
await ensureDockerDbPublishedForHostEngine(cwd, config);
|
|
429
|
+
const schemaPath = schemaPathFromProject(config, cwd);
|
|
430
|
+
const ast = loadSchemaAst(schemaPath, cwd);
|
|
431
|
+
await ensureEngine();
|
|
432
|
+
return engineRequest("/diff", {
|
|
433
|
+
ast,
|
|
434
|
+
database_url: hostComposeDbUrl(cwd),
|
|
435
|
+
schema: pgSchema,
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
const kongPort = await resolveKongPort(cwd);
|
|
439
|
+
const now = Math.floor(Date.now() / 1000);
|
|
440
|
+
const jwtBase = { iss: "supatype", iat: now, exp: now + 315_360_000 };
|
|
441
|
+
const anonKey = signJwt({ ...jwtBase, role: "anon" }, LOCAL_JWT_SECRET);
|
|
442
|
+
const serviceRoleKey = signJwt({ ...jwtBase, role: "service_role" }, LOCAL_JWT_SECRET);
|
|
443
|
+
ensureDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, undefined);
|
|
444
|
+
const paths = writeSelfHostCompose(cwd, config, { devLocal: true });
|
|
445
|
+
const up = runDockerCompose(paths.composePath, ["up", "-d", "db"], cwd, project, { quiet: true });
|
|
446
|
+
if (up !== 0)
|
|
447
|
+
process.exit(up);
|
|
448
|
+
await waitComposeHealthy(paths, cwd, 120_000, project);
|
|
449
|
+
const schemaPath = schemaPathFromProject(config, cwd);
|
|
450
|
+
const ast = loadSchemaAst(schemaPath, cwd);
|
|
451
|
+
const supatypeDir = join(cwd, ".supatype");
|
|
452
|
+
mkdirSync(supatypeDir, { recursive: true });
|
|
453
|
+
const astPath = join(supatypeDir, "schema.ast.json");
|
|
454
|
+
writeFileSync(astPath, JSON.stringify(ast));
|
|
455
|
+
let result = await runComposeEngineDiff(paths, cwd, project, config, pgSchema);
|
|
456
|
+
// Windows Docker bind mounts can lag briefly after the host write.
|
|
457
|
+
if (result.status !== 0) {
|
|
458
|
+
await new Promise((r) => setTimeout(r, 250));
|
|
459
|
+
result = await runComposeEngineDiff(paths, cwd, project, config, pgSchema);
|
|
460
|
+
}
|
|
461
|
+
if (result.status !== 0) {
|
|
462
|
+
const detail = filterComposeNoise(result.output) || result.output;
|
|
463
|
+
throw new Error(detail || `Engine schema diff failed (exit ${result.status})`);
|
|
464
|
+
}
|
|
465
|
+
if (!result.diff) {
|
|
466
|
+
throw new Error("Engine diff returned no result");
|
|
467
|
+
}
|
|
468
|
+
return result.diff;
|
|
469
|
+
}
|
|
314
470
|
/**
|
|
315
471
|
* `supatype push` when `provider: docker`. Uses in-compose schema-engine unless
|
|
316
472
|
* `overrides.engine` is set — then Postgres is published to the host and push runs
|
|
@@ -335,7 +491,13 @@ export async function pushSchemaDocker(cwd, config) {
|
|
|
335
491
|
process.exit(up);
|
|
336
492
|
await waitComposeHealthy(paths, cwd, 120_000, project);
|
|
337
493
|
const schemaPath = schemaPathFromProject(config, cwd);
|
|
494
|
+
const ast = loadSchemaAst(schemaPath, cwd);
|
|
338
495
|
await runComposeSchemaPush(cwd, config, paths, schemaPath, project);
|
|
496
|
+
const upGateway = runDockerCompose(paths.composePath, ["up", "-d"], cwd, project, { quiet: true });
|
|
497
|
+
if (upGateway !== 0)
|
|
498
|
+
process.exit(upGateway);
|
|
499
|
+
await waitKongReady(kongPort, 120);
|
|
500
|
+
await provisionDockerStorageBuckets(ast, kongPort, serviceRoleKey);
|
|
339
501
|
console.log("[supatype] Schema pushed.");
|
|
340
502
|
}
|
|
341
503
|
export async function runDevCompose(cwd, config, opts) {
|
|
@@ -365,6 +527,16 @@ export async function runDevCompose(cwd, config, opts) {
|
|
|
365
527
|
await runComposeSchemaPush(cwd, config, paths, schemaPath, project).catch((e) => console.error("[supatype] Initial schema push failed:", e.message));
|
|
366
528
|
console.log("[supatype] Waiting for API gateway...");
|
|
367
529
|
await waitKongReady(kongPort, 120);
|
|
530
|
+
writeLocalEnvironment(cwd, {
|
|
531
|
+
target: "local",
|
|
532
|
+
apiUrl: `http://localhost:${kongPort}`,
|
|
533
|
+
databaseUrl: hasEngineOverride(config) ? hostComposeDbUrl(cwd) : composeDbUrl(),
|
|
534
|
+
projectRef: config.project.name,
|
|
535
|
+
kongPort,
|
|
536
|
+
provider: "docker",
|
|
537
|
+
});
|
|
538
|
+
const ast = loadSchemaAst(schemaPath, cwd);
|
|
539
|
+
await provisionDockerStorageBuckets(ast, kongPort, serviceRoleKey);
|
|
368
540
|
const pidDir = join(homedir(), ".supatype", "projects", config.project.name, "pid");
|
|
369
541
|
mkdirSync(pidDir, { recursive: true });
|
|
370
542
|
let studioProc = null;
|
|
@@ -432,7 +604,12 @@ export async function runDevCompose(cwd, config, opts) {
|
|
|
432
604
|
debounceTimer = setTimeout(() => {
|
|
433
605
|
debounceTimer = null;
|
|
434
606
|
console.log(`\n[supatype] Change detected in ${filename}, pushing schema...`);
|
|
435
|
-
runComposeSchemaPushQueued(cwd, config, paths, schemaPath, project)
|
|
607
|
+
runComposeSchemaPushQueued(cwd, config, paths, schemaPath, project)
|
|
608
|
+
.then(async () => {
|
|
609
|
+
const updatedAst = loadSchemaAst(schemaPath, cwd);
|
|
610
|
+
await provisionDockerStorageBuckets(updatedAst, kongPort, serviceRoleKey);
|
|
611
|
+
})
|
|
612
|
+
.catch((e) => console.error("[supatype] Schema push failed:", e.message));
|
|
436
613
|
}, 300);
|
|
437
614
|
});
|
|
438
615
|
}
|