@supatype/cli 0.1.0-alpha.6 → 0.1.0-alpha.8
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 +208 -1
- package/.turbo/turbo-typecheck.log +1 -1
- package/dist/app/proxy-dev-app.d.ts +13 -0
- package/dist/app/proxy-dev-app.d.ts.map +1 -0
- package/dist/app/proxy-dev-app.js +53 -0
- package/dist/app/proxy-dev-app.js.map +1 -0
- package/dist/app-config.d.ts +7 -0
- package/dist/app-config.d.ts.map +1 -0
- package/dist/app-config.js +113 -0
- package/dist/app-config.js.map +1 -0
- package/dist/augmentation-generator.d.ts +2 -0
- package/dist/augmentation-generator.d.ts.map +1 -0
- package/dist/augmentation-generator.js +111 -0
- package/dist/augmentation-generator.js.map +1 -0
- package/dist/binary-cache.d.ts +94 -0
- package/dist/binary-cache.d.ts.map +1 -0
- package/dist/binary-cache.js +669 -0
- package/dist/binary-cache.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +4 -3
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +56 -209
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/cache.d.ts +6 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +105 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/cloud.d.ts +20 -0
- package/dist/commands/cloud.d.ts.map +1 -1
- package/dist/commands/cloud.js +50 -52
- package/dist/commands/cloud.js.map +1 -1
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +47 -54
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/deploy.d.ts +2 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +79 -52
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +11 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +759 -385
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +30 -15
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/engine.d.ts +1 -3
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +13 -85
- package/dist/commands/engine.js.map +1 -1
- package/dist/commands/functions.d.ts.map +1 -1
- package/dist/commands/functions.js +92 -105
- package/dist/commands/functions.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +22 -12
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +137 -410
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate-from-v1.d.ts +5 -0
- package/dist/commands/migrate-from-v1.d.ts.map +1 -0
- package/dist/commands/migrate-from-v1.js +125 -0
- package/dist/commands/migrate-from-v1.js.map +1 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +27 -23
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/pg.d.ts +8 -0
- package/dist/commands/pg.d.ts.map +1 -0
- package/dist/commands/pg.js +102 -0
- package/dist/commands/pg.js.map +1 -0
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +5 -66
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +128 -38
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/seed.d.ts +2 -0
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +44 -11
- package/dist/commands/seed.js.map +1 -1
- package/dist/commands/self-host.d.ts +7 -1
- package/dist/commands/self-host.d.ts.map +1 -1
- package/dist/commands/self-host.js +272 -758
- package/dist/commands/self-host.js.map +1 -1
- package/dist/commands/self-update.d.ts +9 -0
- package/dist/commands/self-update.d.ts.map +1 -0
- package/dist/commands/self-update.js +33 -0
- package/dist/commands/self-update.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +4 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/types.d.ts +3 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +62 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +93 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/components.d.ts +5 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +3 -0
- package/dist/components.js.map +1 -0
- package/dist/config.d.ts +10 -51
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +101 -33
- package/dist/config.js.map +1 -1
- package/dist/dev-compose.d.ts +17 -0
- package/dist/dev-compose.d.ts.map +1 -0
- package/dist/dev-compose.js +374 -0
- package/dist/dev-compose.js.map +1 -0
- package/dist/diff-output.d.ts +4 -0
- package/dist/diff-output.d.ts.map +1 -0
- package/dist/diff-output.js +12 -0
- package/dist/diff-output.js.map +1 -0
- package/dist/docker-postgres.d.ts +57 -0
- package/dist/docker-postgres.d.ts.map +1 -0
- package/dist/docker-postgres.js +208 -0
- package/dist/docker-postgres.js.map +1 -0
- package/dist/engine-client.d.ts +69 -0
- package/dist/engine-client.d.ts.map +1 -0
- package/dist/engine-client.js +157 -0
- package/dist/engine-client.js.map +1 -0
- package/dist/ensure-binary.d.ts +7 -0
- package/dist/ensure-binary.d.ts.map +1 -0
- package/dist/ensure-binary.js +17 -0
- package/dist/ensure-binary.js.map +1 -0
- package/dist/functions-router-gen.d.ts +14 -0
- package/dist/functions-router-gen.d.ts.map +1 -0
- package/dist/functions-router-gen.js +199 -0
- package/dist/functions-router-gen.js.map +1 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/kong-config.d.ts +25 -0
- package/dist/kong-config.d.ts.map +1 -0
- package/dist/kong-config.js +71 -0
- package/dist/kong-config.js.map +1 -0
- package/dist/local-gateway.d.ts +7 -0
- package/dist/local-gateway.d.ts.map +1 -0
- package/dist/local-gateway.js +9 -0
- package/dist/local-gateway.js.map +1 -0
- package/dist/local-storage.d.ts +8 -0
- package/dist/local-storage.d.ts.map +1 -0
- package/dist/local-storage.js +14 -0
- package/dist/local-storage.js.map +1 -0
- package/dist/pgbouncer-userlist.d.ts +5 -0
- package/dist/pgbouncer-userlist.d.ts.map +1 -0
- package/dist/pgbouncer-userlist.js +14 -0
- package/dist/pgbouncer-userlist.js.map +1 -0
- package/dist/postgres-ctl.d.ts +44 -0
- package/dist/postgres-ctl.d.ts.map +1 -0
- package/dist/postgres-ctl.js +137 -0
- package/dist/postgres-ctl.js.map +1 -0
- package/dist/process-manager.d.ts +43 -0
- package/dist/process-manager.d.ts.map +1 -0
- package/dist/process-manager.js +135 -0
- package/dist/process-manager.js.map +1 -0
- package/dist/project-config.d.ts +235 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +160 -0
- package/dist/project-config.js.map +1 -0
- package/dist/pull-utils.d.ts +15 -0
- package/dist/pull-utils.d.ts.map +1 -1
- package/dist/pull-utils.js +12 -0
- package/dist/pull-utils.js.map +1 -1
- package/dist/release-pins.d.ts +7 -0
- package/dist/release-pins.d.ts.map +1 -0
- package/dist/release-pins.js +27 -0
- package/dist/release-pins.js.map +1 -0
- package/dist/release-public-key.d.ts +8 -0
- package/dist/release-public-key.d.ts.map +1 -0
- package/dist/release-public-key.js +13 -0
- package/dist/release-public-key.js.map +1 -0
- package/dist/runtime-routes.d.ts +34 -0
- package/dist/runtime-routes.d.ts.map +1 -0
- package/dist/runtime-routes.js +252 -0
- package/dist/runtime-routes.js.map +1 -0
- package/dist/schema-ast-v2.d.ts +127 -0
- package/dist/schema-ast-v2.d.ts.map +1 -0
- package/dist/schema-ast-v2.js +226 -0
- package/dist/schema-ast-v2.js.map +1 -0
- package/dist/scripts/postinstall.d.ts +5 -6
- package/dist/scripts/postinstall.d.ts.map +1 -1
- package/dist/scripts/postinstall.js +36 -20
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/self-host-compose.d.ts +22 -0
- package/dist/self-host-compose.d.ts.map +1 -0
- package/dist/self-host-compose.js +347 -0
- package/dist/self-host-compose.js.map +1 -0
- package/dist/storage-provision.d.ts +24 -0
- package/dist/storage-provision.d.ts.map +1 -0
- package/dist/storage-provision.js +44 -0
- package/dist/storage-provision.js.map +1 -0
- package/dist/studio-admin-roles.d.ts +7 -0
- package/dist/studio-admin-roles.d.ts.map +1 -0
- package/dist/studio-admin-roles.js +14 -0
- package/dist/studio-admin-roles.js.map +1 -0
- package/dist/studio-dev-server.d.ts +22 -0
- package/dist/studio-dev-server.d.ts.map +1 -0
- package/dist/studio-dev-server.js +28 -0
- package/dist/studio-dev-server.js.map +1 -0
- package/dist/systemd.d.ts +26 -0
- package/dist/systemd.d.ts.map +1 -0
- package/dist/systemd.js +102 -0
- package/dist/systemd.js.map +1 -0
- package/dist/tsx-runner.d.ts.map +1 -1
- package/dist/tsx-runner.js +9 -2
- package/dist/tsx-runner.js.map +1 -1
- package/dist/type-extractor.d.ts +4 -0
- package/dist/type-extractor.d.ts.map +1 -0
- package/dist/type-extractor.js +1213 -0
- package/dist/type-extractor.js.map +1 -0
- package/dist/type-resolver.d.ts +33 -0
- package/dist/type-resolver.d.ts.map +1 -0
- package/dist/type-resolver.js +338 -0
- package/dist/type-resolver.js.map +1 -0
- package/package.json +4 -3
- package/releases/deno/VERSION +1 -0
- package/scripts/mirror-deno-release.sh +76 -0
- package/src/TYPE-RESOLUTION.md +294 -0
- package/src/app/proxy-dev-app.ts +67 -0
- package/src/app-config.ts +128 -0
- package/src/augmentation-generator.ts +126 -0
- package/src/binary-cache.ts +822 -0
- package/src/cli.ts +13 -8
- package/src/commands/admin.ts +4 -3
- package/src/commands/app.ts +67 -231
- package/src/commands/cache.ts +117 -0
- package/src/commands/cloud.ts +63 -64
- package/src/commands/db.ts +54 -63
- package/src/commands/deploy.ts +96 -62
- package/src/commands/dev.ts +933 -405
- package/src/commands/diff.ts +31 -29
- package/src/commands/engine.ts +13 -116
- package/src/commands/functions.ts +97 -115
- package/src/commands/generate.ts +23 -10
- package/src/commands/init.ts +149 -414
- package/src/commands/migrate-from-v1.ts +131 -0
- package/src/commands/migrate.ts +27 -23
- package/src/commands/pg.ts +133 -0
- package/src/commands/pull.ts +6 -85
- package/src/commands/push.ts +161 -56
- package/src/commands/seed.ts +54 -12
- package/src/commands/self-host.ts +312 -880
- package/src/commands/self-update.ts +45 -0
- package/src/commands/status.ts +4 -3
- package/src/commands/types.ts +76 -0
- package/src/commands/update.ts +109 -0
- package/src/components.ts +6 -0
- package/src/config.ts +127 -94
- package/src/dev-compose.ts +455 -0
- package/src/diff-output.ts +12 -0
- package/src/docker-postgres.ts +295 -0
- package/src/engine-client.ts +236 -0
- package/src/ensure-binary.ts +28 -0
- package/src/functions-router-gen.ts +224 -0
- package/src/index.ts +4 -12
- package/src/kong-config.ts +93 -0
- package/src/local-gateway.ts +9 -0
- package/src/local-storage.ts +14 -0
- package/src/pgbouncer-userlist.ts +15 -0
- package/src/postgres-ctl.ts +171 -0
- package/src/process-manager.ts +168 -0
- package/src/project-config.ts +386 -0
- package/src/pull-utils.ts +24 -0
- package/src/release-pins.ts +31 -0
- package/src/release-public-key.ts +12 -0
- package/src/runtime-routes.ts +291 -0
- package/src/schema-ast-v2.ts +324 -0
- package/src/scripts/postinstall.ts +36 -25
- package/src/self-host-compose.ts +389 -0
- package/src/storage-provision.ts +58 -0
- package/src/studio-admin-roles.ts +16 -0
- package/src/studio-dev-server.ts +53 -0
- package/src/systemd.ts +137 -0
- package/src/tsx-runner.ts +11 -1
- package/src/type-extractor.ts +1479 -0
- package/src/type-resolver.ts +457 -0
- package/tests/app-command.test.ts +54 -0
- package/tests/augmentation-generator.test.ts +59 -0
- package/tests/binary-cache-cloud-overrides.test.ts +123 -0
- package/tests/cached-artifact-format.test.ts +84 -0
- package/tests/cli-help.test.ts +40 -14
- package/tests/config.test.ts +171 -37
- package/tests/docker-postgres.test.ts +39 -0
- package/tests/engine-distribution.test.ts +3 -3
- package/tests/ensure-binary.test.ts +59 -0
- package/tests/init.test.ts +28 -86
- package/tests/migrate-from-v1.test.ts +29 -0
- package/tests/normalize-admin-config.test.ts +48 -0
- package/tests/pg-spawn-env.test.ts +18 -0
- package/tests/postgres-archive-tag.test.ts +9 -0
- package/tests/proxy-dev-app.test.ts +33 -0
- package/tests/pull-utils.test.ts +36 -1
- package/tests/release-pins.test.ts +28 -0
- package/tests/runtime-contract.test.ts +351 -0
- package/tests/seed-discover.test.ts +31 -0
- package/tests/studio-admin-roles.test.ts +27 -0
- package/tests/tsconfig.json +9 -0
- package/tests/type-extractor.test.ts +985 -0
- package/tests/type-resolver.test.ts +59 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +12 -0
- package/dist/engine/cache.d.ts +0 -37
- package/dist/engine/cache.d.ts.map +0 -1
- package/dist/engine/cache.js +0 -121
- package/dist/engine/cache.js.map +0 -1
- package/dist/engine/download.d.ts +0 -19
- package/dist/engine/download.d.ts.map +0 -1
- package/dist/engine/download.js +0 -108
- package/dist/engine/download.js.map +0 -1
- package/dist/engine/platform.d.ts +0 -24
- package/dist/engine/platform.d.ts.map +0 -1
- package/dist/engine/platform.js +0 -50
- package/dist/engine/platform.js.map +0 -1
- package/dist/engine/resolve.d.ts +0 -37
- package/dist/engine/resolve.d.ts.map +0 -1
- package/dist/engine/resolve.js +0 -133
- package/dist/engine/resolve.js.map +0 -1
- package/dist/engine/update-notify.d.ts +0 -11
- package/dist/engine/update-notify.d.ts.map +0 -1
- package/dist/engine/update-notify.js +0 -43
- package/dist/engine/update-notify.js.map +0 -1
- package/dist/engine/verify.d.ts +0 -50
- package/dist/engine/verify.d.ts.map +0 -1
- package/dist/engine/verify.js +0 -161
- package/dist/engine/verify.js.map +0 -1
- package/dist/engine-version.d.ts +0 -35
- package/dist/engine-version.d.ts.map +0 -1
- package/dist/engine-version.js +0 -35
- package/dist/engine-version.js.map +0 -1
- package/dist/engine.d.ts +0 -34
- package/dist/engine.d.ts.map +0 -1
- package/dist/engine.js +0 -76
- package/dist/engine.js.map +0 -1
- package/src/engine/cache.ts +0 -135
- package/src/engine/download.ts +0 -143
- package/src/engine/platform.ts +0 -66
- package/src/engine/resolve.ts +0 -197
- package/src/engine/update-notify.ts +0 -50
- package/src/engine/verify.ts +0 -206
- package/src/engine-version.ts +0 -39
- package/src/engine.ts +0 -99
package/dist/commands/push.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
1
2
|
import { createInterface } from "node:readline";
|
|
3
|
+
import { join } from "node:path";
|
|
2
4
|
import { loadConfig, loadSchemaAst } from "../config.js";
|
|
3
|
-
import {
|
|
5
|
+
import { connectionString, resolveRuntimeProvider, schemaPathFromProject, serverBaseUrl } from "../project-config.js";
|
|
6
|
+
import { isCloudLinked, pushSchemaToLinkedProject } from "./cloud.js";
|
|
7
|
+
import { ensureEngine, engineRequest } from "../engine-client.js";
|
|
8
|
+
import { printDiffWarnings } from "../diff-output.js";
|
|
9
|
+
import { signJwt } from "../jwt.js";
|
|
10
|
+
import { provisionBuckets } from "../storage-provision.js";
|
|
4
11
|
import { promptFirstAdminUser } from "./admin.js";
|
|
12
|
+
import { withAdminRoles } from "../studio-admin-roles.js";
|
|
13
|
+
const DEV_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
5
14
|
export function registerPush(program) {
|
|
6
15
|
program
|
|
7
16
|
.command("push")
|
|
@@ -10,71 +19,144 @@ export function registerPush(program) {
|
|
|
10
19
|
.option("--connection <url>", "Database connection URL (overrides config)")
|
|
11
20
|
.action(async (opts) => {
|
|
12
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
|
+
}
|
|
13
30
|
const config = loadConfig(cwd);
|
|
14
|
-
|
|
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
|
+
}
|
|
39
|
+
const connection = opts.connection ?? connectionString(config);
|
|
15
40
|
await ensureEngine();
|
|
16
41
|
console.log("Loading schema...");
|
|
17
|
-
const ast = loadSchemaAst(config
|
|
18
|
-
// Validate configured providers before diffing
|
|
42
|
+
const ast = loadSchemaAst(schemaPathFromProject(config, cwd), cwd);
|
|
19
43
|
console.log("Diffing against database...");
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
const diff = JSON.parse(diffResult.stdout);
|
|
44
|
+
const diff = await engineRequest("/diff", {
|
|
45
|
+
ast,
|
|
46
|
+
database_url: connection,
|
|
47
|
+
schema: "public",
|
|
48
|
+
});
|
|
26
49
|
const ops = diff.operations ?? [];
|
|
50
|
+
printDiffWarnings(diff);
|
|
27
51
|
if (ops.length === 0) {
|
|
28
|
-
console.log("Schema
|
|
29
|
-
return;
|
|
52
|
+
console.log("Schema matches the database (no DDL). Syncing Studio metadata...");
|
|
30
53
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
54
|
+
else {
|
|
55
|
+
printDiff(ops);
|
|
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] `);
|
|
59
|
+
if (!confirmed) {
|
|
60
|
+
console.log("Aborted.");
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
38
63
|
}
|
|
39
64
|
}
|
|
40
|
-
console.log("\nApplying migration...");
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
65
|
+
console.log(ops.length > 0 ? "\nApplying migration..." : "\nSyncing with engine...");
|
|
66
|
+
const pushResult = await engineRequest("/push", {
|
|
67
|
+
ast,
|
|
68
|
+
database_url: connection,
|
|
69
|
+
schema: "public",
|
|
70
|
+
force: true,
|
|
71
|
+
});
|
|
72
|
+
if (pushResult.status === "up_to_date") {
|
|
73
|
+
console.log(pushResult.admin_refreshed
|
|
74
|
+
? "Database schema unchanged — Studio metadata synced."
|
|
75
|
+
: "Schema is up to date.");
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.log(pushResult.message ?? "Migration applied.");
|
|
45
79
|
}
|
|
46
|
-
|
|
47
|
-
// After migration, check if this is the first push and offer to create an
|
|
80
|
+
await writeLocalAdminConfig(ast, config);
|
|
81
|
+
// After a DDL migration, check if this is the first push and offer to create an
|
|
48
82
|
// admin user if none exist (Gap Appendices task 48).
|
|
49
|
-
|
|
83
|
+
if (ops.length > 0) {
|
|
84
|
+
await promptFirstAdminUser(connection);
|
|
85
|
+
}
|
|
86
|
+
// Provision storage buckets declared in the schema.
|
|
87
|
+
const baseUrl = serverBaseUrl(config);
|
|
88
|
+
const serviceRoleKey = process.env["SUPATYPE_SERVICE_ROLE_KEY"] ??
|
|
89
|
+
(config.server.mode === "dev"
|
|
90
|
+
? signJwt({ role: "service_role", iss: "supatype", iat: Math.floor(Date.now() / 1000) }, DEV_JWT_SECRET)
|
|
91
|
+
: undefined);
|
|
92
|
+
if (baseUrl && serviceRoleKey) {
|
|
93
|
+
const parsedAst = await engineRequest("/parse", { ast });
|
|
94
|
+
const buckets = (parsedAst.storageBuckets ?? []).map((b) => ({
|
|
95
|
+
id: b.id,
|
|
96
|
+
public: b.public,
|
|
97
|
+
...(b.accessMode !== undefined && { access_mode: b.accessMode }),
|
|
98
|
+
...(b.allowedMimeTypes != null && { allowed_mime_types: b.allowedMimeTypes }),
|
|
99
|
+
...(b.fileSizeLimit != null && { file_size_limit: b.fileSizeLimit }),
|
|
100
|
+
...(b.s3BucketPolicy != null &&
|
|
101
|
+
b.s3BucketPolicy !== "" && { s3_bucket_policy: b.s3BucketPolicy }),
|
|
102
|
+
}));
|
|
103
|
+
if (buckets.length > 0) {
|
|
104
|
+
console.log("Provisioning storage buckets...");
|
|
105
|
+
await provisionBuckets(`${baseUrl}/storage/v1`, serviceRoleKey, buckets);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
50
108
|
if (config.output?.types ?? config.output?.client) {
|
|
51
109
|
console.log("Generating types...");
|
|
52
|
-
const
|
|
110
|
+
const genBody = { ast, lang: "typescript" };
|
|
53
111
|
if (config.output?.types)
|
|
54
|
-
|
|
112
|
+
genBody["types_path"] = config.output.types;
|
|
55
113
|
if (config.output?.client)
|
|
56
|
-
|
|
57
|
-
const genResult =
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
console.log(
|
|
114
|
+
genBody["client_path"] = config.output.client;
|
|
115
|
+
const genResult = await engineRequest("/generate", genBody);
|
|
116
|
+
console.log(genResult.message ?? "Types generated.");
|
|
117
|
+
}
|
|
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.");
|
|
63
124
|
}
|
|
64
|
-
console.log("\nDone.");
|
|
65
125
|
});
|
|
66
126
|
}
|
|
67
127
|
function printDiff(ops) {
|
|
68
128
|
const symbol = {
|
|
69
129
|
safe: "+",
|
|
130
|
+
warn: "~",
|
|
70
131
|
cautious: "~",
|
|
132
|
+
danger: "!",
|
|
71
133
|
destructive: "!",
|
|
72
134
|
};
|
|
73
135
|
console.log(`\n${ops.length} change(s) planned:\n`);
|
|
74
136
|
for (const op of ops) {
|
|
75
|
-
|
|
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}`);
|
|
76
141
|
}
|
|
77
142
|
}
|
|
143
|
+
function formatOperation(op) {
|
|
144
|
+
if (typeof op.description === "string" && op.description.trim().length > 0) {
|
|
145
|
+
return op.description;
|
|
146
|
+
}
|
|
147
|
+
const kind = typeof op.kind === "string" ? op.kind : "operation";
|
|
148
|
+
const raw = op;
|
|
149
|
+
const table = raw["table"];
|
|
150
|
+
const column = raw["column"];
|
|
151
|
+
if (typeof table === "string" && typeof column === "string") {
|
|
152
|
+
return `${kind} ${table}.${column}`;
|
|
153
|
+
}
|
|
154
|
+
if (typeof table === "string") {
|
|
155
|
+
return `${kind} ${table}`;
|
|
156
|
+
}
|
|
157
|
+
// Last resort: show operation kind with compact payload.
|
|
158
|
+
return `${kind} ${JSON.stringify(op)}`;
|
|
159
|
+
}
|
|
78
160
|
async function confirm(prompt) {
|
|
79
161
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
80
162
|
return new Promise((resolve) => {
|
|
@@ -84,4 +166,12 @@ async function confirm(prompt) {
|
|
|
84
166
|
});
|
|
85
167
|
});
|
|
86
168
|
}
|
|
169
|
+
/** Write `.supatype/admin-config.json` for local Studio (same layout as `supatype dev`). */
|
|
170
|
+
async function writeLocalAdminConfig(ast, config) {
|
|
171
|
+
const cwd = process.cwd();
|
|
172
|
+
const dir = join(cwd, ".supatype");
|
|
173
|
+
mkdirSync(dir, { recursive: true });
|
|
174
|
+
const admin = withAdminRoles(await engineRequest("/admin", { ast }), config);
|
|
175
|
+
writeFileSync(join(dir, "admin-config.json"), `${JSON.stringify(admin, null, 2)}\n`);
|
|
176
|
+
}
|
|
87
177
|
//# sourceMappingURL=push.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.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,YAAY,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/seed.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
+
/** Seed entries under `seeds/`, sorted by filename (Phase 10.6 C19). */
|
|
3
|
+
export declare function discoverSeedsDir(cwd: string, seedsDir: string): string[];
|
|
2
4
|
export declare function registerSeed(program: Command): void;
|
|
3
5
|
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUxC,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAKxE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiDnD"}
|
package/dist/commands/seed.js
CHANGED
|
@@ -1,21 +1,54 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
2
|
-
import { resolve } from "node:path";
|
|
1
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { isLinkedToCloudProject } from "../binary-cache.js";
|
|
4
|
+
import { loadConfig } from "../config.js";
|
|
5
|
+
import { projectRootFromConfig } from "../project-config.js";
|
|
3
6
|
import { runTsFile } from "../tsx-runner.js";
|
|
7
|
+
const SEED_EXT = /\.(ts|mts|tsx)$/;
|
|
8
|
+
/** Seed entries under `seeds/`, sorted by filename (Phase 10.6 C19). */
|
|
9
|
+
export function discoverSeedsDir(cwd, seedsDir) {
|
|
10
|
+
if (!existsSync(seedsDir))
|
|
11
|
+
return [];
|
|
12
|
+
const names = readdirSync(seedsDir).filter((n) => SEED_EXT.test(n));
|
|
13
|
+
names.sort((a, b) => a.localeCompare(b));
|
|
14
|
+
return names.map((n) => join(seedsDir, n));
|
|
15
|
+
}
|
|
4
16
|
export function registerSeed(program) {
|
|
5
17
|
program
|
|
6
18
|
.command("seed [file]")
|
|
7
|
-
.description("Run
|
|
8
|
-
.
|
|
19
|
+
.description("Run database seeds: optional single file; else all seeds/*.ts (alphabetical); else seed.ts")
|
|
20
|
+
.option("--force", "Allow running when the project is linked to Supatype Cloud (dangerous)", false)
|
|
21
|
+
.action(async (file, opts) => {
|
|
9
22
|
const cwd = process.cwd();
|
|
10
|
-
const
|
|
11
|
-
if (
|
|
12
|
-
console.error(
|
|
23
|
+
const config = loadConfig(cwd);
|
|
24
|
+
if (isLinkedToCloudProject(cwd, config) && !opts.force) {
|
|
25
|
+
console.error("[supatype] This project is linked to Supatype Cloud. Refusing to run seeds locally.\n" +
|
|
26
|
+
" Pass --force only if you intend to target this linked project (advanced).");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const root = projectRootFromConfig(config, cwd);
|
|
30
|
+
const seedsDir = join(root, "seeds");
|
|
31
|
+
let paths;
|
|
32
|
+
if (file !== undefined && file.trim() !== "") {
|
|
33
|
+
paths = [resolve(cwd, file)];
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
paths = discoverSeedsDir(cwd, seedsDir);
|
|
37
|
+
if (paths.length === 0) {
|
|
38
|
+
paths = [resolve(root, "seed.ts")];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const missing = paths.filter((p) => !existsSync(p));
|
|
42
|
+
if (missing.length > 0) {
|
|
43
|
+
console.error(`Seed file(s) not found:\n ${missing.join("\n ")}`);
|
|
13
44
|
process.exit(1);
|
|
14
45
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
46
|
+
for (const seedFile of paths) {
|
|
47
|
+
console.log(`[supatype] Running ${seedFile}...`);
|
|
48
|
+
const result = runTsFile(seedFile, { cwd, stdio: "inherit" });
|
|
49
|
+
if (result.exitCode !== 0) {
|
|
50
|
+
process.exit(result.exitCode);
|
|
51
|
+
}
|
|
19
52
|
}
|
|
20
53
|
});
|
|
21
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* self-host commands — manage self-hosted deployments.
|
|
3
|
+
*
|
|
4
|
+
* Compose-based commands are the canonical path.
|
|
5
|
+
* Native/systemd commands are kept temporarily for migration compatibility.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from "commander";
|
|
2
8
|
export declare function registerSelfHost(program: Command): void;
|
|
3
9
|
//# sourceMappingURL=self-host.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-host.d.ts","sourceRoot":"","sources":["../../src/commands/self-host.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"self-host.d.ts","sourceRoot":"","sources":["../../src/commands/self-host.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+UvD"}
|