From 88af7d14e310cdb7a2711eef7f1fccc628eb6d23 Mon Sep 17 00:00:00 2001 From: Julian Wielga Date: Tue, 19 Nov 2024 04:41:10 +0100 Subject: [PATCH] feat: pass origin to component --- src/FederatedComponent.tsx | 8 ++++---- src/tools/splitUrl.tsx | 12 ++++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/FederatedComponent.tsx b/src/FederatedComponent.tsx index 0b65514..60f879c 100644 --- a/src/FederatedComponent.tsx +++ b/src/FederatedComponent.tsx @@ -34,16 +34,16 @@ function FederatedComponentRender

, T>( }: FederatedComponentProps

& Pick, ref: React.ForwardedRef, ) { - const [, scopeValue, , , , query] = splitUrl(url as ModuleUrl); + const [, scopeValue, , , , , u] = useMemo(() => splitUrl(url as ModuleUrl), [url]); const params = useMemo(() => { - const searchParams = new URLSearchParams(query); + const searchParams = u.searchParams; return Object.fromEntries(searchParams.entries()) as P; - }, [query]); + }, [u]); return ( - + ); } diff --git a/src/tools/splitUrl.tsx b/src/tools/splitUrl.tsx index 6acf3ae..51cdb3a 100644 --- a/src/tools/splitUrl.tsx +++ b/src/tools/splitUrl.tsx @@ -4,7 +4,7 @@ import { ModuleString, ModuleUrl, PathString, QueryString, ScopeString, ScriptUr * Split FederatedModule url to url and module parts. * @param fullModuleUrl */ -export function splitUrl(fullModuleUrl: ModuleUrl): [ModuleUrl, ModuleString, ScriptUrl, ScopeString, PathString, QueryString] { +export function splitUrl(fullModuleUrl: ModuleUrl): [ModuleUrl, ModuleString, ScriptUrl, ScopeString, PathString, QueryString, URL] { const [module, url] = fullModuleUrl.split("@"); const [scope] = module.split("/"); const path = module.replace(scope, "."); @@ -14,5 +14,13 @@ export function splitUrl(fullModuleUrl: ModuleUrl): [ModuleUrl, ModuleString, Sc throw new Error("invalid remote module url"); } - return [fullModuleUrl, module as ModuleString, script as ScriptUrl, scope as ScopeString, path as PathString, query as QueryString]; + return [ + fullModuleUrl, + module as ModuleString, + script as ScriptUrl, + scope as ScopeString, + path as PathString, + query as QueryString, + new URL(script, window.location.origin), + ]; }