@supatype/cli 0.1.0-alpha.7 → 0.1.0-alpha.9

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 (128) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +66 -61
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/dist/app/proxy-dev-app.d.ts +13 -0
  5. package/dist/app/proxy-dev-app.d.ts.map +1 -0
  6. package/dist/app/proxy-dev-app.js +53 -0
  7. package/dist/app/proxy-dev-app.js.map +1 -0
  8. package/dist/binary-cache.d.ts +5 -0
  9. package/dist/binary-cache.d.ts.map +1 -1
  10. package/dist/binary-cache.js +13 -0
  11. package/dist/binary-cache.js.map +1 -1
  12. package/dist/commands/cloud.d.ts +11 -3
  13. package/dist/commands/cloud.d.ts.map +1 -1
  14. package/dist/commands/cloud.js +33 -25
  15. package/dist/commands/cloud.js.map +1 -1
  16. package/dist/commands/deploy.d.ts.map +1 -1
  17. package/dist/commands/deploy.js +3 -17
  18. package/dist/commands/deploy.js.map +1 -1
  19. package/dist/commands/dev.d.ts +3 -3
  20. package/dist/commands/dev.d.ts.map +1 -1
  21. package/dist/commands/dev.js +66 -59
  22. package/dist/commands/dev.js.map +1 -1
  23. package/dist/commands/diff.d.ts.map +1 -1
  24. package/dist/commands/diff.js +11 -1
  25. package/dist/commands/diff.js.map +1 -1
  26. package/dist/commands/init.js +16 -3
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/push.d.ts.map +1 -1
  29. package/dist/commands/push.js +42 -12
  30. package/dist/commands/push.js.map +1 -1
  31. package/dist/commands/update.d.ts.map +1 -1
  32. package/dist/commands/update.js +16 -0
  33. package/dist/commands/update.js.map +1 -1
  34. package/dist/dev-compose.d.ts +17 -0
  35. package/dist/dev-compose.d.ts.map +1 -0
  36. package/dist/dev-compose.js +374 -0
  37. package/dist/dev-compose.js.map +1 -0
  38. package/dist/diff-output.d.ts +4 -0
  39. package/dist/diff-output.d.ts.map +1 -0
  40. package/dist/diff-output.js +12 -0
  41. package/dist/diff-output.js.map +1 -0
  42. package/dist/docker-postgres.d.ts +21 -3
  43. package/dist/docker-postgres.d.ts.map +1 -1
  44. package/dist/docker-postgres.js +130 -18
  45. package/dist/docker-postgres.js.map +1 -1
  46. package/dist/engine-client.d.ts +5 -3
  47. package/dist/engine-client.d.ts.map +1 -1
  48. package/dist/engine-client.js +2 -1
  49. package/dist/engine-client.js.map +1 -1
  50. package/dist/kong-config.d.ts +4 -0
  51. package/dist/kong-config.d.ts.map +1 -1
  52. package/dist/kong-config.js +12 -1
  53. package/dist/kong-config.js.map +1 -1
  54. package/dist/process-manager.d.ts +2 -0
  55. package/dist/process-manager.d.ts.map +1 -1
  56. package/dist/process-manager.js +16 -1
  57. package/dist/process-manager.js.map +1 -1
  58. package/dist/project-config.d.ts +21 -1
  59. package/dist/project-config.d.ts.map +1 -1
  60. package/dist/project-config.js +15 -0
  61. package/dist/project-config.js.map +1 -1
  62. package/dist/runtime-routes.d.ts +9 -0
  63. package/dist/runtime-routes.d.ts.map +1 -1
  64. package/dist/runtime-routes.js +75 -12
  65. package/dist/runtime-routes.js.map +1 -1
  66. package/dist/schema-ast-v2.d.ts +127 -0
  67. package/dist/schema-ast-v2.d.ts.map +1 -0
  68. package/dist/schema-ast-v2.js +226 -0
  69. package/dist/schema-ast-v2.js.map +1 -0
  70. package/dist/seed.d.ts +8 -0
  71. package/dist/seed.d.ts.map +1 -0
  72. package/dist/seed.js +32 -0
  73. package/dist/seed.js.map +1 -0
  74. package/dist/self-host-compose.d.ts +12 -4
  75. package/dist/self-host-compose.d.ts.map +1 -1
  76. package/dist/self-host-compose.js +146 -35
  77. package/dist/self-host-compose.js.map +1 -1
  78. package/dist/studio-admin-roles.d.ts +7 -0
  79. package/dist/studio-admin-roles.d.ts.map +1 -0
  80. package/dist/studio-admin-roles.js +14 -0
  81. package/dist/studio-admin-roles.js.map +1 -0
  82. package/dist/studio-dev-server.d.ts +22 -0
  83. package/dist/studio-dev-server.d.ts.map +1 -0
  84. package/dist/studio-dev-server.js +28 -0
  85. package/dist/studio-dev-server.js.map +1 -0
  86. package/dist/type-extractor.d.ts +3 -30
  87. package/dist/type-extractor.d.ts.map +1 -1
  88. package/dist/type-extractor.js +485 -148
  89. package/dist/type-extractor.js.map +1 -1
  90. package/dist/type-resolver.d.ts +33 -0
  91. package/dist/type-resolver.d.ts.map +1 -0
  92. package/dist/type-resolver.js +338 -0
  93. package/dist/type-resolver.js.map +1 -0
  94. package/package.json +7 -3
  95. package/src/TYPE-RESOLUTION.md +294 -0
  96. package/src/app/proxy-dev-app.ts +67 -0
  97. package/src/binary-cache.ts +20 -0
  98. package/src/commands/cloud.ts +40 -30
  99. package/src/commands/deploy.ts +3 -18
  100. package/src/commands/dev.ts +72 -69
  101. package/src/commands/diff.ts +11 -1
  102. package/src/commands/init.ts +16 -3
  103. package/src/commands/push.ts +49 -13
  104. package/src/commands/update.ts +17 -0
  105. package/src/dev-compose.ts +455 -0
  106. package/src/diff-output.ts +12 -0
  107. package/src/docker-postgres.ts +184 -27
  108. package/src/engine-client.ts +9 -4
  109. package/src/kong-config.ts +16 -1
  110. package/src/process-manager.ts +18 -1
  111. package/src/project-config.ts +34 -1
  112. package/src/runtime-routes.ts +87 -12
  113. package/src/schema-ast-v2.ts +324 -0
  114. package/src/seed.ts +43 -0
  115. package/src/self-host-compose.ts +168 -36
  116. package/src/studio-admin-roles.ts +16 -0
  117. package/src/studio-dev-server.ts +53 -0
  118. package/src/type-extractor.ts +649 -186
  119. package/src/type-resolver.ts +457 -0
  120. package/tests/config.test.ts +34 -3
  121. package/tests/docker-postgres.test.ts +39 -0
  122. package/tests/normalize-admin-config.test.ts +48 -0
  123. package/tests/proxy-dev-app.test.ts +33 -0
  124. package/tests/runtime-contract.test.ts +119 -4
  125. package/tests/studio-admin-roles.test.ts +27 -0
  126. package/tests/type-extractor.test.ts +607 -23
  127. package/tests/type-resolver.test.ts +59 -0
  128. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -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;AAaxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyHnD"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqJnD"}
@@ -2,11 +2,14 @@ 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 { connectionString, schemaPathFromProject, serverBaseUrl } from "../project-config.js";
5
+ import { connectionString, resolveRuntimeProvider, schemaPathFromProject, serverBaseUrl } from "../project-config.js";
6
+ import { isCloudLinked, pushSchemaToLinkedProject } from "./cloud.js";
6
7
  import { ensureEngine, engineRequest } from "../engine-client.js";
8
+ import { printDiffWarnings } from "../diff-output.js";
7
9
  import { signJwt } from "../jwt.js";
8
10
  import { provisionBuckets } from "../storage-provision.js";
9
11
  import { promptFirstAdminUser } from "./admin.js";
12
+ import { withAdminRoles } from "../studio-admin-roles.js";
10
13
  const DEV_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
11
14
  export function registerPush(program) {
12
15
  program
@@ -16,7 +19,23 @@ export function registerPush(program) {
16
19
  .option("--connection <url>", "Database connection URL (overrides config)")
17
20
  .action(async (opts) => {
18
21
  const cwd = process.cwd();
22
+ if (isCloudLinked(cwd)) {
23
+ if (opts.connection) {
24
+ console.error("--connection is not allowed when linked to a cloud project (credentials stay server-side).");
25
+ process.exit(1);
26
+ }
27
+ await pushSchemaToLinkedProject(cwd, { force: opts.yes ?? true });
28
+ return;
29
+ }
19
30
  const config = loadConfig(cwd);
31
+ // Docker provider: the compose Postgres isn't published to the host, so
32
+ // apply the schema through the in-compose schema-engine (unless the user
33
+ // gave an explicit --connection to a reachable database).
34
+ if (!opts.connection && resolveRuntimeProvider(config) === "docker") {
35
+ const { pushSchemaDocker } = await import("../dev-compose.js");
36
+ await pushSchemaDocker(cwd, config);
37
+ return;
38
+ }
20
39
  const connection = opts.connection ?? connectionString(config);
21
40
  await ensureEngine();
22
41
  console.log("Loading schema...");
@@ -28,14 +47,15 @@ export function registerPush(program) {
28
47
  schema: "public",
29
48
  });
30
49
  const ops = diff.operations ?? [];
50
+ printDiffWarnings(diff);
31
51
  if (ops.length === 0) {
32
- console.log("Schema matches the database (no DDL). Refreshing admin metadata and local Studio config...");
52
+ console.log("Schema matches the database (no DDL). Syncing Studio metadata...");
33
53
  }
34
54
  else {
35
55
  printDiff(ops);
36
- const destructive = ops.filter((o) => o.risk === "danger");
37
- if (destructive.length > 0 && !opts.yes) {
38
- const confirmed = await confirm(`\n${destructive.length} destructive operation(s) above. Proceed? [y/N] `);
56
+ const risky = ops.filter((o) => o.risk === "cautious" || o.risk === "destructive" || o.risk === "warn" || o.risk === "danger");
57
+ if (risky.length > 0 && !opts.yes) {
58
+ const confirmed = await confirm(`\n${risky.length} risky operation(s) above (type changes or data loss). Proceed? [y/N] `);
39
59
  if (!confirmed) {
40
60
  console.log("Aborted.");
41
61
  return;
@@ -51,13 +71,13 @@ export function registerPush(program) {
51
71
  });
52
72
  if (pushResult.status === "up_to_date") {
53
73
  console.log(pushResult.admin_refreshed
54
- ? "Admin config updated on the latest migration record (no SQL applied)."
74
+ ? "Database schema unchanged Studio metadata synced."
55
75
  : "Schema is up to date.");
56
76
  }
57
77
  else {
58
78
  console.log(pushResult.message ?? "Migration applied.");
59
79
  }
60
- await writeLocalAdminConfig(ast);
80
+ await writeLocalAdminConfig(ast, config);
61
81
  // After a DDL migration, check if this is the first push and offer to create an
62
82
  // admin user if none exist (Gap Appendices task 48).
63
83
  if (ops.length > 0) {
@@ -95,19 +115,29 @@ export function registerPush(program) {
95
115
  const genResult = await engineRequest("/generate", genBody);
96
116
  console.log(genResult.message ?? "Types generated.");
97
117
  }
98
- console.log("\nDone.");
118
+ const studioBase = baseUrl?.replace(/\/$/, "") ?? "";
119
+ if (studioBase) {
120
+ console.log(`\nStudio: ${studioBase}/studio/ — sign in with the admin user you created.`);
121
+ }
122
+ else {
123
+ console.log("\nDone.");
124
+ }
99
125
  });
100
126
  }
101
127
  function printDiff(ops) {
102
128
  const symbol = {
103
129
  safe: "+",
104
130
  warn: "~",
131
+ cautious: "~",
105
132
  danger: "!",
133
+ destructive: "!",
106
134
  };
107
135
  console.log(`\n${ops.length} change(s) planned:\n`);
108
136
  for (const op of ops) {
109
- const s = op.risk ? symbol[op.risk] : "?";
110
- console.log(` [${s}] ${formatOperation(op)}`);
137
+ const riskKey = op.risk ?? "safe";
138
+ const s = symbol[riskKey] ?? "?";
139
+ const label = op.warning ?? op.description ?? formatOperation(op);
140
+ console.log(` [${s}] ${label}`);
111
141
  }
112
142
  }
113
143
  function formatOperation(op) {
@@ -137,11 +167,11 @@ async function confirm(prompt) {
137
167
  });
138
168
  }
139
169
  /** Write `.supatype/admin-config.json` for local Studio (same layout as `supatype dev`). */
140
- async function writeLocalAdminConfig(ast) {
170
+ async function writeLocalAdminConfig(ast, config) {
141
171
  const cwd = process.cwd();
142
172
  const dir = join(cwd, ".supatype");
143
173
  mkdirSync(dir, { recursive: true });
144
- const admin = await engineRequest("/admin", { ast });
174
+ const admin = withAdminRoles(await engineRequest("/admin", { ast }), config);
145
175
  writeFileSync(join(dir, "admin-config.json"), `${JSON.stringify(admin, null, 2)}\n`);
146
176
  }
147
177
  //# sourceMappingURL=push.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.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;AAgBxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsErD"}
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;AAkBxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqFrD"}
@@ -5,6 +5,8 @@
5
5
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
6
6
  import { basename, resolve } from "node:path";
7
7
  import { loadConfig } from "../config.js";
8
+ import { resolveRuntimeProvider } from "../project-config.js";
9
+ import { runDockerCompose, writeSelfHostCompose } from "../self-host-compose.js";
8
10
  import { download, currentPlatform, fetchAllLatestVersions } from "../binary-cache.js";
9
11
  const CONFIG_CANDIDATES = ["supatype.config.ts", "supatype.config.js", "supatype.config.mjs"];
10
12
  function resolveConfigFile(cwd) {
@@ -23,6 +25,20 @@ export function registerUpdate(program) {
23
25
  .action(async (opts) => {
24
26
  const cwd = process.cwd();
25
27
  const config = loadConfig(cwd);
28
+ const provider = resolveRuntimeProvider(config);
29
+ if (provider === "docker") {
30
+ if (opts.check) {
31
+ console.log("Docker provider: run without --check to pull compose images (supatype self-host compose pull).");
32
+ return;
33
+ }
34
+ const paths = writeSelfHostCompose(cwd, config, { devLocal: true });
35
+ console.log("Pulling self-host compose images...");
36
+ const status = runDockerCompose(paths.composePath, ["pull"], cwd);
37
+ if (status !== 0)
38
+ process.exit(status);
39
+ console.log("Compose images updated.");
40
+ return;
41
+ }
26
42
  const platform = currentPlatform();
27
43
  const components = ["engine", "server", "postgres", "deno"];
28
44
  const updates = [];
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `supatype dev` when `provider: docker` — full self-host Compose stack (Kong gateway).
3
+ */
4
+ import { type SupatypeProjectConfig } from "./project-config.js";
5
+ export interface DevComposeOptions {
6
+ watch: boolean;
7
+ }
8
+ /** In-compose Postgres URL (SCRAM; not published to the host). */
9
+ export declare function composeDbUrl(): string;
10
+ /**
11
+ * `supatype push` when `provider: docker`. Uses in-compose schema-engine unless
12
+ * `overrides.engine` is set — then Postgres is published to the host and push runs
13
+ * through the local engine binary (AST v2, contributor builds).
14
+ */
15
+ export declare function pushSchemaDocker(cwd: string, config: SupatypeProjectConfig): Promise<void>;
16
+ export declare function runDevCompose(cwd: string, config: SupatypeProjectConfig, opts: DevComposeOptions): Promise<void>;
17
+ //# sourceMappingURL=dev-compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-compose.d.ts","sourceRoot":"","sources":["../src/dev-compose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAc5B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;CACf;AAED,kEAAkE;AAClE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AA2RD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhG;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGtH"}
@@ -0,0 +1,374 @@
1
+ /**
2
+ * `supatype dev` when `provider: docker` — full self-host Compose stack (Kong gateway).
3
+ */
4
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
+ import { homedir } from "node:os";
6
+ import { dirname, join, resolve } from "node:path";
7
+ import { spawnSync } from "node:child_process";
8
+ import { startProxyDevApp } from "./app/proxy-dev-app.js";
9
+ import { loadSchemaAst } from "./config.js";
10
+ import { COMPOSE_DEV_KONG_PORT, projectRootFromConfig, resolveRuntimeProvider, schemaPathFromProject, } from "./project-config.js";
11
+ import { signJwt } from "./jwt.js";
12
+ import { isPortInUse } from "./postgres-ctl.js";
13
+ import { composeProjectName, runDockerCompose, writeSelfHostCompose } from "./self-host-compose.js";
14
+ import { hasEngineOverride } from "./binary-cache.js";
15
+ import { startStudioViteDevServer } from "./studio-dev-server.js";
16
+ import { ensureEngine, engineRequest } from "./engine-client.js";
17
+ import { withAdminRoles } from "./studio-admin-roles.js";
18
+ const LOCAL_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
19
+ /** Default host port for compose Postgres when `overrides.engine` is set (devLocal). */
20
+ const COMPOSE_DEV_DB_PORT = 54329;
21
+ /** In-compose Postgres URL (SCRAM; not published to the host). */
22
+ export function composeDbUrl() {
23
+ return "postgresql://supatype_admin:postgres@db:5432/supatype?sslmode=disable";
24
+ }
25
+ /**
26
+ * Resolve the host Kong port for this project. Persisted in `.env` as
27
+ * SUPATYPE_KONG_PORT so re-runs are stable; on first run it picks the default
28
+ * (18473) or the next free port, so multiple projects can run concurrently.
29
+ */
30
+ async function resolveDevDbPort(cwd) {
31
+ const envPath = join(cwd, ".env");
32
+ if (existsSync(envPath)) {
33
+ const m = readFileSync(envPath, "utf8").match(/^SUPATYPE_DEV_DB_PORT=(\d+)/m);
34
+ if (m && m[1])
35
+ return Number(m[1]);
36
+ }
37
+ let port = COMPOSE_DEV_DB_PORT;
38
+ while (await isPortInUse(port))
39
+ port++;
40
+ return port;
41
+ }
42
+ function readEnvValue(cwd, key, fallback) {
43
+ const envPath = join(cwd, ".env");
44
+ if (existsSync(envPath)) {
45
+ const m = readFileSync(envPath, "utf8").match(new RegExp(`^${key}=(.+)$`, "m"));
46
+ if (m?.[1])
47
+ return m[1].trim();
48
+ }
49
+ return fallback;
50
+ }
51
+ /** Postgres DSN for compose db when published to the host (local engine push). */
52
+ function hostComposeDbUrl(cwd) {
53
+ const port = readEnvValue(cwd, "SUPATYPE_DEV_DB_PORT", String(COMPOSE_DEV_DB_PORT));
54
+ const user = readEnvValue(cwd, "POSTGRES_USER", "supatype_admin");
55
+ const pass = readEnvValue(cwd, "POSTGRES_PASSWORD", "postgres");
56
+ const db = readEnvValue(cwd, "POSTGRES_DB", "supatype");
57
+ return `postgresql://${user}:${pass}@127.0.0.1:${port}/${db}?sslmode=disable`;
58
+ }
59
+ async function resolveKongPort(cwd) {
60
+ const envPath = join(cwd, ".env");
61
+ if (existsSync(envPath)) {
62
+ const m = readFileSync(envPath, "utf8").match(/^SUPATYPE_KONG_PORT=(\d+)/m);
63
+ if (m && m[1])
64
+ return Number(m[1]);
65
+ }
66
+ let port = COMPOSE_DEV_KONG_PORT;
67
+ while (await isPortInUse(port))
68
+ port++;
69
+ return port;
70
+ }
71
+ function upsertEnvFile(cwd, updates) {
72
+ const envPath = join(cwd, ".env");
73
+ const existing = existsSync(envPath) ? readFileSync(envPath, "utf8") : "";
74
+ const keys = new Set(Object.keys(updates));
75
+ const kept = existing
76
+ .split("\n")
77
+ .filter((line) => {
78
+ const key = line.split("=")[0]?.trim();
79
+ return key && line.includes("=") && !keys.has(key);
80
+ });
81
+ const merged = [...kept, ...Object.entries(updates).map(([key, value]) => `${key}=${value}`)];
82
+ writeFileSync(envPath, `${merged.join("\n").trimEnd()}\n`, "utf8");
83
+ }
84
+ /** Keep compose + Studio + Astro on the same freshly signed dev JWTs every `dev` / `push`. */
85
+ function ensureDevComposeEnv(cwd, anonKey, serviceRoleKey, kongPort, devDbPort) {
86
+ const apiUrl = `http://localhost:${kongPort}`;
87
+ const updates = {
88
+ POSTGRES_USER: "supatype_admin",
89
+ POSTGRES_PASSWORD: "postgres",
90
+ POSTGRES_DB: "supatype",
91
+ JWT_SECRET: LOCAL_JWT_SECRET,
92
+ ANON_KEY: anonKey,
93
+ SERVICE_ROLE_KEY: serviceRoleKey,
94
+ PUBLIC_SUPATYPE_ANON_KEY: anonKey,
95
+ PUBLIC_SUPATYPE_URL: apiUrl,
96
+ SUPATYPE_KONG_PORT: String(kongPort),
97
+ API_EXTERNAL_URL: apiUrl,
98
+ SITE_URL: apiUrl,
99
+ GOTRUE_MAILER_AUTOCONFIRM: "true",
100
+ };
101
+ if (devDbPort !== undefined) {
102
+ updates.SUPATYPE_DEV_DB_PORT = String(devDbPort);
103
+ }
104
+ upsertEnvFile(cwd, updates);
105
+ }
106
+ async function waitComposeHealthy(paths, cwd, maxMs, composeProject) {
107
+ const composeDir = dirname(paths.composePath);
108
+ const envFile = join(cwd, ".env");
109
+ const baseArgs = ["compose", "-p", composeProject, "-f", paths.composePath];
110
+ if (existsSync(envFile))
111
+ baseArgs.push("--env-file", envFile);
112
+ const deadline = Date.now() + maxMs;
113
+ while (Date.now() < deadline) {
114
+ const ready = spawnSync("docker", [...baseArgs, "exec", "-T", "db", "pg_isready", "-U", "supatype_admin"], { cwd: composeDir, encoding: "utf8" });
115
+ if (ready.status === 0)
116
+ return;
117
+ await new Promise((r) => setTimeout(r, 2000));
118
+ }
119
+ throw new Error("Compose db service did not become healthy in time");
120
+ }
121
+ async function waitKongReady(kongPort, maxSec) {
122
+ const base = `http://localhost:${kongPort}`;
123
+ for (let i = 0; i < maxSec; i++) {
124
+ try {
125
+ const res = await fetch(`${base}/auth/v1/health`);
126
+ if (res.ok)
127
+ return;
128
+ }
129
+ catch {
130
+ /* retry */
131
+ }
132
+ await new Promise((r) => setTimeout(r, 1000));
133
+ }
134
+ throw new Error(`Kong gateway at ${base} did not become ready within ${maxSec}s`);
135
+ }
136
+ let _lastPushedAst = null;
137
+ let _lastFailedAst = null;
138
+ /**
139
+ * Regenerate admin-config + TypeScript types from the AST using the **host** engine.
140
+ * Only schema push/migrate runs in compose (Postgres is not on the host).
141
+ */
142
+ async function refreshSchemaArtifacts(cwd, config, ast) {
143
+ const supatypeDir = join(cwd, ".supatype");
144
+ const adminConfigPath = join(supatypeDir, "admin-config.json");
145
+ try {
146
+ await ensureEngine();
147
+ }
148
+ catch (err) {
149
+ console.warn(`[supatype] Host engine unavailable — admin/types not refreshed: ${err.message}`);
150
+ return;
151
+ }
152
+ const typesPath = config.output?.types;
153
+ if (typeof typesPath === "string" && typesPath.trim().length > 0) {
154
+ try {
155
+ const result = await engineRequest("/generate", {
156
+ ast,
157
+ lang: "typescript",
158
+ });
159
+ const typesCode = result.code ?? result.message;
160
+ if (typeof typesCode === "string" && typesCode.includes("export type")) {
161
+ const marker = typesCode.indexOf("// Generated by supatype-engine");
162
+ const ts = (marker >= 0 ? typesCode.slice(marker) : typesCode).trimStart();
163
+ const hostPath = join(cwd, typesPath);
164
+ mkdirSync(dirname(hostPath), { recursive: true });
165
+ writeFileSync(hostPath, ts);
166
+ console.log(`[supatype] Types written to ${typesPath}`);
167
+ }
168
+ else {
169
+ console.warn("[supatype] Type generation produced no output.");
170
+ }
171
+ }
172
+ catch (err) {
173
+ console.warn(`[supatype] Type generation failed: ${err.message}`);
174
+ }
175
+ }
176
+ try {
177
+ const admin = withAdminRoles(await engineRequest("/admin", { ast }), config);
178
+ writeFileSync(adminConfigPath, `${JSON.stringify(admin, null, 2)}\n`);
179
+ console.log("[supatype] Admin config written to .supatype/admin-config.json");
180
+ }
181
+ catch (err) {
182
+ console.warn(`[supatype] Admin config generation failed — Studio may show stale field widgets: ${err.message}`);
183
+ }
184
+ }
185
+ async function runComposeSchemaPush(cwd, config, paths, schemaPath, composeProject) {
186
+ const ast = loadSchemaAst(schemaPath, cwd);
187
+ const astJson = JSON.stringify(ast);
188
+ const supatypeDir = join(cwd, ".supatype");
189
+ mkdirSync(supatypeDir, { recursive: true });
190
+ const astPath = join(supatypeDir, "schema.ast.json");
191
+ // Always materialise on disk — schema-engine reads via bind mount; skip must not omit the write.
192
+ writeFileSync(astPath, astJson);
193
+ if (astJson === _lastPushedAst && astJson !== _lastFailedAst)
194
+ return;
195
+ if (!existsSync(astPath)) {
196
+ throw new Error(`Failed to write schema AST at ${astPath}`);
197
+ }
198
+ // Admin + types come from the AST only (no DB) — refresh before push so Studio stays
199
+ // in sync even when migration fails (e.g. bad engine image, lossy column change).
200
+ await refreshSchemaArtifacts(cwd, config, ast);
201
+ if (hasEngineOverride(config)) {
202
+ console.log("[supatype] Applying schema via local engine (overrides.engine)...");
203
+ await ensureEngine();
204
+ const pgSchema = config.schema?.pg_schema ?? "public";
205
+ try {
206
+ await engineRequest("/push", {
207
+ ast,
208
+ database_url: hostComposeDbUrl(cwd),
209
+ schema: pgSchema,
210
+ force: true,
211
+ });
212
+ }
213
+ catch (err) {
214
+ _lastFailedAst = astJson;
215
+ throw err;
216
+ }
217
+ _lastPushedAst = astJson;
218
+ _lastFailedAst = null;
219
+ console.log("[supatype] Schema applied.");
220
+ return;
221
+ }
222
+ console.log("[supatype] Applying schema via compose schema-engine...");
223
+ let push = runComposeEnginePush(paths, cwd, composeProject);
224
+ // Windows Docker bind mounts can lag briefly after the host write.
225
+ if (push.status !== 0) {
226
+ await new Promise((r) => setTimeout(r, 250));
227
+ push = runComposeEnginePush(paths, cwd, composeProject);
228
+ }
229
+ if (push.status !== 0) {
230
+ _lastFailedAst = astJson;
231
+ throw new Error(push.output || `Engine schema push failed (exit ${push.status})`);
232
+ }
233
+ _lastPushedAst = astJson;
234
+ _lastFailedAst = null;
235
+ console.log("[supatype] Schema applied.");
236
+ }
237
+ function runComposeEnginePush(paths, cwd, composeProject) {
238
+ const envFile = resolve(cwd, ".env");
239
+ const composeArgs = ["compose"];
240
+ if (composeProject)
241
+ composeArgs.push("-p", composeProject);
242
+ composeArgs.push("--project-directory", cwd);
243
+ composeArgs.push("-f", paths.composePath);
244
+ if (existsSync(envFile)) {
245
+ composeArgs.push("--env-file", envFile);
246
+ }
247
+ composeArgs.push("--profile", "tools", "run", "--rm", "schema-engine", "push", "-i", "/project/.supatype/schema.ast.json", "--database-url", composeDbUrl(), "--force", "--non-interactive");
248
+ const result = spawnSync("docker", composeArgs, {
249
+ cwd,
250
+ encoding: "utf8",
251
+ maxBuffer: 10 * 1024 * 1024,
252
+ });
253
+ const output = `${result.stdout ?? ""}${result.stderr ?? ""}`.trim();
254
+ if (output.length > 0) {
255
+ console.error(output);
256
+ }
257
+ return { status: result.status ?? 1, output };
258
+ }
259
+ /**
260
+ * `supatype push` when `provider: docker`. Uses in-compose schema-engine unless
261
+ * `overrides.engine` is set — then Postgres is published to the host and push runs
262
+ * through the local engine binary (AST v2, contributor builds).
263
+ */
264
+ export async function pushSchemaDocker(cwd, config) {
265
+ if (resolveRuntimeProvider(config) !== "docker") {
266
+ throw new Error("pushSchemaDocker requires provider: docker");
267
+ }
268
+ const project = composeProjectName(config.project.name);
269
+ const kongPort = await resolveKongPort(cwd);
270
+ const devDbPort = hasEngineOverride(config) ? await resolveDevDbPort(cwd) : undefined;
271
+ const now = Math.floor(Date.now() / 1000);
272
+ const jwtBase = { iss: "supatype", iat: now, exp: now + 315_360_000 };
273
+ const anonKey = signJwt({ ...jwtBase, role: "anon" }, LOCAL_JWT_SECRET);
274
+ const serviceRoleKey = signJwt({ ...jwtBase, role: "service_role" }, LOCAL_JWT_SECRET);
275
+ ensureDevComposeEnv(cwd, anonKey, serviceRoleKey, kongPort, devDbPort);
276
+ const paths = writeSelfHostCompose(cwd, config, { devLocal: true });
277
+ console.log(`[supatype] provider: docker — applying schema via compose (project ${project})...`);
278
+ const up = runDockerCompose(paths.composePath, ["up", "-d", "db"], cwd, project);
279
+ if (up !== 0)
280
+ process.exit(up);
281
+ await waitComposeHealthy(paths, cwd, 120_000, project);
282
+ const schemaPath = schemaPathFromProject(config, cwd);
283
+ await runComposeSchemaPush(cwd, config, paths, schemaPath, project);
284
+ console.log("[supatype] Schema pushed.");
285
+ }
286
+ export async function runDevCompose(cwd, config, opts) {
287
+ if (resolveRuntimeProvider(config) !== "docker") {
288
+ throw new Error("runDevCompose requires provider: docker");
289
+ }
290
+ // Per-project compose name + port isolate this project from any other Supatype
291
+ // stack on the machine (own containers, volumes, network, and gateway port).
292
+ const project = composeProjectName(config.project.name);
293
+ const kongPort = await resolveKongPort(cwd);
294
+ const devDbPort = hasEngineOverride(config) ? await resolveDevDbPort(cwd) : undefined;
295
+ const now = Math.floor(Date.now() / 1000);
296
+ const jwtBase = { iss: "supatype", iat: now, exp: now + 315_360_000 };
297
+ const anonKey = signJwt({ ...jwtBase, role: "anon" }, LOCAL_JWT_SECRET);
298
+ const serviceRoleKey = signJwt({ ...jwtBase, role: "service_role" }, LOCAL_JWT_SECRET);
299
+ ensureDevComposeEnv(cwd, anonKey, serviceRoleKey, kongPort, devDbPort);
300
+ console.log(`[supatype] provider: docker — starting self-host Compose stack (project ${project}, gateway :${kongPort})...`);
301
+ const paths = writeSelfHostCompose(cwd, config, { devLocal: true });
302
+ const upStatus = runDockerCompose(paths.composePath, ["up", "-d"], cwd, project);
303
+ if (upStatus !== 0)
304
+ process.exit(upStatus);
305
+ console.log("[supatype] Waiting for Postgres (compose)...");
306
+ await waitComposeHealthy(paths, cwd, 180_000, project);
307
+ const schemaPath = schemaPathFromProject(config, cwd);
308
+ await runComposeSchemaPush(cwd, config, paths, schemaPath, project).catch((e) => console.error("[supatype] Initial schema push failed:", e.message));
309
+ console.log("[supatype] Waiting for API gateway...");
310
+ await waitKongReady(kongPort, 120);
311
+ const pidDir = join(homedir(), ".supatype", "projects", config.project.name, "pid");
312
+ mkdirSync(pidDir, { recursive: true });
313
+ let studioProc = null;
314
+ const studioOverride = config.overrides?.studio;
315
+ if (studioOverride) {
316
+ studioProc = startStudioViteDevServer({
317
+ cwd,
318
+ studioOverride,
319
+ pidDir,
320
+ serviceRoleKey,
321
+ proxyTarget: `http://localhost:${kongPort}`,
322
+ viteSupatypeUrl: `http://localhost:${kongPort}`,
323
+ basePath: "/studio/",
324
+ });
325
+ studioProc?.start();
326
+ if (studioProc) {
327
+ console.log("[supatype] Studio Vite dev server (overrides.studio) — live reload at /studio/");
328
+ }
329
+ }
330
+ console.log(`
331
+ [supatype] Services running (Docker Compose · project ${project}):
332
+ API (Kong) http://localhost:${kongPort}
333
+ REST API http://localhost:${kongPort}/rest/v1/
334
+ Auth http://localhost:${kongPort}/auth/v1/
335
+ Storage http://localhost:${kongPort}/storage/v1/
336
+ Realtime ws://localhost:${kongPort}/realtime/v1/
337
+ Studio http://localhost:${kongPort}/studio/
338
+
339
+ API keys (local dev only):
340
+ anon key ${anonKey}
341
+ service_role ${serviceRoleKey}
342
+
343
+ Press Ctrl+C to stop.
344
+ `);
345
+ const appProc = startProxyDevApp(cwd, config, pidDir);
346
+ const cleanup = async () => {
347
+ console.log("\n[supatype] Shutting down compose...");
348
+ await studioProc?.stop();
349
+ await appProc?.stop();
350
+ runDockerCompose(paths.composePath, ["down"], cwd, project);
351
+ process.exit(0);
352
+ };
353
+ process.once("SIGINT", () => void cleanup());
354
+ process.once("SIGTERM", () => void cleanup());
355
+ if (opts.watch) {
356
+ const schemaDir = join(projectRootFromConfig(config, cwd), config.schema?.path ?? "schema/index.ts", "..");
357
+ console.log(`[supatype] Watching ${schemaDir} for changes...`);
358
+ const { watch } = await import("node:fs");
359
+ let debounceTimer = null;
360
+ watch(schemaDir, { recursive: true }, (_eventType, filename) => {
361
+ if (!filename?.endsWith(".ts"))
362
+ return;
363
+ if (debounceTimer)
364
+ clearTimeout(debounceTimer);
365
+ debounceTimer = setTimeout(() => {
366
+ debounceTimer = null;
367
+ console.log(`\n[supatype] Change detected in ${filename}, pushing schema...`);
368
+ runComposeSchemaPush(cwd, config, paths, schemaPath, project).catch((e) => console.error("[supatype] Schema push failed:", e.message));
369
+ }, 300);
370
+ });
371
+ }
372
+ await new Promise(() => undefined);
373
+ }
374
+ //# sourceMappingURL=dev-compose.js.map