From 84a4c468bb334dc8b75a6e47e4efc3093fa9db1f Mon Sep 17 00:00:00 2001 From: Ciro Spaciari Date: Fri, 29 Aug 2025 17:28:59 -0700 Subject: [PATCH] fix parseurlForAdapter --- src/js/internal/sql/shared.ts | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/js/internal/sql/shared.ts b/src/js/internal/sql/shared.ts index 83edc09a84..5d4a889766 100644 --- a/src/js/internal/sql/shared.ts +++ b/src/js/internal/sql/shared.ts @@ -532,6 +532,21 @@ function handleSQLiteOptions( return parseSQLiteOptionsWithQueryParams(sqliteOptions, inputUrl); } +function defaultProtocolForAdapter(adapter: Bun.SQL.__internal.Adapter) { + switch (adapter) { + case "mariadb": + case "mysql2": + case "mysql": + return "mysql://"; + case "sqlite": + return "sqlite://"; + case "postgres": + case "postgresql": + default: + return "postgres://"; + } +} + function parseUrlForAdapter(urlString: string, adapter: Bun.SQL.__internal.Adapter): URL { if (urlString.startsWith("unix://")) { // Handle unix:// URLs specially @@ -549,8 +564,12 @@ function parseUrlForAdapter(urlString: string, adapter: Bun.SQL.__internal.Adapt } // Add default protocol for the adapter - const defaultProtocol = adapter === "mysql" ? "mysql://" : "postgres://"; - return new URL(defaultProtocol + urlString); + const defaultProtocol = defaultProtocolForAdapter(adapter); + try { + return new URL(defaultProtocol + urlString); + } catch (error) { + return new URL(encodeURI(defaultProtocol + urlString)); + } } function validateAdapterProtocolMatch(