diff --git a/.changeset/many-radios-taste.md b/.changeset/many-radios-taste.md new file mode 100644 index 0000000..70db4b6 --- /dev/null +++ b/.changeset/many-radios-taste.md @@ -0,0 +1,5 @@ +--- +"rescript-relay-router": patch +--- + +fix code preloading diff --git a/packages/rescript-relay-router/src/RelayRouter__AssetPreloader.res b/packages/rescript-relay-router/src/RelayRouter__AssetPreloader.res index d5bb6ce..d620f7a 100644 --- a/packages/rescript-relay-router/src/RelayRouter__AssetPreloader.res +++ b/packages/rescript-relay-router/src/RelayRouter__AssetPreloader.res @@ -1,41 +1,5 @@ -@val -external appendToHead: Dom.element => unit = "document.head.appendChild" - -@val @scope("document") -external createLinkElement: (@as("link") _, unit) => Dom.element = "createElement" - -@set -external setHref: (Dom.element, string) => unit = "href" - -@set -external setRel: (Dom.element, [#modulepreload | #preload]) => unit = "rel" - -@set -external setAs: (Dom.element, [#image | #style]) => unit = "as" - -@live -let preloadAssetViaLinkTag = asset => { - let element = createLinkElement() - - switch asset { - | RelayRouter__Types.Component({chunk}) => - element->setHref(chunk) - element->setRel(#modulepreload) - | Image({url}) => - element->setHref(url) - element->setRel(#preload) - element->setAs(#image) - | Style({url}) => - element->setHref(url) - element->setRel(#preload) - element->setAs(#style) - } - - appendToHead(element) -} - type preparedAssetsMap = Js.Dict.t -let makeClientAssetPreloader = preparedAssetsMap => (~priority, asset) => { +let makeClientAssetPreloader = preparedAssetsMap => (~priority as _, asset) => { let assetIdentifier = switch asset { | RelayRouter__Types.Component({chunk}) => "component:" ++ chunk | Image({url}) => "image:" ++ url @@ -47,9 +11,8 @@ let makeClientAssetPreloader = preparedAssetsMap => (~priority, asset) => { () | None => preparedAssetsMap->Js.Dict.set(assetIdentifier, true) - switch (asset, priority) { - | (Component(_), RelayRouter__Types.Default | Low) => preloadAssetViaLinkTag(asset) - | (Component({load}), High) => load() + switch asset { + | Component({load}) => load() | _ => // Unimplemented () }