@modern-js/runtime 2.65.1 → 2.65.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cache/index.js +22 -0
- package/dist/cjs/cli/code.js +1 -0
- package/dist/cjs/cli/ssr/index.js +1 -1
- package/dist/cjs/cli/template.js +7 -3
- package/dist/cjs/core/browser/index.js +1 -3
- package/dist/cjs/core/compat/requestContext.js +48 -0
- package/dist/cjs/core/compatible.js +2 -14
- package/dist/cjs/core/context/index.js +6 -0
- package/dist/cjs/core/context/monitors/default.js +38 -0
- package/dist/cjs/core/context/monitors/index.js +31 -0
- package/dist/cjs/core/context/monitors/index.server.js +33 -0
- package/dist/cjs/core/context/request/index.js +30 -0
- package/dist/cjs/core/context/request/index.server.js +32 -0
- package/dist/cjs/core/context/response/index.js +43 -0
- package/dist/cjs/core/context/response/index.server.js +62 -0
- package/dist/cjs/core/plugin/index.js +2 -0
- package/dist/cjs/core/server/requestHandler.js +83 -73
- package/dist/cjs/core/server/stream/shared.js +40 -45
- package/dist/cjs/core/server/string/index.js +50 -55
- package/dist/cjs/core/server/string/prefetch.js +47 -52
- package/dist/cjs/index.js +13 -0
- package/dist/cjs/react-server.js +38 -0
- package/dist/cjs/router/cli/code/templates.js +3 -1
- package/dist/cjs/router/cli/handler.js +1 -0
- package/dist/cjs/router/runtime/plugin.node.js +1 -2
- package/dist/cjs/router/runtime/utils.js +4 -6
- package/dist/esm/cache/index.js +1 -0
- package/dist/esm/cli/code.js +1 -0
- package/dist/esm/cli/ssr/index.js +1 -1
- package/dist/esm/cli/template.js +4 -4
- package/dist/esm/core/browser/index.js +3 -4
- package/dist/esm/core/compat/requestContext.js +25 -0
- package/dist/esm/core/compatible.js +5 -16
- package/dist/esm/core/context/index.js +5 -0
- package/dist/esm/core/context/monitors/default.js +20 -0
- package/dist/esm/core/context/monitors/index.js +7 -0
- package/dist/esm/core/context/monitors/index.server.js +9 -0
- package/dist/esm/core/context/request/index.js +6 -0
- package/dist/esm/core/context/request/index.server.js +8 -0
- package/dist/esm/core/context/response/index.js +16 -0
- package/dist/esm/core/context/response/index.server.js +41 -0
- package/dist/esm/core/plugin/index.js +3 -1
- package/dist/esm/core/server/requestHandler.js +134 -118
- package/dist/esm/core/server/stream/shared.js +49 -63
- package/dist/esm/core/server/string/index.js +82 -93
- package/dist/esm/core/server/string/prefetch.js +83 -94
- package/dist/esm/index.js +8 -0
- package/dist/esm/react-server.js +10 -0
- package/dist/esm/router/cli/code/templates.js +3 -3
- package/dist/esm/router/cli/handler.js +1 -0
- package/dist/esm/router/runtime/plugin.node.js +1 -2
- package/dist/esm/router/runtime/utils.js +4 -6
- package/dist/esm-node/cache/index.js +1 -0
- package/dist/esm-node/cli/code.js +1 -0
- package/dist/esm-node/cli/ssr/index.js +1 -1
- package/dist/esm-node/cli/template.js +7 -3
- package/dist/esm-node/core/browser/index.js +1 -3
- package/dist/esm-node/core/compat/requestContext.js +23 -0
- package/dist/esm-node/core/compatible.js +2 -14
- package/dist/esm-node/core/context/index.js +5 -0
- package/dist/esm-node/core/context/monitors/default.js +14 -0
- package/dist/esm-node/core/context/monitors/index.js +7 -0
- package/dist/esm-node/core/context/monitors/index.server.js +9 -0
- package/dist/esm-node/core/context/request/index.js +6 -0
- package/dist/esm-node/core/context/request/index.server.js +8 -0
- package/dist/esm-node/core/context/response/index.js +16 -0
- package/dist/esm-node/core/context/response/index.server.js +35 -0
- package/dist/esm-node/core/plugin/index.js +2 -0
- package/dist/esm-node/core/server/requestHandler.js +83 -73
- package/dist/esm-node/core/server/stream/shared.js +40 -45
- package/dist/esm-node/core/server/string/index.js +50 -55
- package/dist/esm-node/core/server/string/prefetch.js +47 -52
- package/dist/esm-node/index.js +8 -0
- package/dist/esm-node/react-server.js +10 -0
- package/dist/esm-node/router/cli/code/templates.js +3 -1
- package/dist/esm-node/router/cli/handler.js +1 -0
- package/dist/esm-node/router/runtime/plugin.node.js +1 -2
- package/dist/esm-node/router/runtime/utils.js +4 -6
- package/dist/types/cache/index.d.ts +1 -0
- package/dist/types/cli/template.d.ts +2 -1
- package/dist/types/core/compat/requestContext.d.ts +27 -0
- package/dist/types/core/compatible.d.ts +2 -2
- package/dist/types/core/config.d.ts +1 -1
- package/dist/types/core/context/index.d.ts +2 -0
- package/dist/types/core/context/monitors/default.d.ts +2 -0
- package/dist/types/core/context/monitors/index.d.ts +1 -0
- package/dist/types/core/context/monitors/index.server.d.ts +2 -0
- package/dist/types/core/context/request/index.d.ts +1 -0
- package/dist/types/core/context/request/index.server.d.ts +1 -0
- package/dist/types/core/context/response/index.d.ts +4 -0
- package/dist/types/core/context/response/index.server.d.ts +7 -0
- package/dist/types/core/context/runtime.d.ts +1 -0
- package/dist/types/core/types.d.ts +4 -17
- package/dist/types/index.d.ts +3 -0
- package/dist/types/react-server.d.ts +3 -0
- package/dist/types/router/cli/code/templates.d.ts +2 -1
- package/dist/types/router/runtime/utils.d.ts +3 -5
- package/package.json +22 -12
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { run } from "@modern-js/runtime-utils/node";
|
|
2
1
|
import { time } from "@modern-js/runtime-utils/time";
|
|
3
|
-
import { parseHeaders } from "@modern-js/runtime-utils/universal/request";
|
|
4
2
|
import ReactDomServer from "react-dom/server";
|
|
5
3
|
import ReactHelmet from "react-helmet";
|
|
6
4
|
import { RenderLevel } from "../../constants";
|
|
@@ -15,59 +13,56 @@ import { prefetch } from "./prefetch";
|
|
|
15
13
|
import { SSRDataCollector } from "./ssrData";
|
|
16
14
|
import { StyledCollector } from "./styledComponent";
|
|
17
15
|
const renderString = async (request, serverRoot, options) => {
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const html = await generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer);
|
|
69
|
-
return html;
|
|
70
|
-
});
|
|
16
|
+
var _runtimeContext_ssrContext;
|
|
17
|
+
const { resource, runtimeContext, config, onError, onTiming } = options;
|
|
18
|
+
const tracer = {
|
|
19
|
+
onError,
|
|
20
|
+
onTiming
|
|
21
|
+
};
|
|
22
|
+
const routerContext = runtimeContext.routerContext;
|
|
23
|
+
const { htmlTemplate, entryName, loadableStats, routeManifest } = resource;
|
|
24
|
+
const ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
|
|
25
|
+
const chunkSet = {
|
|
26
|
+
renderLevel: RenderLevel.CLIENT_RENDER,
|
|
27
|
+
ssrScripts: "",
|
|
28
|
+
jsChunk: "",
|
|
29
|
+
cssChunk: ""
|
|
30
|
+
};
|
|
31
|
+
let prefetchData = {};
|
|
32
|
+
try {
|
|
33
|
+
prefetchData = await prefetch(serverRoot, request, options, ssrConfig, tracer);
|
|
34
|
+
chunkSet.renderLevel = RenderLevel.SERVER_PREFETCH;
|
|
35
|
+
} catch (e) {
|
|
36
|
+
chunkSet.renderLevel = RenderLevel.CLIENT_RENDER;
|
|
37
|
+
tracer.onError(e, SSRErrors.PRERENDER);
|
|
38
|
+
}
|
|
39
|
+
const collectors = [
|
|
40
|
+
new StyledCollector(chunkSet),
|
|
41
|
+
new LoadableCollector({
|
|
42
|
+
stats: loadableStats,
|
|
43
|
+
nonce: config.nonce,
|
|
44
|
+
routeManifest,
|
|
45
|
+
template: htmlTemplate,
|
|
46
|
+
entryName,
|
|
47
|
+
chunkSet,
|
|
48
|
+
config
|
|
49
|
+
}),
|
|
50
|
+
new SSRDataCollector({
|
|
51
|
+
request,
|
|
52
|
+
prefetchData,
|
|
53
|
+
ssrConfig,
|
|
54
|
+
ssrContext: runtimeContext.ssrContext,
|
|
55
|
+
chunkSet,
|
|
56
|
+
routerContext,
|
|
57
|
+
nonce: config.nonce,
|
|
58
|
+
useJsonScript: config.useJsonScript
|
|
59
|
+
})
|
|
60
|
+
];
|
|
61
|
+
const rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
|
|
62
|
+
ssr: true
|
|
63
|
+
}));
|
|
64
|
+
const html = await generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer);
|
|
65
|
+
return html;
|
|
71
66
|
};
|
|
72
67
|
async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifiers, { onError, onTiming }) {
|
|
73
68
|
let html = "";
|
|
@@ -1,73 +1,68 @@
|
|
|
1
1
|
import { ChunkExtractor } from "@loadable/server";
|
|
2
|
-
import { run } from "@modern-js/runtime-utils/node";
|
|
3
2
|
import { time } from "@modern-js/runtime-utils/time";
|
|
4
|
-
import { parseHeaders } from "@modern-js/runtime-utils/universal/request";
|
|
5
3
|
import { renderToStaticMarkup } from "react-dom/server";
|
|
6
4
|
import { wrapRuntimeContextProvider } from "../../react/wrapper";
|
|
7
5
|
import { SSRErrors, SSRTimings } from "../tracer";
|
|
8
6
|
const prefetch = async (App, request, options, ssrConfig, { onError, onTiming }) => {
|
|
9
|
-
|
|
7
|
+
var _context_store;
|
|
10
8
|
const { runtimeContext: context, resource } = options;
|
|
11
9
|
const { entryName, loadableStats } = resource;
|
|
12
|
-
|
|
13
|
-
var _context_store;
|
|
14
|
-
if (typeof ssrConfig === "boolean" || !ssrConfig.disablePrerender) {
|
|
15
|
-
try {
|
|
16
|
-
const end = time();
|
|
17
|
-
if (loadableStats) {
|
|
18
|
-
const extractor = new ChunkExtractor({
|
|
19
|
-
stats: loadableStats,
|
|
20
|
-
entrypoints: [
|
|
21
|
-
entryName
|
|
22
|
-
].filter(Boolean)
|
|
23
|
-
});
|
|
24
|
-
renderToStaticMarkup(extractor.collectChunks(wrapRuntimeContextProvider(App, Object.assign(context, {
|
|
25
|
-
ssr: false
|
|
26
|
-
}))));
|
|
27
|
-
} else {
|
|
28
|
-
renderToStaticMarkup(wrapRuntimeContextProvider(App, Object.assign(context, {
|
|
29
|
-
ssr: false
|
|
30
|
-
})));
|
|
31
|
-
}
|
|
32
|
-
const cost = end();
|
|
33
|
-
onTiming(SSRTimings.PRERENDER, cost);
|
|
34
|
-
} catch (e) {
|
|
35
|
-
const error = e;
|
|
36
|
-
onError(error, SSRErrors.PRERENDER);
|
|
37
|
-
throw e;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (!context.loaderManager.hasPendingLoaders()) {
|
|
41
|
-
return {
|
|
42
|
-
initialData: context.initialData,
|
|
43
|
-
i18nData: context.__i18nData__
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
let loadersData = {};
|
|
10
|
+
if (typeof ssrConfig === "boolean" || !ssrConfig.disablePrerender) {
|
|
47
11
|
try {
|
|
48
12
|
const end = time();
|
|
49
|
-
|
|
13
|
+
if (loadableStats) {
|
|
14
|
+
const extractor = new ChunkExtractor({
|
|
15
|
+
stats: loadableStats,
|
|
16
|
+
entrypoints: [
|
|
17
|
+
entryName
|
|
18
|
+
].filter(Boolean)
|
|
19
|
+
});
|
|
20
|
+
renderToStaticMarkup(extractor.collectChunks(wrapRuntimeContextProvider(App, Object.assign(context, {
|
|
21
|
+
ssr: false
|
|
22
|
+
}))));
|
|
23
|
+
} else {
|
|
24
|
+
renderToStaticMarkup(wrapRuntimeContextProvider(App, Object.assign(context, {
|
|
25
|
+
ssr: false
|
|
26
|
+
})));
|
|
27
|
+
}
|
|
50
28
|
const cost = end();
|
|
51
|
-
onTiming(SSRTimings.
|
|
29
|
+
onTiming(SSRTimings.PRERENDER, cost);
|
|
52
30
|
} catch (e) {
|
|
53
|
-
|
|
31
|
+
const error = e;
|
|
32
|
+
onError(error, SSRErrors.PRERENDER);
|
|
54
33
|
throw e;
|
|
55
34
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (data._error) {
|
|
59
|
-
onError(data._error, SSRErrors.USE_LOADER);
|
|
60
|
-
delete data._error;
|
|
61
|
-
}
|
|
62
|
-
});
|
|
35
|
+
}
|
|
36
|
+
if (!context.loaderManager.hasPendingLoaders()) {
|
|
63
37
|
return {
|
|
64
|
-
loadersData,
|
|
65
38
|
initialData: context.initialData,
|
|
66
|
-
i18nData: context.__i18nData__
|
|
67
|
-
// todo: move to plugin state
|
|
68
|
-
storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
|
|
39
|
+
i18nData: context.__i18nData__
|
|
69
40
|
};
|
|
41
|
+
}
|
|
42
|
+
let loadersData = {};
|
|
43
|
+
try {
|
|
44
|
+
const end = time();
|
|
45
|
+
loadersData = await context.loaderManager.awaitPendingLoaders();
|
|
46
|
+
const cost = end();
|
|
47
|
+
onTiming(SSRTimings.USE_LOADER, cost);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
onError(e, SSRErrors.USE_LOADER);
|
|
50
|
+
throw e;
|
|
51
|
+
}
|
|
52
|
+
Object.keys(loadersData).forEach((id) => {
|
|
53
|
+
const data = loadersData[id];
|
|
54
|
+
if (data._error) {
|
|
55
|
+
onError(data._error, SSRErrors.USE_LOADER);
|
|
56
|
+
delete data._error;
|
|
57
|
+
}
|
|
70
58
|
});
|
|
59
|
+
return {
|
|
60
|
+
loadersData,
|
|
61
|
+
initialData: context.initialData,
|
|
62
|
+
i18nData: context.__i18nData__,
|
|
63
|
+
// todo: move to plugin state
|
|
64
|
+
storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
|
|
65
|
+
};
|
|
71
66
|
};
|
|
72
67
|
export {
|
|
73
68
|
prefetch
|
package/dist/esm-node/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { isBrowser } from "./common";
|
|
2
|
+
import { getMonitors } from "./core/context/monitors";
|
|
3
|
+
import { getRequest } from "./core/context/request";
|
|
4
|
+
import { setHeaders, setStatus, redirect } from "./core/context/response";
|
|
2
5
|
import { createApp, useLoader, bootstrap, RuntimeReactContext, defineConfig, defineRuntimeConfig, useRuntimeContext } from "./core";
|
|
3
6
|
export {
|
|
4
7
|
RuntimeReactContext,
|
|
@@ -6,7 +9,12 @@ export {
|
|
|
6
9
|
createApp,
|
|
7
10
|
defineConfig,
|
|
8
11
|
defineRuntimeConfig,
|
|
12
|
+
getMonitors,
|
|
13
|
+
getRequest,
|
|
9
14
|
isBrowser,
|
|
15
|
+
redirect,
|
|
16
|
+
setHeaders,
|
|
17
|
+
setStatus,
|
|
10
18
|
useLoader,
|
|
11
19
|
useRuntimeContext
|
|
12
20
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getRequest } from "./core/context/request";
|
|
2
|
+
import { getMonitors } from "./core/context/monitors";
|
|
3
|
+
import { setHeaders, setStatus, redirect } from "./core/context/response";
|
|
4
|
+
export {
|
|
5
|
+
getMonitors,
|
|
6
|
+
getRequest,
|
|
7
|
+
redirect,
|
|
8
|
+
setHeaders,
|
|
9
|
+
setStatus
|
|
10
|
+
};
|
|
@@ -362,7 +362,7 @@ function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
|
|
|
362
362
|
}
|
|
363
363
|
return null;
|
|
364
364
|
}
|
|
365
|
-
const runtimeGlobalContext = async ({ metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp }) => {
|
|
365
|
+
const runtimeGlobalContext = async ({ entryName, metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp }) => {
|
|
366
366
|
const imports = [
|
|
367
367
|
`import { setGlobalContext } from '@${metaName}/runtime/context';`
|
|
368
368
|
];
|
|
@@ -408,7 +408,9 @@ const runtimeGlobalContext = async ({ metaName, srcDirectory, nestedRoutesEntry,
|
|
|
408
408
|
|
|
409
409
|
import { routes } from './routes';
|
|
410
410
|
|
|
411
|
+
const entryName = '${entryName}';
|
|
411
412
|
setGlobalContext({
|
|
413
|
+
entryName,
|
|
412
414
|
layoutApp,
|
|
413
415
|
routes,
|
|
414
416
|
appInit,
|
|
@@ -19,6 +19,7 @@ async function handleGeneratorEntryCode(api, entrypoints) {
|
|
|
19
19
|
if (entrypoint.nestedRoutesEntry || entrypoint.pageRoutesEntry) {
|
|
20
20
|
var _entrypoint_fileSystemRoutes;
|
|
21
21
|
generatorRegisterCode(internalDirectory, entrypoint.entryName, await templates.runtimeGlobalContext({
|
|
22
|
+
entryName: entrypoint.entryName,
|
|
22
23
|
metaName: appContext.metaName,
|
|
23
24
|
srcDirectory: appContext.srcDirectory,
|
|
24
25
|
nestedRoutesEntry: entrypoint.nestedRoutesEntry,
|
|
@@ -4,7 +4,7 @@ import { UNSAFE_ErrorResponseImpl as ErrorResponseImpl } from "@modern-js/runtim
|
|
|
4
4
|
import { Route, isRouteErrorResponse } from "@modern-js/runtime-utils/router";
|
|
5
5
|
import { DefaultNotFound } from "./DefaultNotFound";
|
|
6
6
|
import DeferredDataScripts from "./DeferredDataScripts";
|
|
7
|
-
function getRouteComponents(routes, { globalApp, ssrMode, props
|
|
7
|
+
function getRouteComponents(routes, { globalApp, ssrMode, props }) {
|
|
8
8
|
const Layout = ({ Component, ...props2 }) => {
|
|
9
9
|
const GlobalLayout = globalApp;
|
|
10
10
|
if (!GlobalLayout) {
|
|
@@ -22,8 +22,7 @@ function getRouteComponents(routes, { globalApp, ssrMode, props, reporter }) {
|
|
|
22
22
|
if (route.type === "nested") {
|
|
23
23
|
const routeElement = renderNestedRoute(route, {
|
|
24
24
|
DeferredDataComponent: ssrMode === "stream" ? DeferredDataScripts : void 0,
|
|
25
|
-
props
|
|
26
|
-
reporter
|
|
25
|
+
props
|
|
27
26
|
});
|
|
28
27
|
routeElements.push(routeElement);
|
|
29
28
|
} else {
|
|
@@ -42,7 +41,7 @@ function getRouteComponents(routes, { globalApp, ssrMode, props, reporter }) {
|
|
|
42
41
|
}, "*"));
|
|
43
42
|
return routeElements;
|
|
44
43
|
}
|
|
45
|
-
function renderRoutes({ routesConfig, props, ssrMode
|
|
44
|
+
function renderRoutes({ routesConfig, props, ssrMode }) {
|
|
46
45
|
if (!routesConfig) {
|
|
47
46
|
return null;
|
|
48
47
|
}
|
|
@@ -53,8 +52,7 @@ function renderRoutes({ routesConfig, props, ssrMode, reporter }) {
|
|
|
53
52
|
const routeElements = getRouteComponents(routes, {
|
|
54
53
|
globalApp,
|
|
55
54
|
ssrMode,
|
|
56
|
-
props
|
|
57
|
-
reporter
|
|
55
|
+
props
|
|
58
56
|
});
|
|
59
57
|
return routeElements;
|
|
60
58
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@modern-js/runtime-utils/cache';
|
|
@@ -25,7 +25,8 @@ export declare const runtimeRegister: ({ entryName, srcDirectory, internalSrcAli
|
|
|
25
25
|
runtimeConfigFile: string | false;
|
|
26
26
|
runtimePlugins: RuntimePluginConfig[];
|
|
27
27
|
}) => string;
|
|
28
|
-
export declare const runtimeGlobalContext: ({ srcDirectory, internalSrcAlias, metaName, entry, customEntry, }: {
|
|
28
|
+
export declare const runtimeGlobalContext: ({ entryName, srcDirectory, internalSrcAlias, metaName, entry, customEntry, }: {
|
|
29
|
+
entryName: string;
|
|
29
30
|
srcDirectory: string;
|
|
30
31
|
internalSrcAlias: string;
|
|
31
32
|
metaName: string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node/http" />
|
|
3
|
+
/// <reference types="types" />
|
|
4
|
+
import type { RuntimeContext } from '../context';
|
|
5
|
+
import type { RuntimePluginFuture } from '../plugin/types';
|
|
6
|
+
export declare const makeRequestContext: (context: RuntimeContext) => import("../types").ServerContext | import("../types").ClientContext | {
|
|
7
|
+
isBrowser: boolean;
|
|
8
|
+
request: {
|
|
9
|
+
[propsName: string]: any;
|
|
10
|
+
params: Record<string, string>;
|
|
11
|
+
pathname: string;
|
|
12
|
+
query: Record<string, string>;
|
|
13
|
+
headers: import("http").IncomingHttpHeaders;
|
|
14
|
+
host: string;
|
|
15
|
+
url: string;
|
|
16
|
+
referer?: string | undefined;
|
|
17
|
+
userAgent?: string | undefined;
|
|
18
|
+
cookie?: string | undefined;
|
|
19
|
+
cookieMap?: Record<string, string> | undefined;
|
|
20
|
+
} & {
|
|
21
|
+
baseUrl: string;
|
|
22
|
+
raw: Request;
|
|
23
|
+
};
|
|
24
|
+
response: import("@modern-js/types").BaseResponseLike;
|
|
25
|
+
logger: import("@modern-js/types").Logger;
|
|
26
|
+
};
|
|
27
|
+
export declare const requestContextPlugin: () => RuntimePluginFuture;
|
|
@@ -2,7 +2,7 @@ import type { RuntimePlugin } from '@modern-js/plugin-v2';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { Renderer } from 'react-dom';
|
|
4
4
|
import type { createRoot, hydrateRoot } from 'react-dom/client';
|
|
5
|
-
import { type RuntimeContext } from './context/runtime';
|
|
5
|
+
import { type RuntimeContext, type TRuntimeContext } from './context/runtime';
|
|
6
6
|
import { type Plugin } from './plugin';
|
|
7
7
|
import type { RuntimeExtends } from './plugin/types';
|
|
8
8
|
export type CreateAppOptions = {
|
|
@@ -20,5 +20,5 @@ type BootStrap<T = unknown> = (App: React.ComponentType, id: string | HTMLElemen
|
|
|
20
20
|
hydrateRoot?: typeof hydrateRoot;
|
|
21
21
|
}) => Promise<T>;
|
|
22
22
|
export declare const bootstrap: BootStrap;
|
|
23
|
-
export declare const useRuntimeContext: () =>
|
|
23
|
+
export declare const useRuntimeContext: () => TRuntimeContext;
|
|
24
24
|
export {};
|
|
@@ -10,4 +10,4 @@ export declare const defineConfig: (Component: React.ComponentType<any>, config:
|
|
|
10
10
|
* This function helps you to autocomplete configuration types.
|
|
11
11
|
* It accepts a direct config object, or a function that returns a config.
|
|
12
12
|
*/
|
|
13
|
-
export declare const defineRuntimeConfig: (config: RuntimeConfig) => RuntimeConfig;
|
|
13
|
+
export declare const defineRuntimeConfig: (config: RuntimeConfig | ((entryName: string) => RuntimeConfig)) => RuntimeConfig | ((entryName: string) => RuntimeConfig);
|
|
@@ -5,6 +5,7 @@ import type { AppConfig } from '../../common';
|
|
|
5
5
|
import type { RuntimeExtends } from '../plugin/types';
|
|
6
6
|
export { type RuntimeContext, RuntimeReactContext, getInitialContext, } from './runtime';
|
|
7
7
|
interface GlobalContext {
|
|
8
|
+
entryName?: string;
|
|
8
9
|
/**
|
|
9
10
|
* App.tsx export default component
|
|
10
11
|
*/
|
|
@@ -34,6 +35,7 @@ interface GlobalContext {
|
|
|
34
35
|
export declare function setGlobalContext(context: Omit<GlobalContext, 'appConfig' | 'internalRuntimeContext'> & {
|
|
35
36
|
appConfig?: () => AppConfig;
|
|
36
37
|
}): void;
|
|
38
|
+
export declare function getCurrentEntryName(): string | undefined;
|
|
37
39
|
export declare function getGlobalRSCRoot(): import("react").ComponentType<{}> | undefined;
|
|
38
40
|
export declare function setGlobalInternalRuntimeContext(context: InternalRuntimeContext<RuntimeExtends>): void;
|
|
39
41
|
export declare function getGlobalInternalRuntimeContext(): InternalRuntimeContext<Required<import("@modern-js/plugin-v2").RuntimePluginExtends<import("../plugin/types").RuntimeConfig, import("./runtime").RuntimeContext, {}, {}>>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getMonitors: () => Omit<import("@modern-js/types").Monitors, "push">;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getRequest: () => Request;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getRequest: () => Request;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const getResponseProxy: () => null;
|
|
2
|
+
export declare const setHeaders: (headers: Record<string, string>) => void;
|
|
3
|
+
export declare const setStatus: (status: number) => void;
|
|
4
|
+
export declare const redirect: (url: string, init?: number | ResponseInit) => void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const getResponseProxy: () => {
|
|
2
|
+
headers: Record<string, string>;
|
|
3
|
+
status: number;
|
|
4
|
+
} | undefined;
|
|
5
|
+
export declare const setHeaders: (headers: Record<string, string>) => void;
|
|
6
|
+
export declare const setStatus: (status: number) => void;
|
|
7
|
+
export declare const redirect: (url: string, init?: number | ResponseInit) => void;
|
|
@@ -27,14 +27,7 @@ export interface SSRContainer {
|
|
|
27
27
|
mode: SSRMode;
|
|
28
28
|
data?: SSRData;
|
|
29
29
|
context?: {
|
|
30
|
-
request:
|
|
31
|
-
params: Record<string, any>;
|
|
32
|
-
query: Record<string, string>;
|
|
33
|
-
pathname: string;
|
|
34
|
-
host: string;
|
|
35
|
-
url: string;
|
|
36
|
-
headers?: Record<string, string | undefined>;
|
|
37
|
-
};
|
|
30
|
+
request: BaseSSRServerContext['request'];
|
|
38
31
|
reporter?: {
|
|
39
32
|
sessionId?: string;
|
|
40
33
|
};
|
|
@@ -44,9 +37,6 @@ type BuildHtmlCb = (tempalte: string) => string;
|
|
|
44
37
|
export type SSRServerContext = Pick<BaseSSRServerContext, 'redirection' | 'response' | 'nonce' | 'mode' | 'loaderContext' | 'reporter' | 'logger' | 'metrics' | 'routeManifest'> & {
|
|
45
38
|
request: BaseSSRServerContext['request'] & {
|
|
46
39
|
baseUrl: string;
|
|
47
|
-
userAgent: string;
|
|
48
|
-
cookie: string;
|
|
49
|
-
cookieMap: Record<string, string>;
|
|
50
40
|
raw: Request;
|
|
51
41
|
};
|
|
52
42
|
htmlModifiers: BuildHtmlCb[];
|
|
@@ -56,18 +46,15 @@ export type SSRServerContext = Pick<BaseSSRServerContext, 'redirection' | 'respo
|
|
|
56
46
|
useJsonScript?: boolean;
|
|
57
47
|
};
|
|
58
48
|
interface TSSRBaseContext {
|
|
59
|
-
request: BaseSSRServerContext['request']
|
|
60
|
-
userAgent: string;
|
|
61
|
-
cookie: string;
|
|
62
|
-
};
|
|
49
|
+
request: BaseSSRServerContext['request'];
|
|
63
50
|
[propName: string]: any;
|
|
64
51
|
}
|
|
65
|
-
interface ServerContext extends TSSRBaseContext {
|
|
52
|
+
export interface ServerContext extends TSSRBaseContext {
|
|
66
53
|
isBrowser: false;
|
|
67
54
|
response: BaseSSRServerContext['response'];
|
|
68
55
|
logger: BaseSSRServerContext['logger'];
|
|
69
56
|
}
|
|
70
|
-
interface ClientContext extends TSSRBaseContext {
|
|
57
|
+
export interface ClientContext extends TSSRBaseContext {
|
|
71
58
|
isBrowser: true;
|
|
72
59
|
}
|
|
73
60
|
export declare type TSSRContext = ServerContext | ClientContext;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,5 +5,8 @@ export type { AppConfig, RuntimeConfig } from './common';
|
|
|
5
5
|
export { isBrowser } from './common';
|
|
6
6
|
export type { RuntimeContext } from './core/context/runtime';
|
|
7
7
|
export type { RuntimeUserConfig } from './config';
|
|
8
|
+
export { getMonitors } from './core/context/monitors';
|
|
9
|
+
export { getRequest } from './core/context/request';
|
|
10
|
+
export { setHeaders, setStatus, redirect } from './core/context/response';
|
|
8
11
|
export { createApp, useLoader, bootstrap, RuntimeReactContext, defineConfig, defineRuntimeConfig, useRuntimeContext, } from './core';
|
|
9
12
|
export type { StateConfig, RouterConfig };
|
|
@@ -13,7 +13,8 @@ export declare const fileSystemRoutes: ({ metaName, routes, ssrMode, nestedRoute
|
|
|
13
13
|
splitRouteChunks?: boolean | undefined;
|
|
14
14
|
}) => Promise<string>;
|
|
15
15
|
export declare function ssrLoaderCombinedModule(entrypoints: Entrypoint[], entrypoint: Entrypoint, config: AppNormalizedConfig<'shared'>, appContext: AppToolsContext<'shared'>): string | null;
|
|
16
|
-
export declare const runtimeGlobalContext: ({ metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp, }: {
|
|
16
|
+
export declare const runtimeGlobalContext: ({ entryName, metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp, }: {
|
|
17
|
+
entryName: string;
|
|
17
18
|
metaName: string;
|
|
18
19
|
srcDirectory: string;
|
|
19
20
|
nestedRoutesEntry?: string | undefined;
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { type Router, type StaticHandlerContext } from '@modern-js/runtime-utils/remix-router';
|
|
2
|
-
import type { NestedRoute, PageRoute,
|
|
2
|
+
import type { NestedRoute, PageRoute, SSRMode } from '@modern-js/types';
|
|
3
3
|
import type React from 'react';
|
|
4
4
|
import type { RouterConfig } from './types';
|
|
5
|
-
export declare function getRouteComponents(routes: (NestedRoute | PageRoute)[], { globalApp, ssrMode, props,
|
|
5
|
+
export declare function getRouteComponents(routes: (NestedRoute | PageRoute)[], { globalApp, ssrMode, props, }: {
|
|
6
6
|
globalApp?: React.ComponentType<any>;
|
|
7
7
|
ssrMode?: SSRMode;
|
|
8
8
|
props?: Record<string, any>;
|
|
9
|
-
reporter?: Reporter;
|
|
10
9
|
}): React.ReactElement<any, string | React.JSXElementConstructor<any>>[];
|
|
11
|
-
export declare function renderRoutes({ routesConfig, props, ssrMode,
|
|
10
|
+
export declare function renderRoutes({ routesConfig, props, ssrMode, }: {
|
|
12
11
|
routesConfig: RouterConfig['routesConfig'];
|
|
13
12
|
props?: Record<string, any>;
|
|
14
13
|
ssrMode?: SSRMode;
|
|
15
|
-
reporter?: Reporter;
|
|
16
14
|
}): React.ReactElement<any, string | React.JSXElementConstructor<any>>[] | null;
|
|
17
15
|
export declare function getLocation(serverContext: any): string;
|
|
18
16
|
export declare const urlJoin: (...parts: string[]) => string;
|