1/* @refresh reload */
2import "solid-devtools";
3import "./styles/index.css";
4
5import { Route, Router } from "@solidjs/router";
6import { render } from "solid-js/web";
7import App from "./app";
8import NotFound from "./errors/404";
9import RepoBlob, { preloadRepoBlob } from "./routes/repo/blob";
10import { RepoProvider } from "./routes/repo/context";
11import RepoCommit, { preloadRepoCommit } from "./routes/repo/diff/commit";
12import RepoCompare, { preloadRepoCompare } from "./routes/repo/diff/compare";
13import RepoTree, { preloadRepoTree } from "./routes/repo/tree";
14import User from "./routes/user";
15
16const root = document.getElementById("root");
17
18if (!(root instanceof HTMLElement)) {
19 throw new Error("Root element not found.");
20}
21
22render(
23 () => (
24 <Router root={(props) => <App>{props.children}</App>}>
25 <Route path="/:user/:repo" component={RepoProvider}>
26 <Route
27 path="/tree/:ref/*path"
28 component={RepoTree}
29 preload={preloadRepoTree}
30 />
31 <Route
32 path="/blob/:ref/*path"
33 component={RepoBlob}
34 preload={preloadRepoBlob}
35 />
36 <Route
37 path="/commit/:ref"
38 component={RepoCommit}
39 preload={preloadRepoCommit}
40 />
41 <Route
42 path="/compare/:rev2/:rev1"
43 component={RepoCompare}
44 preload={preloadRepoCompare}
45 />
46 <Route component={RepoTree} preload={preloadRepoTree} />
47 </Route>
48 <Route path="/:user" component={User} />
49 <Route path="*" component={NotFound} />
50 </Router>
51 ),
52 root,
53);