void 0.10.1 → 0.10.3
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-DBnbrX9Y.mjs → auth-cmd-CblKzAdD.mjs} +2 -2
- package/dist/{better-auth-shared-a7H3wk9J.d.mts → better-auth-shared-jkksALri.d.mts} +2 -2
- package/dist/build-cmd-CJQSRupz.mjs +140 -0
- package/dist/{cache-DNX0hLsO.mjs → cache-CMzjhxHh.mjs} +1 -1
- package/dist/{cancel-deploy-CDzkVaYZ.mjs → cancel-deploy-S2N8NSv6.mjs} +1 -1
- package/dist/cli/cli.mjs +208 -29
- package/dist/{client-D4awzTnj.mjs → client-YIzxv2ZO.mjs} +30 -1
- package/dist/{create-project-CGodxfzH.mjs → create-project-pLQdzEPe.mjs} +1 -1
- package/dist/{db-ERzz4oly.mjs → db-hAmBumot.mjs} +3 -3
- package/dist/{delete-CJZGDLBR.mjs → delete-CfSe3EJO.mjs} +1 -1
- package/dist/{deploy-Cwa5sooV.mjs → deploy-DpOdwtla.mjs} +138 -4
- package/dist/{domain-WvoAHE6w.mjs → domain-CkowysQx.mjs} +1 -1
- package/dist/{env-Cx4czPsR.mjs → env-CIwG2y7G.mjs} +1 -1
- package/dist/{env-helpers-ZatKyjen.d.mts → env-helpers-B_ks681T.d.mts} +1 -1
- package/dist/{gen-Dgi4D7GC.mjs → gen-q6McxXgE.mjs} +1 -1
- package/dist/{github-cmd-CUB041gj.mjs → github-cmd-D3L0f93X.mjs} +147 -3
- package/dist/{handler-DczZlaXR.d.mts → handler-B7rCOy21.d.mts} +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +5 -5
- package/dist/{init-DvaRDMIc.mjs → init-CZP69LJu.mjs} +13 -22
- package/dist/{link-CpbWJY3P.mjs → link-BKLElphS.mjs} +2 -2
- package/dist/{list-BkwE5vH4.mjs → list-B7qXBBjo.mjs} +1 -1
- package/dist/{login-Ca6mhQVI.mjs → login-B3l_sDwT.mjs} +1 -1
- package/dist/{logs-ArQzZquo.mjs → logs-AXm660MB.mjs} +1 -1
- package/dist/{mcp-Cc2MMXdQ.mjs → mcp-D2plINxM.mjs} +1 -1
- package/dist/pages/client.d.mts +1 -1
- 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/islands-plugin.d.mts +1 -1
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/{project-cmd-CWZeawuN.mjs → project-cmd-InegJruy.mjs} +8 -8
- package/dist/{protocol-63PHtCHS.d.mts → protocol-6UZCowS1.d.mts} +3 -3
- package/dist/{rollback-BJ60ktsW.mjs → rollback-CHVE-DeT.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.d.mts +1 -1
- package/dist/runtime/client-react.d.mts +2 -2
- package/dist/runtime/client-solid.d.mts +2 -2
- package/dist/runtime/client-svelte.d.mts +2 -2
- package/dist/runtime/client-vue.d.mts +2 -2
- package/dist/runtime/client.d.mts +2 -2
- 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/fetch-stream.d.mts +1 -1
- package/dist/runtime/fetch.d.mts +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/live.d.mts +2 -2
- 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/{secret-BRbXyu7E.mjs → secret-CVKwIOm3.mjs} +1 -1
- package/package.json +2 -2
- package/skills/void/docs/guide/deployment.md +1 -12
- package/skills/void/docs/guide/pages-routing/markdown.md +12 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +2 -1
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-footnote/README.md +135 -0
- package/skills/void/docs/reference/cli.md +71 -8
- /package/dist/{auth-nEUVHuFI.d.mts → auth-Dz2CCn4T.d.mts} +0 -0
- /package/dist/{fetch-error-BQMdPvge.d.mts → fetch-error-B6RaJ-eZ.d.mts} +0 -0
- /package/dist/{head-JAH2l3fg.d.mts → head-eOUCWUNy.d.mts} +0 -0
- /package/dist/{prepare-DH2WnEpD.mjs → prepare-DRRboRqH.mjs} +0 -0
- /package/dist/{providers-BkiAlEad.d.mts → providers-BJIoduK9.d.mts} +0 -0
- /package/dist/{runner-pg-BAheiT6v.mjs → runner-pg-EuhrFW3D.mjs} +0 -0
- /package/dist/{skills--OMgLmXW.mjs → skills-Dl3u05da.mjs} +0 -0
- /package/dist/{standard-schema-BCBv-QaP.d.mts → standard-schema-Cy0lfeWv.d.mts} +0 -0
- /package/dist/{subcommand-prompt-ClwpLlKD.mjs → subcommand-prompt-B8ng0FTS.mjs} +0 -0
- /package/dist/{types-BnHMXezo.d.mts → types-BodZGegX.d.mts} +0 -0
- /package/dist/{yarn-pnp-DhCHHLAz.mjs → yarn-pnp-WLW2IHUY.mjs} +0 -0
|
@@ -3,7 +3,8 @@ import { a as join, c as resolve, i as isAbsolute, n as dirname, r as extname, s
|
|
|
3
3
|
import { n as cliTitle, r as createSpinner, s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
4
4
|
import { i as resolveProjectPaths, n as readProjectPaths } from "./project-paths-CCMrHYQm.mjs";
|
|
5
5
|
import { t as findVoidAuthConfig } from "./config-hhMYPVRT.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { t as cfAccessHeaders } from "./cf-access-DKDsgwOU.mjs";
|
|
7
|
+
import { a as isExpiredTokenError, f as getToken, i as isCliOutdatedError, m as isStagingMode, n as PlatformClient, o as parsePlatformErrorBody, p as getTokenSource, t as PlatformApiError, u as getApiUrl, y as ensureCloudflaredToken } from "./client-YIzxv2ZO.mjs";
|
|
7
8
|
import { c as R, g as ge, u as Se, v as ue, x as q, y as ye } from "./dist-abzUneor.mjs";
|
|
8
9
|
import { a as writeProjectConfig, r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
9
10
|
import { c as getDatabaseDialect, f as readConfig, l as isNodeTarget, p as resolveBindingNames } from "./config-8dLIngKW.mjs";
|
|
@@ -19,11 +20,11 @@ import { n as buildMigrationPlanBundle } from "./plan-aD3wRDqF.mjs";
|
|
|
19
20
|
import { r as validateMigrations, t as assertJournalCoherence } from "./validate-CNWm-PsL.mjs";
|
|
20
21
|
import { t as scanPages } from "./scan-VCAM1oh3.mjs";
|
|
21
22
|
import { n as STAGING_PROXY_URL, t as DEFAULT_PROXY_URL } from "./proxy-M3pxItg2.mjs";
|
|
22
|
-
import { i as promptProjectSetupAction, n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-
|
|
23
|
+
import { i as promptProjectSetupAction, n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-pLQdzEPe.mjs";
|
|
23
24
|
import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-D4O1_fZz.mjs";
|
|
24
25
|
import { t as collectGitDeployMetadata } from "./git-metadata-Ce0AtSZL.mjs";
|
|
25
26
|
import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-BNWymgnH.mjs";
|
|
26
|
-
import { t as promptForLoginToken } from "./login-
|
|
27
|
+
import { t as promptForLoginToken } from "./login-B3l_sDwT.mjs";
|
|
27
28
|
import { i as resolveProjectCommand, n as detectPreset, r as formatProjectCommand, t as FRAMEWORK_PRESETS } from "./preset-B7ZQZn0u.mjs";
|
|
28
29
|
import { createRequire } from "node:module";
|
|
29
30
|
import { copyFileSync, cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
|
|
@@ -1168,6 +1169,129 @@ function sleep(ms) {
|
|
|
1168
1169
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
1169
1170
|
}
|
|
1170
1171
|
//#endregion
|
|
1172
|
+
//#region src/cli/github-oidc.ts
|
|
1173
|
+
/**
|
|
1174
|
+
* GitHub Actions OIDC → Void deploy-token exchange.
|
|
1175
|
+
*
|
|
1176
|
+
* When `void deploy` runs inside GitHub Actions with no explicit `VOID_TOKEN`,
|
|
1177
|
+
* the CLI mints a short-lived GitHub OIDC token (audience `void`) and exchanges
|
|
1178
|
+
* it at `POST $VOID_API_URL/auth/github-oidc` for a short-lived, project-scoped
|
|
1179
|
+
* Void deploy token. Doing the exchange in-process lets the scaffolded workflow
|
|
1180
|
+
* collapse to a single `void deploy` step — no curl/jq token-exchange step.
|
|
1181
|
+
*
|
|
1182
|
+
* Server contract (platform `POST /auth/github-oidc` handler):
|
|
1183
|
+
* request { oidcToken: string, project: string } (project = slug)
|
|
1184
|
+
* response { token: string, projectId, buildId }
|
|
1185
|
+
*/
|
|
1186
|
+
const OIDC_AUDIENCE = "void";
|
|
1187
|
+
/**
|
|
1188
|
+
* True when the process is running inside GitHub Actions with the OIDC token
|
|
1189
|
+
* request endpoint available — i.e. the workflow granted
|
|
1190
|
+
* `permissions: id-token: write`, so GitHub injected the request URL + token.
|
|
1191
|
+
*/
|
|
1192
|
+
function isGithubActionsOidcAvailable(env = process.env) {
|
|
1193
|
+
return env.GITHUB_ACTIONS === "true" && typeof env.ACTIONS_ID_TOKEN_REQUEST_URL === "string" && env.ACTIONS_ID_TOKEN_REQUEST_URL.length > 0 && typeof env.ACTIONS_ID_TOKEN_REQUEST_TOKEN === "string" && env.ACTIONS_ID_TOKEN_REQUEST_TOKEN.length > 0;
|
|
1194
|
+
}
|
|
1195
|
+
/**
|
|
1196
|
+
* Mint a GitHub Actions OIDC token (audience `void`) and exchange it for a
|
|
1197
|
+
* short-lived, project-scoped Void deploy token.
|
|
1198
|
+
*
|
|
1199
|
+
* Two hops:
|
|
1200
|
+
* 1. GET $ACTIONS_ID_TOKEN_REQUEST_URL&audience=void (Bearer request token)
|
|
1201
|
+
* → `.value` is the OIDC JWT.
|
|
1202
|
+
* 2. POST $apiUrl/auth/github-oidc { oidcToken, project }
|
|
1203
|
+
* → `.token` is the Void deploy token.
|
|
1204
|
+
*
|
|
1205
|
+
* Throws a clear, actionable error (including the HTTP status and server error
|
|
1206
|
+
* body when available) on any non-OK response or missing field.
|
|
1207
|
+
*/
|
|
1208
|
+
async function exchangeGithubOidcForDeployToken(apiUrl, project, env = process.env) {
|
|
1209
|
+
const requestUrl = env.ACTIONS_ID_TOKEN_REQUEST_URL;
|
|
1210
|
+
const requestToken = env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;
|
|
1211
|
+
if (!requestUrl || !requestToken) throw new Error("github-oidc: GitHub Actions OIDC is unavailable (missing ACTIONS_ID_TOKEN_REQUEST_URL/TOKEN). Ensure the workflow grants `permissions: id-token: write`.");
|
|
1212
|
+
return exchangeOidcTokenAtApi(apiUrl, project, await requestGithubOidcToken(requestUrl, requestToken));
|
|
1213
|
+
}
|
|
1214
|
+
/**
|
|
1215
|
+
* GET the GitHub Actions OIDC token for audience `void`. GitHub's request URL
|
|
1216
|
+
* already carries a query string, so `audience` is appended alongside it.
|
|
1217
|
+
*/
|
|
1218
|
+
async function requestGithubOidcToken(requestUrl, requestToken) {
|
|
1219
|
+
const url = new URL(requestUrl);
|
|
1220
|
+
url.searchParams.set("audience", OIDC_AUDIENCE);
|
|
1221
|
+
let res;
|
|
1222
|
+
try {
|
|
1223
|
+
res = await fetch(url, { headers: { Authorization: `Bearer ${requestToken}` } });
|
|
1224
|
+
} catch (err) {
|
|
1225
|
+
throw new Error(`github-oidc: Failed to reach the GitHub OIDC token endpoint: ${errText(err)}`);
|
|
1226
|
+
}
|
|
1227
|
+
if (!res.ok) {
|
|
1228
|
+
const body = await safeText(res);
|
|
1229
|
+
throw new Error(`github-oidc: Failed to mint a GitHub OIDC token (${res.status})${body ? `: ${body}` : ""}.`);
|
|
1230
|
+
}
|
|
1231
|
+
let body;
|
|
1232
|
+
try {
|
|
1233
|
+
body = await res.json();
|
|
1234
|
+
} catch {
|
|
1235
|
+
throw new Error("github-oidc: GitHub OIDC token endpoint returned an invalid response.");
|
|
1236
|
+
}
|
|
1237
|
+
const value = body?.value;
|
|
1238
|
+
if (typeof value !== "string" || value.length === 0) throw new Error("github-oidc: GitHub OIDC token endpoint did not return a token value.");
|
|
1239
|
+
return value;
|
|
1240
|
+
}
|
|
1241
|
+
/** POST the OIDC JWT to the Void API and return the minted deploy token. */
|
|
1242
|
+
async function exchangeOidcTokenAtApi(apiUrl, project, oidcToken) {
|
|
1243
|
+
const url = `${apiUrl.endsWith("/") ? apiUrl.slice(0, -1) : apiUrl}/auth/github-oidc`;
|
|
1244
|
+
ensureCloudflaredToken(apiUrl);
|
|
1245
|
+
let res;
|
|
1246
|
+
try {
|
|
1247
|
+
res = await fetch(url, {
|
|
1248
|
+
method: "POST",
|
|
1249
|
+
headers: {
|
|
1250
|
+
"Content-Type": "application/json",
|
|
1251
|
+
...cfAccessHeaders(process.env)
|
|
1252
|
+
},
|
|
1253
|
+
body: JSON.stringify({
|
|
1254
|
+
oidcToken,
|
|
1255
|
+
project
|
|
1256
|
+
})
|
|
1257
|
+
});
|
|
1258
|
+
} catch (err) {
|
|
1259
|
+
throw new Error(`github-oidc: Failed to reach ${url}: ${errText(err)}`);
|
|
1260
|
+
}
|
|
1261
|
+
if (!res.ok) {
|
|
1262
|
+
const body = await safeText(res);
|
|
1263
|
+
throw new Error(`github-oidc: OIDC token exchange failed (${res.status})${body ? `: ${body}` : ""}. Confirm the repository is connected to project "${project}" with the github_actions executor.`);
|
|
1264
|
+
}
|
|
1265
|
+
let body;
|
|
1266
|
+
try {
|
|
1267
|
+
body = await res.json();
|
|
1268
|
+
} catch {
|
|
1269
|
+
throw new Error("github-oidc: OIDC token exchange returned an invalid response.");
|
|
1270
|
+
}
|
|
1271
|
+
const token = body?.token;
|
|
1272
|
+
if (typeof token !== "string" || token.length === 0) throw new Error("github-oidc: OIDC token exchange did not return a deploy token.");
|
|
1273
|
+
return token;
|
|
1274
|
+
}
|
|
1275
|
+
/**
|
|
1276
|
+
* Emit a GitHub Actions `::add-mask::` workflow command so `value` is redacted
|
|
1277
|
+
* from workflow logs. No-op when not running inside GitHub Actions. GitHub reads
|
|
1278
|
+
* workflow commands from stdout.
|
|
1279
|
+
*/
|
|
1280
|
+
function maskGithubActionsSecret(value, env = process.env) {
|
|
1281
|
+
if (env.GITHUB_ACTIONS !== "true" || !value) return;
|
|
1282
|
+
process.stdout.write(`::add-mask::${value}\n`);
|
|
1283
|
+
}
|
|
1284
|
+
function errText(err) {
|
|
1285
|
+
return err instanceof Error ? err.message : String(err);
|
|
1286
|
+
}
|
|
1287
|
+
async function safeText(res) {
|
|
1288
|
+
try {
|
|
1289
|
+
return (await res.text()).trim();
|
|
1290
|
+
} catch {
|
|
1291
|
+
return "";
|
|
1292
|
+
}
|
|
1293
|
+
}
|
|
1294
|
+
//#endregion
|
|
1171
1295
|
//#region src/cli/log-file.ts
|
|
1172
1296
|
/**
|
|
1173
1297
|
* Walk `err.cause` up to 6 levels and return a plain JSON-friendly chain.
|
|
@@ -2377,7 +2501,17 @@ function buildEnv(extra) {
|
|
|
2377
2501
|
async function runDeployInner(root, options, cliLog) {
|
|
2378
2502
|
let reauthenticated = false;
|
|
2379
2503
|
while (true) try {
|
|
2380
|
-
|
|
2504
|
+
let token = process.env.VOID_TOKEN ?? null;
|
|
2505
|
+
if (!token && isGithubActionsOidcAvailable()) {
|
|
2506
|
+
const slug = getRequestedProjectSlug(options) ?? readProjectConfig(root)?.slug;
|
|
2507
|
+
if (!slug) throw new Error("deploy: running in GitHub Actions but the project is unknown — pass --project <slug> or link the project.");
|
|
2508
|
+
cliLog.info("github_oidc_exchange_start", { slug });
|
|
2509
|
+
token = await exchangeGithubOidcForDeployToken(getApiUrl(root), slug);
|
|
2510
|
+
maskGithubActionsSecret(token);
|
|
2511
|
+
process.env.VOID_TOKEN = token;
|
|
2512
|
+
cliLog.info("github_oidc_exchange_success", { slug });
|
|
2513
|
+
}
|
|
2514
|
+
token ??= getToken(root);
|
|
2381
2515
|
if (!token) {
|
|
2382
2516
|
R.error("No auth token found. Run `void auth login` first.");
|
|
2383
2517
|
process.exit(1);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { f as getToken, n as PlatformClient } from "./client-YIzxv2ZO.mjs";
|
|
3
3
|
import { c as R, u as Se } from "./dist-abzUneor.mjs";
|
|
4
4
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
5
5
|
//#region src/cli/domain.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as join } from "./pathe.M-eThtNZ-BrPhGF_K.mjs";
|
|
2
2
|
import { n as cliTitle } from "./output-DeiS4oEX.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { f as getToken, n as PlatformClient } from "./client-YIzxv2ZO.mjs";
|
|
4
4
|
import { c as R, g as ge, u as Se, y as ye } from "./dist-abzUneor.mjs";
|
|
5
5
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
6
6
|
import { r as generateEnvTypes, t as findEnvFile } from "./env-types-CaJaIRXU.mjs";
|
|
@@ -7,7 +7,7 @@ import { c as getDatabaseDialect, f as readConfig } from "./config-8dLIngKW.mjs"
|
|
|
7
7
|
import { n as writeDrizzleConfig } from "./config--wXmVOoe.mjs";
|
|
8
8
|
import { r as readJournal, t as collectMigrations } from "./collect-9rO3JFNM.mjs";
|
|
9
9
|
import { n as listDrizzleArtifacts, t as assertJournalCoherence } from "./validate-CNWm-PsL.mjs";
|
|
10
|
-
import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-
|
|
10
|
+
import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-WLW2IHUY.mjs";
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
13
13
|
import { spawnSync } from "node:child_process";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import { c as createCodeChallenge,
|
|
2
|
+
import { c as createCodeChallenge, f as getToken, h as openBrowser, l as createCodeVerifier, n as PlatformClient, o as parsePlatformErrorBody, s as awaitBrowserCallback, t as PlatformApiError } from "./client-YIzxv2ZO.mjs";
|
|
3
3
|
import { _ as me, c as R, i as Ee, l as Re, x as q } 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";
|
|
@@ -22,6 +22,18 @@ function describeConnectError(status, errorCode) {
|
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
+
* Like {@link describeConnectError}, but for `void github update`. The update
|
|
26
|
+
* flow starts from an EXISTING connection, so a 404 "connection not found"
|
|
27
|
+
* (the project has no GitHub connection, or it was disconnected between the
|
|
28
|
+
* read and the write) is the common case and gets a "connect first" message.
|
|
29
|
+
* Everything else defers to the shared connect mapping.
|
|
30
|
+
*/
|
|
31
|
+
function describeUpdateError(status, errorCode) {
|
|
32
|
+
const code = errorCode ?? "";
|
|
33
|
+
if (status === 404 && code.includes("connection not found")) return "This project is not connected to a GitHub repository. Run `void github connect` first.";
|
|
34
|
+
return describeConnectError(status, code);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
25
37
|
* Extract `owner/repo` from a `https://github.com/owner/repo(.git)?` URL.
|
|
26
38
|
* Returns null for non-GitHub URLs or null input.
|
|
27
39
|
*/
|
|
@@ -61,6 +73,7 @@ async function runGithubCommand(root, args) {
|
|
|
61
73
|
case "install": return runInstall(root, client);
|
|
62
74
|
case "installations": return runInstallations(client);
|
|
63
75
|
case "connect": return runConnect(root, client, args);
|
|
76
|
+
case "update": return runGithubUpdate(root, client, args);
|
|
64
77
|
case "link": return runGithubLink(root, client);
|
|
65
78
|
}
|
|
66
79
|
}
|
|
@@ -282,12 +295,14 @@ async function runConnect(root, client, args) {
|
|
|
282
295
|
branch = input.trim() || branchDefault;
|
|
283
296
|
}
|
|
284
297
|
const executor = args.executor ?? "container";
|
|
298
|
+
let connection;
|
|
285
299
|
try {
|
|
286
|
-
await client.connectGithub(projectId, {
|
|
300
|
+
connection = await client.connectGithub(projectId, {
|
|
287
301
|
installationId: installation.installation_id,
|
|
288
302
|
repoFullName,
|
|
289
303
|
branch,
|
|
290
|
-
buildExecutor: executor
|
|
304
|
+
buildExecutor: executor,
|
|
305
|
+
workflowPath: args.workflowPath
|
|
291
306
|
});
|
|
292
307
|
} catch (err) {
|
|
293
308
|
if (err instanceof PlatformApiError) {
|
|
@@ -302,7 +317,136 @@ async function runConnect(root, client, args) {
|
|
|
302
317
|
}
|
|
303
318
|
throw err;
|
|
304
319
|
}
|
|
320
|
+
if (args.workflowPath !== void 0 && connection.workflow_path !== args.workflowPath) {
|
|
321
|
+
R.error(`connect: server did not apply --workflow ${args.workflowPath} (got ${connection.workflow_path ?? "none"}). The platform may be too old to support a custom workflow path.`);
|
|
322
|
+
process.exit(1);
|
|
323
|
+
}
|
|
305
324
|
R.success(`Connected ${repoFullName} (${branch}) → project. Push to ${branch} to deploy.`);
|
|
306
325
|
}
|
|
326
|
+
async function runGithubUpdate(root, client, args) {
|
|
327
|
+
const isTTY = process.stdin.isTTY === true;
|
|
328
|
+
if (!isTTY && args.branch === void 0 && args.executor === void 0 && args.workflowPath === void 0) {
|
|
329
|
+
R.error("update: Nothing to update. Pass --branch <name>, --executor <container|github_actions>, and/or --workflow <.github/workflows/...>.");
|
|
330
|
+
process.exit(1);
|
|
331
|
+
}
|
|
332
|
+
let projectId;
|
|
333
|
+
const requestedSlug = getRequestedProjectSlug({ projectSlug: args.projectName || void 0 });
|
|
334
|
+
if (requestedSlug) {
|
|
335
|
+
const resolved = resolveProjectBySlug(await client.listProjects(), requestedSlug);
|
|
336
|
+
if (!resolved) {
|
|
337
|
+
R.error(`update: No project found with slug '${requestedSlug}'.`);
|
|
338
|
+
process.exit(1);
|
|
339
|
+
}
|
|
340
|
+
projectId = resolved.projectId;
|
|
341
|
+
} else {
|
|
342
|
+
const linked = readProjectConfig(root);
|
|
343
|
+
if (linked) projectId = linked.projectId;
|
|
344
|
+
else if (!isTTY) {
|
|
345
|
+
R.error("update: No project specified. Pass a project name or --project <name>, set VOID_PROJECT, or link one with `void project link`.");
|
|
346
|
+
process.exit(1);
|
|
347
|
+
} else {
|
|
348
|
+
const projects = await client.listProjects();
|
|
349
|
+
if (projects.length === 0) {
|
|
350
|
+
R.error("No projects found. Create one first with `void deploy`.");
|
|
351
|
+
process.exit(1);
|
|
352
|
+
}
|
|
353
|
+
const picked = await Ee({
|
|
354
|
+
message: "Select a project:",
|
|
355
|
+
options: projects.map((p) => ({
|
|
356
|
+
value: p.id,
|
|
357
|
+
label: p.slug
|
|
358
|
+
}))
|
|
359
|
+
});
|
|
360
|
+
if (q(picked)) {
|
|
361
|
+
me("Cancelled.");
|
|
362
|
+
process.exit(0);
|
|
363
|
+
}
|
|
364
|
+
projectId = picked;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
let current;
|
|
368
|
+
try {
|
|
369
|
+
current = await client.getGithubConnection(projectId);
|
|
370
|
+
} catch (err) {
|
|
371
|
+
if (err instanceof PlatformApiError) {
|
|
372
|
+
const body = parsePlatformErrorBody(err.body);
|
|
373
|
+
const code = body?.error ?? body?.message ?? "";
|
|
374
|
+
const message = describeUpdateError(err.status, code);
|
|
375
|
+
if (message !== null) {
|
|
376
|
+
R.error(`update: ${message}`);
|
|
377
|
+
process.exit(1);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
throw err;
|
|
381
|
+
}
|
|
382
|
+
let branch;
|
|
383
|
+
let executor;
|
|
384
|
+
if (isTTY) {
|
|
385
|
+
if (args.branch !== void 0) branch = args.branch;
|
|
386
|
+
else {
|
|
387
|
+
const input = await Re({
|
|
388
|
+
message: "Branch to deploy from:",
|
|
389
|
+
placeholder: current.branch,
|
|
390
|
+
initialValue: current.branch
|
|
391
|
+
});
|
|
392
|
+
if (q(input)) {
|
|
393
|
+
me("Cancelled.");
|
|
394
|
+
process.exit(0);
|
|
395
|
+
}
|
|
396
|
+
branch = input.trim() || current.branch;
|
|
397
|
+
}
|
|
398
|
+
if (args.executor !== void 0) executor = args.executor;
|
|
399
|
+
else {
|
|
400
|
+
const picked = await Ee({
|
|
401
|
+
message: "Build executor:",
|
|
402
|
+
options: [{
|
|
403
|
+
value: "container",
|
|
404
|
+
label: "container"
|
|
405
|
+
}, {
|
|
406
|
+
value: "github_actions",
|
|
407
|
+
label: "github_actions"
|
|
408
|
+
}],
|
|
409
|
+
initialValue: current.build_executor
|
|
410
|
+
});
|
|
411
|
+
if (q(picked)) {
|
|
412
|
+
me("Cancelled.");
|
|
413
|
+
process.exit(0);
|
|
414
|
+
}
|
|
415
|
+
executor = picked;
|
|
416
|
+
}
|
|
417
|
+
} else {
|
|
418
|
+
branch = args.branch ?? current.branch;
|
|
419
|
+
executor = args.executor ?? current.build_executor;
|
|
420
|
+
}
|
|
421
|
+
const patch = {};
|
|
422
|
+
if (branch !== current.branch) patch.branch = branch;
|
|
423
|
+
if (executor !== current.build_executor) patch.buildExecutor = executor;
|
|
424
|
+
if (args.workflowPath !== void 0 && args.workflowPath !== current.workflow_path) patch.workflowPath = args.workflowPath;
|
|
425
|
+
if (patch.branch === void 0 && patch.buildExecutor === void 0 && patch.workflowPath === void 0) {
|
|
426
|
+
R.info(`No changes. ${current.repo_full_name} already deploys from ${current.branch} via ${current.build_executor}.`);
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
let updated;
|
|
430
|
+
try {
|
|
431
|
+
updated = await client.updateGithubConnection(projectId, patch);
|
|
432
|
+
} catch (err) {
|
|
433
|
+
if (err instanceof PlatformApiError) {
|
|
434
|
+
const body = parsePlatformErrorBody(err.body);
|
|
435
|
+
const code = body?.error ?? body?.message ?? "";
|
|
436
|
+
const message = describeUpdateError(err.status, code);
|
|
437
|
+
if (message !== null) {
|
|
438
|
+
R.error(`update: ${message}`);
|
|
439
|
+
process.exit(1);
|
|
440
|
+
}
|
|
441
|
+
throw err;
|
|
442
|
+
}
|
|
443
|
+
throw err;
|
|
444
|
+
}
|
|
445
|
+
if (patch.workflowPath !== void 0 && updated.workflow_path !== patch.workflowPath) {
|
|
446
|
+
R.error(`update: server did not apply --workflow ${patch.workflowPath} (got ${updated.workflow_path ?? "none"}). The platform may be too old to support a custom workflow path.`);
|
|
447
|
+
process.exit(1);
|
|
448
|
+
}
|
|
449
|
+
R.success(`Updated ${updated.repo_full_name} → branch ${updated.branch}, executor ${updated.build_executor}, workflow ${updated.workflow_path}.`);
|
|
450
|
+
}
|
|
307
451
|
//#endregion
|
|
308
452
|
export { runGithubCommand };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as HeadDescriptor } from "./head-
|
|
2
|
-
import { r as AuthUser, t as AuthSession } from "./auth-
|
|
3
|
-
import { t as StandardSchemaV1 } from "./standard-schema-
|
|
1
|
+
import { n as HeadDescriptor } from "./head-eOUCWUNy.mjs";
|
|
2
|
+
import { r as AuthUser, t as AuthSession } from "./auth-Dz2CCn4T.mjs";
|
|
3
|
+
import { t as StandardSchemaV1 } from "./standard-schema-Cy0lfeWv.mjs";
|
|
4
4
|
import * as _$_cloudflare_sandbox0 from "@cloudflare/sandbox";
|
|
5
5
|
import { Context, Env, MiddlewareHandler } from "hono";
|
|
6
6
|
import { RewriteDestination } from "void/routes";
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as HeadDescriptor } from "./head-
|
|
2
|
-
import { r as AuthUser } from "./auth-
|
|
3
|
-
import { C as defer, E as ValidatorSlots, S as InferProps, T as HandlerInput, _ as defineQueue, a as CloudEnv, b as Deferred, c as QueueRetryOptions, d as TypedQueueHandler, f as VoidAssetRewriteError, g as defineMiddleware, h as defineHead, i as CloudContextVariables, l as RenderAssetTags, m as defineHandler, o as QueueBatch, p as basicAuth, r as CloudContext, s as QueueMessage, t as BasicAuthOptions, u as TypedHandler, v as defineRender, x as DeferredState, y as defineScheduled } from "./handler-
|
|
1
|
+
import { n as HeadDescriptor } from "./head-eOUCWUNy.mjs";
|
|
2
|
+
import { r as AuthUser } from "./auth-Dz2CCn4T.mjs";
|
|
3
|
+
import { C as defer, E as ValidatorSlots, S as InferProps, T as HandlerInput, _ as defineQueue, a as CloudEnv, b as Deferred, c as QueueRetryOptions, d as TypedQueueHandler, f as VoidAssetRewriteError, g as defineMiddleware, h as defineHead, i as CloudContextVariables, l as RenderAssetTags, m as defineHandler, o as QueueBatch, p as basicAuth, r as CloudContext, s as QueueMessage, t as BasicAuthOptions, u as TypedHandler, v as defineRender, x as DeferredState, y as defineScheduled } from "./handler-B7rCOy21.mjs";
|
|
4
4
|
import { QueueMap } from "./runtime/queues.mjs";
|
|
5
5
|
import { PluginConfig } from "@cloudflare/vite-plugin";
|
|
6
6
|
import { Plugin } from "vite";
|
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as __toESM } from "./chunk-DJd-R1mw.mjs";
|
|
2
2
|
import { a as join, n as dirname, s as relative } from "./pathe.M-eThtNZ-BrPhGF_K.mjs";
|
|
3
3
|
import { u as require_picocolors } from "./output-DeiS4oEX.mjs";
|
|
4
|
-
import { C as hasApiRoutes, S as resolveSandboxConfig, T as resolveAssetRoutingPolicy, _ as readWranglerCompat, a as prerenderPagesNode, b as SANDBOX_MIGRATION_TAG, c as stripInternalEnvKeys, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as readExistingLiveBindingConfig, h as normalizeWranglerCompatibilityFlags, i as prerenderPages, l as LIVE_MIGRATION_TAG, m as nextDurableObjectMigrationTag, n as resolveDistDir, o as filterLoadedEnv, p as hasDurableObjectSqliteMigration, r as resolveWorkerDirName, s as resolveRemoteMode, u as ensureWranglerCompat, v as resolveLiveBindingConfig, w as hasDocumentRoutes, x as isSandboxEnabled, y as syncWranglerBindings } from "./deploy-
|
|
4
|
+
import { C as hasApiRoutes, S as resolveSandboxConfig, T as resolveAssetRoutingPolicy, _ as readWranglerCompat, a as prerenderPagesNode, b as SANDBOX_MIGRATION_TAG, c as stripInternalEnvKeys, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as readExistingLiveBindingConfig, h as normalizeWranglerCompatibilityFlags, i as prerenderPages, l as LIVE_MIGRATION_TAG, m as nextDurableObjectMigrationTag, n as resolveDistDir, o as filterLoadedEnv, p as hasDurableObjectSqliteMigration, r as resolveWorkerDirName, s as resolveRemoteMode, u as ensureWranglerCompat, v as resolveLiveBindingConfig, w as hasDocumentRoutes, x as isSandboxEnabled, y as syncWranglerBindings } from "./deploy-DpOdwtla.mjs";
|
|
5
5
|
import { i as resolveProjectPaths, n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-CCMrHYQm.mjs";
|
|
6
6
|
import { n as loadVoidAuthConfig, t as findVoidAuthConfig } from "./config-hhMYPVRT.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { f as getToken, m as isStagingMode } from "./client-YIzxv2ZO.mjs";
|
|
8
8
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
9
9
|
import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-BTNuNoJ0.mjs";
|
|
10
10
|
import { c as getDatabaseDialect, f as readConfig, l as isNodeTarget, p as resolveBindingNames } from "./config-8dLIngKW.mjs";
|
|
@@ -1654,7 +1654,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
|
|
|
1654
1654
|
else warn();
|
|
1655
1655
|
return;
|
|
1656
1656
|
}
|
|
1657
|
-
const { runPgMigrations, getPgAppliedMigrations } = await import("./runner-pg-
|
|
1657
|
+
const { runPgMigrations, getPgAppliedMigrations } = await import("./runner-pg-EuhrFW3D.mjs");
|
|
1658
1658
|
const { collectMigrations } = await import("./collect-9rO3JFNM.mjs").then((n) => n.n);
|
|
1659
1659
|
const { validateMigrations } = await import("./validate-CNWm-PsL.mjs").then((n) => n.i);
|
|
1660
1660
|
const allMigrations = collectMigrations(migrationsDir);
|
|
@@ -4916,7 +4916,7 @@ const STAGING_API_URL = "https://api.staging.void.cloud";
|
|
|
4916
4916
|
*/
|
|
4917
4917
|
async function runAiSetupPrompt(root, token, staging, server) {
|
|
4918
4918
|
const { select, text, isCancel, log } = await import("./dist-abzUneor.mjs").then((n) => n.p);
|
|
4919
|
-
const { PlatformClient } = await import("./client-
|
|
4919
|
+
const { PlatformClient } = await import("./client-YIzxv2ZO.mjs").then((n) => n.r);
|
|
4920
4920
|
const { writeProjectConfig } = await import("./project-CH9pdo16.mjs").then((n) => n.n);
|
|
4921
4921
|
const { inferDefaultSlug } = await import("./resolve-project-D4O1_fZz.mjs").then((n) => n.i);
|
|
4922
4922
|
const client = new PlatformClient(token, staging ? STAGING_API_URL : DEFAULT_API_URL);
|
|
@@ -4945,7 +4945,7 @@ async function runAiSetupPrompt(root, token, staging, server) {
|
|
|
4945
4945
|
let slug;
|
|
4946
4946
|
if (result === "__create__") {
|
|
4947
4947
|
const { validateProjectSlug } = await import("./project-slug-rX3kTOfY.mjs").then((n) => n.t);
|
|
4948
|
-
const { createProjectWithSlugRetry } = await import("./create-project-
|
|
4948
|
+
const { createProjectWithSlugRetry } = await import("./create-project-pLQdzEPe.mjs").then((n) => n.t);
|
|
4949
4949
|
let created;
|
|
4950
4950
|
try {
|
|
4951
4951
|
created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as join, c as resolve, i as isAbsolute, n as dirname, s as relative, t as basename } from "./pathe.M-eThtNZ-BrPhGF_K.mjs";
|
|
2
2
|
import { n as cliTitle } from "./output-DeiS4oEX.mjs";
|
|
3
3
|
import { n as readProjectPaths } from "./project-paths-CCMrHYQm.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { f as getToken, m as isStagingMode, n as PlatformClient } from "./client-YIzxv2ZO.mjs";
|
|
5
5
|
import { _ as me, c as R, g as ge, i as Ee, l as Re, u as Se, v as ue, x as q, y as ye } from "./dist-abzUneor.mjs";
|
|
6
6
|
import { a as writeProjectConfig, r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
7
7
|
import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-BTNuNoJ0.mjs";
|
|
@@ -11,10 +11,10 @@ import { r as parseDotenvFile, t as expandDotenv } from "./dotenv-lS94ymhM.mjs";
|
|
|
11
11
|
import { t as MagicString } from "./magic-string.es-C1Fb0uxq.mjs";
|
|
12
12
|
import { n as writeDrizzleConfig } from "./config--wXmVOoe.mjs";
|
|
13
13
|
import { n as getAgentById, r as getPackageDir, t as detectAgents } from "./agents-MhSzNMiC.mjs";
|
|
14
|
-
import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-
|
|
15
|
-
import { t as promptForLoginToken } from "./login-
|
|
14
|
+
import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-pLQdzEPe.mjs";
|
|
15
|
+
import { t as promptForLoginToken } from "./login-B3l_sDwT.mjs";
|
|
16
16
|
import { r as formatProjectCommand } from "./preset-B7ZQZn0u.mjs";
|
|
17
|
-
import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-
|
|
17
|
+
import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-WLW2IHUY.mjs";
|
|
18
18
|
import { createRequire } from "node:module";
|
|
19
19
|
import { existsSync, mkdirSync, readFileSync, readdirSync, rmdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
20
20
|
import { fileURLToPath } from "node:url";
|
|
@@ -1805,10 +1805,12 @@ function getWorkflowSetupSteps(root, pm) {
|
|
|
1805
1805
|
}
|
|
1806
1806
|
/**
|
|
1807
1807
|
* Scaffold the GitHub Actions workflow that deploys via GitHub OIDC — no
|
|
1808
|
-
* long-lived secret stored in the repo.
|
|
1809
|
-
*
|
|
1810
|
-
* for a short-lived
|
|
1811
|
-
*
|
|
1808
|
+
* long-lived secret stored in the repo. `void deploy` itself detects GitHub
|
|
1809
|
+
* Actions, mints an OIDC token (audience `void`), exchanges it at
|
|
1810
|
+
* `POST $VOID_API_URL/auth/github-oidc` for a short-lived, project-scoped deploy
|
|
1811
|
+
* token, and uses it — so the workflow is a single `void deploy` step (no
|
|
1812
|
+
* curl/jq). `permissions: id-token: write` is still required: it is what lets
|
|
1813
|
+
* the job (and thus the CLI) mint the OIDC token.
|
|
1812
1814
|
*
|
|
1813
1815
|
* `slug` is the linked project slug when known (from `.void/project.json`);
|
|
1814
1816
|
* otherwise a `${{ vars.VOID_PROJECT }}` placeholder is emitted with a comment
|
|
@@ -1830,8 +1832,8 @@ concurrency:
|
|
|
1830
1832
|
cancel-in-progress: true
|
|
1831
1833
|
|
|
1832
1834
|
# id-token: write lets the job mint a GitHub OIDC token. No long-lived
|
|
1833
|
-
# VOID_TOKEN secret is stored —
|
|
1834
|
-
# short-lived, project-scoped deploy token at deploy time.
|
|
1835
|
+
# VOID_TOKEN secret is stored — \`void deploy\` mints that OIDC token and
|
|
1836
|
+
# exchanges it for a short-lived, project-scoped deploy token at deploy time.
|
|
1835
1837
|
permissions:
|
|
1836
1838
|
id-token: write
|
|
1837
1839
|
contents: read
|
|
@@ -1850,17 +1852,6 @@ jobs:
|
|
|
1850
1852
|
- uses: actions/checkout@v6
|
|
1851
1853
|
${setup}
|
|
1852
1854
|
${install}
|
|
1853
|
-
- name: Exchange GitHub OIDC token for a Void deploy token
|
|
1854
|
-
run: |
|
|
1855
|
-
OIDC_TOKEN="$(curl -sf \\
|
|
1856
|
-
-H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \\
|
|
1857
|
-
"$ACTIONS_ID_TOKEN_REQUEST_URL&audience=void" | jq -r '.value')"
|
|
1858
|
-
VOID_TOKEN="$(curl -sf \\
|
|
1859
|
-
-H 'Content-Type: application/json' \\
|
|
1860
|
-
-d "$(jq -n --arg t "$OIDC_TOKEN" --arg p "$VOID_PROJECT" '{oidcToken: $t, project: $p}')" \\
|
|
1861
|
-
"$VOID_API_URL/auth/github-oidc" | jq -r '.token')"
|
|
1862
|
-
echo "::add-mask::$VOID_TOKEN"
|
|
1863
|
-
echo "VOID_TOKEN=$VOID_TOKEN" >> "$GITHUB_ENV"
|
|
1864
1855
|
- name: Deploy
|
|
1865
1856
|
run: ${runner} deploy --project "$VOID_PROJECT"
|
|
1866
1857
|
`;
|
|
@@ -2807,7 +2798,7 @@ async function runInitCommand(root, initArgs) {
|
|
|
2807
2798
|
const agentSetup = await resolveAgentSetup(root);
|
|
2808
2799
|
injectAgentBlock(root, agentSetup.instructionFilePath);
|
|
2809
2800
|
if (agentSetup.agents.length > 0) {
|
|
2810
|
-
const { linkSkillsForSpecificAgents } = await import("./skills
|
|
2801
|
+
const { linkSkillsForSpecificAgents } = await import("./skills-Dl3u05da.mjs");
|
|
2811
2802
|
linkSkillsForSpecificAgents(root, agentSetup.agents);
|
|
2812
2803
|
} else R.info("Skills linking skipped for generic agent setup");
|
|
2813
2804
|
setupMcpConfig(root, agentSetup.agents);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as cliTitle, s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import { d as
|
|
2
|
+
import { d as getSiteDomain, f as getToken, n as PlatformClient } from "./client-YIzxv2ZO.mjs";
|
|
3
3
|
import { _ as me, c as R, g as ge, y as ye } from "./dist-abzUneor.mjs";
|
|
4
4
|
import { a as writeProjectConfig, r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
5
|
-
import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-
|
|
5
|
+
import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-pLQdzEPe.mjs";
|
|
6
6
|
import { r as resolveProjectBySlug } from "./resolve-project-D4O1_fZz.mjs";
|
|
7
7
|
//#region src/cli/link.ts
|
|
8
8
|
async function runLink(root, slug) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as ensureUtc, i as dim, l as tablePrefix, n as cliTitle, s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { f as getToken, n as PlatformClient } from "./client-YIzxv2ZO.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 } from "./resolve-project-D4O1_fZz.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as cliTitle, r as createSpinner, s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import { _ as
|
|
2
|
+
import { _ as runLogin, a as isExpiredTokenError, f as getToken, g as removeToken, m as isStagingMode, n as PlatformClient, p as getTokenSource, v as saveToken } from "./client-YIzxv2ZO.mjs";
|
|
3
3
|
import { _ as me, c as R, g as ge, i as Ee, x as q, y as ye } from "./dist-abzUneor.mjs";
|
|
4
4
|
//#region src/cli/login.ts
|
|
5
5
|
async function promptForLoginToken(root = process.cwd()) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as dim, n as cliTitle, s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { f as getToken, n as PlatformClient } from "./client-YIzxv2ZO.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
|
//#region src/cli/logs.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as join, n as dirname } from "./pathe.M-eThtNZ-BrPhGF_K.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { f as getToken, n as PlatformClient } from "./client-YIzxv2ZO.mjs";
|
|
3
3
|
import { a as writeProjectConfig } from "./project-CH9pdo16.mjs";
|
|
4
4
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
package/dist/pages/client.d.mts
CHANGED
package/dist/pages/head.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-
|
|
1
|
+
import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-eOUCWUNy.mjs";
|
|
2
2
|
export { HeadConfig, HeadDescriptor, renderBodyAttrs, renderHeadToString, renderHtmlAttrs, resolveHead };
|
package/dist/pages/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-
|
|
2
|
-
import { i as PageDefinition, n as LayoutDefinition, o as PageScanResult, r as NamedLayoutDefinition } from "../types-
|
|
1
|
+
import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-eOUCWUNy.mjs";
|
|
2
|
+
import { i as PageDefinition, n as LayoutDefinition, o as PageScanResult, r as NamedLayoutDefinition } from "../types-BodZGegX.mjs";
|
|
3
3
|
import { serializePageData } from "./serialize.mjs";
|
|
4
4
|
import { RewriteDestination } from "void/routes";
|
|
5
5
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { w as ValidationError } from "../handler-
|
|
2
|
-
import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-
|
|
1
|
+
import { w as ValidationError } from "../handler-B7rCOy21.mjs";
|
|
2
|
+
import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-6UZCowS1.mjs";
|
|
3
3
|
export { PageObject, PageRenderResult, ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
|