@modern-js/runtime 2.41.0 → 2.42.1
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/document/DocumentStructureContext.js +2 -1
- package/dist/cjs/document/Head.js +7 -5
- package/dist/cjs/document/Html.js +2 -0
- package/dist/cjs/document/Title.js +34 -0
- package/dist/cjs/document/cli/index.js +5 -1
- package/dist/cjs/document/constants.js +3 -0
- package/dist/cjs/router/runtime/index.js +6 -2
- package/dist/cjs/router/runtime/plugin.js +2 -2
- package/dist/cjs/router/runtime/{shouldRevalidate.js → routeModule.js} +19 -5
- package/dist/cjs/ssr/index.js +3 -3
- package/dist/cjs/ssr/serverRender/tracker.js +9 -6
- package/dist/esm/document/DocumentStructureContext.js +2 -1
- package/dist/esm/document/Head.js +7 -5
- package/dist/esm/document/Html.js +2 -0
- package/dist/esm/document/Title.js +10 -0
- package/dist/esm/document/cli/index.js +9 -3
- package/dist/esm/document/constants.js +2 -0
- package/dist/esm/router/runtime/index.js +3 -1
- package/dist/esm/router/runtime/plugin.js +1 -1
- package/dist/esm/router/runtime/{shouldRevalidate.js → routeModule.js} +13 -1
- package/dist/esm/ssr/index.js +1 -1
- package/dist/esm/ssr/serverRender/tracker.js +9 -6
- package/dist/esm-node/document/DocumentStructureContext.js +2 -1
- package/dist/esm-node/document/Head.js +7 -5
- package/dist/esm-node/document/Html.js +2 -0
- package/dist/esm-node/document/Title.js +10 -0
- package/dist/esm-node/document/cli/index.js +6 -2
- package/dist/esm-node/document/constants.js +2 -0
- package/dist/esm-node/router/runtime/index.js +3 -1
- package/dist/esm-node/router/runtime/plugin.js +1 -1
- package/dist/esm-node/router/runtime/{shouldRevalidate.js → routeModule.js} +13 -1
- package/dist/esm-node/ssr/index.js +1 -1
- package/dist/esm-node/ssr/serverRender/tracker.js +9 -6
- package/dist/types/cli/index.d.ts +1 -1
- package/dist/types/common.d.ts +3 -3
- package/dist/types/config.d.ts +5 -5
- package/dist/types/core/appConfig.d.ts +1 -1
- package/dist/types/core/compatible.d.ts +8 -11
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/loader/index.d.ts +1 -1
- package/dist/types/core/loader/loaderManager.d.ts +38 -38
- package/dist/types/core/loader/useLoader.d.ts +31 -31
- package/dist/types/core/plugin.d.ts +178 -177
- package/dist/types/core/types.d.ts +12 -12
- package/dist/types/document/Body.d.ts +2 -2
- package/dist/types/document/Comment.d.ts +3 -3
- package/dist/types/document/DocumentContext.d.ts +9 -9
- package/dist/types/document/DocumentStructureContext.d.ts +8 -7
- package/dist/types/document/Head.d.ts +2 -2
- package/dist/types/document/Html.d.ts +2 -2
- package/dist/types/document/Links.d.ts +1 -1
- package/dist/types/document/Root.d.ts +4 -4
- package/dist/types/document/Script.d.ts +2 -2
- package/dist/types/document/Scripts.d.ts +1 -1
- package/dist/types/document/Style.d.ts +3 -3
- package/dist/types/document/Title.d.ts +2 -0
- package/dist/types/document/cli/index.d.ts +1 -1
- package/dist/types/document/constants.d.ts +3 -2
- package/dist/types/document/index.d.ts +1 -1
- package/dist/types/exports/head.d.ts +1 -1
- package/dist/types/exports/loadable.d.ts +1 -1
- package/dist/types/exports/server.d.ts +9 -17
- package/dist/types/exports/styled.d.ts +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/router/cli/index.d.ts +1 -1
- package/dist/types/router/index.d.ts +1 -1
- package/dist/types/router/runtime/DefaultNotFound.d.ts +1 -1
- package/dist/types/router/runtime/DeferredDataScripts.d.ts +1 -1
- package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +2 -2
- package/dist/types/router/runtime/PrefetchLink.d.ts +3 -3
- package/dist/types/router/runtime/fetch.d.ts +1 -1
- package/dist/types/router/runtime/fetch.node.d.ts +1 -1
- package/dist/types/router/runtime/fetch.worker.d.ts +1 -1
- package/dist/types/router/runtime/hooks.d.ts +1 -1
- package/dist/types/router/runtime/index.d.ts +3 -3
- package/dist/types/router/runtime/plugin.d.ts +1 -7
- package/dist/types/router/runtime/plugin.node.d.ts +2 -6
- package/dist/types/router/runtime/routeModule.d.ts +6 -0
- package/dist/types/router/runtime/server.d.ts +1 -1
- package/dist/types/router/runtime/types.d.ts +41 -41
- package/dist/types/router/runtime/utils.d.ts +11 -21
- package/dist/types/router/runtime/withRouter.d.ts +4 -4
- package/dist/types/runtimeContext.d.ts +26 -26
- package/dist/types/ssr/cli/babel-plugin-ssr-loader-id.d.ts +1 -1
- package/dist/types/ssr/cli/index.d.ts +1 -1
- package/dist/types/ssr/cli/loadable-bundler-plugin.d.ts +1 -1
- package/dist/types/ssr/index.d.ts +5 -5
- package/dist/types/ssr/index.node.d.ts +1 -1
- package/dist/types/ssr/prefetch.d.ts +9 -9
- package/dist/types/ssr/react/index.d.ts +1 -1
- package/dist/types/ssr/react/nossr/index.d.ts +3 -3
- package/dist/types/ssr/react/prerender/index.d.ts +1 -1
- package/dist/types/ssr/react/prerender/type.d.ts +17 -17
- package/dist/types/ssr/react/prerender/util.d.ts +1 -1
- package/dist/types/ssr/react/withCallback/index.d.ts +3 -3
- package/dist/types/ssr/serverRender/helmet.d.ts +1 -1
- package/dist/types/ssr/serverRender/index.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +3 -3
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +1 -4
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +3 -3
- package/dist/types/ssr/serverRender/renderToString/buildHtml.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToString/entry.d.ts +19 -19
- package/dist/types/ssr/serverRender/renderToString/index.d.ts +1 -5
- package/dist/types/ssr/serverRender/renderToString/loadable.d.ts +18 -18
- package/dist/types/ssr/serverRender/renderToString/render.d.ts +8 -8
- package/dist/types/ssr/serverRender/renderToString/styledComponent.d.ts +7 -7
- package/dist/types/ssr/serverRender/renderToString/type.d.ts +10 -10
- package/dist/types/ssr/serverRender/tracker.d.ts +14 -19
- package/dist/types/ssr/serverRender/types.d.ts +17 -17
- package/dist/types/ssr/serverRender/utils.d.ts +1 -1
- package/dist/types/ssr/utils.d.ts +4 -4
- package/dist/types/state/cli/index.d.ts +1 -1
- package/dist/types/state/index.d.ts +1 -1
- package/dist/types/state/plugins.d.ts +1 -1
- package/dist/types/state/runtime/index.d.ts +1 -1
- package/dist/types/state/runtime/plugin.d.ts +3 -3
- package/package.json +10 -10
- package/dist/types/router/runtime/shouldRevalidate.d.ts +0 -2
|
@@ -4,7 +4,7 @@ import ReactDomServer from "react-dom/server";
|
|
|
4
4
|
import { build } from "esbuild";
|
|
5
5
|
import { createDebugger, findExists, fs } from "@modern-js/utils";
|
|
6
6
|
import { DocumentContext } from "../DocumentContext";
|
|
7
|
-
import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END, TOP_PARTICALS_SEPARATOR, HEAD_PARTICALS_SEPARATOR, BODY_PARTICALS_SEPARATOR } from "../constants";
|
|
7
|
+
import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END, DOCUMENT_TITLE_PLACEHOLDER, TOP_PARTICALS_SEPARATOR, HEAD_PARTICALS_SEPARATOR, BODY_PARTICALS_SEPARATOR } from "../constants";
|
|
8
8
|
const debug = createDebugger("html_genarate");
|
|
9
9
|
const getDocumenByEntryName = function(entrypoints, entryName, fallbackDir) {
|
|
10
10
|
var _entrypoints_find;
|
|
@@ -132,6 +132,10 @@ const documentPlugin = () => ({
|
|
|
132
132
|
templateParameters.meta,
|
|
133
133
|
htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName !== "script" && item.tagName !== "link").join("")
|
|
134
134
|
].join("");
|
|
135
|
+
const titles = [
|
|
136
|
+
templateParameters.title,
|
|
137
|
+
htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName === "title").join("")
|
|
138
|
+
].join("");
|
|
135
139
|
if (html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_START) && html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_END)) {
|
|
136
140
|
const { nonce } = config.security;
|
|
137
141
|
const nonceAttr = nonce ? `nonce=${nonce}` : "";
|
|
@@ -143,7 +147,7 @@ const documentPlugin = () => ({
|
|
|
143
147
|
if (html.includes(DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(DOCUMENT_COMMENT_PLACEHOLDER_END)) {
|
|
144
148
|
html = html.replace(new RegExp(`${DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
|
|
145
149
|
}
|
|
146
|
-
const finalHtml = `<!DOCTYPE html>${html}`.replace(DOCUMENT_META_PLACEHOLDER, metas).replace(DOCUMENT_SSR_PLACEHOLDER, HTML_SEPARATOR).replace(DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(DOCUMENT_LINKS_PLACEHOLDER, links).replace(DOCUMENT_CHUNKSMAP_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]);
|
|
150
|
+
const finalHtml = `<!DOCTYPE html>${html}`.replace(DOCUMENT_META_PLACEHOLDER, metas).replace(DOCUMENT_SSR_PLACEHOLDER, HTML_SEPARATOR).replace(DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(DOCUMENT_LINKS_PLACEHOLDER, links).replace(DOCUMENT_CHUNKSMAP_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]).replace(DOCUMENT_TITLE_PLACEHOLDER, titles);
|
|
147
151
|
return finalHtml;
|
|
148
152
|
};
|
|
149
153
|
};
|
|
@@ -6,6 +6,7 @@ const DOC_EXT = [
|
|
|
6
6
|
"js"
|
|
7
7
|
];
|
|
8
8
|
const DOCUMENT_META_PLACEHOLDER = encodeURIComponent("<%= meta %>");
|
|
9
|
+
const DOCUMENT_TITLE_PLACEHOLDER = encodeURIComponent("<%= title %>");
|
|
9
10
|
const HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
10
11
|
const HEAD_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.head ?>-->");
|
|
11
12
|
const BODY_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.body ?>-->");
|
|
@@ -43,6 +44,7 @@ export {
|
|
|
43
44
|
DOCUMENT_SSR_PLACEHOLDER,
|
|
44
45
|
DOCUMENT_STYLE_PLACEHOLDER_END,
|
|
45
46
|
DOCUMENT_STYLE_PLACEHOLDER_START,
|
|
47
|
+
DOCUMENT_TITLE_PLACEHOLDER,
|
|
46
48
|
DOC_EXT,
|
|
47
49
|
HEAD_PARTICALS_SEPARATOR,
|
|
48
50
|
HTML_SEPARATOR,
|
|
@@ -9,7 +9,7 @@ const useRouteLoaderData = (routeId) => {
|
|
|
9
9
|
const realRouteId = routeId.replace(/\[(.*?)\]/g, "($1)");
|
|
10
10
|
return useRouteData(realRouteId);
|
|
11
11
|
};
|
|
12
|
-
import { createShouldRevalidate } from "./
|
|
12
|
+
import { createShouldRevalidate, handleRouteModule, handleRouteModuleError } from "./routeModule";
|
|
13
13
|
import {
|
|
14
14
|
createBrowserRouter,
|
|
15
15
|
createHashRouter,
|
|
@@ -94,6 +94,8 @@ export {
|
|
|
94
94
|
runtime_default as default,
|
|
95
95
|
defer,
|
|
96
96
|
generatePath,
|
|
97
|
+
handleRouteModule,
|
|
98
|
+
handleRouteModuleError,
|
|
97
99
|
isRouteErrorResponse,
|
|
98
100
|
json,
|
|
99
101
|
matchPath,
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useContext, useMemo } from "react";
|
|
3
3
|
import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation } from "@modern-js/runtime-utils/router";
|
|
4
4
|
import hoistNonReactStatics from "hoist-non-react-statics";
|
|
5
|
-
import { parsedJSONFromElement } from "@modern-js/runtime-utils/
|
|
5
|
+
import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
|
|
6
6
|
import { RuntimeReactContext } from "../../core";
|
|
7
7
|
import { modifyRoutes as modifyRoutesHook } from "./hooks";
|
|
8
8
|
import { deserializeErrors, renderRoutes, urlJoin } from "./utils";
|
|
@@ -9,6 +9,18 @@ const createShouldRevalidate = (routeId) => {
|
|
|
9
9
|
return arg.defaultShouldRevalidate;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
+
const handleRouteModule = (routeModule, routeId) => {
|
|
13
|
+
if (typeof document !== "undefined") {
|
|
14
|
+
window[ROUTE_MODULES][routeId] = routeModule;
|
|
15
|
+
}
|
|
16
|
+
return routeModule;
|
|
17
|
+
};
|
|
18
|
+
const handleRouteModuleError = (error) => {
|
|
19
|
+
console.error(error);
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
12
22
|
export {
|
|
13
|
-
createShouldRevalidate
|
|
23
|
+
createShouldRevalidate,
|
|
24
|
+
handleRouteModule,
|
|
25
|
+
handleRouteModuleError
|
|
14
26
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { loadableReady } from "@loadable/component";
|
|
3
3
|
import hoistNonReactStatics from "hoist-non-react-statics";
|
|
4
|
-
import { parsedJSONFromElement } from "@modern-js/runtime-utils/
|
|
4
|
+
import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
|
|
5
5
|
import { RenderLevel } from "./serverRender/types";
|
|
6
6
|
import { WithCallback } from "./react/withCallback";
|
|
7
7
|
import { formatClient, mockResponse, isReact18 } from "./utils";
|
|
@@ -15,22 +15,22 @@ var SSRErrors;
|
|
|
15
15
|
})(SSRErrors || (SSRErrors = {}));
|
|
16
16
|
const errors = {
|
|
17
17
|
[0]: {
|
|
18
|
-
reporter: "
|
|
18
|
+
reporter: "App Prerender",
|
|
19
19
|
logger: "App Prerender",
|
|
20
20
|
metrics: "app.prerender.error"
|
|
21
21
|
},
|
|
22
22
|
[1]: {
|
|
23
|
-
reporter: "
|
|
23
|
+
reporter: "App run useLoader",
|
|
24
24
|
logger: "App run useLoader",
|
|
25
25
|
metrics: "app.useloader.error"
|
|
26
26
|
},
|
|
27
27
|
[2]: {
|
|
28
|
-
reporter: "
|
|
28
|
+
reporter: "App Render To HTML",
|
|
29
29
|
logger: "App Render To HTML",
|
|
30
30
|
metrics: "app.render.html.error"
|
|
31
31
|
},
|
|
32
32
|
[3]: {
|
|
33
|
-
reporter: "
|
|
33
|
+
reporter: "App Render To Streaming",
|
|
34
34
|
logger: "An error occurs during streaming SSR",
|
|
35
35
|
metrics: "app.render.streaming.error"
|
|
36
36
|
},
|
|
@@ -52,11 +52,14 @@ const timings = {
|
|
|
52
52
|
logger: "App Render To HTML cost = %d ms"
|
|
53
53
|
},
|
|
54
54
|
[2]: {
|
|
55
|
-
reporter: "ssr-render-shell"
|
|
55
|
+
reporter: "ssr-render-shell",
|
|
56
|
+
metrics: "app.render.shell.cost",
|
|
57
|
+
logger: "App Render To Shell cost = %d ms"
|
|
56
58
|
},
|
|
57
59
|
[3]: {
|
|
58
60
|
reporter: "use-loader",
|
|
59
61
|
serverTiming: "use-loader",
|
|
62
|
+
metrics: "app.useloader.cost",
|
|
60
63
|
logger: "App run useLoader cost = %d ms"
|
|
61
64
|
}
|
|
62
65
|
};
|
|
@@ -67,7 +70,7 @@ function createSSRTracker({ reporter, serverTiming, metrics, logger }) {
|
|
|
67
70
|
},
|
|
68
71
|
trackError(key, e) {
|
|
69
72
|
const { reporter: reporterContent, metrics: metricsContent, logger: loggerContent } = errors[key];
|
|
70
|
-
reporterContent && reporter.reportError(reporterContent
|
|
73
|
+
reporterContent && reporter.reportError(`SSR Error - ${reporterContent}`, e);
|
|
71
74
|
metricsContent && metrics.emitCounter(metricsContent, 1);
|
|
72
75
|
loggerContent && logger.error(loggerContent, e);
|
|
73
76
|
},
|
package/dist/types/common.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { StateConfig } from './state';
|
|
2
2
|
export declare const isBrowser: () => boolean;
|
|
3
3
|
export interface AppConfig {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
state?: StateConfig | boolean;
|
|
5
|
+
[key: string]: any;
|
|
6
6
|
}
|
|
7
7
|
export declare const JSX_SHELL_STREAM_END_MARK = "<!--<?- SHELL_STREAM_END ?>-->";
|
|
8
|
-
export declare const ESCAPED_SHELL_STREAM_END_MARK = "<!--<?- SHELL_STREAM_END ?>-->";
|
|
8
|
+
export declare const ESCAPED_SHELL_STREAM_END_MARK = "<!--<?- SHELL_STREAM_END ?>-->";
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { StateConfig } from './state';
|
|
2
2
|
import type { RouterConfig } from './router';
|
|
3
3
|
export interface RuntimeUserConfig {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
4
|
+
runtime?: {
|
|
5
|
+
state?: boolean | StateConfig;
|
|
6
|
+
router?: boolean | RouterConfig;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { AppConfig } from '../common';
|
|
3
3
|
export declare const getConfig: (Component: React.ComponentType<any>) => AppConfig | undefined;
|
|
4
|
-
export declare const defineConfig: (Component: React.ComponentType<any>, config: AppConfig) => React.ComponentType<any>;
|
|
4
|
+
export declare const defineConfig: (Component: React.ComponentType<any>, config: AppConfig) => React.ComponentType<any>;
|
|
@@ -4,19 +4,16 @@ import type { hydrateRoot, createRoot } from 'react-dom/client';
|
|
|
4
4
|
import { RuntimeContext, TRuntimeContext } from '../runtimeContext';
|
|
5
5
|
import { Plugin } from './plugin';
|
|
6
6
|
export type CreateAppOptions = {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
plugins: Plugin[];
|
|
8
|
+
props?: any;
|
|
9
9
|
};
|
|
10
|
-
export declare const createApp: ({
|
|
11
|
-
plugins,
|
|
12
|
-
props: globalProps
|
|
13
|
-
}: CreateAppOptions) => (App?: React.ComponentType<any>) => React.ComponentType<any>;
|
|
10
|
+
export declare const createApp: ({ plugins, props: globalProps, }: CreateAppOptions) => (App?: React.ComponentType<any>) => React.ComponentType<any>;
|
|
14
11
|
type BootStrap<T = unknown> = (App: React.ComponentType, id: string | HTMLElement | RuntimeContext, root?: any, ReactDOM?: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
render?: Renderer;
|
|
13
|
+
hydrate?: Renderer;
|
|
14
|
+
createRoot?: typeof createRoot;
|
|
15
|
+
hydrateRoot?: typeof hydrateRoot;
|
|
19
16
|
}) => Promise<T>;
|
|
20
17
|
export declare const bootstrap: BootStrap;
|
|
21
18
|
export declare const useRuntimeContext: () => TRuntimeContext;
|
|
22
|
-
export {};
|
|
19
|
+
export {};
|
|
@@ -6,4 +6,4 @@ export type { TRuntimeContext, RuntimeContext } from '../runtimeContext';
|
|
|
6
6
|
export { RuntimeReactContext, ServerRouterContext } from '../runtimeContext';
|
|
7
7
|
export * from './loader';
|
|
8
8
|
export type { SSRData, SSRContainer } from './types';
|
|
9
|
-
export * from '@modern-js/plugin';
|
|
9
|
+
export * from '@modern-js/plugin';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as useLoader } from './useLoader';
|
|
1
|
+
export { default as useLoader } from './useLoader';
|
|
@@ -1,56 +1,56 @@
|
|
|
1
1
|
import { LoaderOptions } from './useLoader';
|
|
2
2
|
export declare enum LoaderStatus {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
idle = 0,
|
|
4
|
+
loading = 1,
|
|
5
|
+
fulfilled = 2,
|
|
6
|
+
rejected = 3
|
|
7
7
|
}
|
|
8
8
|
export type LoaderResult = {
|
|
9
|
-
loading: boolean;
|
|
10
|
-
reloading: boolean;
|
|
11
|
-
data: any;
|
|
12
|
-
error: any;
|
|
13
|
-
_error?: any;
|
|
14
|
-
};
|
|
15
|
-
declare const createLoader: (id: string, initialData: Partial<LoaderResult> | undefined, loaderFn: () => Promise<any>, skip?: boolean) => {
|
|
16
|
-
readonly result: {
|
|
17
9
|
loading: boolean;
|
|
18
10
|
reloading: boolean;
|
|
19
11
|
data: any;
|
|
20
12
|
error: any;
|
|
21
|
-
_error
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
_error?: any;
|
|
14
|
+
};
|
|
15
|
+
declare const createLoader: (id: string, initialData: Partial<LoaderResult> | undefined, loaderFn: () => Promise<any>, skip?: boolean) => {
|
|
16
|
+
readonly result: {
|
|
17
|
+
loading: boolean;
|
|
18
|
+
reloading: boolean;
|
|
19
|
+
data: any;
|
|
20
|
+
error: any;
|
|
21
|
+
_error: any;
|
|
22
|
+
};
|
|
23
|
+
readonly promise: Promise<any> | null;
|
|
24
|
+
onChange: (handler: (status: LoaderStatus, result: LoaderResult) => void) => () => void;
|
|
25
|
+
load: () => Promise<any>;
|
|
26
26
|
};
|
|
27
27
|
type ManagerOption = {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
/**
|
|
29
|
+
* whether current manage only exec static loader
|
|
30
|
+
*/
|
|
31
|
+
skipStatic?: boolean;
|
|
32
|
+
skipNonStatic?: boolean;
|
|
33
33
|
};
|
|
34
34
|
/**
|
|
35
35
|
* Create loaders manager. It's returned instance will add to context
|
|
36
36
|
* @param initialDataMap used to initialing loader data
|
|
37
37
|
*/
|
|
38
38
|
export declare const createLoaderManager: (initialDataMap: Record<string, LoaderResult>, managerOptions?: ManagerOption) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
hasPendingLoaders: () => boolean;
|
|
40
|
+
awaitPendingLoaders: () => Promise<Record<string, LoaderResult>>;
|
|
41
|
+
add: (loaderFn: () => Promise<any>, loaderOptions: LoaderOptions) => any;
|
|
42
|
+
get: (id: string) => {
|
|
43
|
+
readonly result: {
|
|
44
|
+
loading: boolean;
|
|
45
|
+
reloading: boolean;
|
|
46
|
+
data: any;
|
|
47
|
+
error: any;
|
|
48
|
+
_error: any;
|
|
49
|
+
};
|
|
50
|
+
readonly promise: Promise<any> | null;
|
|
51
|
+
onChange: (handler: (status: LoaderStatus, result: LoaderResult) => void) => () => void;
|
|
52
|
+
load: () => Promise<any>;
|
|
53
|
+
} | undefined;
|
|
54
54
|
};
|
|
55
55
|
export type Loader = ReturnType<typeof createLoader>;
|
|
56
|
-
export {};
|
|
56
|
+
export {};
|
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
type LoaderFn<P = any, T = any> = (context: any, params: P) => Promise<T>;
|
|
2
2
|
export interface LoaderOptions<Params = any, TData = any, TError extends Error = any> {
|
|
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
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Revoke when loader excuted successfully.
|
|
5
|
+
*/
|
|
6
|
+
onSuccess?: (data: TData) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Revoke when loader ended with error
|
|
9
|
+
*/
|
|
10
|
+
onError?: (error: TError) => void;
|
|
11
|
+
/**
|
|
12
|
+
* initialData to display once loader is ready.
|
|
13
|
+
*/
|
|
14
|
+
initialData?: TData;
|
|
15
|
+
/**
|
|
16
|
+
* whether skip loader
|
|
17
|
+
* if true, the loader will not exec.
|
|
18
|
+
*/
|
|
19
|
+
skip?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* User params, it will pass to loader's second parameter.
|
|
22
|
+
*/
|
|
23
|
+
params?: Params;
|
|
24
|
+
/**
|
|
25
|
+
* whether loader can exec on build phase.
|
|
26
|
+
*/
|
|
27
|
+
static?: boolean;
|
|
28
28
|
}
|
|
29
29
|
declare const useLoader: <TData = any, Params = any, E = any>(loaderFn: LoaderFn<Params, TData>, options?: LoaderOptions<Params, any, any>) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
reload: (params?: Params | undefined) => Promise<any> | undefined;
|
|
31
|
+
loading: boolean;
|
|
32
|
+
reloading: boolean;
|
|
33
|
+
data: TData;
|
|
34
|
+
error: E;
|
|
35
35
|
};
|
|
36
|
-
export default useLoader;
|
|
36
|
+
export default useLoader;
|