Answer stability round 1: 0 🔴, 4 🟡 (0 misread); the driver decides what parses so a multi-host DSN still works, and the nine-key test shrinks to four

This commit is contained in:
2026-10-31 13:56:46 +01:00
parent b8686377c9
commit 8ffbb0b70d
7 changed files with 25 additions and 26 deletions
+11 -1
View File
@@ -16,10 +16,20 @@ export interface ProvisionResult {
provisioned: string[];
}
// The driver's error for a DSN it can't parse carries the whole string (`input`) — password included —
// so it is swallowed here. The driver, not `new URL`, decides what parses: it takes a multi-host DSN.
function connect(adminUrl: string): ReturnType<typeof postgres> {
try {
return postgres(adminUrl, { connect_timeout: 10, max: 1 });
} catch {
throw new Error("PLUGIN_DB_ADMIN_URL must be a Postgres URL (its value is not shown; percent-encode special characters in a password)");
}
}
export async function provisionStorage(options: ProvisionOptions): Promise<ProvisionResult> {
// Notices are left to surface: a REVOKE the account cannot perform only *warns*, and silencing
// that would mean reporting a locked-down database that is still open to PUBLIC.
const sql = postgres(options.adminUrl, { connect_timeout: 10, max: 1 });
const sql = connect(options.adminUrl);
try {
const provisioned: string[] = [];
for (const pluginId of options.pluginIds) {