1 | import React from "react"
|
2 | import ReactDOM from "react-dom"
|
3 | import domReady from "@mikaelkristiansson/domready"
|
4 |
|
5 | import socketIo from "./socketIo"
|
6 | import emitter from "./emitter"
|
7 | import { apiRunner, apiRunnerAsync } from "./api-runner-browser"
|
8 | import { setLoader, publicLoader } from "./loader"
|
9 | import DevLoader from "./dev-loader"
|
10 | import syncRequires from "./sync-requires"
|
11 |
|
12 | import matchPaths from "./match-paths.json"
|
13 |
|
14 | window.___emitter = emitter
|
15 |
|
16 | const loader = new DevLoader(syncRequires, matchPaths)
|
17 | setLoader(loader)
|
18 | loader.setApiRunner(apiRunner)
|
19 |
|
20 | window.___loader = publicLoader
|
21 |
|
22 |
|
23 | apiRunnerAsync(`onClientEntry`).then(() => {
|
24 |
|
25 | const socket = socketIo()
|
26 | if (socket) {
|
27 | socket.on(`reload`, () => {
|
28 | window.location.reload()
|
29 | })
|
30 | }
|
31 |
|
32 | |
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | if (`serviceWorker` in navigator) {
|
41 | navigator.serviceWorker.getRegistrations().then(registrations => {
|
42 | if (registrations.length > 0)
|
43 | console.warn(
|
44 | `Warning: found one or more service workers present.`,
|
45 | `If your site isn't behaving as expected, you might want to remove these.`,
|
46 | registrations
|
47 | )
|
48 | })
|
49 | }
|
50 |
|
51 | const rootElement = document.getElementById(`___gatsby`)
|
52 |
|
53 | const renderer = apiRunner(
|
54 | `replaceHydrateFunction`,
|
55 | undefined,
|
56 | ReactDOM.render
|
57 | )[0]
|
58 |
|
59 | Promise.all([
|
60 | loader.loadPage(`/dev-404-page/`),
|
61 | loader.loadPage(`/404.html`),
|
62 | loader.loadPage(window.location.pathname),
|
63 | ]).then(() => {
|
64 | const preferDefault = m => (m && m.default) || m
|
65 | let Root = preferDefault(require(`./root`))
|
66 | domReady(() => {
|
67 | renderer(<Root />, rootElement, () => {
|
68 | apiRunner(`onInitialClientRender`)
|
69 | })
|
70 | })
|
71 | })
|
72 | })
|
73 |
|
\ | No newline at end of file |