void 0.9.3 → 0.10.2
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/dist/{auth-cmd-CPkWrQR9.mjs → auth-cmd-DLvXvN-0.mjs} +2 -2
- package/dist/{better-auth-shared-CmEQZs1T.d.mts → better-auth-shared-a7H3wk9J.d.mts} +2 -2
- package/dist/{cache-1SVxZ7BK.mjs → cache-CHFZmqa5.mjs} +1 -1
- package/dist/{cancel-deploy-JaFClLr7.mjs → cancel-deploy-BwpT4U4a.mjs} +1 -1
- package/dist/cli/cli.mjs +273 -36
- package/dist/{client-DIfOFf1W.mjs → client-CTHvucDv.mjs} +166 -45
- package/dist/{create-project-DCUrFJxa.mjs → create-project-CruTH_TQ.mjs} +1 -1
- package/dist/{db-UW4IYQFw.mjs → db-BxnfKs7f.mjs} +14 -14
- package/dist/{delete-CYknzwXU.mjs → delete-IQe1O4Re.mjs} +1 -1
- package/dist/{deploy-RQXpVBL-.mjs → deploy-CuxXxVgz.mjs} +195 -89
- package/dist/{domain-B7RntQ1r.mjs → domain-Bq6kzr_T.mjs} +1 -1
- package/dist/{env-C_ZcxxED.mjs → env-BD3U_0Av.mjs} +1 -1
- package/dist/{env-helpers-Bd2wVdxz.d.mts → env-helpers-ZatKyjen.d.mts} +1 -1
- package/dist/{gen-O5mXZ76K.mjs → gen-Dgi4D7GC.mjs} +1 -1
- package/dist/git-metadata-Ce0AtSZL.mjs +82 -0
- package/dist/github-cmd-CD0Z8KCF.mjs +441 -0
- package/dist/{handler-hm9KldPP.d.mts → handler-DczZlaXR.d.mts} +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +18 -18
- package/dist/{init-DGrLx2ls.mjs → init-CTe46nIr.mjs} +113 -77
- package/dist/{link-7MoXUMaI.mjs → link-BGFW4pHD.mjs} +2 -2
- package/dist/{list-N2mCHv8q.mjs → list-CbGxdbe7.mjs} +1 -1
- package/dist/{login-tt1OmNVg.mjs → login-v4wle1vn.mjs} +1 -1
- package/dist/{logs-Cl7q2CjZ.mjs → logs-BFgY5Vqc.mjs} +1 -1
- package/dist/{mcp-BXD35N2J.mjs → mcp-STKL-uWs.mjs} +1 -1
- package/dist/{node-Df8UjQ2H.mjs → node-B07cZs0d.mjs} +3 -3
- package/dist/pages/client.d.mts +1 -1
- package/dist/pages/client.mjs +1 -0
- package/dist/pages/head-client.d.mts +1 -1
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +1 -1
- package/dist/pages/islands-plugin.d.mts +1 -1
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +1 -1
- package/dist/{plugin-inference--7geW5Z2.mjs → plugin-inference-C3fLzFvP.mjs} +2 -0
- package/dist/{prepare-DT-7QII_.mjs → prepare-DH2WnEpD.mjs} +3 -3
- package/dist/{preset-2aBxMfY1.mjs → preset-B7ZQZn0u.mjs} +2 -2
- package/dist/{project-cmd-CLrqSbqj.mjs → project-cmd-DZh-vbEL.mjs} +8 -8
- package/dist/{protocol-B9GZA4Bn.d.mts → protocol-63PHtCHS.d.mts} +3 -3
- package/dist/{rollback-CEbAwbHK.mjs → rollback-o0M0Qo_n.mjs} +1 -1
- package/dist/{runner-DLZ9E_cX.mjs → runner-BQyKUqAL.mjs} +1 -1
- package/dist/runtime/ai.mjs +1 -1
- package/dist/runtime/auth.d.mts +1 -1
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +3 -3
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +2 -2
- package/dist/runtime/client-react.d.mts +2 -2
- package/dist/runtime/client-react.mjs +1 -1
- package/dist/runtime/client-solid.d.mts +2 -2
- package/dist/runtime/client-solid.mjs +1 -1
- package/dist/runtime/client-svelte.d.mts +2 -2
- package/dist/runtime/client-svelte.mjs +1 -1
- package/dist/runtime/client-vue.d.mts +2 -2
- package/dist/runtime/client-vue.mjs +1 -1
- package/dist/runtime/client.d.mts +2 -2
- package/dist/runtime/client.mjs +1 -1
- package/dist/runtime/env-helpers.d.mts +1 -1
- package/dist/runtime/env-public-client.d.mts +1 -1
- package/dist/runtime/env-public.d.mts +2 -2
- package/dist/runtime/env-public.mjs +1 -1
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/fetch-stream.d.mts +1 -1
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.d.mts +1 -1
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +1 -1
- package/dist/runtime/isr.mjs +1 -1
- package/dist/runtime/live.d.mts +2 -2
- package/dist/runtime/live.mjs +1 -1
- package/dist/runtime/migration-handler-pg.mjs +1 -1
- package/dist/runtime/sandbox.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws.d.mts +3 -3
- package/dist/{scan-B2H1Vo2C.mjs → scan-DGEp1-1Q.mjs} +17 -9
- package/dist/{secret-C_uTY7xx.mjs → secret-gs_yyGZL.mjs} +1 -1
- package/package.json +2 -2
- package/schema.json +3 -3
- package/skills/void/docs/guide/deployment.md +26 -11
- package/skills/void/docs/guide/edge/headers.md +10 -3
- package/skills/void/docs/guide/edge/rewrites.md +5 -5
- package/skills/void/docs/reference/cli.md +89 -2
- /package/dist/{auth-migrations-CuQkjjWE.mjs → auth-migrations-BP-hMzYl.mjs} +0 -0
- /package/dist/{auth-CDeb2XAl.d.mts → auth-nEUVHuFI.d.mts} +0 -0
- /package/dist/{better-auth-shared-QAfk8CAS.mjs → better-auth-shared-D0Mbmx5V.mjs} +0 -0
- /package/dist/{defer-CouVukrf.mjs → defer-C-bdSM_b.mjs} +0 -0
- /package/dist/{drizzle-DYstYz0j.mjs → drizzle-DqstQTGq.mjs} +0 -0
- /package/dist/{env-raw-RDkMnSTC.mjs → env-raw-Dtj1UAoK.mjs} +0 -0
- /package/dist/{fetch-error-CimrygMq.d.mts → fetch-error-BQMdPvge.d.mts} +0 -0
- /package/dist/{fetch-error-BFIoojjf.mjs → fetch-error-C6qffTl2.mjs} +0 -0
- /package/dist/{head-BsSTGnIe.d.mts → head-JAH2l3fg.d.mts} +0 -0
- /package/dist/{headers-VkAnACKX.mjs → headers-BNWymgnH.mjs} +0 -0
- /package/dist/{package-json-B2TD0JLu.mjs → package-json-Bg_GJdJB.mjs} +0 -0
- /package/dist/{pg-CMZ_5wsC.mjs → pg-CempqvEJ.mjs} +0 -0
- /package/dist/{providers-3Kkv63Ha.d.mts → providers-BkiAlEad.d.mts} +0 -0
- /package/dist/{runner-pg-Cv9V7ydr.mjs → runner-pg-BAheiT6v.mjs} +0 -0
- /package/dist/{skills-BRKc--As.mjs → skills--OMgLmXW.mjs} +0 -0
- /package/dist/{standard-schema-Dnsh2vnl.d.mts → standard-schema-BCBv-QaP.d.mts} +0 -0
- /package/dist/{subcommand-prompt-OD-x_Tsm.mjs → subcommand-prompt-ClwpLlKD.mjs} +0 -0
- /package/dist/{types-DEWCqHtl.d.mts → types-BnHMXezo.d.mts} +0 -0
- /package/dist/{yarn-pnp-0SwYgQxx.mjs → yarn-pnp-DhCHHLAz.mjs} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { f as getToken, g as removeToken, n as PlatformClient } from "./client-CTHvucDv.mjs";
|
|
2
2
|
import { c as R } from "./dist-abzUneor.mjs";
|
|
3
|
-
import { n as runLoginCommand } from "./login-
|
|
3
|
+
import { n as runLoginCommand } from "./login-v4wle1vn.mjs";
|
|
4
4
|
import { execSync } from "node:child_process";
|
|
5
5
|
//#region src/cli/auth-cmd.ts
|
|
6
6
|
async function runAuthCommand(root, args) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as VoidAuthConfig, n as AuthState } from "./auth-
|
|
2
|
-
import { t as VoidAuthProvider } from "./providers-
|
|
1
|
+
import { i as VoidAuthConfig, n as AuthState } from "./auth-nEUVHuFI.mjs";
|
|
2
|
+
import { t as VoidAuthProvider } from "./providers-BkiAlEad.mjs";
|
|
3
3
|
import { DBFieldAttribute } from "better-auth/db";
|
|
4
4
|
import { BetterAuthOptions, betterAuth } from "better-auth";
|
|
5
5
|
import { Context } from "hono";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as dim, n as cliTitle, r as createSpinner } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { f as getToken, n as PlatformClient } from "./client-CTHvucDv.mjs";
|
|
3
3
|
import { c as R, g as ge, y as ye } from "./dist-abzUneor.mjs";
|
|
4
4
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
5
5
|
import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-D4O1_fZz.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as cliTitle } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { f as getToken, n as PlatformClient } from "./client-CTHvucDv.mjs";
|
|
3
3
|
import { c as R, g as ge, v as ue, x as q, y as ye } from "./dist-abzUneor.mjs";
|
|
4
4
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
5
5
|
//#region src/cli/cancel-deploy.ts
|
package/dist/cli/cli.mjs
CHANGED
|
@@ -282,6 +282,7 @@ function parseDomainArgs(args) {
|
|
|
282
282
|
const rest = args.slice(1);
|
|
283
283
|
for (let i = 0; i < rest.length; i++) if (rest[i] === "--project" && rest[i + 1]) projectSlug = rest[++i];
|
|
284
284
|
else if (rest[i] === "--verbose") verbose = true;
|
|
285
|
+
else if (rest[i].startsWith("-")) throw new Error(`domain: Unknown flag '${rest[i]}'.`);
|
|
285
286
|
else if (!hostname) hostname = rest[i];
|
|
286
287
|
if ((subcommand === "add" || subcommand === "delete" || subcommand === "status") && !hostname) throw new Error(`domain: Usage: void domain ${subcommand} <hostname> [--project <name>].`);
|
|
287
288
|
return {
|
|
@@ -452,10 +453,12 @@ const VALID_METHODS = new Set([
|
|
|
452
453
|
"patch",
|
|
453
454
|
"delete"
|
|
454
455
|
]);
|
|
456
|
+
const NAME_RE = /^[a-z_][a-z0-9_]*$/;
|
|
457
|
+
const NAME_WITH_HYPHENS_RE = /^[a-z_][a-z0-9_-]*$/;
|
|
455
458
|
function parseModelArgs(args) {
|
|
456
459
|
const [name, ...rest] = args;
|
|
457
460
|
if (!name) throw new Error("gen: Usage: void gen model <name> [columns...].");
|
|
458
|
-
if (
|
|
461
|
+
if (!NAME_RE.test(name)) throw new Error("gen: Model name must be lowercase alphanumeric with underscores and no leading digits.");
|
|
459
462
|
const columns = [];
|
|
460
463
|
for (const col of rest) {
|
|
461
464
|
const match = col.match(/^([a-z_][a-z0-9_]*):([a-z]+)(\?)?$/);
|
|
@@ -478,7 +481,7 @@ function parseMigrationArgs(args) {
|
|
|
478
481
|
const [name, extra] = args;
|
|
479
482
|
if (!name) throw new Error("gen: Usage: void gen migration <name>.");
|
|
480
483
|
if (extra) throw new Error(`gen: Unexpected argument '${extra}'.`);
|
|
481
|
-
if (
|
|
484
|
+
if (!NAME_RE.test(name)) throw new Error("gen: Migration name must be lowercase alphanumeric with underscores and no leading digits.");
|
|
482
485
|
return {
|
|
483
486
|
subcommand: "migration",
|
|
484
487
|
name
|
|
@@ -509,6 +512,7 @@ function parseMiddlewareArgs(args) {
|
|
|
509
512
|
const [name, extra] = args;
|
|
510
513
|
if (!name) throw new Error("gen: Usage: void gen middleware <name>.");
|
|
511
514
|
if (extra) throw new Error(`gen: Unexpected argument '${extra}'.`);
|
|
515
|
+
if (!NAME_WITH_HYPHENS_RE.test(name)) throw new Error("gen: Middleware name must be lowercase alphanumeric with underscores or hyphens and no leading digits.");
|
|
512
516
|
return {
|
|
513
517
|
subcommand: "middleware",
|
|
514
518
|
name
|
|
@@ -543,7 +547,7 @@ function parseCronArgs(args) {
|
|
|
543
547
|
const [name, extra] = args;
|
|
544
548
|
if (!name) throw new Error("gen: Usage: void gen cron <name>.");
|
|
545
549
|
if (extra) throw new Error(`gen: Unexpected argument '${extra}'.`);
|
|
546
|
-
if (
|
|
550
|
+
if (!NAME_WITH_HYPHENS_RE.test(name)) throw new Error("gen: Cron name must be lowercase alphanumeric with underscores or hyphens and no leading digits.");
|
|
547
551
|
return {
|
|
548
552
|
subcommand: "cron",
|
|
549
553
|
name
|
|
@@ -553,7 +557,7 @@ function parseQueueArgs(args) {
|
|
|
553
557
|
const [name, extra] = args;
|
|
554
558
|
if (!name) throw new Error("gen: Usage: void gen queue <name>.");
|
|
555
559
|
if (extra) throw new Error(`gen: Unexpected argument '${extra}'.`);
|
|
556
|
-
if (
|
|
560
|
+
if (!NAME_WITH_HYPHENS_RE.test(name)) throw new Error("gen: Queue name must be lowercase alphanumeric with underscores or hyphens and no leading digits.");
|
|
557
561
|
return {
|
|
558
562
|
subcommand: "queue",
|
|
559
563
|
name
|
|
@@ -571,6 +575,130 @@ function parseGenArgs(args) {
|
|
|
571
575
|
throw new Error("gen: Usage: void gen <model|migration|route|middleware|ssr|cron|queue>.");
|
|
572
576
|
}
|
|
573
577
|
//#endregion
|
|
578
|
+
//#region src/cli/github-args.ts
|
|
579
|
+
const githubSubcommands = [
|
|
580
|
+
{
|
|
581
|
+
name: "install",
|
|
582
|
+
description: "Open the GitHub App install page in your browser"
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
name: "installations",
|
|
586
|
+
description: "List your GitHub App installations"
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
name: "connect",
|
|
590
|
+
arg: "[project]",
|
|
591
|
+
description: "Connect a repository to a project for auto-deploy"
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
name: "update",
|
|
595
|
+
arg: "[project]",
|
|
596
|
+
description: "Update an existing connection's branch or build executor"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
name: "link",
|
|
600
|
+
description: "Link your GitHub account to Void"
|
|
601
|
+
}
|
|
602
|
+
];
|
|
603
|
+
function parseGithubArgs(args) {
|
|
604
|
+
const [subcommand, ...rest] = args;
|
|
605
|
+
if (subcommand === "install") {
|
|
606
|
+
if (rest.length > 0) throw new Error(`github: Unexpected argument '${rest[0]}'.`);
|
|
607
|
+
return { subcommand };
|
|
608
|
+
}
|
|
609
|
+
if (subcommand === "installations") {
|
|
610
|
+
if (rest.length > 0) throw new Error(`github: Unexpected argument '${rest[0]}'.`);
|
|
611
|
+
return { subcommand };
|
|
612
|
+
}
|
|
613
|
+
if (subcommand === "link") {
|
|
614
|
+
if (rest.length > 0) throw new Error(`github: Unexpected argument '${rest[0]}'.`);
|
|
615
|
+
return { subcommand };
|
|
616
|
+
}
|
|
617
|
+
if (subcommand === "connect") {
|
|
618
|
+
let projectName = "";
|
|
619
|
+
let installationId;
|
|
620
|
+
let repo;
|
|
621
|
+
let branch;
|
|
622
|
+
let executor;
|
|
623
|
+
for (let i = 0; i < rest.length; i++) {
|
|
624
|
+
const arg = rest[i];
|
|
625
|
+
if (arg === "--installation") {
|
|
626
|
+
if (i + 1 >= rest.length) throw new Error("github: --installation requires a value.");
|
|
627
|
+
const value = rest[++i];
|
|
628
|
+
if (value.trim() === "") throw new Error("github: --installation requires a value.");
|
|
629
|
+
installationId = value;
|
|
630
|
+
} else if (arg === "--repo") {
|
|
631
|
+
if (i + 1 >= rest.length) throw new Error("github: --repo requires a value.");
|
|
632
|
+
const value = rest[++i];
|
|
633
|
+
if (value.trim() === "") throw new Error("github: --repo requires a value.");
|
|
634
|
+
repo = value;
|
|
635
|
+
} else if (arg === "--branch") {
|
|
636
|
+
if (i + 1 >= rest.length) throw new Error("github: --branch requires a value.");
|
|
637
|
+
const value = rest[++i];
|
|
638
|
+
if (value.trim() === "") throw new Error("github: --branch requires a value.");
|
|
639
|
+
branch = value;
|
|
640
|
+
} else if (arg === "--project") {
|
|
641
|
+
if (i + 1 >= rest.length) throw new Error("github: --project requires a value.");
|
|
642
|
+
const value = rest[++i];
|
|
643
|
+
if (value.trim() === "") throw new Error("github: --project requires a value.");
|
|
644
|
+
if (projectName) throw new Error(`github: Unexpected argument '${value}'.`);
|
|
645
|
+
projectName = value;
|
|
646
|
+
} else if (arg === "--executor") {
|
|
647
|
+
if (i + 1 >= rest.length) throw new Error("github: --executor requires a value.");
|
|
648
|
+
const value = rest[++i];
|
|
649
|
+
if (value.trim() === "") throw new Error("github: --executor requires a value.");
|
|
650
|
+
if (value !== "container" && value !== "github_actions") throw new Error("github: invalid --executor (expected container|github_actions).");
|
|
651
|
+
executor = value;
|
|
652
|
+
} else if (arg.startsWith("-")) throw new Error(`github: Unexpected argument '${arg}'.`);
|
|
653
|
+
else if (projectName) throw new Error(`github: Unexpected argument '${arg}'.`);
|
|
654
|
+
else projectName = arg;
|
|
655
|
+
}
|
|
656
|
+
return {
|
|
657
|
+
subcommand,
|
|
658
|
+
projectName,
|
|
659
|
+
installationId,
|
|
660
|
+
repo,
|
|
661
|
+
branch,
|
|
662
|
+
executor
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
if (subcommand === "update") {
|
|
666
|
+
let projectName = "";
|
|
667
|
+
let branch;
|
|
668
|
+
let executor;
|
|
669
|
+
for (let i = 0; i < rest.length; i++) {
|
|
670
|
+
const arg = rest[i];
|
|
671
|
+
if (arg === "--branch") {
|
|
672
|
+
if (i + 1 >= rest.length) throw new Error("github: --branch requires a value.");
|
|
673
|
+
const value = rest[++i];
|
|
674
|
+
if (value.trim() === "") throw new Error("github: --branch requires a value.");
|
|
675
|
+
branch = value.trim();
|
|
676
|
+
} else if (arg === "--project") {
|
|
677
|
+
if (i + 1 >= rest.length) throw new Error("github: --project requires a value.");
|
|
678
|
+
const value = rest[++i];
|
|
679
|
+
if (value.trim() === "") throw new Error("github: --project requires a value.");
|
|
680
|
+
if (projectName) throw new Error(`github: Unexpected argument '${value}'.`);
|
|
681
|
+
projectName = value;
|
|
682
|
+
} else if (arg === "--executor") {
|
|
683
|
+
if (i + 1 >= rest.length) throw new Error("github: --executor requires a value.");
|
|
684
|
+
const value = rest[++i];
|
|
685
|
+
if (value.trim() === "") throw new Error("github: --executor requires a value.");
|
|
686
|
+
if (value !== "container" && value !== "github_actions") throw new Error("github: invalid --executor (expected container|github_actions).");
|
|
687
|
+
executor = value;
|
|
688
|
+
} else if (arg.startsWith("-")) throw new Error(`github: Unexpected argument '${arg}'.`);
|
|
689
|
+
else if (projectName) throw new Error(`github: Unexpected argument '${arg}'.`);
|
|
690
|
+
else projectName = arg;
|
|
691
|
+
}
|
|
692
|
+
return {
|
|
693
|
+
subcommand,
|
|
694
|
+
projectName,
|
|
695
|
+
branch,
|
|
696
|
+
executor
|
|
697
|
+
};
|
|
698
|
+
}
|
|
699
|
+
throw new Error("github: Usage: void github <install|installations|connect|update|link>.");
|
|
700
|
+
}
|
|
701
|
+
//#endregion
|
|
574
702
|
//#region src/cli/ascii.ts
|
|
575
703
|
const asciiArts = [
|
|
576
704
|
`
|
|
@@ -609,16 +737,23 @@ const HELP_TREE = {
|
|
|
609
737
|
},
|
|
610
738
|
{
|
|
611
739
|
command: "--github",
|
|
612
|
-
description: "Only create GitHub Actions workflow"
|
|
740
|
+
description: "Only create the GitHub Actions deploy workflow (OIDC, no stored token)"
|
|
613
741
|
}
|
|
614
742
|
],
|
|
615
|
-
examples: [
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
743
|
+
examples: [
|
|
744
|
+
{
|
|
745
|
+
command: "void init",
|
|
746
|
+
description: "Scaffold or configure the current project"
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
command: "void init --agents",
|
|
750
|
+
description: "Install agent instructions and MCP config"
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
command: "void init --github",
|
|
754
|
+
description: "Scaffold the GitHub Actions deploy workflow"
|
|
755
|
+
}
|
|
756
|
+
]
|
|
622
757
|
},
|
|
623
758
|
deploy: {
|
|
624
759
|
summary: "Build and deploy the current project to Void.",
|
|
@@ -855,6 +990,95 @@ const HELP_TREE = {
|
|
|
855
990
|
}
|
|
856
991
|
}
|
|
857
992
|
},
|
|
993
|
+
github: {
|
|
994
|
+
summary: "Connect a GitHub repository for automatic deploys.",
|
|
995
|
+
usage: ["void github <command>"],
|
|
996
|
+
commands: [
|
|
997
|
+
{
|
|
998
|
+
command: "install",
|
|
999
|
+
description: "Open the GitHub App install page in your browser"
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
command: "installations",
|
|
1003
|
+
description: "List your GitHub App installations"
|
|
1004
|
+
},
|
|
1005
|
+
{
|
|
1006
|
+
command: "connect [project]",
|
|
1007
|
+
description: "Connect a repository to a project for auto-deploy"
|
|
1008
|
+
},
|
|
1009
|
+
{
|
|
1010
|
+
command: "update [project]",
|
|
1011
|
+
description: "Update an existing connection's branch or build executor"
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
command: "link",
|
|
1015
|
+
description: "Link your GitHub account to Void"
|
|
1016
|
+
}
|
|
1017
|
+
],
|
|
1018
|
+
children: {
|
|
1019
|
+
install: basicSubcommand("Open the GitHub App install page in your browser.", "void github install"),
|
|
1020
|
+
installations: basicSubcommand("List your GitHub App installations.", "void github installations"),
|
|
1021
|
+
link: basicSubcommand("Link your GitHub account to Void.", "void github link"),
|
|
1022
|
+
connect: {
|
|
1023
|
+
summary: "Connect a repository to a project for automatic deploys.",
|
|
1024
|
+
usage: ["void github connect [project] [options]"],
|
|
1025
|
+
options: [
|
|
1026
|
+
{
|
|
1027
|
+
command: "--project <name>",
|
|
1028
|
+
description: "Project name (alias for positional)"
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
command: "--installation <id>",
|
|
1032
|
+
description: "GitHub App installation ID"
|
|
1033
|
+
},
|
|
1034
|
+
{
|
|
1035
|
+
command: "--repo <owner/repo>",
|
|
1036
|
+
description: "Repository full name (owner/repo)"
|
|
1037
|
+
},
|
|
1038
|
+
{
|
|
1039
|
+
command: "--branch <name>",
|
|
1040
|
+
description: "Branch to deploy from (required in non-interactive mode)"
|
|
1041
|
+
},
|
|
1042
|
+
{
|
|
1043
|
+
command: "--executor <type>",
|
|
1044
|
+
description: "Build executor: container (default) | github_actions"
|
|
1045
|
+
}
|
|
1046
|
+
],
|
|
1047
|
+
examples: [{
|
|
1048
|
+
command: "void github connect [project]",
|
|
1049
|
+
description: "Connect a repository to a project"
|
|
1050
|
+
}, {
|
|
1051
|
+
command: "void github connect my-app --installation 42 --repo owner/repo --branch main",
|
|
1052
|
+
description: "Non-interactive connect (all flags explicit)"
|
|
1053
|
+
}]
|
|
1054
|
+
},
|
|
1055
|
+
update: {
|
|
1056
|
+
summary: "Update an existing connection's branch or build executor.",
|
|
1057
|
+
usage: ["void github update [project] [options]"],
|
|
1058
|
+
options: [
|
|
1059
|
+
{
|
|
1060
|
+
command: "--project <name>",
|
|
1061
|
+
description: "Project name (alias for positional)"
|
|
1062
|
+
},
|
|
1063
|
+
{
|
|
1064
|
+
command: "--branch <name>",
|
|
1065
|
+
description: "New branch to deploy from"
|
|
1066
|
+
},
|
|
1067
|
+
{
|
|
1068
|
+
command: "--executor <type>",
|
|
1069
|
+
description: "New build executor: container | github_actions"
|
|
1070
|
+
}
|
|
1071
|
+
],
|
|
1072
|
+
examples: [{
|
|
1073
|
+
command: "void github update my-app --executor github_actions",
|
|
1074
|
+
description: "Switch an existing connection to the GitHub Actions executor"
|
|
1075
|
+
}, {
|
|
1076
|
+
command: "void github update my-app --branch release",
|
|
1077
|
+
description: "Change the deploy branch"
|
|
1078
|
+
}]
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
},
|
|
858
1082
|
db: {
|
|
859
1083
|
summary: "Manage local and remote database state.",
|
|
860
1084
|
usage: ["void db <command>"],
|
|
@@ -1161,6 +1385,8 @@ function printGlobalHelp() {
|
|
|
1161
1385
|
"",
|
|
1162
1386
|
...globalCommandGroup("domain"),
|
|
1163
1387
|
"",
|
|
1388
|
+
...globalCommandGroup("github"),
|
|
1389
|
+
"",
|
|
1164
1390
|
categoryTitle("database"),
|
|
1165
1391
|
...globalCommandLines("db", {
|
|
1166
1392
|
execute: "execute <sql>",
|
|
@@ -1344,6 +1570,7 @@ function parseProjectArgs(args) {
|
|
|
1344
1570
|
const [subcommand, ...rest] = args;
|
|
1345
1571
|
if (subcommand === "status") {
|
|
1346
1572
|
const [name, extra] = rest;
|
|
1573
|
+
if (name?.startsWith("-")) throw new Error(`project: Unknown flag '${name}'.`);
|
|
1347
1574
|
if (extra) throw new Error(`project: Unexpected argument '${extra}'.`);
|
|
1348
1575
|
return {
|
|
1349
1576
|
subcommand,
|
|
@@ -1352,6 +1579,7 @@ function parseProjectArgs(args) {
|
|
|
1352
1579
|
}
|
|
1353
1580
|
if (subcommand === "link") {
|
|
1354
1581
|
const [name, extra] = rest;
|
|
1582
|
+
if (name?.startsWith("-")) throw new Error(`project: Unknown flag '${name}'.`);
|
|
1355
1583
|
if (extra) throw new Error(`project: Unexpected argument '${extra}'.`);
|
|
1356
1584
|
return {
|
|
1357
1585
|
subcommand,
|
|
@@ -1385,6 +1613,7 @@ function parseProjectArgs(args) {
|
|
|
1385
1613
|
}
|
|
1386
1614
|
if (subcommand === "rollback") {
|
|
1387
1615
|
const [deployId, extra] = rest;
|
|
1616
|
+
if (deployId?.startsWith("-")) throw new Error(`project: Unknown flag '${deployId}'.`);
|
|
1388
1617
|
if (extra) throw new Error(`project: Unexpected argument '${extra}'.`);
|
|
1389
1618
|
return {
|
|
1390
1619
|
subcommand,
|
|
@@ -1393,6 +1622,7 @@ function parseProjectArgs(args) {
|
|
|
1393
1622
|
}
|
|
1394
1623
|
if (subcommand === "cancel") {
|
|
1395
1624
|
const [deployId, extra] = rest;
|
|
1625
|
+
if (deployId?.startsWith("-")) throw new Error(`project: Unknown flag '${deployId}'.`);
|
|
1396
1626
|
if (extra) throw new Error(`project: Unexpected argument '${extra}'.`);
|
|
1397
1627
|
return {
|
|
1398
1628
|
subcommand,
|
|
@@ -1524,7 +1754,7 @@ async function runSubcommandGroup(command, subcommands, parse, run) {
|
|
|
1524
1754
|
const sub = args[1];
|
|
1525
1755
|
try {
|
|
1526
1756
|
if ((!sub || sub.startsWith("-")) && process.stdin.isTTY) {
|
|
1527
|
-
const { promptSubcommand } = await import("../subcommand-prompt-
|
|
1757
|
+
const { promptSubcommand } = await import("../subcommand-prompt-ClwpLlKD.mjs");
|
|
1528
1758
|
const result = await promptSubcommand(command, subcommands);
|
|
1529
1759
|
if (!result) process.exit(0);
|
|
1530
1760
|
await run(root, parse(buildArgs(result, args.slice(1))));
|
|
@@ -1553,7 +1783,7 @@ else if (command === "deploy") {
|
|
|
1553
1783
|
R.error(err instanceof Error ? err.message : String(err));
|
|
1554
1784
|
process.exit(1);
|
|
1555
1785
|
}
|
|
1556
|
-
import("../deploy-
|
|
1786
|
+
import("../deploy-CuxXxVgz.mjs").then((n) => n.t).then(({ runDeploy }) => {
|
|
1557
1787
|
runDeploy(root, {
|
|
1558
1788
|
projectSlug: deployArgs.projectSlug,
|
|
1559
1789
|
dir: deployArgs.dir,
|
|
@@ -1565,13 +1795,14 @@ else if (command === "deploy") {
|
|
|
1565
1795
|
process.exit(1);
|
|
1566
1796
|
});
|
|
1567
1797
|
});
|
|
1568
|
-
} else if (command === "auth") runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-cmd-
|
|
1569
|
-
else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-
|
|
1570
|
-
else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-
|
|
1571
|
-
else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-
|
|
1572
|
-
else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-
|
|
1573
|
-
else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-
|
|
1574
|
-
else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-
|
|
1798
|
+
} else if (command === "auth") runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-cmd-DLvXvN-0.mjs").then(({ runAuthCommand }) => runAuthCommand(root, parsed)));
|
|
1799
|
+
else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-DZh-vbEL.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed)));
|
|
1800
|
+
else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-gs_yyGZL.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed)));
|
|
1801
|
+
else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-Bq6kzr_T.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed)));
|
|
1802
|
+
else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-BxnfKs7f.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
|
|
1803
|
+
else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-BD3U_0Av.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
|
|
1804
|
+
else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-Dgi4D7GC.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed)));
|
|
1805
|
+
else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-CD0Z8KCF.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
|
|
1575
1806
|
else if (command === "prepare") {
|
|
1576
1807
|
const root = process.cwd();
|
|
1577
1808
|
let prepareArgs;
|
|
@@ -1581,7 +1812,7 @@ else if (command === "prepare") {
|
|
|
1581
1812
|
R.error(err instanceof Error ? err.message : String(err));
|
|
1582
1813
|
process.exit(1);
|
|
1583
1814
|
}
|
|
1584
|
-
import("../prepare-
|
|
1815
|
+
import("../prepare-DH2WnEpD.mjs").then(({ runPrepareCommand }) => {
|
|
1585
1816
|
runPrepareCommand(root, prepareArgs).catch((err) => {
|
|
1586
1817
|
R.error(err.message ?? err);
|
|
1587
1818
|
process.exit(1);
|
|
@@ -1589,7 +1820,7 @@ else if (command === "prepare") {
|
|
|
1589
1820
|
});
|
|
1590
1821
|
} else if (command === "init") {
|
|
1591
1822
|
const root = process.cwd();
|
|
1592
|
-
import("../init-
|
|
1823
|
+
import("../init-CTe46nIr.mjs").then(({ runInitCommand, parseInitArgs }) => {
|
|
1593
1824
|
let initArgs;
|
|
1594
1825
|
try {
|
|
1595
1826
|
initArgs = parseInitArgs(args.slice(1));
|
|
@@ -1602,7 +1833,7 @@ else if (command === "prepare") {
|
|
|
1602
1833
|
process.exit(1);
|
|
1603
1834
|
});
|
|
1604
1835
|
});
|
|
1605
|
-
} else if (command === "mcp") import("../mcp-
|
|
1836
|
+
} else if (command === "mcp") import("../mcp-STKL-uWs.mjs").then(({ runMcp }) => {
|
|
1606
1837
|
runMcp();
|
|
1607
1838
|
});
|
|
1608
1839
|
else if (command === "-v" || command === "--version") {
|
|
@@ -1641,6 +1872,11 @@ else if (command === "-v" || command === "--version") {
|
|
|
1641
1872
|
hint: "add | delete | list | status",
|
|
1642
1873
|
description: "Configure custom domains"
|
|
1643
1874
|
},
|
|
1875
|
+
{
|
|
1876
|
+
name: "github",
|
|
1877
|
+
hint: "install | installations | connect | update | link",
|
|
1878
|
+
description: "Connect a GitHub repository for automatic deploys"
|
|
1879
|
+
},
|
|
1644
1880
|
{
|
|
1645
1881
|
name: "db",
|
|
1646
1882
|
hint: "status | reset | seed | execute | migrate | studio | export | rename-migrations",
|
|
@@ -1671,36 +1907,37 @@ else if (command === "-v" || command === "--version") {
|
|
|
1671
1907
|
];
|
|
1672
1908
|
(async () => {
|
|
1673
1909
|
printVoidHeader();
|
|
1674
|
-
const { promptSubcommand } = await import("../subcommand-prompt-
|
|
1910
|
+
const { promptSubcommand } = await import("../subcommand-prompt-ClwpLlKD.mjs");
|
|
1675
1911
|
const result = await promptSubcommand("", topLevelCommands);
|
|
1676
1912
|
if (!result) process.exit(0);
|
|
1677
1913
|
const cmd = result.subcommand;
|
|
1678
1914
|
const root = process.cwd();
|
|
1679
1915
|
switch (cmd) {
|
|
1680
1916
|
case "init": {
|
|
1681
|
-
const { runInitCommand, parseInitArgs } = await import("../init-
|
|
1917
|
+
const { runInitCommand, parseInitArgs } = await import("../init-CTe46nIr.mjs");
|
|
1682
1918
|
await runInitCommand(root, parseInitArgs([]));
|
|
1683
1919
|
return;
|
|
1684
1920
|
}
|
|
1685
1921
|
case "deploy": {
|
|
1686
|
-
const { runDeploy } = await import("../deploy-
|
|
1922
|
+
const { runDeploy } = await import("../deploy-CuxXxVgz.mjs").then((n) => n.t);
|
|
1687
1923
|
await runDeploy(root);
|
|
1688
1924
|
return;
|
|
1689
1925
|
}
|
|
1690
1926
|
case "mcp": {
|
|
1691
|
-
const { runMcp } = await import("../mcp-
|
|
1927
|
+
const { runMcp } = await import("../mcp-STKL-uWs.mjs");
|
|
1692
1928
|
runMcp();
|
|
1693
1929
|
return;
|
|
1694
1930
|
}
|
|
1695
|
-
case "auth": return runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (r, p) => import("../auth-cmd-
|
|
1696
|
-
case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-
|
|
1697
|
-
case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-
|
|
1698
|
-
case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-
|
|
1699
|
-
case "
|
|
1700
|
-
case "
|
|
1701
|
-
case "
|
|
1931
|
+
case "auth": return runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (r, p) => import("../auth-cmd-DLvXvN-0.mjs").then(({ runAuthCommand }) => runAuthCommand(r, p)));
|
|
1932
|
+
case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-DZh-vbEL.mjs").then(({ runProjectCommand }) => runProjectCommand(r, p)));
|
|
1933
|
+
case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-gs_yyGZL.mjs").then(({ runSecretCommand }) => runSecretCommand(r, p)));
|
|
1934
|
+
case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-Bq6kzr_T.mjs").then(({ runDomainCommand }) => runDomainCommand(r, p)));
|
|
1935
|
+
case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-CD0Z8KCF.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
|
|
1936
|
+
case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-BxnfKs7f.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
|
|
1937
|
+
case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-BD3U_0Av.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
|
|
1938
|
+
case "gen": return runSubcommandGroup("gen", genSubcommands, parseGenArgs, (r, p) => import("../gen-Dgi4D7GC.mjs").then(({ runGenCommand }) => runGenCommand(r, p)));
|
|
1702
1939
|
case "prepare": {
|
|
1703
|
-
const { runPrepareCommand } = await import("../prepare-
|
|
1940
|
+
const { runPrepareCommand } = await import("../prepare-DH2WnEpD.mjs");
|
|
1704
1941
|
await runPrepareCommand(root, parsePrepareArgs([]));
|
|
1705
1942
|
return;
|
|
1706
1943
|
}
|