blob: ee011f25e9166a86ebac89b8818acf88f785baa6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
module App = {
[@react.component]
let make = (~promise) => {
React.Experimental.use(promise);
};
};
external readable_stream: Webapi.ReadableStream.t =
"window.srr_stream.readable_stream";
[@mel.module "react"]
external startTransition: (unit => unit) => unit = "startTransition";
try({
let promise =
ReactServerDOMEsbuild.createFromReadableStream(readable_stream);
let document: option(Webapi.Dom.Element.t) = [%mel.raw "window.document"];
switch (document) {
| Some(elem) =>
startTransition(() => {
let app = <App promise />;
let _ = ReactDOM.Client.hydrateRoot(elem, app);
();
})
| None => Js.log("No root element found")
};
}) {
| exn =>
switch (Js.Exn.asJsExn(exn)) {
| Some(error) =>
Js.log2("Error type:", Js.Exn.name(error));
Js.log2("Stack:", Js.Exn.stack(error));
Js.log2("Full error:", error);
| None =>
Js.log("No JavaScript exception, got:");
Js.log(exn);
}
};
|