@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,7 +4,6 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
|
4
4
|
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
5
5
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
6
6
|
import invariant from 'invariant';
|
|
7
|
-
|
|
8
7
|
/**
|
|
9
8
|
* Calc id from string or object
|
|
10
9
|
*/
|
|
@@ -12,28 +11,24 @@ var createGetId = function createGetId() {
|
|
|
12
11
|
var idCache = new Map();
|
|
13
12
|
return function (objectId) {
|
|
14
13
|
var cachedId = idCache.get(objectId);
|
|
15
|
-
|
|
16
14
|
if (cachedId) {
|
|
17
15
|
return cachedId;
|
|
18
|
-
}
|
|
19
|
-
|
|
16
|
+
}
|
|
20
17
|
|
|
18
|
+
// WARNING: id should be unique after serialize.
|
|
21
19
|
var id = JSON.stringify(objectId);
|
|
22
20
|
invariant(id, 'params should be not null value');
|
|
23
21
|
idCache.set(objectId, id);
|
|
24
22
|
return id;
|
|
25
23
|
};
|
|
26
24
|
};
|
|
27
|
-
|
|
28
25
|
export var LoaderStatus;
|
|
29
|
-
|
|
30
26
|
(function (LoaderStatus) {
|
|
31
27
|
LoaderStatus[LoaderStatus["idle"] = 0] = "idle";
|
|
32
28
|
LoaderStatus[LoaderStatus["loading"] = 1] = "loading";
|
|
33
29
|
LoaderStatus[LoaderStatus["fulfilled"] = 2] = "fulfilled";
|
|
34
30
|
LoaderStatus[LoaderStatus["rejected"] = 3] = "rejected";
|
|
35
31
|
})(LoaderStatus || (LoaderStatus = {}));
|
|
36
|
-
|
|
37
32
|
var createLoader = function createLoader(id) {
|
|
38
33
|
var initialData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
39
34
|
loading: false,
|
|
@@ -46,10 +41,9 @@ var createLoader = function createLoader(id) {
|
|
|
46
41
|
var promise;
|
|
47
42
|
var status = LoaderStatus.idle;
|
|
48
43
|
var data = initialData.data,
|
|
49
|
-
|
|
44
|
+
error = initialData.error;
|
|
50
45
|
var hasLoaded = false;
|
|
51
46
|
var handlers = new Set();
|
|
52
|
-
|
|
53
47
|
var load = /*#__PURE__*/function () {
|
|
54
48
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
55
49
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
@@ -60,17 +54,13 @@ var createLoader = function createLoader(id) {
|
|
|
60
54
|
_context.next = 2;
|
|
61
55
|
break;
|
|
62
56
|
}
|
|
63
|
-
|
|
64
57
|
return _context.abrupt("return", promise);
|
|
65
|
-
|
|
66
58
|
case 2:
|
|
67
59
|
if (!(status === LoaderStatus.loading)) {
|
|
68
60
|
_context.next = 4;
|
|
69
61
|
break;
|
|
70
62
|
}
|
|
71
|
-
|
|
72
63
|
return _context.abrupt("return", promise);
|
|
73
|
-
|
|
74
64
|
case 4:
|
|
75
65
|
status = LoaderStatus.loading;
|
|
76
66
|
notify();
|
|
@@ -88,7 +78,6 @@ var createLoader = function createLoader(id) {
|
|
|
88
78
|
notify();
|
|
89
79
|
});
|
|
90
80
|
return _context.abrupt("return", promise);
|
|
91
|
-
|
|
92
81
|
case 8:
|
|
93
82
|
case "end":
|
|
94
83
|
return _context.stop();
|
|
@@ -96,12 +85,10 @@ var createLoader = function createLoader(id) {
|
|
|
96
85
|
}
|
|
97
86
|
}, _callee);
|
|
98
87
|
}));
|
|
99
|
-
|
|
100
88
|
return function load() {
|
|
101
89
|
return _ref.apply(this, arguments);
|
|
102
90
|
};
|
|
103
91
|
}();
|
|
104
|
-
|
|
105
92
|
var getResult = function getResult() {
|
|
106
93
|
return {
|
|
107
94
|
loading: !hasLoaded && status === LoaderStatus.loading,
|
|
@@ -112,35 +99,29 @@ var createLoader = function createLoader(id) {
|
|
|
112
99
|
_error: error
|
|
113
100
|
};
|
|
114
101
|
};
|
|
115
|
-
|
|
116
102
|
var notify = function notify() {
|
|
117
103
|
// don't iterate handlers directly, since it could be modified during iteration
|
|
118
104
|
_toConsumableArray(handlers).forEach(function (handler) {
|
|
119
105
|
handler(status, getResult());
|
|
120
106
|
});
|
|
121
107
|
};
|
|
122
|
-
|
|
123
108
|
var onChange = function onChange(handler) {
|
|
124
109
|
handlers.add(handler);
|
|
125
110
|
return function () {
|
|
126
111
|
handlers["delete"](handler);
|
|
127
112
|
};
|
|
128
113
|
};
|
|
129
|
-
|
|
130
114
|
return {
|
|
131
115
|
get result() {
|
|
132
116
|
return getResult();
|
|
133
117
|
},
|
|
134
|
-
|
|
135
118
|
get promise() {
|
|
136
119
|
return promise;
|
|
137
120
|
},
|
|
138
|
-
|
|
139
121
|
onChange: onChange,
|
|
140
122
|
load: load
|
|
141
123
|
};
|
|
142
124
|
};
|
|
143
|
-
|
|
144
125
|
/**
|
|
145
126
|
* Create loaders manager. It's returned instance will add to context
|
|
146
127
|
* @param initialDataMap used to initialing loader data
|
|
@@ -148,48 +129,45 @@ var createLoader = function createLoader(id) {
|
|
|
148
129
|
export var createLoaderManager = function createLoaderManager(initialDataMap) {
|
|
149
130
|
var managerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
150
131
|
var _managerOptions$skipS = managerOptions.skipStatic,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
132
|
+
skipStatic = _managerOptions$skipS === void 0 ? false : _managerOptions$skipS,
|
|
133
|
+
_managerOptions$skipN = managerOptions.skipNonStatic,
|
|
134
|
+
skipNonStatic = _managerOptions$skipN === void 0 ? false : _managerOptions$skipN;
|
|
154
135
|
var loadersMap = new Map();
|
|
155
136
|
var getId = createGetId();
|
|
156
|
-
|
|
157
137
|
var add = function add(loaderFn, loaderOptions) {
|
|
158
138
|
var id = getId(loaderOptions.params);
|
|
159
|
-
var loader = loadersMap.get(id);
|
|
139
|
+
var loader = loadersMap.get(id);
|
|
160
140
|
|
|
141
|
+
// private property for opting out loader cache, maybe change in future
|
|
161
142
|
var cache = loaderOptions._cache;
|
|
162
|
-
|
|
163
143
|
if (!loader || cache === false) {
|
|
164
144
|
// ignore non-static loader on static phase
|
|
165
|
-
var ignoreNonStatic = skipNonStatic && !loaderOptions["static"];
|
|
145
|
+
var ignoreNonStatic = skipNonStatic && !loaderOptions["static"];
|
|
166
146
|
|
|
147
|
+
// ignore static loader on non-static phase
|
|
167
148
|
var ignoreStatic = skipStatic && loaderOptions["static"];
|
|
168
149
|
var skipExec = ignoreNonStatic || ignoreStatic;
|
|
169
150
|
loader = createLoader(id, typeof initialDataMap[id] !== 'undefined' ? initialDataMap[id] : {
|
|
170
151
|
data: loaderOptions.initialData
|
|
171
|
-
}, loaderFn,
|
|
152
|
+
}, loaderFn,
|
|
153
|
+
// Todo whether static loader is exec when CSR
|
|
172
154
|
skipExec);
|
|
173
155
|
loadersMap.set(id, loader);
|
|
174
156
|
}
|
|
175
|
-
|
|
176
157
|
return id;
|
|
177
158
|
};
|
|
178
|
-
|
|
179
159
|
var get = function get(id) {
|
|
180
160
|
return loadersMap.get(id);
|
|
181
|
-
};
|
|
182
|
-
|
|
161
|
+
};
|
|
183
162
|
|
|
163
|
+
// check if there has pending loaders
|
|
184
164
|
var hasPendingLoaders = function hasPendingLoaders() {
|
|
185
165
|
var _iterator = _createForOfIteratorHelper(loadersMap.values()),
|
|
186
|
-
|
|
187
|
-
|
|
166
|
+
_step;
|
|
188
167
|
try {
|
|
189
168
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
190
169
|
var loader = _step.value;
|
|
191
170
|
var promise = loader.promise;
|
|
192
|
-
|
|
193
171
|
if (promise instanceof Promise) {
|
|
194
172
|
return true;
|
|
195
173
|
}
|
|
@@ -199,27 +177,23 @@ export var createLoaderManager = function createLoaderManager(initialDataMap) {
|
|
|
199
177
|
} finally {
|
|
200
178
|
_iterator.f();
|
|
201
179
|
}
|
|
202
|
-
|
|
203
180
|
return false;
|
|
204
|
-
};
|
|
205
|
-
|
|
181
|
+
};
|
|
206
182
|
|
|
183
|
+
// waiting for all pending loaders to be settled
|
|
207
184
|
var awaitPendingLoaders = /*#__PURE__*/function () {
|
|
208
185
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
209
186
|
var pendingLoaders, _iterator2, _step2, _step2$value, id, loader, promise;
|
|
210
|
-
|
|
211
187
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
212
188
|
while (1) {
|
|
213
189
|
switch (_context2.prev = _context2.next) {
|
|
214
190
|
case 0:
|
|
215
191
|
pendingLoaders = [];
|
|
216
192
|
_iterator2 = _createForOfIteratorHelper(loadersMap);
|
|
217
|
-
|
|
218
193
|
try {
|
|
219
194
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
220
195
|
_step2$value = _slicedToArray(_step2.value, 2), id = _step2$value[0], loader = _step2$value[1];
|
|
221
196
|
promise = loader.promise;
|
|
222
|
-
|
|
223
197
|
if (promise instanceof Promise) {
|
|
224
198
|
pendingLoaders.push([id, loader]);
|
|
225
199
|
}
|
|
@@ -229,22 +203,18 @@ export var createLoaderManager = function createLoaderManager(initialDataMap) {
|
|
|
229
203
|
} finally {
|
|
230
204
|
_iterator2.f();
|
|
231
205
|
}
|
|
232
|
-
|
|
233
206
|
_context2.next = 5;
|
|
234
207
|
return Promise.all(pendingLoaders.map(function (item) {
|
|
235
208
|
return item[1].promise;
|
|
236
209
|
}));
|
|
237
|
-
|
|
238
210
|
case 5:
|
|
239
211
|
return _context2.abrupt("return", pendingLoaders.reduce(function (res, _ref3) {
|
|
240
212
|
var _ref4 = _slicedToArray(_ref3, 2),
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
213
|
+
id = _ref4[0],
|
|
214
|
+
loader = _ref4[1];
|
|
244
215
|
res[id] = loader.result;
|
|
245
216
|
return res;
|
|
246
217
|
}, {}));
|
|
247
|
-
|
|
248
218
|
case 6:
|
|
249
219
|
case "end":
|
|
250
220
|
return _context2.stop();
|
|
@@ -252,12 +222,10 @@ export var createLoaderManager = function createLoaderManager(initialDataMap) {
|
|
|
252
222
|
}
|
|
253
223
|
}, _callee2);
|
|
254
224
|
}));
|
|
255
|
-
|
|
256
225
|
return function awaitPendingLoaders() {
|
|
257
226
|
return _ref2.apply(this, arguments);
|
|
258
227
|
};
|
|
259
228
|
}();
|
|
260
|
-
|
|
261
229
|
return {
|
|
262
230
|
hasPendingLoaders: hasPendingLoaders,
|
|
263
231
|
awaitPendingLoaders: awaitPendingLoaders,
|
|
@@ -4,7 +4,6 @@ import { useContext, useRef, useMemo, useState, useCallback, useEffect } from 'r
|
|
|
4
4
|
import invariant from 'invariant';
|
|
5
5
|
import { RuntimeReactContext } from "../../runtime-context";
|
|
6
6
|
import { LoaderStatus } from "./loaderManager";
|
|
7
|
-
|
|
8
7
|
var useLoader = function useLoader(loaderFn) {
|
|
9
8
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
10
9
|
params: undefined
|
|
@@ -13,29 +12,24 @@ var useLoader = function useLoader(loaderFn) {
|
|
|
13
12
|
var isSSRRender = Boolean(context.ssr);
|
|
14
13
|
var loaderManager = context.loaderManager;
|
|
15
14
|
var loaderRef = useRef();
|
|
16
|
-
var unlistenLoaderChangeRef = useRef(null);
|
|
15
|
+
var unlistenLoaderChangeRef = useRef(null);
|
|
17
16
|
|
|
17
|
+
// SSR render should ignore `_cache` prop
|
|
18
18
|
if (isSSRRender && Object.prototype.hasOwnProperty.call(options, '_cache')) {
|
|
19
19
|
delete options._cache;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
21
|
var load = useCallback(function (params) {
|
|
23
22
|
var _unlistenLoaderChange, _window, _window$_SSR_DATA, _window$_SSR_DATA$dat, _window$_SSR_DATA$dat2, _loaderRef$current2;
|
|
24
|
-
|
|
25
23
|
if (typeof params === 'undefined') {
|
|
26
24
|
var _loaderRef$current;
|
|
27
|
-
|
|
28
25
|
return (_loaderRef$current = loaderRef.current) === null || _loaderRef$current === void 0 ? void 0 : _loaderRef$current.load();
|
|
29
26
|
}
|
|
30
|
-
|
|
31
27
|
var id = loaderManager.add(function () {
|
|
32
28
|
try {
|
|
33
29
|
var _res = loaderFn(context, params);
|
|
34
|
-
|
|
35
30
|
if (_res instanceof Promise) {
|
|
36
31
|
return _res;
|
|
37
32
|
}
|
|
38
|
-
|
|
39
33
|
return Promise.resolve(_res);
|
|
40
34
|
} catch (e) {
|
|
41
35
|
return Promise.reject(e);
|
|
@@ -43,37 +37,31 @@ var useLoader = function useLoader(loaderFn) {
|
|
|
43
37
|
}, _objectSpread(_objectSpread({}, options), {}, {
|
|
44
38
|
params: params
|
|
45
39
|
}));
|
|
46
|
-
loaderRef.current = loaderManager.get(id);
|
|
47
|
-
|
|
40
|
+
loaderRef.current = loaderManager.get(id);
|
|
41
|
+
// unsubscribe old loader onChange event
|
|
48
42
|
(_unlistenLoaderChange = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange === void 0 ? void 0 : _unlistenLoaderChange.call(unlistenLoaderChangeRef);
|
|
49
|
-
|
|
50
43
|
if (isSSRRender) {
|
|
51
44
|
return undefined;
|
|
52
|
-
}
|
|
53
|
-
|
|
45
|
+
}
|
|
54
46
|
|
|
47
|
+
// skip this loader, then try to unlisten loader change
|
|
55
48
|
if (options.skip) {
|
|
56
49
|
return undefined;
|
|
57
|
-
}
|
|
58
|
-
|
|
50
|
+
}
|
|
59
51
|
|
|
52
|
+
// do not load data again in CSR hydrate stage if SSR data exists
|
|
60
53
|
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) {
|
|
61
54
|
return undefined;
|
|
62
55
|
}
|
|
63
|
-
|
|
64
56
|
var res = loaderRef.current.load();
|
|
65
57
|
unlistenLoaderChangeRef.current = (_loaderRef$current2 = loaderRef.current) === null || _loaderRef$current2 === void 0 ? void 0 : _loaderRef$current2.onChange(function (_status, _result) {
|
|
66
58
|
setResult(_result);
|
|
67
|
-
|
|
68
59
|
if (_status === LoaderStatus.fulfilled) {
|
|
69
60
|
var _options$onSuccess;
|
|
70
|
-
|
|
71
61
|
options === null || options === void 0 ? void 0 : (_options$onSuccess = options.onSuccess) === null || _options$onSuccess === void 0 ? void 0 : _options$onSuccess.call(options, _result.data);
|
|
72
62
|
}
|
|
73
|
-
|
|
74
63
|
if (_status === LoaderStatus.rejected) {
|
|
75
64
|
var _options$onError;
|
|
76
|
-
|
|
77
65
|
options === null || options === void 0 ? void 0 : (_options$onError = options.onError) === null || _options$onError === void 0 ? void 0 : _options$onError.call(options, _result.error);
|
|
78
66
|
}
|
|
79
67
|
});
|
|
@@ -82,26 +70,21 @@ var useLoader = function useLoader(loaderFn) {
|
|
|
82
70
|
useEffect(function () {
|
|
83
71
|
return function () {
|
|
84
72
|
var _unlistenLoaderChange2;
|
|
85
|
-
|
|
86
73
|
(_unlistenLoaderChange2 = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange2 === void 0 ? void 0 : _unlistenLoaderChange2.call(unlistenLoaderChangeRef);
|
|
87
74
|
};
|
|
88
75
|
}, []);
|
|
89
76
|
useMemo(function () {
|
|
90
77
|
var _options$params;
|
|
91
|
-
|
|
92
78
|
var p = (_options$params = options.params) !== null && _options$params !== void 0 ? _options$params : loaderFn.id;
|
|
93
79
|
invariant(typeof p !== 'undefined' && p !== null, 'Params is required in useLoader');
|
|
94
80
|
load(p);
|
|
95
81
|
}, [options.params]);
|
|
96
|
-
|
|
97
82
|
var _useState = useState(loaderRef.current.result),
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
83
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
84
|
+
result = _useState2[0],
|
|
85
|
+
setResult = _useState2[1];
|
|
102
86
|
return _objectSpread(_objectSpread({}, result), {}, {
|
|
103
87
|
reload: load
|
|
104
88
|
});
|
|
105
89
|
};
|
|
106
|
-
|
|
107
90
|
export default useLoader;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
1
|
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
3
2
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
3
|
import { createManager, createPipeline, createAsyncPipeline } from '@modern-js/plugin';
|
|
5
4
|
import { createLoaderManager } from "./loader/loaderManager";
|
|
6
|
-
var hoc = createPipeline();
|
|
5
|
+
var hoc = createPipeline();
|
|
6
|
+
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
7
8
|
|
|
8
9
|
var provide = createPipeline();
|
|
9
10
|
var client = createAsyncPipeline();
|
|
@@ -18,18 +19,18 @@ var runtimeHooks = {
|
|
|
18
19
|
init: init,
|
|
19
20
|
pickContext: pickContext
|
|
20
21
|
};
|
|
22
|
+
|
|
21
23
|
/** All hooks of runtime plugin. */
|
|
22
24
|
|
|
23
25
|
export var createRuntime = function createRuntime() {
|
|
24
26
|
return createManager(runtimeHooks);
|
|
25
27
|
};
|
|
28
|
+
|
|
26
29
|
/**
|
|
27
30
|
* register init hook. It would be revoked both ssr and csr.
|
|
28
31
|
*/
|
|
29
|
-
|
|
30
32
|
var registerInit = function registerInit(App, _init) {
|
|
31
33
|
var originalInit = App.init;
|
|
32
|
-
|
|
33
34
|
App.init = /*#__PURE__*/function () {
|
|
34
35
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(context) {
|
|
35
36
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
@@ -39,10 +40,8 @@ var registerInit = function registerInit(App, _init) {
|
|
|
39
40
|
if (!context.loaderManager) {
|
|
40
41
|
context.loaderManager = createLoaderManager({});
|
|
41
42
|
}
|
|
42
|
-
|
|
43
43
|
_context.next = 3;
|
|
44
44
|
return Promise.all([originalInit === null || originalInit === void 0 ? void 0 : originalInit(context), _init === null || _init === void 0 ? void 0 : _init(context)]);
|
|
45
|
-
|
|
46
45
|
case 3:
|
|
47
46
|
case "end":
|
|
48
47
|
return _context.stop();
|
|
@@ -50,56 +49,12 @@ var registerInit = function registerInit(App, _init) {
|
|
|
50
49
|
}
|
|
51
50
|
}, _callee);
|
|
52
51
|
}));
|
|
53
|
-
|
|
54
52
|
return function (_x) {
|
|
55
53
|
return _ref.apply(this, arguments);
|
|
56
54
|
};
|
|
57
55
|
}();
|
|
58
56
|
};
|
|
59
|
-
/**
|
|
60
|
-
* register prefetch hook. It would be revoked both ssr and csr.
|
|
61
|
-
* But if ssr success, It wont exec in csr again.
|
|
62
|
-
* If ssr prefetch failed, It will fallback to exec in csr.
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
var registerPrefetch = function registerPrefetch(App, prefetch) {
|
|
67
|
-
var originalPrefetch = App.prefetch;
|
|
68
|
-
|
|
69
|
-
App.prefetch = /*#__PURE__*/function () {
|
|
70
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(context) {
|
|
71
|
-
var originResult, result;
|
|
72
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
73
|
-
while (1) {
|
|
74
|
-
switch (_context2.prev = _context2.next) {
|
|
75
|
-
case 0:
|
|
76
|
-
_context2.next = 2;
|
|
77
|
-
return originalPrefetch === null || originalPrefetch === void 0 ? void 0 : originalPrefetch(context);
|
|
78
|
-
|
|
79
|
-
case 2:
|
|
80
|
-
originResult = _context2.sent;
|
|
81
|
-
_context2.next = 5;
|
|
82
|
-
return prefetch === null || prefetch === void 0 ? void 0 : prefetch(context);
|
|
83
|
-
|
|
84
|
-
case 5:
|
|
85
|
-
result = _context2.sent;
|
|
86
|
-
return _context2.abrupt("return", _objectSpread(_objectSpread({}, originResult), result));
|
|
87
|
-
|
|
88
|
-
case 7:
|
|
89
|
-
case "end":
|
|
90
|
-
return _context2.stop();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}, _callee2);
|
|
94
|
-
}));
|
|
95
|
-
|
|
96
|
-
return function (_x2) {
|
|
97
|
-
return _ref2.apply(this, arguments);
|
|
98
|
-
};
|
|
99
|
-
}();
|
|
100
|
-
};
|
|
101
|
-
|
|
102
57
|
export var runtime = createRuntime();
|
|
103
58
|
var createPlugin = runtime.createPlugin;
|
|
104
59
|
export { createPlugin };
|
|
105
|
-
export { registerInit
|
|
60
|
+
export { registerInit };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React, { useContext } from 'react';
|
|
3
|
+
import { DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER } from "./constants";
|
|
4
|
+
import { DocumentStructrueContext } from "./DocumentStructrueContext";
|
|
5
|
+
import { DefaultRoot } from "./Root";
|
|
6
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
export function Body(props) {
|
|
8
|
+
var _useContext = useContext(DocumentStructrueContext),
|
|
9
|
+
hasSetRoot = _useContext.hasSetRoot;
|
|
10
|
+
var children = props.children;
|
|
11
|
+
return /*#__PURE__*/_jsxs("body", {
|
|
12
|
+
children: [hasSetRoot ? null : DefaultRoot, children, "".concat(DOCUMENT_CHUNKSMAP_PLACEHOLDER), "".concat(DOCUMENT_SSRDATASCRIPT_PLACEHOLDER)]
|
|
13
|
+
});
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React, { useContext } from 'react';
|
|
3
|
+
import { DocumentStructrueContext } from "./DocumentStructrueContext";
|
|
4
|
+
import { Scripts } from "./Scripts";
|
|
5
|
+
import { DOCUMENT_META_PLACEHOLDER } from "./constants";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export function Head(props) {
|
|
9
|
+
var _useContext = useContext(DocumentStructrueContext),
|
|
10
|
+
hasSetScripts = _useContext.hasSetScripts;
|
|
11
|
+
var children = props.children;
|
|
12
|
+
// todo: verify the children
|
|
13
|
+
return /*#__PURE__*/_jsxs("head", {
|
|
14
|
+
children: ["".concat(DOCUMENT_META_PLACEHOLDER), !hasSetScripts && /*#__PURE__*/_jsx(Scripts, {}), children]
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function DefaultHead() {
|
|
18
|
+
return /*#__PURE__*/_jsx("head", {
|
|
19
|
+
children: "".concat(DOCUMENT_META_PLACEHOLDER)
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Body } from "./Body";
|
|
5
|
+
import { DocumentStructrueContext } from "./DocumentStructrueContext";
|
|
6
|
+
import { Head } from "./Head";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* get the directly son element
|
|
10
|
+
*/
|
|
11
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
function findTargetChild(tag, children) {
|
|
14
|
+
return children.find(function (item) {
|
|
15
|
+
return getEleType(item) === tag;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* get the type of react element
|
|
21
|
+
*/
|
|
22
|
+
function getEleType(ele) {
|
|
23
|
+
// fixme: 非 react 的类型,有点儿问题。
|
|
24
|
+
return typeof (ele === null || ele === void 0 ? void 0 : ele.type) === 'function' ? ele.type.name : ele === null || ele === void 0 ? void 0 : ele.type;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* get the children(grandChild included) with target type
|
|
29
|
+
* @param tag the element type
|
|
30
|
+
* @param children son element
|
|
31
|
+
* @returns target element
|
|
32
|
+
*/
|
|
33
|
+
function findTargetElement(tag, children) {
|
|
34
|
+
if (children.length === 0) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
var nextChildren = [];
|
|
38
|
+
var _iterator = _createForOfIteratorHelper(children),
|
|
39
|
+
_step;
|
|
40
|
+
try {
|
|
41
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
42
|
+
var _item$props;
|
|
43
|
+
var item = _step.value;
|
|
44
|
+
if (tag === getEleType(item)) {
|
|
45
|
+
return item;
|
|
46
|
+
}
|
|
47
|
+
if (item !== null && item !== void 0 && (_item$props = item.props) !== null && _item$props !== void 0 && _item$props.children) {
|
|
48
|
+
nextChildren = nextChildren.concat(item.props.children);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
} catch (err) {
|
|
52
|
+
_iterator.e(err);
|
|
53
|
+
} finally {
|
|
54
|
+
_iterator.f();
|
|
55
|
+
}
|
|
56
|
+
return findTargetElement(tag, nextChildren);
|
|
57
|
+
}
|
|
58
|
+
export function Html(props) {
|
|
59
|
+
var children = props.children;
|
|
60
|
+
|
|
61
|
+
// deal with the component with default
|
|
62
|
+
var hasSetHead = Boolean(findTargetChild('Head', children));
|
|
63
|
+
var hasSetScripts = Boolean(findTargetElement('Scripts', children));
|
|
64
|
+
var hasSetBody = Boolean(findTargetChild('Body', children));
|
|
65
|
+
var hasSetRoot = Boolean(findTargetElement('Root', children));
|
|
66
|
+
var notMissMustChild = [hasSetHead, hasSetBody
|
|
67
|
+
// hasSetScripts,
|
|
68
|
+
// hasSetRoot,
|
|
69
|
+
].every(function (item) {
|
|
70
|
+
return item;
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// todo: or throw an error
|
|
74
|
+
if (!notMissMustChild) {
|
|
75
|
+
return /*#__PURE__*/_jsx("html", {
|
|
76
|
+
children: /*#__PURE__*/_jsxs("body", {
|
|
77
|
+
style: {
|
|
78
|
+
color: 'red'
|
|
79
|
+
},
|
|
80
|
+
children: ["Miss the ", [hasSetHead, hasSetBody
|
|
81
|
+
// hasSetScripts,
|
|
82
|
+
// hasSetRoot,
|
|
83
|
+
].map(function (item, index) {
|
|
84
|
+
return item ? null : ['Head', 'Body'
|
|
85
|
+
// 'Scripts',
|
|
86
|
+
// 'Root',
|
|
87
|
+
][index];
|
|
88
|
+
}), " Element"]
|
|
89
|
+
})
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return /*#__PURE__*/_jsx("html", {
|
|
93
|
+
children: /*#__PURE__*/_jsxs(DocumentStructrueContext.Provider, {
|
|
94
|
+
value: {
|
|
95
|
+
hasSetHead: hasSetHead,
|
|
96
|
+
hasSetScripts: hasSetScripts,
|
|
97
|
+
hasSetRoot: hasSetRoot,
|
|
98
|
+
hasSetBody: hasSetBody,
|
|
99
|
+
docChild: children
|
|
100
|
+
},
|
|
101
|
+
children: [!hasSetHead && /*#__PURE__*/_jsx(Head, {}), !hasSetBody && /*#__PURE__*/_jsx(Body, {}), children]
|
|
102
|
+
})
|
|
103
|
+
});
|
|
104
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React, { useContext } from 'react';
|
|
3
|
+
import { DocumentContext } from "./DocumentContext";
|
|
4
|
+
import { DOCUMENT_SSR_PLACEHOLDER } from "./constants";
|
|
5
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
export function Root(props) {
|
|
7
|
+
var rootId = props.rootId,
|
|
8
|
+
children = props.children;
|
|
9
|
+
var _useContext = useContext(DocumentContext),
|
|
10
|
+
_useContext$templateP = _useContext.templateParams.mountId,
|
|
11
|
+
mountId = _useContext$templateP === void 0 ? 'root' : _useContext$templateP;
|
|
12
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
13
|
+
id: "".concat(rootId || mountId),
|
|
14
|
+
children: ["".concat(DOCUMENT_SSR_PLACEHOLDER), children]
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function DefaultRoot(props) {
|
|
18
|
+
var _useContext2 = useContext(DocumentContext),
|
|
19
|
+
mountId = _useContext2.templateParams.mountId;
|
|
20
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
21
|
+
id: "".concat(mountId),
|
|
22
|
+
children: ["".concat(DOCUMENT_SSR_PLACEHOLDER), props.children]
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { DOCUMENT_SCRIPTS_PLACEHOLDER } from "./constants";
|
|
4
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
export function Scripts() {
|
|
7
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
8
|
+
children: "".concat(DOCUMENT_SCRIPTS_PLACEHOLDER)
|
|
9
|
+
});
|
|
10
|
+
}
|