-
Notifications
You must be signed in to change notification settings - Fork 2.6k
/
Copy pathentry.ts
58 lines (53 loc) · 1.5 KB
/
entry.ts
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import type { StaticHandlerContext } from "@remix-run/router";
import type { SerializedError } from "./errors";
import type { RouteManifest, ServerRouteManifest, EntryRoute } from "./routes";
import type { RouteModules, EntryRouteModule } from "./routeModules";
export interface EntryContext {
manifest: AssetsManifest;
routeModules: RouteModules<EntryRouteModule>;
criticalCss?: string;
serverHandoffString?: string;
serverHandoffStream?: ReadableStream<Uint8Array>;
renderMeta?: {
didRenderScripts?: boolean;
streamCache?: Record<
number,
Promise<void> & {
result?: {
done: boolean;
value: string;
};
error?: unknown;
}
>;
};
staticHandlerContext: StaticHandlerContext;
future: FutureConfig;
isSpaMode: boolean;
serializeError(error: Error): SerializedError;
}
export interface FutureConfig {
v3_fetcherPersist: boolean;
v3_relativeSplatPath: boolean;
v3_throwAbortReason: boolean;
unstable_lazyRouteDiscovery: boolean;
unstable_singleFetch: boolean;
}
export interface AssetsManifest {
entry: {
imports: string[];
module: string;
};
routes: RouteManifest<EntryRoute>;
url: string;
version: string;
hmrRuntime?: string;
}
export function createEntryRouteModules(
manifest: ServerRouteManifest
): RouteModules<EntryRouteModule> {
return Object.keys(manifest).reduce((memo, routeId) => {
memo[routeId] = manifest[routeId].module;
return memo;
}, {} as RouteModules<EntryRouteModule>);
}