@modern-js/runtime 2.57.1-alpha.0 → 2.57.2-alpha.0
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/cli/ssr/index.js +14 -1
- package/dist/cjs/core/browser/hydrate.js +9 -25
- package/dist/cjs/core/browser/index.js +3 -5
- package/dist/cjs/core/compatible.js +6 -19
- package/dist/cjs/core/react/index.js +1 -10
- package/dist/cjs/core/react/wrapper.js +44 -0
- package/dist/cjs/core/server/requestHandler.js +0 -1
- package/dist/cjs/core/server/stream/shared.js +4 -16
- package/dist/cjs/core/server/string/index.js +4 -6
- package/dist/cjs/core/server/string/prefetch.js +7 -21
- package/dist/esm/cli/ssr/index.js +16 -1
- package/dist/esm/core/browser/hydrate.js +9 -15
- package/dist/esm/core/browser/index.js +3 -5
- package/dist/esm/core/compatible.js +5 -22
- package/dist/esm/core/react/index.js +2 -14
- package/dist/esm/core/react/wrapper.js +10 -0
- package/dist/esm/core/server/requestHandler.js +0 -1
- package/dist/esm/core/server/stream/shared.js +4 -6
- package/dist/esm/core/server/string/index.js +4 -6
- package/dist/esm/core/server/string/prefetch.js +7 -11
- package/dist/esm-node/cli/ssr/index.js +14 -1
- package/dist/esm-node/core/browser/hydrate.js +9 -15
- package/dist/esm-node/core/browser/index.js +3 -5
- package/dist/esm-node/core/compatible.js +6 -19
- package/dist/esm-node/core/react/index.js +2 -11
- package/dist/esm-node/core/react/wrapper.js +10 -0
- package/dist/esm-node/core/server/requestHandler.js +0 -1
- package/dist/esm-node/core/server/stream/shared.js +4 -6
- package/dist/esm-node/core/server/string/index.js +4 -6
- package/dist/esm-node/core/server/string/prefetch.js +7 -11
- package/dist/index.js +635 -0
- package/dist/types/core/compatible.d.ts +1 -1
- package/dist/types/core/react/index.d.ts +1 -1
- package/dist/types/core/react/wrapper.d.ts +3 -0
- package/package.json +11 -11
|
@@ -86,6 +86,7 @@ const ssrPlugin = () => ({
|
|
|
86
86
|
"@modern-js/runtime"
|
|
87
87
|
],
|
|
88
88
|
setup: (api) => {
|
|
89
|
+
const appContext = api.useAppContext();
|
|
89
90
|
return {
|
|
90
91
|
// for bundle
|
|
91
92
|
config() {
|
|
@@ -123,7 +124,19 @@ const ssrPlugin = () => ({
|
|
|
123
124
|
}
|
|
124
125
|
},
|
|
125
126
|
tools: {
|
|
126
|
-
babel: babelHandler
|
|
127
|
+
babel: babelHandler,
|
|
128
|
+
bundlerChain: (chain, { isServer }) => {
|
|
129
|
+
if (isServer && appContext.moduleType === "module") {
|
|
130
|
+
chain.output.libraryTarget("module").set("chunkFormat", "module");
|
|
131
|
+
chain.output.library({
|
|
132
|
+
type: "module"
|
|
133
|
+
});
|
|
134
|
+
chain.experiments({
|
|
135
|
+
...chain.get("experiments"),
|
|
136
|
+
outputModule: true
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
127
140
|
}
|
|
128
141
|
};
|
|
129
142
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
15
|
}
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
19
|
var hydrate_exports = {};
|
|
30
20
|
__export(hydrate_exports, {
|
|
@@ -35,8 +25,8 @@ module.exports = __toCommonJS(hydrate_exports);
|
|
|
35
25
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
26
|
var import_url = require("@modern-js/runtime-utils/url");
|
|
37
27
|
var import_component = require("@loadable/component");
|
|
38
|
-
var import_react = __toESM(require("react"));
|
|
39
28
|
var import_constants = require("../constants");
|
|
29
|
+
var import_wrapper = require("../react/wrapper");
|
|
40
30
|
var import_withCallback = require("./withCallback");
|
|
41
31
|
const isReact18 = () => process.env.IS_REACT18 === "true";
|
|
42
32
|
function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
@@ -68,38 +58,32 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
68
58
|
if (renderLevel === import_constants.RenderLevel.SERVER_RENDER) {
|
|
69
59
|
const SSRApp = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_withCallback.WithCallback, {
|
|
70
60
|
callback,
|
|
71
|
-
children:
|
|
72
|
-
_internal_context: hydrateContext
|
|
73
|
-
})
|
|
61
|
+
children: App
|
|
74
62
|
});
|
|
75
|
-
return ModernHydrate(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {}));
|
|
63
|
+
return ModernHydrate((0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {}), hydrateContext));
|
|
76
64
|
} else {
|
|
77
|
-
return ModernRender(App);
|
|
65
|
+
return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
|
|
78
66
|
}
|
|
79
67
|
}
|
|
80
68
|
return stringSSRHydrate();
|
|
81
69
|
function stringSSRHydrate() {
|
|
82
70
|
if (renderLevel === import_constants.RenderLevel.CLIENT_RENDER || renderLevel === import_constants.RenderLevel.SERVER_PREFETCH) {
|
|
83
|
-
return ModernRender(App);
|
|
71
|
+
return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
|
|
84
72
|
} else if (renderLevel === import_constants.RenderLevel.SERVER_RENDER) {
|
|
85
73
|
return new Promise((resolve) => {
|
|
86
74
|
if (isReact18()) {
|
|
87
75
|
(0, import_component.loadableReady)(() => {
|
|
88
76
|
const SSRApp = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_withCallback.WithCallback, {
|
|
89
77
|
callback,
|
|
90
|
-
children:
|
|
91
|
-
_internal_context: hydrateContext
|
|
92
|
-
})
|
|
78
|
+
children: App
|
|
93
79
|
});
|
|
94
|
-
ModernHydrate(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {})).then((root) => {
|
|
80
|
+
ModernHydrate((0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {}), hydrateContext)).then((root) => {
|
|
95
81
|
resolve(root);
|
|
96
82
|
});
|
|
97
83
|
});
|
|
98
84
|
} else {
|
|
99
85
|
(0, import_component.loadableReady)(() => {
|
|
100
|
-
ModernHydrate(
|
|
101
|
-
_internal_context: hydrateContext
|
|
102
|
-
}), callback).then((root) => {
|
|
86
|
+
ModernHydrate((0, import_wrapper.wrapRuntimeContextProvider)(App, hydrateContext), callback).then((root) => {
|
|
103
87
|
resolve(root);
|
|
104
88
|
});
|
|
105
89
|
});
|
|
@@ -107,7 +91,7 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
107
91
|
});
|
|
108
92
|
} else {
|
|
109
93
|
console.warn(`unknow render level: ${renderLevel}, execute render()`);
|
|
110
|
-
return ModernRender(App);
|
|
94
|
+
return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
|
|
111
95
|
}
|
|
112
96
|
}
|
|
113
97
|
}
|
|
@@ -31,12 +31,12 @@ __export(browser_exports, {
|
|
|
31
31
|
render: () => render
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(browser_exports);
|
|
34
|
-
var import_react = __toESM(require("react"));
|
|
35
34
|
var import_cookie = __toESM(require("cookie"));
|
|
36
35
|
var import_context = require("../context");
|
|
37
36
|
var import_runtime = require("../context/runtime");
|
|
38
37
|
var import_loaderManager = require("../loader/loaderManager");
|
|
39
38
|
var import_runner = require("../plugin/runner");
|
|
39
|
+
var import_wrapper = require("../react/wrapper");
|
|
40
40
|
var import_hydrate = require("./hydrate");
|
|
41
41
|
const IS_REACT18 = process.env.IS_REACT18 === "true";
|
|
42
42
|
function getSSRData() {
|
|
@@ -99,9 +99,7 @@ async function render(App, id) {
|
|
|
99
99
|
const rootElement = id && typeof id !== "string" ? id : document.getElementById(id || "root");
|
|
100
100
|
async function ModernRender(App2) {
|
|
101
101
|
const renderFunc = IS_REACT18 ? renderWithReact18 : renderWithReact17;
|
|
102
|
-
return renderFunc(
|
|
103
|
-
_internal_context: context
|
|
104
|
-
}), rootElement);
|
|
102
|
+
return renderFunc(App2, rootElement);
|
|
105
103
|
}
|
|
106
104
|
async function ModernHydrate(App2, callback) {
|
|
107
105
|
const hydrateFunc = IS_REACT18 ? hydrateWithReact18 : hydrateWithReact17;
|
|
@@ -110,7 +108,7 @@ async function render(App, id) {
|
|
|
110
108
|
if (ssrData) {
|
|
111
109
|
return (0, import_hydrate.hydrateRoot)(App, context, ModernRender, ModernHydrate);
|
|
112
110
|
}
|
|
113
|
-
return ModernRender(App);
|
|
111
|
+
return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
|
|
114
112
|
}
|
|
115
113
|
throw Error("`render` function needs id in browser environment, it needs to be string or element");
|
|
116
114
|
}
|
|
@@ -42,6 +42,7 @@ var import_loaderManager = require("./loader/loaderManager");
|
|
|
42
42
|
var import_runner = require("./plugin/runner");
|
|
43
43
|
var import_context = require("./context");
|
|
44
44
|
var import_hydrate = require("./browser/hydrate");
|
|
45
|
+
var import_wrapper = require("./react/wrapper");
|
|
45
46
|
const IS_REACT18 = process.env.IS_REACT18 === "true";
|
|
46
47
|
function isClientArgs(id) {
|
|
47
48
|
return typeof id === "string" || typeof HTMLElement !== "undefined" && id instanceof HTMLElement;
|
|
@@ -66,23 +67,13 @@ const createApp = ({ plugins, runtime, props: globalProps }) => {
|
|
|
66
67
|
}) : child));
|
|
67
68
|
};
|
|
68
69
|
const WrapperApp = runner.wrapRoot(WrapperComponent);
|
|
69
|
-
const WrapComponent = (
|
|
70
|
-
let contextValue = _internal_context;
|
|
71
|
-
if (!(contextValue === null || contextValue === void 0 ? void 0 : contextValue.runner)) {
|
|
72
|
-
var _getGlobalAppInit;
|
|
73
|
-
contextValue = getInitialContext(runner);
|
|
74
|
-
runner === null || runner === void 0 ? void 0 : runner.beforeRender(contextValue);
|
|
75
|
-
(_getGlobalAppInit = (0, import_context.getGlobalAppInit)()) === null || _getGlobalAppInit === void 0 ? void 0 : _getGlobalAppInit(contextValue);
|
|
76
|
-
}
|
|
70
|
+
const WrapComponent = (props) => {
|
|
77
71
|
const mergedProps = {
|
|
78
72
|
...props,
|
|
79
73
|
...globalProps
|
|
80
74
|
};
|
|
81
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
82
|
-
|
|
83
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrapperApp, {
|
|
84
|
-
...mergedProps
|
|
85
|
-
})
|
|
75
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrapperApp, {
|
|
76
|
+
...mergedProps
|
|
86
77
|
});
|
|
87
78
|
};
|
|
88
79
|
return WrapComponent;
|
|
@@ -98,9 +89,7 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
|
|
|
98
89
|
return init === null || init === void 0 ? void 0 : init(context2);
|
|
99
90
|
};
|
|
100
91
|
if (!id) {
|
|
101
|
-
return /* @__PURE__ */
|
|
102
|
-
_internal_context: context
|
|
103
|
-
});
|
|
92
|
+
return (0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {}), context);
|
|
104
93
|
}
|
|
105
94
|
const isBrowser = typeof window !== "undefined" && window.name !== "nodejs";
|
|
106
95
|
if (isBrowser) {
|
|
@@ -171,9 +160,7 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
|
|
|
171
160
|
if (ssrData) {
|
|
172
161
|
return (0, import_hydrate.hydrateRoot)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {}), context, ModernRender, ModernHydrate);
|
|
173
162
|
}
|
|
174
|
-
return ModernRender(/* @__PURE__ */
|
|
175
|
-
_internal_context: context
|
|
176
|
-
}));
|
|
163
|
+
return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {}), context));
|
|
177
164
|
} else {
|
|
178
165
|
throw Error("`bootstrap` needs id in browser environment, it needs to be string or element");
|
|
179
166
|
}
|
|
@@ -21,22 +21,13 @@ __export(react_exports, {
|
|
|
21
21
|
createRoot: () => createRoot
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(react_exports);
|
|
24
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
24
|
var import_context = require("../context");
|
|
26
25
|
var import_runner = require("../plugin/runner");
|
|
27
26
|
function createRoot(UserApp) {
|
|
28
27
|
const App = UserApp || (0, import_context.getGlobalApp)();
|
|
29
28
|
const runner = (0, import_runner.getGlobalRunner)();
|
|
30
29
|
const WrapperApp = runner.wrapRoot(App);
|
|
31
|
-
|
|
32
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_context.RuntimeReactContext.Provider, {
|
|
33
|
-
value: _internal_context,
|
|
34
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrapperApp, {
|
|
35
|
-
...props
|
|
36
|
-
})
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
return WrapComponent;
|
|
30
|
+
return WrapperApp;
|
|
40
31
|
}
|
|
41
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
42
33
|
0 && (module.exports = {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var wrapper_exports = {};
|
|
30
|
+
__export(wrapper_exports, {
|
|
31
|
+
wrapRuntimeContextProvider: () => wrapRuntimeContextProvider
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(wrapper_exports);
|
|
34
|
+
var import_react = __toESM(require("react"));
|
|
35
|
+
var import_context = require("../context");
|
|
36
|
+
function wrapRuntimeContextProvider(App, contextValue) {
|
|
37
|
+
return /* @__PURE__ */ import_react.default.createElement(import_context.RuntimeReactContext.Provider, {
|
|
38
|
+
value: contextValue
|
|
39
|
+
}, App);
|
|
40
|
+
}
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
wrapRuntimeContextProvider
|
|
44
|
+
});
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
15
|
}
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
19
|
var shared_exports = {};
|
|
30
20
|
__export(shared_exports, {
|
|
@@ -37,7 +27,7 @@ module.exports = __toCommonJS(shared_exports);
|
|
|
37
27
|
var import_time = require("@modern-js/runtime-utils/time");
|
|
38
28
|
var import_request = require("@modern-js/runtime-utils/universal/request");
|
|
39
29
|
var import_node = require("@modern-js/runtime-utils/node");
|
|
40
|
-
var
|
|
30
|
+
var import_wrapper = require("../../react/wrapper");
|
|
41
31
|
var import_tracer = require("../tracer");
|
|
42
32
|
var import_utils = require("../utils");
|
|
43
33
|
var ShellChunkStatus;
|
|
@@ -74,11 +64,9 @@ function createRenderStreaming(createReadableStreamFromElement) {
|
|
|
74
64
|
const onTiming = (0, import_tracer.createOnTiming)(options.onTiming);
|
|
75
65
|
const { htmlTemplate, entryName } = resource;
|
|
76
66
|
const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
|
|
77
|
-
const rootElement =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
})
|
|
81
|
-
});
|
|
67
|
+
const rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
|
|
68
|
+
ssr: true
|
|
69
|
+
}));
|
|
82
70
|
const stream = await createReadableStreamFromElement(request, rootElement, {
|
|
83
71
|
config,
|
|
84
72
|
htmlTemplate,
|
|
@@ -33,10 +33,10 @@ __export(string_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(string_exports);
|
|
34
34
|
var import_react_helmet = __toESM(require("react-helmet"));
|
|
35
35
|
var import_server = __toESM(require("react-dom/server"));
|
|
36
|
-
var import_react = __toESM(require("react"));
|
|
37
36
|
var import_time = require("@modern-js/runtime-utils/time");
|
|
38
37
|
var import_node = require("@modern-js/runtime-utils/node");
|
|
39
38
|
var import_request = require("@modern-js/runtime-utils/universal/request");
|
|
39
|
+
var import_wrapper = require("../../react/wrapper");
|
|
40
40
|
var import_helmet = require("../helmet");
|
|
41
41
|
var import_utils = require("../utils");
|
|
42
42
|
var import_constants = require("../constants");
|
|
@@ -94,11 +94,9 @@ const renderString = async (request, serverRoot, options) => {
|
|
|
94
94
|
nonce: config.nonce
|
|
95
95
|
})
|
|
96
96
|
];
|
|
97
|
-
const rootElement =
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
})
|
|
101
|
-
});
|
|
97
|
+
const rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
|
|
98
|
+
ssr: true
|
|
99
|
+
}));
|
|
102
100
|
const html = await generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer);
|
|
103
101
|
return html;
|
|
104
102
|
});
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
15
|
}
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
19
|
var prefetch_exports = {};
|
|
30
20
|
__export(prefetch_exports, {
|
|
@@ -36,7 +26,7 @@ var import_node = require("@modern-js/runtime-utils/node");
|
|
|
36
26
|
var import_server2 = require("@loadable/server");
|
|
37
27
|
var import_time = require("@modern-js/runtime-utils/time");
|
|
38
28
|
var import_request = require("@modern-js/runtime-utils/universal/request");
|
|
39
|
-
var
|
|
29
|
+
var import_wrapper = require("../../react/wrapper");
|
|
40
30
|
var import_tracer = require("../tracer");
|
|
41
31
|
const prefetch = async (App, request, options, ssrConfig, { onError, onTiming }) => {
|
|
42
32
|
const headersData = (0, import_request.parseHeaders)(request);
|
|
@@ -54,17 +44,13 @@ const prefetch = async (App, request, options, ssrConfig, { onError, onTiming })
|
|
|
54
44
|
entryName
|
|
55
45
|
].filter(Boolean)
|
|
56
46
|
});
|
|
57
|
-
(0, import_server.renderToStaticMarkup)(extractor.collectChunks(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
})
|
|
61
|
-
})));
|
|
47
|
+
(0, import_server.renderToStaticMarkup)(extractor.collectChunks((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
|
|
48
|
+
ssr: false
|
|
49
|
+
}))));
|
|
62
50
|
} else {
|
|
63
|
-
(0, import_server.renderToStaticMarkup)(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
})
|
|
67
|
-
}));
|
|
51
|
+
(0, import_server.renderToStaticMarkup)((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
|
|
52
|
+
ssr: false
|
|
53
|
+
})));
|
|
68
54
|
}
|
|
69
55
|
const cost = end();
|
|
70
56
|
onTiming(import_tracer.SSRTimings.PRERENDER, cost);
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
2
|
+
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
1
3
|
import path from "path";
|
|
2
4
|
import { LOADABLE_STATS_FILE, isUseSSRBundle } from "@modern-js/utils";
|
|
3
5
|
var hasStringSSREntry = function(userConfig) {
|
|
@@ -75,6 +77,7 @@ var ssrPlugin = function() {
|
|
|
75
77
|
"@modern-js/runtime"
|
|
76
78
|
],
|
|
77
79
|
setup: function(api) {
|
|
80
|
+
var appContext = api.useAppContext();
|
|
78
81
|
return {
|
|
79
82
|
// for bundle
|
|
80
83
|
config: function config() {
|
|
@@ -112,7 +115,19 @@ var ssrPlugin = function() {
|
|
|
112
115
|
}
|
|
113
116
|
},
|
|
114
117
|
tools: {
|
|
115
|
-
babel: babelHandler
|
|
118
|
+
babel: babelHandler,
|
|
119
|
+
bundlerChain: function(chain, param) {
|
|
120
|
+
var isServer = param.isServer;
|
|
121
|
+
if (isServer && appContext.moduleType === "module") {
|
|
122
|
+
chain.output.libraryTarget("module").set("chunkFormat", "module");
|
|
123
|
+
chain.output.library({
|
|
124
|
+
type: "module"
|
|
125
|
+
});
|
|
126
|
+
chain.experiments(_object_spread_props(_object_spread({}, chain.get("experiments")), {
|
|
127
|
+
outputModule: true
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
116
131
|
}
|
|
117
132
|
};
|
|
118
133
|
}
|
|
@@ -3,8 +3,8 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
import { normalizePathname } from "@modern-js/runtime-utils/url";
|
|
5
5
|
import { loadableReady } from "@loadable/component";
|
|
6
|
-
import React from "react";
|
|
7
6
|
import { RenderLevel } from "../constants";
|
|
7
|
+
import { wrapRuntimeContextProvider } from "../react/wrapper";
|
|
8
8
|
import { WithCallback } from "./withCallback";
|
|
9
9
|
var isReact18 = function() {
|
|
10
10
|
return process.env.IS_REACT18 === "true";
|
|
@@ -38,20 +38,18 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
38
38
|
var SSRApp = function() {
|
|
39
39
|
return /* @__PURE__ */ _jsx(WithCallback, {
|
|
40
40
|
callback,
|
|
41
|
-
children:
|
|
42
|
-
_internal_context: hydrateContext
|
|
43
|
-
})
|
|
41
|
+
children: App
|
|
44
42
|
});
|
|
45
43
|
};
|
|
46
|
-
return ModernHydrate(/* @__PURE__ */ _jsx(SSRApp, {}));
|
|
44
|
+
return ModernHydrate(wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(SSRApp, {}), hydrateContext));
|
|
47
45
|
} else {
|
|
48
|
-
return ModernRender(App);
|
|
46
|
+
return ModernRender(wrapRuntimeContextProvider(App, context));
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
return stringSSRHydrate();
|
|
52
50
|
function stringSSRHydrate() {
|
|
53
51
|
if (renderLevel === RenderLevel.CLIENT_RENDER || renderLevel === RenderLevel.SERVER_PREFETCH) {
|
|
54
|
-
return ModernRender(App);
|
|
52
|
+
return ModernRender(wrapRuntimeContextProvider(App, context));
|
|
55
53
|
} else if (renderLevel === RenderLevel.SERVER_RENDER) {
|
|
56
54
|
return new Promise(function(resolve) {
|
|
57
55
|
if (isReact18()) {
|
|
@@ -59,20 +57,16 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
59
57
|
var SSRApp = function() {
|
|
60
58
|
return /* @__PURE__ */ _jsx(WithCallback, {
|
|
61
59
|
callback,
|
|
62
|
-
children:
|
|
63
|
-
_internal_context: hydrateContext
|
|
64
|
-
})
|
|
60
|
+
children: App
|
|
65
61
|
});
|
|
66
62
|
};
|
|
67
|
-
ModernHydrate(/* @__PURE__ */ _jsx(SSRApp, {})).then(function(root) {
|
|
63
|
+
ModernHydrate(wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(SSRApp, {}), hydrateContext)).then(function(root) {
|
|
68
64
|
resolve(root);
|
|
69
65
|
});
|
|
70
66
|
});
|
|
71
67
|
} else {
|
|
72
68
|
loadableReady(function() {
|
|
73
|
-
ModernHydrate(
|
|
74
|
-
_internal_context: hydrateContext
|
|
75
|
-
}), callback).then(function(root) {
|
|
69
|
+
ModernHydrate(wrapRuntimeContextProvider(App, hydrateContext), callback).then(function(root) {
|
|
76
70
|
resolve(root);
|
|
77
71
|
});
|
|
78
72
|
});
|
|
@@ -80,7 +74,7 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
80
74
|
});
|
|
81
75
|
} else {
|
|
82
76
|
console.warn("unknow render level: ".concat(renderLevel, ", execute render()"));
|
|
83
|
-
return ModernRender(App);
|
|
77
|
+
return ModernRender(wrapRuntimeContextProvider(App, context));
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
80
|
}
|
|
@@ -3,12 +3,12 @@ import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
|
3
3
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
4
4
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
5
5
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
6
|
-
import React from "react";
|
|
7
6
|
import cookieTool from "cookie";
|
|
8
7
|
import { getGlobalAppInit } from "../context";
|
|
9
8
|
import { getInitialContext } from "../context/runtime";
|
|
10
9
|
import { createLoaderManager } from "../loader/loaderManager";
|
|
11
10
|
import { getGlobalRunner } from "../plugin/runner";
|
|
11
|
+
import { wrapRuntimeContextProvider } from "../react/wrapper";
|
|
12
12
|
import { hydrateRoot } from "./hydrate";
|
|
13
13
|
var IS_REACT18 = process.env.IS_REACT18 === "true";
|
|
14
14
|
function getSSRData() {
|
|
@@ -43,9 +43,7 @@ function _render() {
|
|
|
43
43
|
renderFunc = IS_REACT18 ? renderWithReact18 : renderWithReact17;
|
|
44
44
|
return [
|
|
45
45
|
2,
|
|
46
|
-
renderFunc(
|
|
47
|
-
_internal_context: context
|
|
48
|
-
}), rootElement)
|
|
46
|
+
renderFunc(App2, rootElement)
|
|
49
47
|
];
|
|
50
48
|
});
|
|
51
49
|
});
|
|
@@ -142,7 +140,7 @@ function _render() {
|
|
|
142
140
|
}
|
|
143
141
|
return [
|
|
144
142
|
2,
|
|
145
|
-
ModernRender(App)
|
|
143
|
+
ModernRender(wrapRuntimeContextProvider(App, context))
|
|
146
144
|
];
|
|
147
145
|
case 2:
|
|
148
146
|
throw Error("`render` function needs id in browser environment, it needs to be string or element");
|
|
@@ -2,7 +2,6 @@ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
|
2
2
|
import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
3
3
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
4
4
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
5
|
-
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
6
5
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
7
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
7
|
import React, { useContext, useMemo } from "react";
|
|
@@ -13,6 +12,7 @@ import { createLoaderManager } from "./loader/loaderManager";
|
|
|
13
12
|
import { getGlobalRunner } from "./plugin/runner";
|
|
14
13
|
import { getGlobalAppInit } from "./context";
|
|
15
14
|
import { hydrateRoot as ModernHydrateRoot } from "./browser/hydrate";
|
|
15
|
+
import { wrapRuntimeContextProvider } from "./react/wrapper";
|
|
16
16
|
var IS_REACT18 = process.env.IS_REACT18 === "true";
|
|
17
17
|
function isClientArgs(id) {
|
|
18
18
|
return typeof id === "string" || typeof HTMLElement !== "undefined" && _instanceof(id, HTMLElement);
|
|
@@ -37,22 +37,9 @@ var createApp = function(param) {
|
|
|
37
37
|
}));
|
|
38
38
|
};
|
|
39
39
|
var WrapperApp = runner.wrapRoot(WrapperComponent);
|
|
40
|
-
var WrapComponent = function(
|
|
41
|
-
var _internal_context = _param._internal_context, props = _object_without_properties(_param, [
|
|
42
|
-
"_internal_context"
|
|
43
|
-
]);
|
|
44
|
-
var contextValue = _internal_context;
|
|
45
|
-
if (!(contextValue === null || contextValue === void 0 ? void 0 : contextValue.runner)) {
|
|
46
|
-
var _getGlobalAppInit;
|
|
47
|
-
contextValue = getInitialContext(runner);
|
|
48
|
-
runner === null || runner === void 0 ? void 0 : runner.beforeRender(contextValue);
|
|
49
|
-
(_getGlobalAppInit = getGlobalAppInit()) === null || _getGlobalAppInit === void 0 ? void 0 : _getGlobalAppInit(contextValue);
|
|
50
|
-
}
|
|
40
|
+
var WrapComponent = function(props) {
|
|
51
41
|
var mergedProps = _object_spread({}, props, globalProps);
|
|
52
|
-
return /* @__PURE__ */ _jsx(
|
|
53
|
-
value: contextValue,
|
|
54
|
-
children: /* @__PURE__ */ _jsx(WrapperApp, _object_spread({}, mergedProps))
|
|
55
|
-
});
|
|
42
|
+
return /* @__PURE__ */ _jsx(WrapperApp, _object_spread({}, mergedProps));
|
|
56
43
|
};
|
|
57
44
|
return WrapComponent;
|
|
58
45
|
};
|
|
@@ -93,9 +80,7 @@ var bootstrap = function() {
|
|
|
93
80
|
if (!id) {
|
|
94
81
|
return [
|
|
95
82
|
2,
|
|
96
|
-
/* @__PURE__ */
|
|
97
|
-
_internal_context: context
|
|
98
|
-
})
|
|
83
|
+
wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(App, {}), context)
|
|
99
84
|
];
|
|
100
85
|
}
|
|
101
86
|
isBrowser = typeof window !== "undefined" && window.name !== "nodejs";
|
|
@@ -183,9 +168,7 @@ var bootstrap = function() {
|
|
|
183
168
|
}
|
|
184
169
|
return [
|
|
185
170
|
2,
|
|
186
|
-
ModernRender(/* @__PURE__ */
|
|
187
|
-
_internal_context: context
|
|
188
|
-
}))
|
|
171
|
+
ModernRender(wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(App, {}), context))
|
|
189
172
|
];
|
|
190
173
|
case 2:
|
|
191
174
|
throw Error("`bootstrap` needs id in browser environment, it needs to be string or element");
|
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
3
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
import { RuntimeReactContext, getGlobalApp } from "../context";
|
|
1
|
+
import { getGlobalApp } from "../context";
|
|
5
2
|
import { getGlobalRunner } from "../plugin/runner";
|
|
6
3
|
function createRoot(UserApp) {
|
|
7
4
|
var App = UserApp || getGlobalApp();
|
|
8
5
|
var runner = getGlobalRunner();
|
|
9
6
|
var WrapperApp = runner.wrapRoot(App);
|
|
10
|
-
|
|
11
|
-
var _internal_context = _param._internal_context, props = _object_without_properties(_param, [
|
|
12
|
-
"_internal_context"
|
|
13
|
-
]);
|
|
14
|
-
return /* @__PURE__ */ _jsx(RuntimeReactContext.Provider, {
|
|
15
|
-
value: _internal_context,
|
|
16
|
-
children: /* @__PURE__ */ _jsx(WrapperApp, _object_spread({}, props))
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
return WrapComponent;
|
|
7
|
+
return WrapperApp;
|
|
20
8
|
}
|
|
21
9
|
export {
|
|
22
10
|
createRoot
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { RuntimeReactContext } from "../context";
|
|
3
|
+
function wrapRuntimeContextProvider(App, contextValue) {
|
|
4
|
+
return /* @__PURE__ */ React.createElement(RuntimeReactContext.Provider, {
|
|
5
|
+
value: contextValue
|
|
6
|
+
}, App);
|
|
7
|
+
}
|
|
8
|
+
export {
|
|
9
|
+
wrapRuntimeContextProvider
|
|
10
|
+
};
|