Build a fully-qualified URL from a path and optional query parameters.
The base URL is validated and decomposed via the WHATWG URL parser rather
than blindly concatenated, so a scheme-only base (https:) or one carrying
a query string (https://host/?x=1) is rejected with a clear,
base-url-specific error instead of silently producing a malformed URL — e.g.
promoting an internal path segment to the hostname, or emitting a double-?.
The base's own path prefix (such as the static bucket's
/app-prod-static.warnwetter.de) is preserved.
Build a fully-qualified URL from a path and optional query parameters.
The base URL is validated and decomposed via the WHATWG URL parser rather than blindly concatenated, so a scheme-only base (
https:) or one carrying a query string (https://host/?x=1) is rejected with a clear, base-url-specific error instead of silently producing a malformed URL — e.g. promoting an internal path segment to the hostname, or emitting a double-?. The base's own path prefix (such as the static bucket's/app-prod-static.warnwetter.de) is preserved.