@modern-js/runtime 1.21.5 → 2.0.0-beta.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/CHANGELOG.md +117 -18
- package/dist/js/modern/cli/index.js +3 -5
- package/dist/js/modern/core/app-config.js +2 -1
- package/dist/js/modern/core/compatible.js +47 -48
- package/dist/js/modern/core/index.js +4 -3
- package/dist/js/modern/core/loader/loaderManager.js +12 -34
- package/dist/js/modern/core/loader/useLoader.js +8 -26
- package/dist/js/modern/core/plugin.js +6 -28
- package/dist/js/modern/document/Body.js +17 -0
- package/dist/js/modern/document/DocumentContext.js +6 -0
- package/dist/js/modern/document/DocumentStructrueContext.js +7 -0
- package/dist/js/modern/document/Head.js +24 -0
- package/dist/js/modern/document/Html.js +92 -0
- package/dist/js/modern/document/Root.js +31 -0
- package/dist/js/modern/document/Scripts.js +10 -0
- package/dist/js/modern/document/cli/index.js +130 -0
- package/dist/js/modern/document/constants.js +19 -0
- package/dist/js/modern/document/index.js +8 -0
- package/dist/js/modern/index.js +2 -1
- package/dist/js/modern/router/cli/index.js +20 -20
- package/dist/js/modern/router/runtime/index.js +1 -1
- package/dist/js/modern/router/runtime/plugin.js +25 -52
- package/dist/js/modern/router/runtime/plugin.node.js +137 -0
- package/dist/js/modern/router/runtime/root/index.js +19 -0
- package/dist/js/modern/router/runtime/root/load.js +61 -0
- package/dist/js/modern/router/runtime/types.js +1 -0
- package/dist/js/modern/router/runtime/utils.js +99 -58
- package/dist/js/modern/router/runtime/withRouter.js +20 -0
- package/dist/js/modern/runtime-context.js +2 -1
- package/dist/js/modern/ssr/cli/index.js +35 -17
- package/dist/js/modern/ssr/index.js +64 -51
- package/dist/js/modern/ssr/index.node.js +6 -15
- package/dist/js/modern/ssr/prefetch.js +0 -7
- package/dist/js/modern/ssr/react/prerender/index.js +2 -23
- package/dist/js/modern/ssr/react/prerender/util.js +2 -17
- package/dist/js/modern/ssr/react/withCallback/index.js +0 -1
- package/dist/js/modern/ssr/serverRender/helmet.js +12 -20
- package/dist/js/modern/ssr/serverRender/index.js +12 -27
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +38 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +5 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +58 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +40 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +24 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +72 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +11 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/template.js +18 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/modern/ssr/serverRender/{entry.js → renderToString/entry.js} +6 -40
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +29 -0
- package/dist/js/modern/ssr/serverRender/{loadable.js → renderToString/loadable.js} +2 -24
- package/dist/js/modern/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
- package/dist/js/modern/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/modern/ssr/serverRender/{template.js → renderToString/template.js} +0 -15
- package/dist/js/modern/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/modern/ssr/serverRender/types.js +2 -0
- package/dist/js/modern/ssr/serverRender/utils.js +20 -0
- package/dist/js/modern/ssr/utils.js +8 -13
- package/dist/js/modern/state/cli/index.js +0 -10
- package/dist/js/modern/state/runtime/plugin.js +1 -14
- package/dist/js/node/cli/index.js +3 -13
- package/dist/js/node/common.js +0 -2
- package/dist/js/node/core/app-config.js +2 -5
- package/dist/js/node/core/compatible.js +47 -66
- package/dist/js/node/core/index.js +8 -17
- package/dist/js/node/core/loader/index.js +0 -2
- package/dist/js/node/core/loader/loaderManager.js +12 -37
- package/dist/js/node/core/loader/useLoader.js +8 -31
- package/dist/js/node/core/plugin.js +5 -34
- package/dist/js/node/document/Body.js +26 -0
- package/dist/js/node/document/DocumentContext.js +14 -0
- package/dist/js/node/document/DocumentStructrueContext.js +15 -0
- package/dist/js/node/document/Head.js +33 -0
- package/dist/js/node/document/Html.js +98 -0
- package/dist/js/node/document/Root.js +41 -0
- package/dist/js/node/document/Scripts.js +17 -0
- package/dist/js/node/document/cli/index.js +140 -0
- package/dist/js/node/document/constants.js +36 -0
- package/dist/js/node/document/index.js +93 -0
- package/dist/js/node/exports/head.js +0 -5
- package/dist/js/node/exports/loadable.js +0 -5
- package/dist/js/node/exports/server.js +0 -2
- package/dist/js/node/exports/styled.js +0 -5
- package/dist/js/node/index.js +5 -5
- package/dist/js/node/router/cli/index.js +20 -24
- package/dist/js/node/router/index.js +0 -4
- package/dist/js/node/router/runtime/DefaultNotFound.js +1 -5
- package/dist/js/node/router/runtime/index.js +4 -9
- package/dist/js/node/router/runtime/plugin.js +23 -65
- package/dist/js/node/router/runtime/plugin.node.js +147 -0
- package/dist/js/node/router/runtime/root/index.js +26 -0
- package/dist/js/node/router/runtime/root/load.js +69 -0
- package/dist/js/node/router/runtime/types.js +5 -0
- package/dist/js/node/router/runtime/utils.js +101 -67
- package/dist/js/node/router/runtime/withRouter.js +26 -0
- package/dist/js/node/runtime-context.js +4 -4
- package/dist/js/node/ssr/cli/index.js +35 -21
- package/dist/js/node/ssr/index.js +63 -62
- package/dist/js/node/ssr/index.node.js +6 -25
- package/dist/js/node/ssr/prefetch.js +0 -11
- package/dist/js/node/ssr/react/index.js +0 -2
- package/dist/js/node/ssr/react/nossr/index.js +0 -6
- package/dist/js/node/ssr/react/prerender/index.js +2 -30
- package/dist/js/node/ssr/react/prerender/util.js +2 -25
- package/dist/js/node/ssr/react/withCallback/index.js +1 -4
- package/dist/js/node/ssr/serverRender/helmet.js +13 -20
- package/dist/js/node/ssr/serverRender/index.js +14 -39
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +45 -0
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +13 -0
- package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +65 -0
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +48 -0
- package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +30 -0
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +79 -0
- package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +17 -0
- package/dist/js/node/ssr/serverRender/renderToStream/template.js +25 -0
- package/dist/js/node/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/node/ssr/serverRender/{entry.js → renderToString/entry.js} +13 -64
- package/dist/js/node/ssr/serverRender/renderToString/index.js +37 -0
- package/dist/js/node/ssr/serverRender/{loadable.js → renderToString/loadable.js} +3 -28
- package/dist/js/node/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -3
- package/dist/js/node/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -3
- package/dist/js/node/ssr/serverRender/{template.js → renderToString/template.js} +0 -18
- package/dist/js/node/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/node/ssr/serverRender/types.js +12 -0
- package/dist/js/node/ssr/serverRender/utils.js +28 -0
- package/dist/js/node/ssr/utils.js +10 -21
- package/dist/js/node/state/cli/index.js +0 -15
- package/dist/js/node/state/index.js +0 -4
- package/dist/js/node/state/plugins.js +0 -11
- package/dist/js/node/state/runtime/index.js +0 -7
- package/dist/js/node/state/runtime/plugin.js +1 -25
- package/dist/js/treeshaking/cli/index.js +3 -3
- package/dist/js/treeshaking/core/app-config.js +2 -1
- package/dist/js/treeshaking/core/compatible.js +50 -65
- package/dist/js/treeshaking/core/index.js +4 -3
- package/dist/js/treeshaking/core/loader/loaderManager.js +19 -51
- package/dist/js/treeshaking/core/loader/useLoader.js +11 -28
- package/dist/js/treeshaking/core/plugin.js +6 -51
- package/dist/js/treeshaking/document/Body.js +14 -0
- package/dist/js/treeshaking/document/DocumentContext.js +6 -0
- package/dist/js/treeshaking/document/DocumentStructrueContext.js +7 -0
- package/dist/js/treeshaking/document/Head.js +21 -0
- package/dist/js/treeshaking/document/Html.js +104 -0
- package/dist/js/treeshaking/document/Root.js +24 -0
- package/dist/js/treeshaking/document/Scripts.js +10 -0
- package/dist/js/treeshaking/document/cli/index.js +170 -0
- package/dist/js/treeshaking/document/constants.js +16 -0
- package/dist/js/treeshaking/document/index.js +8 -0
- package/dist/js/treeshaking/index.js +2 -1
- package/dist/js/treeshaking/router/cli/index.js +26 -22
- package/dist/js/treeshaking/router/runtime/index.js +1 -1
- package/dist/js/treeshaking/router/runtime/plugin.js +28 -54
- package/dist/js/treeshaking/router/runtime/plugin.node.js +161 -0
- package/dist/js/treeshaking/router/runtime/root/index.js +17 -0
- package/dist/js/treeshaking/router/runtime/root/load.js +102 -0
- package/dist/js/treeshaking/router/runtime/types.js +1 -0
- package/dist/js/treeshaking/router/runtime/utils.js +104 -58
- package/dist/js/treeshaking/router/runtime/withRouter.js +18 -0
- package/dist/js/treeshaking/runtime-context.js +2 -1
- package/dist/js/treeshaking/ssr/cli/index.js +43 -23
- package/dist/js/treeshaking/ssr/index.js +74 -59
- package/dist/js/treeshaking/ssr/index.node.js +18 -31
- package/dist/js/treeshaking/ssr/prefetch.js +0 -13
- package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -4
- package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -21
- package/dist/js/treeshaking/ssr/react/prerender/util.js +3 -20
- package/dist/js/treeshaking/ssr/react/withCallback/index.js +1 -2
- package/dist/js/treeshaking/ssr/serverRender/helmet.js +12 -11
- package/dist/js/treeshaking/ssr/serverRender/index.js +33 -55
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +32 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +60 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +50 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +22 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +68 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +10 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +22 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{entry.js → renderToString/entry.js} +23 -76
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +44 -0
- package/dist/js/treeshaking/ssr/serverRender/{loadable.js → renderToString/loadable.js} +7 -34
- package/dist/js/treeshaking/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
- package/dist/js/treeshaking/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{template.js → renderToString/template.js} +2 -18
- package/dist/js/treeshaking/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
- package/dist/js/treeshaking/ssr/serverRender/utils.js +28 -0
- package/dist/js/treeshaking/ssr/utils.js +20 -17
- package/dist/js/treeshaking/state/cli/index.js +3 -10
- package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
- package/dist/types/cli/index.d.ts +0 -2
- package/dist/types/common.d.ts +0 -2
- package/dist/types/core/compatible.d.ts +2 -2
- package/dist/types/core/index.d.ts +2 -2
- package/dist/types/core/loader/loaderManager.d.ts +0 -1
- package/dist/types/core/loader/useLoader.d.ts +0 -5
- package/dist/types/core/plugin.d.ts +2 -14
- package/dist/types/document/Body.d.ts +4 -0
- package/dist/types/document/DocumentContext.d.ts +13 -0
- package/dist/types/document/DocumentStructrueContext.d.ts +10 -0
- package/dist/types/document/Head.d.ts +5 -0
- package/dist/types/document/Html.d.ts +4 -0
- package/dist/types/document/Root.d.ts +8 -0
- package/dist/types/document/Scripts.d.ts +2 -0
- package/dist/types/document/cli/index.d.ts +3 -0
- package/dist/types/document/constants.d.ts +14 -0
- package/dist/types/document/index.d.ts +8 -0
- package/dist/types/exports/server.d.ts +21 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/router/cli/index.d.ts +0 -2
- package/dist/types/router/runtime/DefaultNotFound.d.ts +1 -0
- package/dist/types/router/runtime/index.d.ts +3 -3
- package/dist/types/router/runtime/plugin.d.ts +2 -45
- package/dist/types/router/runtime/plugin.node.d.ts +8 -0
- package/dist/types/router/runtime/root/index.d.ts +8 -0
- package/dist/types/router/runtime/root/load.d.ts +22 -0
- package/dist/types/router/runtime/types.d.ts +36 -0
- package/dist/types/router/runtime/utils.d.ts +5 -2
- package/dist/types/router/runtime/withRouter.d.ts +8 -0
- package/dist/types/runtime-context.d.ts +3 -1
- package/dist/types/ssr/cli/index.d.ts +0 -2
- package/dist/types/ssr/index.d.ts +2 -2
- package/dist/types/ssr/index.node.d.ts +1 -1
- package/dist/types/ssr/prefetch.d.ts +2 -2
- package/dist/types/ssr/react/nossr/index.d.ts +3 -1
- package/dist/types/ssr/serverRender/index.d.ts +2 -3
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +7 -0
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +3 -0
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -0
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +6 -0
- package/dist/types/ssr/serverRender/renderToStream/loadable.d.ts +16 -0
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +8 -0
- package/dist/types/ssr/serverRender/renderToStream/styledComponent.d.ts +12 -0
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +3 -0
- package/dist/types/ssr/serverRender/renderToStream/type.d.ts +4 -0
- package/dist/types/ssr/serverRender/{entry.d.ts → renderToString/entry.d.ts} +2 -2
- package/dist/types/ssr/serverRender/renderToString/index.d.ts +6 -0
- package/dist/types/ssr/serverRender/{loadable.d.ts → renderToString/loadable.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{reduce.d.ts → renderToString/reduce.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{styledComponent.d.ts → renderToString/styledComponent.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{template.d.ts → renderToString/template.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{type.d.ts → renderToString/type.d.ts} +1 -8
- package/dist/types/ssr/serverRender/types.d.ts +15 -0
- package/dist/types/ssr/serverRender/utils.d.ts +3 -0
- package/dist/types/ssr/utils.d.ts +4 -2
- package/dist/types/state/cli/index.d.ts +0 -2
- package/dist/types/state/runtime/plugin.d.ts +1 -1
- package/dist/types/state/types.d.ts +0 -1
- package/package.json +63 -71
- package/types/index.d.ts +13 -0
- package/types/router.d.ts +14 -0
- package/dist/js/modern/ssr/serverRender/measure.js +0 -11
- package/dist/js/node/ssr/serverRender/measure.js +0 -20
- package/dist/js/treeshaking/ssr/serverRender/measure.js +0 -17
- package/dist/types/ssr/serverRender/measure.d.ts +0 -1
- package/lib/types.d.ts +0 -10
- package/type.d.ts +0 -5
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createLoaderManager = exports.LoaderStatus = void 0;
|
|
7
|
-
|
|
8
7
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
/**
|
|
13
10
|
* Calc id from string or object
|
|
14
11
|
*/
|
|
@@ -16,29 +13,25 @@ const createGetId = () => {
|
|
|
16
13
|
const idCache = new Map();
|
|
17
14
|
return objectId => {
|
|
18
15
|
const cachedId = idCache.get(objectId);
|
|
19
|
-
|
|
20
16
|
if (cachedId) {
|
|
21
17
|
return cachedId;
|
|
22
|
-
}
|
|
23
|
-
|
|
18
|
+
}
|
|
24
19
|
|
|
20
|
+
// WARNING: id should be unique after serialize.
|
|
25
21
|
const id = JSON.stringify(objectId);
|
|
26
22
|
(0, _invariant.default)(id, 'params should be not null value');
|
|
27
23
|
idCache.set(objectId, id);
|
|
28
24
|
return id;
|
|
29
25
|
};
|
|
30
26
|
};
|
|
31
|
-
|
|
32
27
|
let LoaderStatus;
|
|
33
28
|
exports.LoaderStatus = LoaderStatus;
|
|
34
|
-
|
|
35
29
|
(function (LoaderStatus) {
|
|
36
30
|
LoaderStatus[LoaderStatus["idle"] = 0] = "idle";
|
|
37
31
|
LoaderStatus[LoaderStatus["loading"] = 1] = "loading";
|
|
38
32
|
LoaderStatus[LoaderStatus["fulfilled"] = 2] = "fulfilled";
|
|
39
33
|
LoaderStatus[LoaderStatus["rejected"] = 3] = "rejected";
|
|
40
34
|
})(LoaderStatus || (exports.LoaderStatus = LoaderStatus = {}));
|
|
41
|
-
|
|
42
35
|
const createLoader = (id, initialData = {
|
|
43
36
|
loading: false,
|
|
44
37
|
reloading: false,
|
|
@@ -53,16 +46,13 @@ const createLoader = (id, initialData = {
|
|
|
53
46
|
} = initialData;
|
|
54
47
|
let hasLoaded = false;
|
|
55
48
|
const handlers = new Set();
|
|
56
|
-
|
|
57
49
|
const load = async () => {
|
|
58
50
|
if (skip) {
|
|
59
51
|
return promise;
|
|
60
52
|
}
|
|
61
|
-
|
|
62
53
|
if (status === LoaderStatus.loading) {
|
|
63
54
|
return promise;
|
|
64
55
|
}
|
|
65
|
-
|
|
66
56
|
status = LoaderStatus.loading;
|
|
67
57
|
notify();
|
|
68
58
|
promise = loaderFn().then(value => {
|
|
@@ -80,7 +70,6 @@ const createLoader = (id, initialData = {
|
|
|
80
70
|
});
|
|
81
71
|
return promise;
|
|
82
72
|
};
|
|
83
|
-
|
|
84
73
|
const getResult = () => ({
|
|
85
74
|
loading: !hasLoaded && status === LoaderStatus.loading,
|
|
86
75
|
reloading: hasLoaded && status === LoaderStatus.loading,
|
|
@@ -89,35 +78,29 @@ const createLoader = (id, initialData = {
|
|
|
89
78
|
// redundant fields for ssr log
|
|
90
79
|
_error: error
|
|
91
80
|
});
|
|
92
|
-
|
|
93
81
|
const notify = () => {
|
|
94
82
|
// don't iterate handlers directly, since it could be modified during iteration
|
|
95
83
|
[...handlers].forEach(handler => {
|
|
96
84
|
handler(status, getResult());
|
|
97
85
|
});
|
|
98
86
|
};
|
|
99
|
-
|
|
100
87
|
const onChange = handler => {
|
|
101
88
|
handlers.add(handler);
|
|
102
89
|
return () => {
|
|
103
90
|
handlers.delete(handler);
|
|
104
91
|
};
|
|
105
92
|
};
|
|
106
|
-
|
|
107
93
|
return {
|
|
108
94
|
get result() {
|
|
109
95
|
return getResult();
|
|
110
96
|
},
|
|
111
|
-
|
|
112
97
|
get promise() {
|
|
113
98
|
return promise;
|
|
114
99
|
},
|
|
115
|
-
|
|
116
100
|
onChange,
|
|
117
101
|
load
|
|
118
102
|
};
|
|
119
103
|
};
|
|
120
|
-
|
|
121
104
|
/**
|
|
122
105
|
* Create loaders manager. It's returned instance will add to context
|
|
123
106
|
* @param initialDataMap used to initialing loader data
|
|
@@ -129,67 +112,60 @@ const createLoaderManager = (initialDataMap, managerOptions = {}) => {
|
|
|
129
112
|
} = managerOptions;
|
|
130
113
|
const loadersMap = new Map();
|
|
131
114
|
const getId = createGetId();
|
|
132
|
-
|
|
133
115
|
const add = (loaderFn, loaderOptions) => {
|
|
134
116
|
const id = getId(loaderOptions.params);
|
|
135
|
-
let loader = loadersMap.get(id);
|
|
117
|
+
let loader = loadersMap.get(id);
|
|
136
118
|
|
|
119
|
+
// private property for opting out loader cache, maybe change in future
|
|
137
120
|
const cache = loaderOptions._cache;
|
|
138
|
-
|
|
139
121
|
if (!loader || cache === false) {
|
|
140
122
|
// ignore non-static loader on static phase
|
|
141
|
-
const ignoreNonStatic = skipNonStatic && !loaderOptions.static;
|
|
123
|
+
const ignoreNonStatic = skipNonStatic && !loaderOptions.static;
|
|
142
124
|
|
|
125
|
+
// ignore static loader on non-static phase
|
|
143
126
|
const ignoreStatic = skipStatic && loaderOptions.static;
|
|
144
127
|
const skipExec = ignoreNonStatic || ignoreStatic;
|
|
145
128
|
loader = createLoader(id, typeof initialDataMap[id] !== 'undefined' ? initialDataMap[id] : {
|
|
146
129
|
data: loaderOptions.initialData
|
|
147
|
-
}, loaderFn,
|
|
130
|
+
}, loaderFn,
|
|
131
|
+
// Todo whether static loader is exec when CSR
|
|
148
132
|
skipExec);
|
|
149
133
|
loadersMap.set(id, loader);
|
|
150
134
|
}
|
|
151
|
-
|
|
152
135
|
return id;
|
|
153
136
|
};
|
|
137
|
+
const get = id => loadersMap.get(id);
|
|
154
138
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
// check if there has pending loaders
|
|
158
140
|
const hasPendingLoaders = () => {
|
|
159
141
|
for (const loader of loadersMap.values()) {
|
|
160
142
|
const {
|
|
161
143
|
promise
|
|
162
144
|
} = loader;
|
|
163
|
-
|
|
164
145
|
if (promise instanceof Promise) {
|
|
165
146
|
return true;
|
|
166
147
|
}
|
|
167
148
|
}
|
|
168
|
-
|
|
169
149
|
return false;
|
|
170
|
-
};
|
|
171
|
-
|
|
150
|
+
};
|
|
172
151
|
|
|
152
|
+
// waiting for all pending loaders to be settled
|
|
173
153
|
const awaitPendingLoaders = async () => {
|
|
174
154
|
const pendingLoaders = [];
|
|
175
|
-
|
|
176
155
|
for (const [id, loader] of loadersMap) {
|
|
177
156
|
const {
|
|
178
157
|
promise
|
|
179
158
|
} = loader;
|
|
180
|
-
|
|
181
159
|
if (promise instanceof Promise) {
|
|
182
160
|
pendingLoaders.push([id, loader]);
|
|
183
161
|
}
|
|
184
162
|
}
|
|
185
|
-
|
|
186
163
|
await Promise.all(pendingLoaders.map(item => item[1].promise));
|
|
187
164
|
return pendingLoaders.reduce((res, [id, loader]) => {
|
|
188
165
|
res[id] = loader.result;
|
|
189
166
|
return res;
|
|
190
167
|
}, {});
|
|
191
168
|
};
|
|
192
|
-
|
|
193
169
|
return {
|
|
194
170
|
hasPendingLoaders,
|
|
195
171
|
awaitPendingLoaders,
|
|
@@ -197,5 +173,4 @@ const createLoaderManager = (initialDataMap, managerOptions = {}) => {
|
|
|
197
173
|
get
|
|
198
174
|
};
|
|
199
175
|
};
|
|
200
|
-
|
|
201
176
|
exports.createLoaderManager = createLoaderManager;
|
|
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
11
|
-
|
|
12
9
|
var _runtimeContext = require("../../runtime-context");
|
|
13
|
-
|
|
14
10
|
var _loaderManager = require("./loaderManager");
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
12
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
-
|
|
20
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
|
-
|
|
22
14
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
|
-
|
|
24
15
|
const useLoader = (loaderFn, options = {
|
|
25
16
|
params: undefined
|
|
26
17
|
}) => {
|
|
@@ -30,29 +21,24 @@ const useLoader = (loaderFn, options = {
|
|
|
30
21
|
loaderManager
|
|
31
22
|
} = context;
|
|
32
23
|
const loaderRef = (0, _react.useRef)();
|
|
33
|
-
const unlistenLoaderChangeRef = (0, _react.useRef)(null);
|
|
24
|
+
const unlistenLoaderChangeRef = (0, _react.useRef)(null);
|
|
34
25
|
|
|
26
|
+
// SSR render should ignore `_cache` prop
|
|
35
27
|
if (isSSRRender && Object.prototype.hasOwnProperty.call(options, '_cache')) {
|
|
36
28
|
delete options._cache;
|
|
37
29
|
}
|
|
38
|
-
|
|
39
30
|
const load = (0, _react.useCallback)(params => {
|
|
40
31
|
var _unlistenLoaderChange, _window, _window$_SSR_DATA, _window$_SSR_DATA$dat, _window$_SSR_DATA$dat2, _loaderRef$current2;
|
|
41
|
-
|
|
42
32
|
if (typeof params === 'undefined') {
|
|
43
33
|
var _loaderRef$current;
|
|
44
|
-
|
|
45
34
|
return (_loaderRef$current = loaderRef.current) === null || _loaderRef$current === void 0 ? void 0 : _loaderRef$current.load();
|
|
46
35
|
}
|
|
47
|
-
|
|
48
36
|
const id = loaderManager.add(() => {
|
|
49
37
|
try {
|
|
50
38
|
const res = loaderFn(context, params);
|
|
51
|
-
|
|
52
39
|
if (res instanceof Promise) {
|
|
53
40
|
return res;
|
|
54
41
|
}
|
|
55
|
-
|
|
56
42
|
return Promise.resolve(res);
|
|
57
43
|
} catch (e) {
|
|
58
44
|
return Promise.reject(e);
|
|
@@ -60,37 +46,31 @@ const useLoader = (loaderFn, options = {
|
|
|
60
46
|
}, _objectSpread(_objectSpread({}, options), {}, {
|
|
61
47
|
params
|
|
62
48
|
}));
|
|
63
|
-
loaderRef.current = loaderManager.get(id);
|
|
64
|
-
|
|
49
|
+
loaderRef.current = loaderManager.get(id);
|
|
50
|
+
// unsubscribe old loader onChange event
|
|
65
51
|
(_unlistenLoaderChange = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange === void 0 ? void 0 : _unlistenLoaderChange.call(unlistenLoaderChangeRef);
|
|
66
|
-
|
|
67
52
|
if (isSSRRender) {
|
|
68
53
|
return undefined;
|
|
69
|
-
}
|
|
70
|
-
|
|
54
|
+
}
|
|
71
55
|
|
|
56
|
+
// skip this loader, then try to unlisten loader change
|
|
72
57
|
if (options.skip) {
|
|
73
58
|
return undefined;
|
|
74
|
-
}
|
|
75
|
-
|
|
59
|
+
}
|
|
76
60
|
|
|
61
|
+
// do not load data again in CSR hydrate stage if SSR data exists
|
|
77
62
|
if (context._hydration && ((_window = window) === null || _window === void 0 ? void 0 : (_window$_SSR_DATA = _window._SSR_DATA) === null || _window$_SSR_DATA === void 0 ? void 0 : (_window$_SSR_DATA$dat = _window$_SSR_DATA.data) === null || _window$_SSR_DATA$dat === void 0 ? void 0 : (_window$_SSR_DATA$dat2 = _window$_SSR_DATA$dat.loadersData[id]) === null || _window$_SSR_DATA$dat2 === void 0 ? void 0 : _window$_SSR_DATA$dat2.error) === null) {
|
|
78
63
|
return undefined;
|
|
79
64
|
}
|
|
80
|
-
|
|
81
65
|
const res = loaderRef.current.load();
|
|
82
66
|
unlistenLoaderChangeRef.current = (_loaderRef$current2 = loaderRef.current) === null || _loaderRef$current2 === void 0 ? void 0 : _loaderRef$current2.onChange((_status, _result) => {
|
|
83
67
|
setResult(_result);
|
|
84
|
-
|
|
85
68
|
if (_status === _loaderManager.LoaderStatus.fulfilled) {
|
|
86
69
|
var _options$onSuccess;
|
|
87
|
-
|
|
88
70
|
options === null || options === void 0 ? void 0 : (_options$onSuccess = options.onSuccess) === null || _options$onSuccess === void 0 ? void 0 : _options$onSuccess.call(options, _result.data);
|
|
89
71
|
}
|
|
90
|
-
|
|
91
72
|
if (_status === _loaderManager.LoaderStatus.rejected) {
|
|
92
73
|
var _options$onError;
|
|
93
|
-
|
|
94
74
|
options === null || options === void 0 ? void 0 : (_options$onError = options.onError) === null || _options$onError === void 0 ? void 0 : _options$onError.call(options, _result.error);
|
|
95
75
|
}
|
|
96
76
|
});
|
|
@@ -98,12 +78,10 @@ const useLoader = (loaderFn, options = {
|
|
|
98
78
|
}, [options.skip]);
|
|
99
79
|
(0, _react.useEffect)(() => () => {
|
|
100
80
|
var _unlistenLoaderChange2;
|
|
101
|
-
|
|
102
81
|
(_unlistenLoaderChange2 = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange2 === void 0 ? void 0 : _unlistenLoaderChange2.call(unlistenLoaderChangeRef);
|
|
103
82
|
}, []);
|
|
104
83
|
(0, _react.useMemo)(() => {
|
|
105
84
|
var _options$params;
|
|
106
|
-
|
|
107
85
|
const p = (_options$params = options.params) !== null && _options$params !== void 0 ? _options$params : loaderFn.id;
|
|
108
86
|
(0, _invariant.default)(typeof p !== 'undefined' && p !== null, 'Params is required in useLoader');
|
|
109
87
|
load(p);
|
|
@@ -113,6 +91,5 @@ const useLoader = (loaderFn, options = {
|
|
|
113
91
|
reload: load
|
|
114
92
|
});
|
|
115
93
|
};
|
|
116
|
-
|
|
117
94
|
var _default = useLoader;
|
|
118
95
|
exports.default = _default;
|
|
@@ -3,19 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.runtime = exports.
|
|
7
|
-
|
|
6
|
+
exports.runtime = exports.registerInit = exports.createRuntime = exports.createPlugin = void 0;
|
|
8
7
|
var _plugin = require("@modern-js/plugin");
|
|
9
|
-
|
|
10
8
|
var _loaderManager = require("./loader/loaderManager");
|
|
9
|
+
const hoc = (0, _plugin.createPipeline)();
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
15
|
-
|
|
16
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
-
|
|
18
|
-
const hoc = (0, _plugin.createPipeline)(); // eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
19
12
|
|
|
20
13
|
const provide = (0, _plugin.createPipeline)();
|
|
21
14
|
const client = (0, _plugin.createAsyncPipeline)();
|
|
@@ -30,47 +23,25 @@ const runtimeHooks = {
|
|
|
30
23
|
init,
|
|
31
24
|
pickContext
|
|
32
25
|
};
|
|
26
|
+
|
|
33
27
|
/** All hooks of runtime plugin. */
|
|
34
28
|
|
|
35
29
|
const createRuntime = () => (0, _plugin.createManager)(runtimeHooks);
|
|
30
|
+
|
|
36
31
|
/**
|
|
37
32
|
* register init hook. It would be revoked both ssr and csr.
|
|
38
33
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
34
|
exports.createRuntime = createRuntime;
|
|
42
|
-
|
|
43
35
|
const registerInit = (App, _init) => {
|
|
44
36
|
const originalInit = App.init;
|
|
45
|
-
|
|
46
37
|
App.init = async context => {
|
|
47
38
|
if (!context.loaderManager) {
|
|
48
39
|
context.loaderManager = (0, _loaderManager.createLoaderManager)({});
|
|
49
40
|
}
|
|
50
|
-
|
|
51
41
|
await Promise.all([originalInit === null || originalInit === void 0 ? void 0 : originalInit(context), _init === null || _init === void 0 ? void 0 : _init(context)]);
|
|
52
42
|
};
|
|
53
43
|
};
|
|
54
|
-
/**
|
|
55
|
-
* register prefetch hook. It would be revoked both ssr and csr.
|
|
56
|
-
* But if ssr success, It wont exec in csr again.
|
|
57
|
-
* If ssr prefetch failed, It will fallback to exec in csr.
|
|
58
|
-
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
44
|
exports.registerInit = registerInit;
|
|
62
|
-
|
|
63
|
-
const registerPrefetch = (App, prefetch) => {
|
|
64
|
-
const originalPrefetch = App.prefetch;
|
|
65
|
-
|
|
66
|
-
App.prefetch = async context => {
|
|
67
|
-
const originResult = await (originalPrefetch === null || originalPrefetch === void 0 ? void 0 : originalPrefetch(context));
|
|
68
|
-
const result = await (prefetch === null || prefetch === void 0 ? void 0 : prefetch(context));
|
|
69
|
-
return _objectSpread(_objectSpread({}, originResult), result);
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
exports.registerPrefetch = registerPrefetch;
|
|
74
45
|
const runtime = createRuntime();
|
|
75
46
|
exports.runtime = runtime;
|
|
76
47
|
const {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Body = Body;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _constants = require("./constants");
|
|
9
|
+
var _DocumentStructrueContext = require("./DocumentStructrueContext");
|
|
10
|
+
var _Root = require("./Root");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
15
|
+
|
|
16
|
+
function Body(props) {
|
|
17
|
+
const {
|
|
18
|
+
hasSetRoot
|
|
19
|
+
} = (0, _react.useContext)(_DocumentStructrueContext.DocumentStructrueContext);
|
|
20
|
+
const {
|
|
21
|
+
children
|
|
22
|
+
} = props;
|
|
23
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("body", {
|
|
24
|
+
children: [hasSetRoot ? null : _Root.DefaultRoot, children, `${_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER}`, `${_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER}`]
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DocumentContext = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
const DocumentContext = /*#__PURE__*/_react.default.createContext({
|
|
10
|
+
config: {},
|
|
11
|
+
templateParams: {},
|
|
12
|
+
processEnv: {}
|
|
13
|
+
});
|
|
14
|
+
exports.DocumentContext = DocumentContext;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DocumentStructrueContext = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
const DocumentStructrueContext = /*#__PURE__*/_react.default.createContext({
|
|
10
|
+
hasSetHead: false,
|
|
11
|
+
hasSetScripts: false,
|
|
12
|
+
hasSetBody: false,
|
|
13
|
+
hasSetRoot: false
|
|
14
|
+
});
|
|
15
|
+
exports.DocumentStructrueContext = DocumentStructrueContext;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DefaultHead = DefaultHead;
|
|
7
|
+
exports.Head = Head;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _DocumentStructrueContext = require("./DocumentStructrueContext");
|
|
10
|
+
var _Scripts = require("./Scripts");
|
|
11
|
+
var _constants = require("./constants");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
+
|
|
17
|
+
function Head(props) {
|
|
18
|
+
const {
|
|
19
|
+
hasSetScripts
|
|
20
|
+
} = (0, _react.useContext)(_DocumentStructrueContext.DocumentStructrueContext);
|
|
21
|
+
const {
|
|
22
|
+
children
|
|
23
|
+
} = props;
|
|
24
|
+
// todo: verify the children
|
|
25
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("head", {
|
|
26
|
+
children: [`${_constants.DOCUMENT_META_PLACEHOLDER}`, !hasSetScripts && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scripts.Scripts, {}), children]
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function DefaultHead() {
|
|
30
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("head", {
|
|
31
|
+
children: `${_constants.DOCUMENT_META_PLACEHOLDER}`
|
|
32
|
+
});
|
|
33
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Html = Html;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _Body = require("./Body");
|
|
9
|
+
var _DocumentStructrueContext = require("./DocumentStructrueContext");
|
|
10
|
+
var _Head = require("./Head");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* get the directly son element
|
|
17
|
+
*/
|
|
18
|
+
function findTargetChild(tag, children) {
|
|
19
|
+
return children.find(item => getEleType(item) === tag);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* get the type of react element
|
|
24
|
+
*/
|
|
25
|
+
function getEleType(ele) {
|
|
26
|
+
// fixme: 非 react 的类型,有点儿问题。
|
|
27
|
+
return typeof (ele === null || ele === void 0 ? void 0 : ele.type) === 'function' ? ele.type.name : ele === null || ele === void 0 ? void 0 : ele.type;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* get the children(grandChild included) with target type
|
|
32
|
+
* @param tag the element type
|
|
33
|
+
* @param children son element
|
|
34
|
+
* @returns target element
|
|
35
|
+
*/
|
|
36
|
+
function findTargetElement(tag, children) {
|
|
37
|
+
if (children.length === 0) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
let nextChildren = [];
|
|
41
|
+
for (const item of children) {
|
|
42
|
+
var _item$props;
|
|
43
|
+
if (tag === getEleType(item)) {
|
|
44
|
+
return item;
|
|
45
|
+
}
|
|
46
|
+
if (item !== null && item !== void 0 && (_item$props = item.props) !== null && _item$props !== void 0 && _item$props.children) {
|
|
47
|
+
nextChildren = nextChildren.concat(item.props.children);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return findTargetElement(tag, nextChildren);
|
|
51
|
+
}
|
|
52
|
+
function Html(props) {
|
|
53
|
+
const {
|
|
54
|
+
children
|
|
55
|
+
} = props;
|
|
56
|
+
|
|
57
|
+
// deal with the component with default
|
|
58
|
+
const hasSetHead = Boolean(findTargetChild('Head', children));
|
|
59
|
+
const hasSetScripts = Boolean(findTargetElement('Scripts', children));
|
|
60
|
+
const hasSetBody = Boolean(findTargetChild('Body', children));
|
|
61
|
+
const hasSetRoot = Boolean(findTargetElement('Root', children));
|
|
62
|
+
const notMissMustChild = [hasSetHead, hasSetBody
|
|
63
|
+
// hasSetScripts,
|
|
64
|
+
// hasSetRoot,
|
|
65
|
+
].every(item => item);
|
|
66
|
+
|
|
67
|
+
// todo: or throw an error
|
|
68
|
+
if (!notMissMustChild) {
|
|
69
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("html", {
|
|
70
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("body", {
|
|
71
|
+
style: {
|
|
72
|
+
color: 'red'
|
|
73
|
+
},
|
|
74
|
+
children: [`Miss the `, [hasSetHead, hasSetBody
|
|
75
|
+
// hasSetScripts,
|
|
76
|
+
// hasSetRoot,
|
|
77
|
+
].map((item, index) => {
|
|
78
|
+
return item ? null : ['Head', 'Body'
|
|
79
|
+
// 'Scripts',
|
|
80
|
+
// 'Root',
|
|
81
|
+
][index];
|
|
82
|
+
}), ` Element`]
|
|
83
|
+
})
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("html", {
|
|
87
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DocumentStructrueContext.DocumentStructrueContext.Provider, {
|
|
88
|
+
value: {
|
|
89
|
+
hasSetHead,
|
|
90
|
+
hasSetScripts,
|
|
91
|
+
hasSetRoot,
|
|
92
|
+
hasSetBody,
|
|
93
|
+
docChild: children
|
|
94
|
+
},
|
|
95
|
+
children: [!hasSetHead && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Head.Head, {}), !hasSetBody && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Body.Body, {}), children]
|
|
96
|
+
})
|
|
97
|
+
});
|
|
98
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DefaultRoot = DefaultRoot;
|
|
7
|
+
exports.Root = Root;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _DocumentContext = require("./DocumentContext");
|
|
10
|
+
var _constants = require("./constants");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
15
|
+
|
|
16
|
+
function Root(props) {
|
|
17
|
+
const {
|
|
18
|
+
rootId,
|
|
19
|
+
children
|
|
20
|
+
} = props;
|
|
21
|
+
const {
|
|
22
|
+
templateParams: {
|
|
23
|
+
mountId = 'root'
|
|
24
|
+
}
|
|
25
|
+
} = (0, _react.useContext)(_DocumentContext.DocumentContext);
|
|
26
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
27
|
+
id: `${rootId || mountId}`,
|
|
28
|
+
children: [`${_constants.DOCUMENT_SSR_PLACEHOLDER}`, children]
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function DefaultRoot(props) {
|
|
32
|
+
const {
|
|
33
|
+
templateParams: {
|
|
34
|
+
mountId
|
|
35
|
+
}
|
|
36
|
+
} = (0, _react.useContext)(_DocumentContext.DocumentContext);
|
|
37
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
38
|
+
id: `${mountId}`,
|
|
39
|
+
children: [`${_constants.DOCUMENT_SSR_PLACEHOLDER}`, props.children]
|
|
40
|
+
});
|
|
41
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Scripts = Scripts;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _constants = require("./constants");
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
|
+
|
|
13
|
+
function Scripts() {
|
|
14
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
15
|
+
children: `${_constants.DOCUMENT_SCRIPTS_PLACEHOLDER}`
|
|
16
|
+
});
|
|
17
|
+
}
|