@modern-js/runtime 2.0.0-beta.2 → 2.0.0-beta.4
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 +226 -0
- package/dist/js/modern/cli/index.js +49 -19
- package/dist/js/modern/cli/types.d.js +0 -0
- package/dist/js/modern/common.js +4 -1
- package/dist/js/modern/core/app-config.js +8 -9
- package/dist/js/modern/core/compatible.js +195 -169
- package/dist/js/modern/core/index.js +14 -6
- package/dist/js/modern/core/loader/index.js +4 -1
- package/dist/js/modern/core/loader/loaderManager.js +75 -77
- package/dist/js/modern/core/loader/useLoader.js +96 -69
- package/dist/js/modern/core/plugin.js +37 -20
- package/dist/js/modern/document/Body.js +20 -14
- package/dist/js/modern/document/DocumentContext.js +6 -3
- package/dist/js/modern/document/DocumentStructrueContext.js +6 -3
- package/dist/js/modern/document/Head.js +18 -17
- package/dist/js/modern/document/Html.js +42 -58
- package/dist/js/modern/document/Root.js +22 -20
- package/dist/js/modern/document/Script.js +20 -0
- package/dist/js/modern/document/Scripts.js +7 -7
- package/dist/js/modern/document/cli/index.js +175 -85
- package/dist/js/modern/document/constants.js +41 -15
- package/dist/js/modern/document/index.js +2 -1
- package/dist/js/modern/document/type.d.js +0 -0
- package/dist/js/modern/exports/head.js +6 -3
- package/dist/js/modern/exports/loadable.js +6 -3
- package/dist/js/modern/exports/server.js +4 -1
- package/dist/js/modern/exports/styled.js +6 -3
- package/dist/js/modern/index.js +22 -2
- package/dist/js/modern/modern-app.env.d.js +0 -0
- package/dist/js/modern/router/cli/index.js +75 -57
- package/dist/js/modern/router/index.js +7 -3
- package/dist/js/modern/router/runtime/DefaultNotFound.js +11 -10
- package/dist/js/modern/router/runtime/index.js +8 -3
- package/dist/js/modern/router/runtime/plugin.js +71 -37
- package/dist/js/modern/router/runtime/plugin.node.js +89 -80
- package/dist/js/modern/router/runtime/root/index.js +10 -10
- package/dist/js/modern/router/runtime/root/load.js +57 -36
- package/dist/js/modern/router/runtime/server.js +1 -0
- package/dist/js/modern/router/runtime/types.js +0 -1
- package/dist/js/modern/router/runtime/utils.js +86 -67
- package/dist/js/modern/router/runtime/withRouter.js +31 -15
- package/dist/js/modern/runtime-context.js +7 -3
- package/dist/js/modern/ssr/cli/babel-plugin-ssr-loader-id.js +130 -0
- package/dist/js/modern/ssr/cli/index.js +107 -70
- package/dist/js/modern/ssr/index.js +89 -71
- package/dist/js/modern/ssr/index.node.js +59 -37
- package/dist/js/modern/ssr/prefetch.js +64 -45
- package/dist/js/modern/ssr/react/index.js +6 -2
- package/dist/js/modern/ssr/react/nossr/index.js +8 -7
- package/dist/js/modern/ssr/react/prerender/index.js +53 -28
- package/dist/js/modern/ssr/react/prerender/util.js +38 -26
- package/dist/js/modern/ssr/react/withCallback/index.js +6 -7
- package/dist/js/modern/ssr/serverRender/helmet.js +18 -12
- package/dist/js/modern/ssr/serverRender/index.js +34 -13
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +10 -12
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +11 -5
- package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +40 -37
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +36 -18
- package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +7 -7
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +56 -34
- package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +6 -5
- package/dist/js/modern/ssr/serverRender/renderToStream/template.js +13 -9
- package/dist/js/modern/ssr/serverRender/renderToString/entry.js +101 -84
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +32 -9
- package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +21 -18
- package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +6 -3
- package/dist/js/modern/ssr/serverRender/renderToString/styledComponent.js +6 -3
- package/dist/js/modern/ssr/serverRender/renderToString/template.js +22 -22
- package/dist/js/modern/ssr/serverRender/renderToString/type.js +9 -6
- package/dist/js/modern/ssr/serverRender/types.js +3 -1
- package/dist/js/modern/ssr/serverRender/utils.js +11 -9
- package/dist/js/modern/ssr/type.d.js +0 -0
- package/dist/js/modern/ssr/utils.js +41 -21
- package/dist/js/modern/state/cli/index.js +43 -32
- package/dist/js/modern/state/index.js +7 -3
- package/dist/js/modern/state/plugins.js +13 -7
- package/dist/js/modern/state/runtime/index.js +9 -4
- package/dist/js/modern/state/runtime/plugin.js +63 -40
- package/dist/js/modern/state/types.js +0 -1
- package/dist/js/node/cli/index.js +77 -30
- package/dist/js/node/cli/types.d.js +0 -0
- package/dist/js/node/common.js +22 -7
- package/dist/js/node/core/app-config.js +24 -14
- package/dist/js/node/core/compatible.js +223 -186
- package/dist/js/node/core/index.js +34 -100
- package/dist/js/node/core/loader/index.js +27 -11
- package/dist/js/node/core/loader/loaderManager.js +97 -83
- package/dist/js/node/core/loader/useLoader.js +120 -83
- package/dist/js/node/core/plugin.js +58 -35
- package/dist/js/node/document/Body.js +36 -23
- package/dist/js/node/document/DocumentContext.js +29 -9
- package/dist/js/node/document/DocumentStructrueContext.js +29 -9
- package/dist/js/node/document/Head.js +38 -27
- package/dist/js/node/document/Html.js +62 -65
- package/dist/js/node/document/Root.js +42 -31
- package/dist/js/node/document/Script.js +36 -0
- package/dist/js/node/document/Scripts.js +26 -14
- package/dist/js/node/document/cli/index.js +188 -95
- package/dist/js/node/document/constants.js +56 -28
- package/dist/js/node/document/index.js +25 -93
- package/dist/js/node/document/type.d.js +0 -0
- package/dist/js/node/exports/head.js +31 -22
- package/dist/js/node/exports/loadable.js +31 -22
- package/dist/js/node/exports/server.js +22 -7
- package/dist/js/node/exports/styled.js +31 -22
- package/dist/js/node/index.js +32 -61
- package/dist/js/node/modern-app.env.d.js +0 -0
- package/dist/js/node/router/cli/index.js +88 -62
- package/dist/js/node/router/index.js +30 -31
- package/dist/js/node/router/runtime/DefaultNotFound.js +28 -17
- package/dist/js/node/router/runtime/index.js +28 -33
- package/dist/js/node/router/runtime/plugin.js +89 -43
- package/dist/js/node/router/runtime/plugin.node.js +110 -89
- package/dist/js/node/router/runtime/root/index.js +33 -21
- package/dist/js/node/router/runtime/root/load.js +74 -42
- package/dist/js/node/router/runtime/server.js +17 -0
- package/dist/js/node/router/runtime/types.js +0 -5
- package/dist/js/node/router/runtime/utils.js +101 -76
- package/dist/js/node/router/runtime/withRouter.js +51 -22
- package/dist/js/node/runtime-context.js +25 -10
- package/dist/js/node/ssr/cli/babel-plugin-ssr-loader-id.js +158 -0
- package/dist/js/node/ssr/cli/index.js +124 -76
- package/dist/js/node/ssr/index.js +123 -104
- package/dist/js/node/ssr/index.node.js +84 -59
- package/dist/js/node/ssr/prefetch.js +82 -51
- package/dist/js/node/ssr/react/index.js +23 -17
- package/dist/js/node/ssr/react/nossr/index.js +33 -16
- package/dist/js/node/ssr/react/prerender/index.js +80 -45
- package/dist/js/node/ssr/react/prerender/util.js +55 -36
- package/dist/js/node/ssr/react/withCallback/index.js +25 -15
- package/dist/js/node/ssr/serverRender/helmet.js +35 -17
- package/dist/js/node/ssr/serverRender/index.js +53 -19
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +36 -20
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +27 -10
- package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +64 -46
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +65 -30
- package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +25 -12
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +75 -43
- package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +25 -11
- package/dist/js/node/ssr/serverRender/renderToStream/template.js +32 -16
- package/dist/js/node/ssr/serverRender/renderToString/entry.js +133 -103
- package/dist/js/node/ssr/serverRender/renderToString/index.js +60 -20
- package/dist/js/node/ssr/serverRender/renderToString/loadable.js +41 -26
- package/dist/js/node/ssr/serverRender/renderToString/reduce.js +23 -7
- package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +23 -8
- package/dist/js/node/ssr/serverRender/renderToString/template.js +39 -28
- package/dist/js/node/ssr/serverRender/renderToString/type.js +27 -12
- package/dist/js/node/ssr/serverRender/types.js +21 -10
- package/dist/js/node/ssr/serverRender/utils.js +26 -13
- package/dist/js/node/ssr/type.d.js +0 -0
- package/dist/js/node/ssr/utils.js +57 -29
- package/dist/js/node/state/cli/index.js +56 -37
- package/dist/js/node/state/index.js +30 -31
- package/dist/js/node/state/plugins.js +36 -22
- package/dist/js/node/state/runtime/index.js +32 -51
- package/dist/js/node/state/runtime/plugin.js +96 -68
- package/dist/js/node/state/types.js +0 -5
- package/dist/js/treeshaking/cli/index.js +180 -52
- package/dist/js/treeshaking/cli/types.d.js +1 -0
- package/dist/js/treeshaking/common.js +4 -3
- package/dist/js/treeshaking/core/app-config.js +8 -13
- package/dist/js/treeshaking/core/compatible.js +473 -276
- package/dist/js/treeshaking/core/index.js +5 -6
- package/dist/js/treeshaking/core/loader/index.js +2 -1
- package/dist/js/treeshaking/core/loader/loaderManager.js +395 -224
- package/dist/js/treeshaking/core/loader/useLoader.js +181 -83
- package/dist/js/treeshaking/core/plugin.js +164 -48
- package/dist/js/treeshaking/document/Body.js +15 -11
- package/dist/js/treeshaking/document/DocumentContext.js +7 -6
- package/dist/js/treeshaking/document/DocumentStructrueContext.js +8 -7
- package/dist/js/treeshaking/document/Head.js +18 -17
- package/dist/js/treeshaking/document/Html.js +86 -93
- package/dist/js/treeshaking/document/Root.js +23 -21
- package/dist/js/treeshaking/document/Script.js +15 -0
- package/dist/js/treeshaking/document/Scripts.js +7 -9
- package/dist/js/treeshaking/document/cli/index.js +381 -168
- package/dist/js/treeshaking/document/constants.js +34 -16
- package/dist/js/treeshaking/document/index.js +2 -1
- package/dist/js/treeshaking/document/type.d.js +1 -0
- package/dist/js/treeshaking/exports/head.js +4 -3
- package/dist/js/treeshaking/exports/loadable.js +4 -3
- package/dist/js/treeshaking/exports/server.js +4 -3
- package/dist/js/treeshaking/exports/styled.js +4 -3
- package/dist/js/treeshaking/index.js +3 -2
- package/dist/js/treeshaking/modern-app.env.d.js +1 -0
- package/dist/js/treeshaking/router/cli/index.js +147 -99
- package/dist/js/treeshaking/router/index.js +4 -3
- package/dist/js/treeshaking/router/runtime/DefaultNotFound.js +14 -15
- package/dist/js/treeshaking/router/runtime/index.js +5 -3
- package/dist/js/treeshaking/router/runtime/plugin.js +119 -60
- package/dist/js/treeshaking/router/runtime/plugin.node.js +376 -148
- package/dist/js/treeshaking/router/runtime/root/index.js +17 -15
- package/dist/js/treeshaking/router/runtime/root/load.js +290 -95
- package/dist/js/treeshaking/router/runtime/server.js +1 -0
- package/dist/js/treeshaking/router/runtime/types.js +1 -1
- package/dist/js/treeshaking/router/runtime/utils.js +227 -145
- package/dist/js/treeshaking/router/runtime/withRouter.js +67 -18
- package/dist/js/treeshaking/runtime-context.js +4 -3
- package/dist/js/treeshaking/ssr/cli/babel-plugin-ssr-loader-id.js +122 -0
- package/dist/js/treeshaking/ssr/cli/index.js +210 -123
- package/dist/js/treeshaking/ssr/index.js +305 -144
- package/dist/js/treeshaking/ssr/index.node.js +234 -66
- package/dist/js/treeshaking/ssr/prefetch.js +196 -79
- package/dist/js/treeshaking/ssr/react/index.js +3 -2
- package/dist/js/treeshaking/ssr/react/nossr/index.js +57 -14
- package/dist/js/treeshaking/ssr/react/prerender/index.js +226 -89
- package/dist/js/treeshaking/ssr/react/prerender/type.js +1 -0
- package/dist/js/treeshaking/ssr/react/prerender/util.js +96 -86
- package/dist/js/treeshaking/ssr/react/withCallback/index.js +16 -15
- package/dist/js/treeshaking/ssr/serverRender/helmet.js +38 -34
- package/dist/js/treeshaking/ssr/serverRender/index.js +165 -37
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +33 -31
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -7
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +110 -55
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +157 -42
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +20 -20
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +114 -63
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +11 -10
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +61 -20
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +1 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +380 -208
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +161 -40
- package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +51 -45
- package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +9 -8
- package/dist/js/treeshaking/ssr/serverRender/renderToString/styledComponent.js +9 -8
- package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +142 -64
- package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +7 -6
- package/dist/js/treeshaking/ssr/serverRender/types.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/utils.js +67 -26
- package/dist/js/treeshaking/ssr/type.d.js +1 -0
- package/dist/js/treeshaking/ssr/utils.js +128 -64
- package/dist/js/treeshaking/state/cli/index.js +70 -68
- package/dist/js/treeshaking/state/index.js +4 -3
- package/dist/js/treeshaking/state/plugins.js +12 -11
- package/dist/js/treeshaking/state/runtime/index.js +5 -4
- package/dist/js/treeshaking/state/runtime/plugin.js +190 -67
- package/dist/js/treeshaking/state/types.js +1 -1
- package/dist/types/cli/index.d.ts +2 -0
- package/dist/types/core/loader/loaderManager.d.ts +1 -0
- package/dist/types/core/loader/useLoader.d.ts +5 -0
- package/dist/types/core/plugin.d.ts +6 -1
- package/dist/types/document/Script.d.ts +4 -0
- package/dist/types/document/cli/index.d.ts +2 -0
- package/dist/types/document/constants.d.ts +2 -0
- package/dist/types/document/index.d.ts +1 -0
- package/dist/types/router/cli/index.d.ts +2 -0
- package/dist/types/router/runtime/index.d.ts +1 -0
- package/dist/types/router/runtime/plugin.d.ts +5 -1
- package/dist/types/router/runtime/plugin.node.d.ts +1 -0
- package/dist/types/router/runtime/server.d.ts +1 -0
- package/dist/types/router/runtime/types.d.ts +5 -1
- package/dist/types/ssr/cli/babel-plugin-ssr-loader-id.d.ts +1 -0
- package/dist/types/ssr/cli/index.d.ts +2 -0
- package/dist/types/state/cli/index.d.ts +2 -0
- package/dist/types/state/runtime/plugin.d.ts +7 -2
- package/dist/types/state/types.d.ts +1 -0
- package/package.json +33 -25
|
@@ -1,29 +1,65 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
default: () => Entry
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var loadableRenderer =
|
|
18
|
-
var styledComponentRenderer =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_react = __toESM(require("react"));
|
|
30
|
+
var import_server = __toESM(require("react-dom/server"));
|
|
31
|
+
var import_serialize_javascript = __toESM(require("serialize-javascript"));
|
|
32
|
+
var import_react_helmet = __toESM(require("react-helmet"));
|
|
33
|
+
var import_helmet = __toESM(require("../helmet"));
|
|
34
|
+
var import_types = require("../types");
|
|
35
|
+
var import_utils = require("../utils");
|
|
36
|
+
var import_prefetch = __toESM(require("../../prefetch"));
|
|
37
|
+
var import_template = require("./template");
|
|
38
|
+
var import_reduce = require("./reduce");
|
|
39
|
+
var loadableRenderer = __toESM(require("./loadable"));
|
|
40
|
+
var styledComponentRenderer = __toESM(require("./styledComponent"));
|
|
41
|
+
var __async = (__this, __arguments, generator) => {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
var fulfilled = (value) => {
|
|
44
|
+
try {
|
|
45
|
+
step(generator.next(value));
|
|
46
|
+
} catch (e) {
|
|
47
|
+
reject(e);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
var rejected = (value) => {
|
|
51
|
+
try {
|
|
52
|
+
step(generator.throw(value));
|
|
53
|
+
} catch (e) {
|
|
54
|
+
reject(e);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
58
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
59
|
+
});
|
|
60
|
+
};
|
|
23
61
|
const buildTemplateData = (context, data, renderLevel) => {
|
|
24
|
-
const {
|
|
25
|
-
request
|
|
26
|
-
} = context;
|
|
62
|
+
const { request } = context;
|
|
27
63
|
return {
|
|
28
64
|
data,
|
|
29
65
|
context: {
|
|
@@ -42,26 +78,13 @@ const buildTemplateData = (context, data, renderLevel) => {
|
|
|
42
78
|
};
|
|
43
79
|
class Entry {
|
|
44
80
|
constructor(options) {
|
|
45
|
-
|
|
46
|
-
_defineProperty(this, "result", void 0);
|
|
47
|
-
_defineProperty(this, "metrics", void 0);
|
|
48
|
-
_defineProperty(this, "logger", void 0);
|
|
49
|
-
_defineProperty(this, "App", void 0);
|
|
50
|
-
_defineProperty(this, "fragments", void 0);
|
|
51
|
-
_defineProperty(this, "pluginConfig", void 0);
|
|
52
|
-
_defineProperty(this, "host", void 0);
|
|
53
|
-
const {
|
|
54
|
-
ctx,
|
|
55
|
-
config
|
|
56
|
-
} = options;
|
|
81
|
+
const { ctx, config } = options;
|
|
57
82
|
const {
|
|
58
83
|
entryName,
|
|
59
84
|
template,
|
|
60
|
-
request: {
|
|
61
|
-
host
|
|
62
|
-
}
|
|
85
|
+
request: { host }
|
|
63
86
|
} = ctx;
|
|
64
|
-
this.fragments = (0,
|
|
87
|
+
this.fragments = (0, import_template.toFragments)(template, entryName);
|
|
65
88
|
this.entryName = entryName;
|
|
66
89
|
this.host = host;
|
|
67
90
|
this.App = options.App;
|
|
@@ -69,69 +92,73 @@ class Entry {
|
|
|
69
92
|
this.metrics = ctx.metrics;
|
|
70
93
|
this.logger = ctx.logger;
|
|
71
94
|
this.result = {
|
|
72
|
-
renderLevel:
|
|
73
|
-
html:
|
|
95
|
+
renderLevel: import_types.RenderLevel.CLIENT_RENDER,
|
|
96
|
+
html: "",
|
|
74
97
|
chunksMap: {
|
|
75
|
-
js:
|
|
76
|
-
css:
|
|
98
|
+
js: "",
|
|
99
|
+
css: ""
|
|
77
100
|
}
|
|
78
101
|
};
|
|
79
102
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const prefetchData = await this.prefetch(context);
|
|
86
|
-
if (ssrContext.redirection.url) {
|
|
87
|
-
return '';
|
|
88
|
-
}
|
|
89
|
-
if (this.result.renderLevel >= _types.RenderLevel.SERVER_PREFETCH) {
|
|
90
|
-
this.result.html = this.renderToString(context);
|
|
91
|
-
}
|
|
92
|
-
if (ssrContext.redirection.url) {
|
|
93
|
-
return '';
|
|
94
|
-
}
|
|
95
|
-
let html = '';
|
|
96
|
-
const templateData = buildTemplateData(ssrContext, prefetchData, this.result.renderLevel);
|
|
97
|
-
const SSRData = this.getSSRDataScript(templateData);
|
|
98
|
-
for (const fragment of this.fragments) {
|
|
99
|
-
if (fragment.isVariable && fragment.content === 'SSRDataScript') {
|
|
100
|
-
html += fragment.getValue(SSRData);
|
|
101
|
-
} else {
|
|
102
|
-
html += fragment.getValue(this.result);
|
|
103
|
+
renderToHtml(context) {
|
|
104
|
+
return __async(this, null, function* () {
|
|
105
|
+
const ssrContext = context.ssrContext;
|
|
106
|
+
if (ssrContext.redirection.url) {
|
|
107
|
+
return "";
|
|
103
108
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
const prefetchData = yield this.prefetch(context);
|
|
110
|
+
if (ssrContext.redirection.url) {
|
|
111
|
+
return "";
|
|
112
|
+
}
|
|
113
|
+
if (this.result.renderLevel >= import_types.RenderLevel.SERVER_PREFETCH) {
|
|
114
|
+
this.result.html = this.renderToString(context);
|
|
115
|
+
}
|
|
116
|
+
if (ssrContext.redirection.url) {
|
|
117
|
+
return "";
|
|
118
|
+
}
|
|
119
|
+
let html = "";
|
|
120
|
+
const templateData = buildTemplateData(
|
|
121
|
+
ssrContext,
|
|
122
|
+
prefetchData,
|
|
123
|
+
this.result.renderLevel
|
|
124
|
+
);
|
|
125
|
+
const SSRData = this.getSSRDataScript(templateData);
|
|
126
|
+
for (const fragment of this.fragments) {
|
|
127
|
+
if (fragment.isVariable && fragment.content === "SSRDataScript") {
|
|
128
|
+
html += fragment.getValue(SSRData);
|
|
129
|
+
} else {
|
|
130
|
+
html += fragment.getValue(this.result);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const helmetData = import_react_helmet.default.renderStatic();
|
|
134
|
+
return helmetData ? (0, import_helmet.default)(html, helmetData) : html;
|
|
135
|
+
});
|
|
107
136
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
137
|
+
prefetch(context) {
|
|
138
|
+
return __async(this, null, function* () {
|
|
139
|
+
let prefetchData;
|
|
140
|
+
const end = (0, import_utils.time)();
|
|
141
|
+
try {
|
|
142
|
+
prefetchData = yield (0, import_prefetch.default)(this.App, context);
|
|
143
|
+
this.result.renderLevel = import_types.RenderLevel.SERVER_PREFETCH;
|
|
144
|
+
const prefetchCost = end();
|
|
145
|
+
this.logger.debug(`App Prefetch cost = %d ms`, prefetchCost);
|
|
146
|
+
this.metrics.emitTimer("app.prefetch.cost", prefetchCost);
|
|
147
|
+
} catch (e) {
|
|
148
|
+
this.result.renderLevel = import_types.RenderLevel.CLIENT_RENDER;
|
|
149
|
+
this.logger.error("App Prefetch Render", e);
|
|
150
|
+
this.metrics.emitCounter("app.prefetch.render.error", 1);
|
|
151
|
+
}
|
|
152
|
+
return prefetchData || {};
|
|
153
|
+
});
|
|
123
154
|
}
|
|
124
155
|
renderToString(context) {
|
|
125
|
-
let html =
|
|
126
|
-
const end = (0,
|
|
127
|
-
const {
|
|
128
|
-
ssrContext
|
|
129
|
-
} = context;
|
|
156
|
+
let html = "";
|
|
157
|
+
const end = (0, import_utils.time)();
|
|
158
|
+
const { ssrContext } = context;
|
|
130
159
|
try {
|
|
131
|
-
const App =
|
|
132
|
-
context: Object.assign(context, {
|
|
133
|
-
ssr: true
|
|
134
|
-
})
|
|
160
|
+
const App = import_react.default.createElement(this.App, {
|
|
161
|
+
context: Object.assign(context, { ssr: true })
|
|
135
162
|
});
|
|
136
163
|
const renderContext = {
|
|
137
164
|
stats: ssrContext.loadableStats,
|
|
@@ -140,25 +167,28 @@ class Entry {
|
|
|
140
167
|
entryName: this.entryName,
|
|
141
168
|
config: this.pluginConfig
|
|
142
169
|
};
|
|
143
|
-
html = (0,
|
|
170
|
+
html = (0, import_reduce.reduce)(App, renderContext, [
|
|
171
|
+
styledComponentRenderer.toHtml,
|
|
172
|
+
loadableRenderer.toHtml,
|
|
173
|
+
(jsx) => import_server.default.renderToString(jsx)
|
|
174
|
+
]);
|
|
144
175
|
const cost = end();
|
|
145
|
-
this.logger.debug(
|
|
146
|
-
this.metrics.emitTimer(
|
|
147
|
-
this.result.renderLevel =
|
|
176
|
+
this.logger.debug("App Render To HTML cost = %d ms", cost);
|
|
177
|
+
this.metrics.emitTimer("app.render.html.cost", cost);
|
|
178
|
+
this.result.renderLevel = import_types.RenderLevel.SERVER_RENDER;
|
|
148
179
|
} catch (e) {
|
|
149
|
-
this.logger.error(
|
|
150
|
-
this.metrics.emitCounter(
|
|
180
|
+
this.logger.error("App Render To HTML", e);
|
|
181
|
+
this.metrics.emitCounter("app.render.html.error", 1);
|
|
151
182
|
}
|
|
152
183
|
return html;
|
|
153
184
|
}
|
|
154
185
|
getSSRDataScript(templateData) {
|
|
155
186
|
return {
|
|
156
187
|
SSRDataScript: `
|
|
157
|
-
<script>window._SSR_DATA = ${(0,
|
|
188
|
+
<script>window._SSR_DATA = ${(0, import_serialize_javascript.default)(templateData, {
|
|
158
189
|
isJSON: true
|
|
159
|
-
})}
|
|
190
|
+
})}<\/script>
|
|
160
191
|
`
|
|
161
192
|
};
|
|
162
193
|
}
|
|
163
194
|
}
|
|
164
|
-
exports.default = Entry;
|
|
@@ -1,37 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
render: () => render
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_ssr = require("@modern-js/utils/ssr");
|
|
30
|
+
var import_prerender = require("../../react/prerender");
|
|
31
|
+
var import_utils = require("../utils");
|
|
32
|
+
var import_entry = __toESM(require("./entry"));
|
|
33
|
+
var __async = (__this, __arguments, generator) => {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
var fulfilled = (value) => {
|
|
36
|
+
try {
|
|
37
|
+
step(generator.next(value));
|
|
38
|
+
} catch (e) {
|
|
39
|
+
reject(e);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
var rejected = (value) => {
|
|
43
|
+
try {
|
|
44
|
+
step(generator.throw(value));
|
|
45
|
+
} catch (e) {
|
|
46
|
+
reject(e);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
50
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
51
|
+
});
|
|
52
|
+
};
|
|
12
53
|
const render = ({
|
|
13
54
|
App,
|
|
14
55
|
context,
|
|
15
56
|
config
|
|
16
57
|
}) => {
|
|
17
58
|
const ssrContext = context.ssrContext;
|
|
18
|
-
return (0,
|
|
19
|
-
const entry = new
|
|
59
|
+
return (0, import_ssr.run)(ssrContext.request.headers, () => __async(void 0, null, function* () {
|
|
60
|
+
const entry = new import_entry.default({
|
|
20
61
|
ctx: ssrContext,
|
|
21
62
|
App,
|
|
22
63
|
config
|
|
23
64
|
});
|
|
24
|
-
entry.metrics.emitCounter(
|
|
25
|
-
const end = (0,
|
|
26
|
-
const html =
|
|
65
|
+
entry.metrics.emitCounter("app.visit.count", 1);
|
|
66
|
+
const end = (0, import_utils.time)();
|
|
67
|
+
const html = yield entry.renderToHtml(context);
|
|
27
68
|
const cost = end();
|
|
28
|
-
entry.logger.info(
|
|
29
|
-
entry.metrics.emitTimer(
|
|
30
|
-
const cacheConfig =
|
|
69
|
+
entry.logger.info("App Render Total cost = %d ms", cost);
|
|
70
|
+
entry.metrics.emitTimer("app.render.cost", cost);
|
|
71
|
+
const cacheConfig = import_prerender.PreRender.config();
|
|
31
72
|
if (cacheConfig) {
|
|
32
73
|
context.ssrContext.cacheConfig = cacheConfig;
|
|
33
74
|
}
|
|
34
75
|
return html;
|
|
35
|
-
});
|
|
76
|
+
}));
|
|
36
77
|
};
|
|
37
|
-
exports.render = render;
|
|
@@ -1,52 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
toHtml: () => toHtml
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
const extname = uri => {
|
|
11
|
-
if (typeof uri !==
|
|
12
|
-
return
|
|
22
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
23
|
+
var import_server = require("@loadable/server");
|
|
24
|
+
var import_utils = require("../../utils");
|
|
25
|
+
var import_utils2 = require("../utils");
|
|
26
|
+
const extname = (uri) => {
|
|
27
|
+
if (typeof uri !== "string" || !uri.includes(".")) {
|
|
28
|
+
return "";
|
|
13
29
|
}
|
|
14
|
-
return `.${uri
|
|
30
|
+
return `.${uri == null ? void 0 : uri.split(".").pop()}` || "";
|
|
15
31
|
};
|
|
16
32
|
const toHtml = (jsx, renderer, next) => {
|
|
17
33
|
const {
|
|
18
34
|
stats,
|
|
19
|
-
result: {
|
|
20
|
-
chunksMap
|
|
21
|
-
},
|
|
35
|
+
result: { chunksMap },
|
|
22
36
|
host,
|
|
23
37
|
config = {}
|
|
24
38
|
} = renderer;
|
|
25
39
|
if (!stats || chunksMap.js) {
|
|
26
40
|
return next(jsx);
|
|
27
41
|
}
|
|
28
|
-
const extractor = new
|
|
42
|
+
const extractor = new import_server.ChunkExtractor({
|
|
29
43
|
stats,
|
|
30
44
|
entrypoints: [renderer.entryName]
|
|
31
45
|
});
|
|
32
46
|
const html = next(extractor.collectChunks(jsx));
|
|
33
47
|
const chunks = extractor.getChunkAssets(extractor.chunks);
|
|
34
|
-
chunksMap.js = (chunksMap.js ||
|
|
48
|
+
chunksMap.js = (chunksMap.js || "") + (0, import_utils2.getLoadableScripts)(extractor);
|
|
35
49
|
for (const v of chunks) {
|
|
36
50
|
const fileType = extname(v.url).slice(1);
|
|
37
|
-
if (fileType ===
|
|
51
|
+
if (fileType === "js") {
|
|
38
52
|
const props = [];
|
|
39
|
-
const {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
53
|
+
const { crossorigin } = config;
|
|
54
|
+
if (crossorigin && (0, import_utils.isCrossOrigin)(v.url, host)) {
|
|
55
|
+
props.push(
|
|
56
|
+
`crossorigin="${crossorigin === true ? "anonymous" : crossorigin}"`
|
|
57
|
+
);
|
|
44
58
|
}
|
|
45
|
-
chunksMap[fileType] += `<script src="${v.url}" ${props.join(
|
|
46
|
-
|
|
59
|
+
chunksMap[fileType] += `<script src="${v.url}" ${props.join(
|
|
60
|
+
" "
|
|
61
|
+
)}><\/script>`;
|
|
62
|
+
} else if (fileType === "css") {
|
|
47
63
|
chunksMap[fileType] += `<link href="${v.url}" rel="stylesheet" />`;
|
|
48
64
|
}
|
|
49
65
|
}
|
|
50
66
|
return html;
|
|
51
67
|
};
|
|
52
|
-
exports.toHtml = toHtml;
|
|
@@ -1,11 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
reduce: () => reduce
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
22
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
7
23
|
function reduce(jsx, renderer, middleware) {
|
|
8
24
|
let index = 0;
|
|
9
|
-
const createNext = () => App => middleware[index++](App, renderer, createNext());
|
|
25
|
+
const createNext = () => (App) => middleware[index++](App, renderer, createNext());
|
|
10
26
|
return createNext()(jsx);
|
|
11
|
-
}
|
|
27
|
+
}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
toHtml: () => toHtml
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
22
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
23
|
+
var import_styled_components = require("styled-components");
|
|
8
24
|
const toHtml = (jsx, renderer, next) => {
|
|
9
|
-
const sheet = new
|
|
25
|
+
const sheet = new import_styled_components.ServerStyleSheet();
|
|
10
26
|
const html = next(sheet.collectStyles(jsx));
|
|
11
27
|
const css = sheet.getStyleTags();
|
|
12
28
|
renderer.result.chunksMap.css += css;
|
|
13
29
|
return html;
|
|
14
30
|
};
|
|
15
|
-
exports.toHtml = toHtml;
|
|
@@ -1,19 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
Fragment: () => Fragment,
|
|
21
|
+
toFragments: () => toFragments
|
|
5
22
|
});
|
|
6
|
-
exports
|
|
7
|
-
exports.toFragments = toFragments;
|
|
8
|
-
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
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
9
24
|
const VARIABLE_REG_EXP = /<!--<\?([-=+])\s*(.*?)\s*\?>-->/;
|
|
10
25
|
const VARIABLE_SPLITTER = /(<!--<\?.*?\?>-->)/;
|
|
11
26
|
const ENCODE_HTML_RULES = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
'"':
|
|
16
|
-
"'":
|
|
27
|
+
"&": "&",
|
|
28
|
+
"<": "<",
|
|
29
|
+
">": ">",
|
|
30
|
+
'"': """,
|
|
31
|
+
"'": "'"
|
|
17
32
|
};
|
|
18
33
|
const MATCH_HTML = /[&<>'"]/g;
|
|
19
34
|
function encodeChar(c) {
|
|
@@ -22,19 +37,15 @@ function encodeChar(c) {
|
|
|
22
37
|
function escape(str) {
|
|
23
38
|
return str.replace(MATCH_HTML, encodeChar);
|
|
24
39
|
}
|
|
25
|
-
class
|
|
40
|
+
const _Fragment = class {
|
|
26
41
|
constructor(template) {
|
|
27
|
-
_defineProperty(this, "isVariable", void 0);
|
|
28
|
-
_defineProperty(this, "content", void 0);
|
|
29
|
-
_defineProperty(this, "filters", void 0);
|
|
30
|
-
_defineProperty(this, "path", void 0);
|
|
31
42
|
const match = VARIABLE_REG_EXP.exec(template);
|
|
32
43
|
if (match) {
|
|
33
44
|
const [, filterFlag, content] = match;
|
|
34
45
|
this.isVariable = true;
|
|
35
46
|
this.content = content;
|
|
36
|
-
this.filters = [
|
|
37
|
-
this.path = content.replace(/\[['"](.*?)['"]\]/g,
|
|
47
|
+
this.filters = [_Fragment.filterMap[filterFlag]];
|
|
48
|
+
this.path = content.replace(/\[['"](.*?)['"]\]/g, ".$1").split(".");
|
|
38
49
|
} else {
|
|
39
50
|
this.isVariable = false;
|
|
40
51
|
this.content = template;
|
|
@@ -45,22 +56,22 @@ class Fragment {
|
|
|
45
56
|
getValue(data) {
|
|
46
57
|
if (this.isVariable) {
|
|
47
58
|
const value = this.path.reduce((p, n) => p != null ? p[n] : p, data);
|
|
48
|
-
return this.filters.reduce((p, n) => n(p), value != null ? value :
|
|
59
|
+
return this.filters.reduce((p, n) => n(p), value != null ? value : "");
|
|
49
60
|
}
|
|
50
61
|
return this.content;
|
|
51
62
|
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
63
|
+
};
|
|
64
|
+
let Fragment = _Fragment;
|
|
65
|
+
Fragment.filterMap = {
|
|
66
|
+
"=": escape,
|
|
67
|
+
"-": (v) => v
|
|
68
|
+
};
|
|
58
69
|
const fragmentListMap = {};
|
|
59
70
|
function toFragments(template, entryName) {
|
|
60
71
|
if (fragmentListMap[entryName]) {
|
|
61
72
|
return fragmentListMap[entryName];
|
|
62
73
|
}
|
|
63
|
-
const fragmentList = template.split(VARIABLE_SPLITTER).filter(v => Boolean(v)).map(v => new Fragment(v));
|
|
74
|
+
const fragmentList = template.split(VARIABLE_SPLITTER).filter((v) => Boolean(v)).map((v) => new Fragment(v));
|
|
64
75
|
fragmentListMap[entryName] = fragmentList;
|
|
65
76
|
return fragmentList;
|
|
66
|
-
}
|
|
77
|
+
}
|