@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.
Files changed (98) hide show
  1. package/dist/cjs/cache/index.js +22 -0
  2. package/dist/cjs/cli/code.js +1 -0
  3. package/dist/cjs/cli/ssr/index.js +1 -1
  4. package/dist/cjs/cli/template.js +7 -3
  5. package/dist/cjs/core/browser/index.js +1 -3
  6. package/dist/cjs/core/compat/requestContext.js +48 -0
  7. package/dist/cjs/core/compatible.js +2 -14
  8. package/dist/cjs/core/context/index.js +6 -0
  9. package/dist/cjs/core/context/monitors/default.js +38 -0
  10. package/dist/cjs/core/context/monitors/index.js +31 -0
  11. package/dist/cjs/core/context/monitors/index.server.js +33 -0
  12. package/dist/cjs/core/context/request/index.js +30 -0
  13. package/dist/cjs/core/context/request/index.server.js +32 -0
  14. package/dist/cjs/core/context/response/index.js +43 -0
  15. package/dist/cjs/core/context/response/index.server.js +62 -0
  16. package/dist/cjs/core/plugin/index.js +2 -0
  17. package/dist/cjs/core/server/requestHandler.js +83 -73
  18. package/dist/cjs/core/server/stream/shared.js +40 -45
  19. package/dist/cjs/core/server/string/index.js +50 -55
  20. package/dist/cjs/core/server/string/prefetch.js +47 -52
  21. package/dist/cjs/index.js +13 -0
  22. package/dist/cjs/react-server.js +38 -0
  23. package/dist/cjs/router/cli/code/templates.js +3 -1
  24. package/dist/cjs/router/cli/handler.js +1 -0
  25. package/dist/cjs/router/runtime/plugin.node.js +1 -2
  26. package/dist/cjs/router/runtime/utils.js +4 -6
  27. package/dist/esm/cache/index.js +1 -0
  28. package/dist/esm/cli/code.js +1 -0
  29. package/dist/esm/cli/ssr/index.js +1 -1
  30. package/dist/esm/cli/template.js +4 -4
  31. package/dist/esm/core/browser/index.js +3 -4
  32. package/dist/esm/core/compat/requestContext.js +25 -0
  33. package/dist/esm/core/compatible.js +5 -16
  34. package/dist/esm/core/context/index.js +5 -0
  35. package/dist/esm/core/context/monitors/default.js +20 -0
  36. package/dist/esm/core/context/monitors/index.js +7 -0
  37. package/dist/esm/core/context/monitors/index.server.js +9 -0
  38. package/dist/esm/core/context/request/index.js +6 -0
  39. package/dist/esm/core/context/request/index.server.js +8 -0
  40. package/dist/esm/core/context/response/index.js +16 -0
  41. package/dist/esm/core/context/response/index.server.js +41 -0
  42. package/dist/esm/core/plugin/index.js +3 -1
  43. package/dist/esm/core/server/requestHandler.js +134 -118
  44. package/dist/esm/core/server/stream/shared.js +49 -63
  45. package/dist/esm/core/server/string/index.js +82 -93
  46. package/dist/esm/core/server/string/prefetch.js +83 -94
  47. package/dist/esm/index.js +8 -0
  48. package/dist/esm/react-server.js +10 -0
  49. package/dist/esm/router/cli/code/templates.js +3 -3
  50. package/dist/esm/router/cli/handler.js +1 -0
  51. package/dist/esm/router/runtime/plugin.node.js +1 -2
  52. package/dist/esm/router/runtime/utils.js +4 -6
  53. package/dist/esm-node/cache/index.js +1 -0
  54. package/dist/esm-node/cli/code.js +1 -0
  55. package/dist/esm-node/cli/ssr/index.js +1 -1
  56. package/dist/esm-node/cli/template.js +7 -3
  57. package/dist/esm-node/core/browser/index.js +1 -3
  58. package/dist/esm-node/core/compat/requestContext.js +23 -0
  59. package/dist/esm-node/core/compatible.js +2 -14
  60. package/dist/esm-node/core/context/index.js +5 -0
  61. package/dist/esm-node/core/context/monitors/default.js +14 -0
  62. package/dist/esm-node/core/context/monitors/index.js +7 -0
  63. package/dist/esm-node/core/context/monitors/index.server.js +9 -0
  64. package/dist/esm-node/core/context/request/index.js +6 -0
  65. package/dist/esm-node/core/context/request/index.server.js +8 -0
  66. package/dist/esm-node/core/context/response/index.js +16 -0
  67. package/dist/esm-node/core/context/response/index.server.js +35 -0
  68. package/dist/esm-node/core/plugin/index.js +2 -0
  69. package/dist/esm-node/core/server/requestHandler.js +83 -73
  70. package/dist/esm-node/core/server/stream/shared.js +40 -45
  71. package/dist/esm-node/core/server/string/index.js +50 -55
  72. package/dist/esm-node/core/server/string/prefetch.js +47 -52
  73. package/dist/esm-node/index.js +8 -0
  74. package/dist/esm-node/react-server.js +10 -0
  75. package/dist/esm-node/router/cli/code/templates.js +3 -1
  76. package/dist/esm-node/router/cli/handler.js +1 -0
  77. package/dist/esm-node/router/runtime/plugin.node.js +1 -2
  78. package/dist/esm-node/router/runtime/utils.js +4 -6
  79. package/dist/types/cache/index.d.ts +1 -0
  80. package/dist/types/cli/template.d.ts +2 -1
  81. package/dist/types/core/compat/requestContext.d.ts +27 -0
  82. package/dist/types/core/compatible.d.ts +2 -2
  83. package/dist/types/core/config.d.ts +1 -1
  84. package/dist/types/core/context/index.d.ts +2 -0
  85. package/dist/types/core/context/monitors/default.d.ts +2 -0
  86. package/dist/types/core/context/monitors/index.d.ts +1 -0
  87. package/dist/types/core/context/monitors/index.server.d.ts +2 -0
  88. package/dist/types/core/context/request/index.d.ts +1 -0
  89. package/dist/types/core/context/request/index.server.d.ts +1 -0
  90. package/dist/types/core/context/response/index.d.ts +4 -0
  91. package/dist/types/core/context/response/index.server.d.ts +7 -0
  92. package/dist/types/core/context/runtime.d.ts +1 -0
  93. package/dist/types/core/types.d.ts +4 -17
  94. package/dist/types/index.d.ts +3 -0
  95. package/dist/types/react-server.d.ts +3 -0
  96. package/dist/types/router/cli/code/templates.d.ts +2 -1
  97. package/dist/types/router/runtime/utils.d.ts +3 -5
  98. 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
- const headersData = parseHeaders(request);
19
- return run(headersData, async () => {
20
- var _runtimeContext_ssrContext;
21
- const { resource, runtimeContext, config, onError, onTiming } = options;
22
- const tracer = {
23
- onError,
24
- onTiming
25
- };
26
- const routerContext = runtimeContext.routerContext;
27
- const { htmlTemplate, entryName, loadableStats, routeManifest } = resource;
28
- const ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
29
- const chunkSet = {
30
- renderLevel: RenderLevel.CLIENT_RENDER,
31
- ssrScripts: "",
32
- jsChunk: "",
33
- cssChunk: ""
34
- };
35
- let prefetchData = {};
36
- try {
37
- prefetchData = await prefetch(serverRoot, request, options, ssrConfig, tracer);
38
- chunkSet.renderLevel = RenderLevel.SERVER_PREFETCH;
39
- } catch (e) {
40
- chunkSet.renderLevel = RenderLevel.CLIENT_RENDER;
41
- tracer.onError(e, SSRErrors.PRERENDER);
42
- }
43
- const collectors = [
44
- new StyledCollector(chunkSet),
45
- new LoadableCollector({
46
- stats: loadableStats,
47
- nonce: config.nonce,
48
- routeManifest,
49
- template: htmlTemplate,
50
- entryName,
51
- chunkSet,
52
- config
53
- }),
54
- new SSRDataCollector({
55
- request,
56
- prefetchData,
57
- ssrConfig,
58
- ssrContext: runtimeContext.ssrContext,
59
- chunkSet,
60
- routerContext,
61
- nonce: config.nonce,
62
- useJsonScript: config.useJsonScript
63
- })
64
- ];
65
- const rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
66
- ssr: true
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
- const headersData = parseHeaders(request);
7
+ var _context_store;
10
8
  const { runtimeContext: context, resource } = options;
11
9
  const { entryName, loadableStats } = resource;
12
- return run(headersData, async () => {
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
- loadersData = await context.loaderManager.awaitPendingLoaders();
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.USE_LOADER, cost);
29
+ onTiming(SSRTimings.PRERENDER, cost);
52
30
  } catch (e) {
53
- onError(e, SSRErrors.USE_LOADER);
31
+ const error = e;
32
+ onError(error, SSRErrors.PRERENDER);
54
33
  throw e;
55
34
  }
56
- Object.keys(loadersData).forEach((id) => {
57
- const data = loadersData[id];
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
@@ -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,
@@ -57,8 +57,7 @@ const routerPlugin = (userConfig = {}) => {
57
57
  ssrMode,
58
58
  props: {
59
59
  nonce
60
- },
61
- reporter
60
+ }
62
61
  }));
63
62
  routes = hooks.modifyRoutes.call(routes);
64
63
  const { query } = createStaticHandler(routes, {
@@ -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, reporter }) {
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, reporter }) {
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: () => RuntimeContext;
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,2 @@
1
+ import type { Monitors } from '@modern-js/types';
2
+ export declare const defaultMonitors: Omit<Monitors, 'push'>;
@@ -0,0 +1 @@
1
+ export declare const getMonitors: () => Omit<import("@modern-js/types").Monitors, "push">;
@@ -0,0 +1,2 @@
1
+ import type { Monitors } from '@modern-js/types';
2
+ export declare const getMonitors: () => Omit<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;
@@ -12,6 +12,7 @@ interface BaseRuntimeContext {
12
12
  store?: Store;
13
13
  routeManifest: RouteManifest;
14
14
  routerContext?: StaticHandlerContext;
15
+ context?: TSSRContext;
15
16
  /**
16
17
  * private
17
18
  */
@@ -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;
@@ -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 };
@@ -0,0 +1,3 @@
1
+ export { getRequest } from './core/context/request';
2
+ export { getMonitors } from './core/context/monitors';
3
+ export { setHeaders, setStatus, redirect } from './core/context/response';
@@ -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, Reporter, SSRMode } from '@modern-js/types';
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, reporter, }: {
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, reporter, }: {
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;