@modern-js/runtime 1.3.5 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/dist/js/modern/cli/index.js +4 -4
- package/dist/js/modern/common.js +1 -0
- package/dist/js/modern/exports/model.js +2 -1
- package/dist/js/modern/exports/router.js +2 -1
- package/dist/js/modern/exports/server.js +0 -1
- package/dist/js/modern/exports/ssr.js +2 -1
- package/dist/js/modern/router/cli/index.js +106 -0
- package/dist/js/modern/router/index.js +2 -0
- package/dist/js/modern/router/runtime/DefaultNotFound.js +13 -0
- package/dist/js/modern/router/runtime/index.js +4 -0
- package/dist/js/modern/router/runtime/plugin.js +88 -0
- package/dist/js/modern/router/runtime/utils.js +108 -0
- package/dist/js/modern/ssr/cli/index.js +120 -0
- package/dist/js/modern/ssr/index.js +109 -0
- package/dist/js/modern/ssr/index.node.js +78 -0
- package/dist/js/modern/ssr/prefetch.js +58 -0
- package/dist/js/modern/ssr/react/index.js +2 -0
- package/dist/js/modern/ssr/react/nossr/index.js +13 -0
- package/dist/js/modern/ssr/react/prerender/index.js +104 -0
- package/dist/js/modern/ssr/react/prerender/type.js +0 -0
- package/dist/js/modern/ssr/react/prerender/util.js +99 -0
- package/dist/js/modern/ssr/serverRender/entry.js +179 -0
- package/dist/js/modern/ssr/serverRender/helmet.js +46 -0
- package/dist/js/modern/ssr/serverRender/index.js +29 -0
- package/dist/js/modern/ssr/serverRender/loadable.js +48 -0
- package/dist/js/modern/ssr/serverRender/measure.js +11 -0
- package/dist/js/modern/ssr/serverRender/reduce.js +7 -0
- package/dist/js/modern/ssr/serverRender/styledComponent.js +8 -0
- package/dist/js/modern/ssr/serverRender/template.js +90 -0
- package/dist/js/modern/ssr/serverRender/type.js +8 -0
- package/dist/js/modern/ssr/utils.js +51 -0
- package/dist/js/modern/state/cli/index.js +110 -0
- package/dist/js/modern/state/index.js +2 -0
- package/dist/js/modern/state/plugins.js +7 -0
- package/dist/js/modern/state/runtime/index.js +4 -0
- package/dist/js/modern/state/runtime/plugin.js +71 -0
- package/dist/js/modern/state/types.js +1 -0
- package/dist/js/node/cli/index.js +5 -5
- package/dist/js/node/common.js +10 -0
- package/dist/js/node/exports/model.js +19 -5
- package/dist/js/node/exports/router.js +19 -5
- package/dist/js/node/exports/server.js +0 -17
- package/dist/js/node/exports/ssr.js +19 -5
- package/dist/js/node/router/cli/index.js +122 -0
- package/dist/js/node/router/index.js +30 -0
- package/dist/js/node/router/runtime/DefaultNotFound.js +26 -0
- package/dist/js/node/router/runtime/index.js +39 -0
- package/dist/js/node/router/runtime/plugin.js +111 -0
- package/dist/js/node/router/runtime/utils.js +128 -0
- package/dist/js/node/ssr/cli/index.js +136 -0
- package/dist/js/node/ssr/index.js +138 -0
- package/dist/js/node/ssr/index.node.js +105 -0
- package/dist/js/node/ssr/prefetch.js +75 -0
- package/dist/js/node/ssr/react/index.js +21 -0
- package/dist/js/node/ssr/react/nossr/index.js +28 -0
- package/dist/js/node/ssr/react/prerender/index.js +121 -0
- package/dist/js/node/ssr/react/prerender/type.js +0 -0
- package/dist/js/node/ssr/react/prerender/util.js +119 -0
- package/dist/js/node/ssr/serverRender/entry.js +208 -0
- package/dist/js/node/ssr/serverRender/helmet.js +52 -0
- package/dist/js/node/ssr/serverRender/index.js +46 -0
- package/dist/js/node/ssr/serverRender/loadable.js +60 -0
- package/dist/js/node/ssr/serverRender/measure.js +20 -0
- package/dist/js/node/ssr/serverRender/reduce.js +14 -0
- package/dist/js/node/ssr/serverRender/styledComponent.js +18 -0
- package/dist/js/node/ssr/serverRender/template.js +103 -0
- package/dist/js/node/ssr/serverRender/type.js +15 -0
- package/dist/js/node/ssr/utils.js +65 -0
- package/dist/js/node/state/cli/index.js +127 -0
- package/dist/js/node/state/index.js +30 -0
- package/dist/js/node/state/plugins.js +35 -0
- package/dist/js/node/state/runtime/index.js +61 -0
- package/dist/js/node/state/runtime/plugin.js +101 -0
- package/dist/js/node/state/types.js +5 -0
- package/dist/js/treeshaking/cli/index.js +4 -4
- package/dist/js/treeshaking/common.js +3 -0
- package/dist/js/treeshaking/exports/model.js +2 -1
- package/dist/js/treeshaking/exports/router.js +2 -1
- package/dist/js/treeshaking/exports/server.js +0 -1
- package/dist/js/treeshaking/exports/ssr.js +2 -1
- package/dist/js/treeshaking/router/cli/index.js +100 -0
- package/dist/js/treeshaking/router/index.js +2 -0
- package/dist/js/treeshaking/router/runtime/DefaultNotFound.js +15 -0
- package/dist/js/treeshaking/router/runtime/index.js +4 -0
- package/dist/js/treeshaking/router/runtime/plugin.js +89 -0
- package/dist/js/treeshaking/router/runtime/utils.js +106 -0
- package/dist/js/treeshaking/ssr/cli/index.js +113 -0
- package/dist/js/treeshaking/ssr/index.js +129 -0
- package/dist/js/treeshaking/ssr/index.node.js +100 -0
- package/dist/js/treeshaking/ssr/prefetch.js +97 -0
- package/dist/js/treeshaking/ssr/react/index.js +2 -0
- package/dist/js/treeshaking/ssr/react/nossr/index.js +16 -0
- package/dist/js/treeshaking/ssr/react/prerender/index.js +119 -0
- package/dist/js/treeshaking/ssr/react/prerender/type.js +0 -0
- package/dist/js/treeshaking/ssr/react/prerender/util.js +115 -0
- package/dist/js/treeshaking/ssr/serverRender/entry.js +267 -0
- package/dist/js/treeshaking/ssr/serverRender/helmet.js +37 -0
- package/dist/js/treeshaking/ssr/serverRender/index.js +69 -0
- package/dist/js/treeshaking/ssr/serverRender/loadable.js +59 -0
- package/dist/js/treeshaking/ssr/serverRender/measure.js +17 -0
- package/dist/js/treeshaking/ssr/serverRender/reduce.js +11 -0
- package/dist/js/treeshaking/ssr/serverRender/styledComponent.js +8 -0
- package/dist/js/treeshaking/ssr/serverRender/template.js +111 -0
- package/dist/js/treeshaking/ssr/serverRender/type.js +8 -0
- package/dist/js/treeshaking/ssr/utils.js +53 -0
- package/dist/js/treeshaking/state/cli/index.js +100 -0
- package/dist/js/treeshaking/state/index.js +2 -0
- package/dist/js/treeshaking/state/plugins.js +13 -0
- package/dist/js/treeshaking/state/runtime/index.js +4 -0
- package/dist/js/treeshaking/state/runtime/plugin.js +63 -0
- package/dist/js/treeshaking/state/types.js +1 -0
- package/dist/types/common.d.ts +1 -0
- package/dist/types/exports/model.d.ts +2 -1
- package/dist/types/exports/router.d.ts +2 -1
- package/dist/types/exports/server.d.ts +0 -1
- package/dist/types/exports/ssr.d.ts +2 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/router/cli/index.d.ts +5 -0
- package/dist/types/router/index.d.ts +2 -0
- package/dist/types/router/runtime/DefaultNotFound.d.ts +2 -0
- package/dist/types/router/runtime/index.d.ts +6 -0
- package/dist/types/router/runtime/plugin.d.ts +51 -0
- package/dist/types/router/runtime/utils.d.ts +6 -0
- package/dist/types/ssr/cli/index.d.ts +5 -0
- package/dist/types/ssr/index.d.ts +18 -0
- package/dist/types/ssr/index.node.d.ts +4 -0
- package/dist/types/ssr/prefetch.d.ts +13 -0
- package/dist/types/ssr/react/index.d.ts +2 -0
- package/dist/types/ssr/react/nossr/index.d.ts +2 -0
- package/dist/types/ssr/react/prerender/index.d.ts +1 -0
- package/dist/types/ssr/react/prerender/type.d.ts +29 -0
- package/dist/types/ssr/react/prerender/util.d.ts +6 -0
- package/dist/types/ssr/serverRender/entry.d.ts +20 -0
- package/dist/types/ssr/serverRender/helmet.d.ts +2 -0
- package/dist/types/ssr/serverRender/index.d.ts +8 -0
- package/dist/types/ssr/serverRender/loadable.d.ts +2 -0
- package/dist/types/ssr/serverRender/measure.d.ts +1 -0
- package/dist/types/ssr/serverRender/reduce.d.ts +3 -0
- package/dist/types/ssr/serverRender/styledComponent.d.ts +2 -0
- package/dist/types/ssr/serverRender/template.d.ts +14 -0
- package/dist/types/ssr/serverRender/type.d.ts +32 -0
- package/dist/types/ssr/utils.d.ts +8 -0
- package/dist/types/state/cli/index.d.ts +5 -0
- package/dist/types/state/index.d.ts +2 -0
- package/dist/types/state/plugins.d.ts +4 -0
- package/dist/types/state/runtime/index.d.ts +4 -0
- package/dist/types/state/runtime/plugin.d.ts +17 -0
- package/dist/types/state/types.d.ts +17 -0
- package/package.json +37 -20
- package/types/model.d.ts +1 -1
- package/types/state.d.ts +4 -0
- package/dist/js/modern/exports/request.js +0 -1
- package/dist/js/node/exports/request.js +0 -13
- package/dist/js/treeshaking/exports/request.js +0 -1
- package/dist/types/exports/request.d.ts +0 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = helmet;
|
|
7
|
+
// 用于 react-helmet 正则替换
|
|
8
|
+
const RE_HTML_ATTR = /<html[^>]*>/;
|
|
9
|
+
const RE_BODY_ATTR = /<body[^>]*>/;
|
|
10
|
+
const RE_LAST_IN_HEAD = /<\/head>/;
|
|
11
|
+
const RE_TITLE = /<title[^>]*>([\s\S\n\r]*?)<\/title>/g;
|
|
12
|
+
const TEST_TITLE_CONTENT = /(?<=<title[^>]*>)([\s\S\n\r]*?)([.|\S])([\s\S\n\r]*?)(?=<\/title>)/g; // 通过 react-helmet 修改模板
|
|
13
|
+
|
|
14
|
+
function helmet(content, helmetData) {
|
|
15
|
+
let result = content;
|
|
16
|
+
const bodyAttributes = helmetData.bodyAttributes.toString();
|
|
17
|
+
|
|
18
|
+
if (bodyAttributes) {
|
|
19
|
+
result = result.replace(RE_BODY_ATTR, `<body ${bodyAttributes}>`);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const htmlAttributes = helmetData.htmlAttributes.toString();
|
|
23
|
+
|
|
24
|
+
if (htmlAttributes) {
|
|
25
|
+
result = result.replace(RE_HTML_ATTR, `<html ${htmlAttributes}>`);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const base = helmetData.base.toString();
|
|
29
|
+
const link = helmetData.link.toString();
|
|
30
|
+
const meta = helmetData.meta.toString();
|
|
31
|
+
const noscript = helmetData.noscript.toString();
|
|
32
|
+
const script = helmetData.script.toString();
|
|
33
|
+
const style = helmetData.style.toString();
|
|
34
|
+
const title = helmetData.title.toString(); // 如果模板中存在 title,且 helmetData title 有内容则做替换
|
|
35
|
+
|
|
36
|
+
const existTitle = RE_TITLE.test(content);
|
|
37
|
+
|
|
38
|
+
if (TEST_TITLE_CONTENT.test(title.trim()) && existTitle) {
|
|
39
|
+
result = result.replace(RE_TITLE, title);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return result.replace(RE_LAST_IN_HEAD, `
|
|
43
|
+
${base}
|
|
44
|
+
${link}
|
|
45
|
+
${meta}
|
|
46
|
+
${noscript}
|
|
47
|
+
${script}
|
|
48
|
+
${style}
|
|
49
|
+
${existTitle ? '' : title}
|
|
50
|
+
</head>
|
|
51
|
+
`);
|
|
52
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.render = void 0;
|
|
7
|
+
|
|
8
|
+
var _runtimeCore = require("@modern-js/runtime-core");
|
|
9
|
+
|
|
10
|
+
var _ssr = require("@modern-js/utils/ssr");
|
|
11
|
+
|
|
12
|
+
var _prerender = require("../react/prerender");
|
|
13
|
+
|
|
14
|
+
var _entry = _interopRequireDefault(require("./entry"));
|
|
15
|
+
|
|
16
|
+
var _measure = require("./measure");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
const render = async (ctx, _ = process.cwd(), App) => {
|
|
21
|
+
const {
|
|
22
|
+
ssrContext
|
|
23
|
+
} = ctx;
|
|
24
|
+
return (0, _ssr.run)(ssrContext.request.headers, async () => {
|
|
25
|
+
const entry = new _entry.default({
|
|
26
|
+
ctx: ssrContext,
|
|
27
|
+
App
|
|
28
|
+
});
|
|
29
|
+
entry.metrics.emitCounter('app.visit.count', 1);
|
|
30
|
+
const end = (0, _measure.time)();
|
|
31
|
+
const html = await entry.renderToHtml(ctx);
|
|
32
|
+
const cost = end();
|
|
33
|
+
entry.logger.info('App Render Total cost = %d ms', cost);
|
|
34
|
+
entry.metrics.emitTimer('app.render.cost', cost);
|
|
35
|
+
|
|
36
|
+
const cacheConfig = _prerender.PreRender.config();
|
|
37
|
+
|
|
38
|
+
if (cacheConfig) {
|
|
39
|
+
ctx.ssrContext.cacheConfig = cacheConfig;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return html;
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
exports.render = render;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.toHtml = void 0;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _server = require("@loadable/server");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
function getLoadableScripts(extractor) {
|
|
15
|
+
const check = scripts => (scripts || '').includes('__LOADABLE_REQUIRED_CHUNKS___ext');
|
|
16
|
+
|
|
17
|
+
const scripts = extractor.getScriptTags();
|
|
18
|
+
|
|
19
|
+
if (!check(scripts)) {
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return scripts.split('</script>') // 前两个 script为 loadable 必须的 script
|
|
24
|
+
.slice(0, 2).map(i => `${i}</script>`).join('');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const toHtml = (jsx, renderer, next) => {
|
|
28
|
+
const {
|
|
29
|
+
loadableManifest,
|
|
30
|
+
result: {
|
|
31
|
+
chunksMap
|
|
32
|
+
}
|
|
33
|
+
} = renderer;
|
|
34
|
+
|
|
35
|
+
if (!loadableManifest || chunksMap.js) {
|
|
36
|
+
return next(jsx);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const extractor = new _server.ChunkExtractor({
|
|
40
|
+
statsFile: loadableManifest,
|
|
41
|
+
entrypoints: [renderer.entryName]
|
|
42
|
+
});
|
|
43
|
+
const html = next(extractor.collectChunks(jsx));
|
|
44
|
+
const chunks = extractor.getChunkAssets(extractor.chunks);
|
|
45
|
+
chunksMap.js = (chunksMap.js || '') + getLoadableScripts(extractor);
|
|
46
|
+
|
|
47
|
+
for (const v of chunks) {
|
|
48
|
+
const fileType = _path.default.extname(v.url).slice(1);
|
|
49
|
+
|
|
50
|
+
if (fileType === 'js') {
|
|
51
|
+
chunksMap[fileType] += `<script src="${v.url}"></script>`;
|
|
52
|
+
} else if (fileType === 'css') {
|
|
53
|
+
chunksMap[fileType] += `<link href="${v.url}" rel="stylesheet" />`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return html;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
exports.toHtml = toHtml;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.time = void 0;
|
|
7
|
+
|
|
8
|
+
const getLatency = hrtime => {
|
|
9
|
+
const [s, ns] = process.hrtime(hrtime);
|
|
10
|
+
return s * 1e3 + ns / 1e6;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const time = () => {
|
|
14
|
+
const hrtime = process.hrtime();
|
|
15
|
+
return () => {
|
|
16
|
+
return getLatency(hrtime);
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
exports.time = time;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.reduce = reduce;
|
|
7
|
+
|
|
8
|
+
function reduce(jsx, renderer, middleware) {
|
|
9
|
+
let index = 0;
|
|
10
|
+
|
|
11
|
+
const createNext = () => App => middleware[index++](App, renderer, createNext());
|
|
12
|
+
|
|
13
|
+
return createNext()(jsx);
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.toHtml = void 0;
|
|
7
|
+
|
|
8
|
+
var _styled = require("@modern-js/runtime-core/styled");
|
|
9
|
+
|
|
10
|
+
const toHtml = (jsx, renderer, next) => {
|
|
11
|
+
const sheet = new _styled.ServerStyleSheet();
|
|
12
|
+
const html = next(sheet.collectStyles(jsx));
|
|
13
|
+
const css = sheet.getStyleTags();
|
|
14
|
+
renderer.result.chunksMap.css += css;
|
|
15
|
+
return html;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.toHtml = toHtml;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Fragment = void 0;
|
|
7
|
+
exports.toFragments = toFragments;
|
|
8
|
+
|
|
9
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
10
|
+
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
|
|
13
|
+
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; }
|
|
14
|
+
|
|
15
|
+
const readFile = filepath => {
|
|
16
|
+
if (_fs.default.existsSync(filepath)) {
|
|
17
|
+
return _fs.default.readFileSync(filepath, 'utf-8');
|
|
18
|
+
} else {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const VARIABLE_REG_EXP = /<!--<\?([-=+])\s*(.*?)\s*\?>-->/;
|
|
24
|
+
const VARIABLE_SPLITTER = /(<!--<\?.*?\?>-->)/;
|
|
25
|
+
const ENCODE_HTML_RULES = {
|
|
26
|
+
'&': '&',
|
|
27
|
+
'<': '<',
|
|
28
|
+
'>': '>',
|
|
29
|
+
'"': '"',
|
|
30
|
+
"'": '''
|
|
31
|
+
};
|
|
32
|
+
const MATCH_HTML = /[&<>'"]/g;
|
|
33
|
+
|
|
34
|
+
function encodeChar(c) {
|
|
35
|
+
return ENCODE_HTML_RULES[c] || c;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function escape(str) {
|
|
39
|
+
return str.replace(MATCH_HTML, encodeChar);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
class Fragment {
|
|
43
|
+
constructor(template) {
|
|
44
|
+
_defineProperty(this, "isVariable", void 0);
|
|
45
|
+
|
|
46
|
+
_defineProperty(this, "content", void 0);
|
|
47
|
+
|
|
48
|
+
_defineProperty(this, "filters", void 0);
|
|
49
|
+
|
|
50
|
+
_defineProperty(this, "path", void 0);
|
|
51
|
+
|
|
52
|
+
const match = VARIABLE_REG_EXP.exec(template);
|
|
53
|
+
|
|
54
|
+
if (match) {
|
|
55
|
+
const [, filterFlag, content] = match;
|
|
56
|
+
this.isVariable = true;
|
|
57
|
+
this.content = content;
|
|
58
|
+
this.filters = [Fragment.filterMap[filterFlag]];
|
|
59
|
+
this.path = content.replace(/\[['"](.*?)['"]\]/g, '.$1').split('.');
|
|
60
|
+
} else {
|
|
61
|
+
this.isVariable = false;
|
|
62
|
+
this.content = template;
|
|
63
|
+
this.filters = [];
|
|
64
|
+
this.path = [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
getValue(data) {
|
|
69
|
+
if (this.isVariable) {
|
|
70
|
+
const value = this.path.reduce((p, n) => p != null ? p[n] : p, data);
|
|
71
|
+
return this.filters.reduce((p, n) => n(p), value != null ? value : '');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return this.content;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
exports.Fragment = Fragment;
|
|
80
|
+
|
|
81
|
+
_defineProperty(Fragment, "filterMap", {
|
|
82
|
+
'=': escape,
|
|
83
|
+
'-': v => v
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
const fragmentListMap = {};
|
|
87
|
+
|
|
88
|
+
function toFragments(filename) {
|
|
89
|
+
if (fragmentListMap[filename]) {
|
|
90
|
+
return fragmentListMap[filename];
|
|
91
|
+
} // 未开启现代构建的项目无 -es6.html
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
const template = readFile(filename);
|
|
95
|
+
|
|
96
|
+
if (!template) {
|
|
97
|
+
throw new Error(`Could not find template file: ${filename}`);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const fragmentList = template.split(VARIABLE_SPLITTER).filter(v => Boolean(v)).map(v => new Fragment(v));
|
|
101
|
+
fragmentListMap[filename] = fragmentList;
|
|
102
|
+
return fragmentList;
|
|
103
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RenderLevel = void 0;
|
|
7
|
+
// import { IncomingHttpHeaders } from 'http';
|
|
8
|
+
let RenderLevel;
|
|
9
|
+
exports.RenderLevel = RenderLevel;
|
|
10
|
+
|
|
11
|
+
(function (RenderLevel) {
|
|
12
|
+
RenderLevel[RenderLevel["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
|
|
13
|
+
RenderLevel[RenderLevel["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
|
|
14
|
+
RenderLevel[RenderLevel["SERVER_RENDER"] = 2] = "SERVER_RENDER";
|
|
15
|
+
})(RenderLevel || (exports.RenderLevel = RenderLevel = {}));
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mockResponse = exports.formatServer = exports.formatClient = void 0;
|
|
7
|
+
|
|
8
|
+
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; }
|
|
9
|
+
|
|
10
|
+
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; }
|
|
11
|
+
|
|
12
|
+
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; }
|
|
13
|
+
|
|
14
|
+
const formatServer = request => {
|
|
15
|
+
const {
|
|
16
|
+
cookie = '',
|
|
17
|
+
'user-agent': userAgent = '',
|
|
18
|
+
referer
|
|
19
|
+
} = request.headers || {};
|
|
20
|
+
return _objectSpread({
|
|
21
|
+
cookie,
|
|
22
|
+
userAgent,
|
|
23
|
+
referer
|
|
24
|
+
}, request);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.formatServer = formatServer;
|
|
28
|
+
|
|
29
|
+
const getQuery = () => window.location.search.substring(1).split('&').reduce((res, item) => {
|
|
30
|
+
const [key, value] = item.split('=');
|
|
31
|
+
res[key] = value;
|
|
32
|
+
return res;
|
|
33
|
+
}, {});
|
|
34
|
+
|
|
35
|
+
const formatClient = request => {
|
|
36
|
+
return {
|
|
37
|
+
params: request.params || {},
|
|
38
|
+
host: request.host || location.host,
|
|
39
|
+
pathname: request.pathname || location.pathname,
|
|
40
|
+
headers: request.headers || {},
|
|
41
|
+
cookieMap: request.cookieMap || {},
|
|
42
|
+
cookie: request.headers.cookie || document.cookie,
|
|
43
|
+
userAgent: request.headers['user-agent'] || navigator.userAgent,
|
|
44
|
+
referer: request.referer || document.referrer,
|
|
45
|
+
query: request.query || getQuery(),
|
|
46
|
+
url: location.href
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
exports.formatClient = formatClient;
|
|
51
|
+
|
|
52
|
+
const mockResponse = () => {
|
|
53
|
+
return {
|
|
54
|
+
setHeader() {
|
|
55
|
+
console.info('setHeader can only be used in the server side');
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
status() {
|
|
59
|
+
console.info('status can only be used in the server side');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
exports.mockResponse = mockResponse;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _utils = require("@modern-js/utils");
|
|
11
|
+
|
|
12
|
+
require("../types");
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
const PLUGIN_IDENTIFIER = 'state';
|
|
17
|
+
|
|
18
|
+
var _default = () => ({
|
|
19
|
+
name: '@modern-js/plugin-state',
|
|
20
|
+
required: ['@modern-js/runtime'],
|
|
21
|
+
setup: api => {
|
|
22
|
+
const stateConfigMap = new Map();
|
|
23
|
+
let pluginsExportsUtils;
|
|
24
|
+
|
|
25
|
+
const stateModulePath = _path.default.resolve(__dirname, '../');
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
config() {
|
|
29
|
+
const appContext = api.useAppContext();
|
|
30
|
+
pluginsExportsUtils = (0, _utils.createRuntimeExportsUtils)(appContext.internalDirectory, 'plugins');
|
|
31
|
+
return {
|
|
32
|
+
source: {
|
|
33
|
+
alias: {
|
|
34
|
+
'@modern-js/runtime/plugins': pluginsExportsUtils.getPath()
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
modifyEntryImports({
|
|
41
|
+
entrypoint,
|
|
42
|
+
imports
|
|
43
|
+
}) {
|
|
44
|
+
var _getEntryOptions;
|
|
45
|
+
|
|
46
|
+
const {
|
|
47
|
+
entryName
|
|
48
|
+
} = entrypoint;
|
|
49
|
+
const userConfig = api.useResolvedConfigContext();
|
|
50
|
+
const {
|
|
51
|
+
packageName
|
|
52
|
+
} = api.useAppContext();
|
|
53
|
+
const stateConfig = (_getEntryOptions = (0, _utils.getEntryOptions)(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.state;
|
|
54
|
+
stateConfigMap.set(entryName, stateConfig);
|
|
55
|
+
|
|
56
|
+
const getEnabledPlugins = () => {
|
|
57
|
+
const internalPlugins = ['immer', 'effects', 'autoActions', 'devtools'];
|
|
58
|
+
return internalPlugins.filter(name => stateConfig[name] !== false);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
if (stateConfig) {
|
|
62
|
+
imports.push({
|
|
63
|
+
value: '@modern-js/runtime/plugins',
|
|
64
|
+
specifiers: [{
|
|
65
|
+
imported: PLUGIN_IDENTIFIER
|
|
66
|
+
}]
|
|
67
|
+
});
|
|
68
|
+
imports.push({
|
|
69
|
+
value: '@modern-js/runtime/model',
|
|
70
|
+
specifiers: getEnabledPlugins().map(imported => ({
|
|
71
|
+
imported
|
|
72
|
+
})),
|
|
73
|
+
initialize: `
|
|
74
|
+
const createStatePlugins = (config) => {
|
|
75
|
+
const plugins = [];
|
|
76
|
+
|
|
77
|
+
${getEnabledPlugins().map(name => `
|
|
78
|
+
plugins.push(${name}(config['${name}']));
|
|
79
|
+
`).join('\n')}
|
|
80
|
+
|
|
81
|
+
return plugins;
|
|
82
|
+
}
|
|
83
|
+
`
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
entrypoint,
|
|
89
|
+
imports
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
modifyEntryRuntimePlugins({
|
|
94
|
+
entrypoint,
|
|
95
|
+
plugins
|
|
96
|
+
}) {
|
|
97
|
+
const stateOptions = stateConfigMap.get(entrypoint.entryName);
|
|
98
|
+
|
|
99
|
+
if (stateOptions) {
|
|
100
|
+
const isBoolean = typeof stateOptions === 'boolean';
|
|
101
|
+
let options = isBoolean ? '{}' : JSON.stringify(stateOptions);
|
|
102
|
+
options = `${options.substr(0, options.length - 1)}${isBoolean ? '' : ','}plugins: createStatePlugins(${JSON.stringify(stateConfigMap.get(entrypoint.entryName))})}`;
|
|
103
|
+
plugins.push({
|
|
104
|
+
name: PLUGIN_IDENTIFIER,
|
|
105
|
+
options
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
entrypoint,
|
|
111
|
+
plugins
|
|
112
|
+
};
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
validateSchema() {
|
|
116
|
+
return _utils.PLUGIN_SCHEMAS['@modern-js/plugin-state'];
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
addRuntimeExports() {
|
|
120
|
+
pluginsExportsUtils.addExport(`export { default as state } from '${stateModulePath}'`);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
exports.default = _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {};
|
|
7
|
+
Object.defineProperty(exports, "default", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _runtime.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
var _runtime = _interopRequireWildcard(require("./runtime"));
|
|
15
|
+
|
|
16
|
+
Object.keys(_runtime).forEach(function (key) {
|
|
17
|
+
if (key === "default" || key === "__esModule") return;
|
|
18
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
19
|
+
if (key in exports && exports[key] === _runtime[key]) return;
|
|
20
|
+
Object.defineProperty(exports, key, {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () {
|
|
23
|
+
return _runtime[key];
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
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); }
|
|
29
|
+
|
|
30
|
+
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; }
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.autoActions = void 0;
|
|
7
|
+
Object.defineProperty(exports, "devtools", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _pluginDevtools.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.immer = exports.effects = void 0;
|
|
14
|
+
|
|
15
|
+
var _pluginEffects = require("@modern-js-reduck/plugin-effects");
|
|
16
|
+
|
|
17
|
+
var _pluginAutoActions = _interopRequireDefault(require("@modern-js-reduck/plugin-auto-actions"));
|
|
18
|
+
|
|
19
|
+
var _pluginImmutable = _interopRequireDefault(require("@modern-js-reduck/plugin-immutable"));
|
|
20
|
+
|
|
21
|
+
var _pluginDevtools = _interopRequireDefault(require("@modern-js-reduck/plugin-devtools"));
|
|
22
|
+
|
|
23
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
|
+
|
|
25
|
+
const effects = () => _pluginEffects.plugin;
|
|
26
|
+
|
|
27
|
+
exports.effects = effects;
|
|
28
|
+
|
|
29
|
+
const immer = () => _pluginImmutable.default;
|
|
30
|
+
|
|
31
|
+
exports.immer = immer;
|
|
32
|
+
|
|
33
|
+
const autoActions = () => _pluginAutoActions.default;
|
|
34
|
+
|
|
35
|
+
exports.autoActions = autoActions;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
model: true,
|
|
8
|
+
createStore: true
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "createStore", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _store.createStore;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "default", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () {
|
|
19
|
+
return _plugin.default;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
Object.defineProperty(exports, "model", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () {
|
|
25
|
+
return _store.model;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
var _react = require("@modern-js-reduck/react");
|
|
30
|
+
|
|
31
|
+
Object.keys(_react).forEach(function (key) {
|
|
32
|
+
if (key === "default" || key === "__esModule") return;
|
|
33
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
34
|
+
if (key in exports && exports[key] === _react[key]) return;
|
|
35
|
+
Object.defineProperty(exports, key, {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
get: function () {
|
|
38
|
+
return _react[key];
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
var _store = require("@modern-js-reduck/store");
|
|
44
|
+
|
|
45
|
+
var _plugin = _interopRequireWildcard(require("./plugin"));
|
|
46
|
+
|
|
47
|
+
Object.keys(_plugin).forEach(function (key) {
|
|
48
|
+
if (key === "default" || key === "__esModule") return;
|
|
49
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
50
|
+
if (key in exports && exports[key] === _plugin[key]) return;
|
|
51
|
+
Object.defineProperty(exports, key, {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () {
|
|
54
|
+
return _plugin[key];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
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); }
|
|
60
|
+
|
|
61
|
+
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; }
|