diff --git a/packages/api-client/src/index.ts b/packages/api-client/src/index.ts index e675904fc1..091c1a05c7 100644 --- a/packages/api-client/src/index.ts +++ b/packages/api-client/src/index.ts @@ -43,6 +43,7 @@ export { XHRUploadClient } from './platform/xhr-upload-client' export { clearNodeAuthState, nodeAuthState, setNodeAuthState } from './state/node-auth' export * from './types' export { withJWTRetry } from './utils/jwt-retry' +export { getNodeWebSocketUrl } from './utils/node-url' export { type ParsedSseEvent, type ParsedSseItem, diff --git a/packages/api-client/src/utils/node-url.ts b/packages/api-client/src/utils/node-url.ts index 834250e4ad..2bea1274b8 100644 --- a/packages/api-client/src/utils/node-url.ts +++ b/packages/api-client/src/utils/node-url.ts @@ -1,6 +1,8 @@ const NODE_FS_PATH_REGEX = /\/modrinth\/v\d+\/fs\/?$/ const HTTP_SCHEME_REGEX = /^https?:\/\//i const WS_SCHEME_REGEX = /^wss?:\/\//i +const HTTP_SECURE_SCHEME_REGEX = /^https:\/\//i +const HTTP_INSECURE_SCHEME_REGEX = /^http:\/\//i export function getNodeBaseUrl(url: string): string { const baseUrl = url.replace(NODE_FS_PATH_REGEX, '') @@ -8,5 +10,9 @@ export function getNodeBaseUrl(url: string): string { } export function getNodeWebSocketUrl(url: string): string { - return WS_SCHEME_REGEX.test(url) ? url : `wss://${url}` + if (WS_SCHEME_REGEX.test(url)) return url + if (HTTP_SECURE_SCHEME_REGEX.test(url)) return url.replace(HTTP_SECURE_SCHEME_REGEX, 'wss://') + if (HTTP_INSECURE_SCHEME_REGEX.test(url)) return url.replace(HTTP_INSECURE_SCHEME_REGEX, 'ws://') + + return `wss://${url}` } diff --git a/packages/ui/src/layouts/wrapped/hosting/manage/root.vue b/packages/ui/src/layouts/wrapped/hosting/manage/root.vue index 281d2f90e9..92f908ea63 100644 --- a/packages/ui/src/layouts/wrapped/hosting/manage/root.vue +++ b/packages/ui/src/layouts/wrapped/hosting/manage/root.vue @@ -344,7 +344,7 @@