@modern-js/runtime 1.3.4-alpha.0 → 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 +77 -19
- 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 +8 -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,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {};
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
|
|
9
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
10
|
+
|
|
11
|
+
var _component = require("@loadable/component");
|
|
12
|
+
|
|
13
|
+
var _type = require("./serverRender/type");
|
|
14
|
+
|
|
15
|
+
var _utils = require("./utils");
|
|
16
|
+
|
|
17
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
|
|
19
|
+
var _react = require("./react");
|
|
20
|
+
|
|
21
|
+
Object.keys(_react).forEach(function (key) {
|
|
22
|
+
if (key === "default" || key === "__esModule") return;
|
|
23
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
24
|
+
if (key in exports && exports[key] === _react[key]) return;
|
|
25
|
+
Object.defineProperty(exports, key, {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _react[key];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
34
|
+
|
|
35
|
+
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; }
|
|
36
|
+
|
|
37
|
+
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; }
|
|
38
|
+
|
|
39
|
+
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; }
|
|
40
|
+
|
|
41
|
+
const ssr = () => ({
|
|
42
|
+
name: '@modern-js/plugin-ssr',
|
|
43
|
+
setup: () => {
|
|
44
|
+
const mockResp = (0, _utils.mockResponse)();
|
|
45
|
+
return {
|
|
46
|
+
client: async ({
|
|
47
|
+
App,
|
|
48
|
+
context,
|
|
49
|
+
rootElement
|
|
50
|
+
}) => {
|
|
51
|
+
var _window, _window$_SSR_DATA;
|
|
52
|
+
|
|
53
|
+
const renderLevel = (_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.renderLevel;
|
|
54
|
+
|
|
55
|
+
if (renderLevel === _type.RenderLevel.CLIENT_RENDER) {
|
|
56
|
+
var _prefetch, _ref;
|
|
57
|
+
|
|
58
|
+
await (App === null || App === void 0 ? void 0 : (_prefetch = (_ref = App).prefetch) === null || _prefetch === void 0 ? void 0 : _prefetch.call(_ref, context));
|
|
59
|
+
|
|
60
|
+
_reactDom.default.render( /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
61
|
+
context: context
|
|
62
|
+
}), rootElement);
|
|
63
|
+
} else if (renderLevel === _type.RenderLevel.SERVER_RENDER) {
|
|
64
|
+
(0, _component.loadableReady)(() => {
|
|
65
|
+
const hydrateContext = _objectSpread(_objectSpread({}, context), {}, {
|
|
66
|
+
_hydration: true
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
_reactDom.default.hydrate( /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
70
|
+
context: hydrateContext
|
|
71
|
+
}), rootElement, () => {
|
|
72
|
+
// won't cause component re-render because context's reference identity doesn't change
|
|
73
|
+
delete hydrateContext._hydration;
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
// unknown renderlevel or renderlevel is server prefetch.
|
|
78
|
+
_reactDom.default.render( /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
79
|
+
context: context
|
|
80
|
+
}), rootElement);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
init({
|
|
85
|
+
context
|
|
86
|
+
}, next) {
|
|
87
|
+
var _window2, _window2$_SSR_DATA, _window2$_SSR_DATA$co;
|
|
88
|
+
|
|
89
|
+
const request = (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$_SSR_DATA = _window2._SSR_DATA) === null || _window2$_SSR_DATA === void 0 ? void 0 : (_window2$_SSR_DATA$co = _window2$_SSR_DATA.context) === null || _window2$_SSR_DATA$co === void 0 ? void 0 : _window2$_SSR_DATA$co.request;
|
|
90
|
+
|
|
91
|
+
if (!request) {
|
|
92
|
+
return next({
|
|
93
|
+
context
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
context.ssrContext.response = mockResp;
|
|
98
|
+
context.ssrContext.request = (0, _utils.formatClient)(request);
|
|
99
|
+
return next({
|
|
100
|
+
context
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
pickContext: ({
|
|
105
|
+
context,
|
|
106
|
+
pickedContext
|
|
107
|
+
}, next) => {
|
|
108
|
+
var _window3, _window3$_SSR_DATA, _window3$_SSR_DATA$co;
|
|
109
|
+
|
|
110
|
+
const request = (_window3 = window) === null || _window3 === void 0 ? void 0 : (_window3$_SSR_DATA = _window3._SSR_DATA) === null || _window3$_SSR_DATA === void 0 ? void 0 : (_window3$_SSR_DATA$co = _window3$_SSR_DATA.context) === null || _window3$_SSR_DATA$co === void 0 ? void 0 : _window3$_SSR_DATA$co.request;
|
|
111
|
+
const {
|
|
112
|
+
initialData
|
|
113
|
+
} = context;
|
|
114
|
+
|
|
115
|
+
if (!request) {
|
|
116
|
+
return next({
|
|
117
|
+
context,
|
|
118
|
+
pickedContext: _objectSpread(_objectSpread({}, pickedContext), {}, {
|
|
119
|
+
initialData
|
|
120
|
+
})
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return next({
|
|
125
|
+
context,
|
|
126
|
+
pickedContext: _objectSpread(_objectSpread({}, pickedContext), {}, {
|
|
127
|
+
initialData,
|
|
128
|
+
request,
|
|
129
|
+
response: mockResp
|
|
130
|
+
})
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
var _default = ssr;
|
|
138
|
+
exports.default = _default;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {};
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
|
|
11
|
+
var _runtimeCore = require("@modern-js/runtime-core");
|
|
12
|
+
|
|
13
|
+
var _common = require("../common");
|
|
14
|
+
|
|
15
|
+
var _prefetch = _interopRequireDefault(require("./prefetch"));
|
|
16
|
+
|
|
17
|
+
var _utils = require("./utils");
|
|
18
|
+
|
|
19
|
+
var _react = require("./react");
|
|
20
|
+
|
|
21
|
+
Object.keys(_react).forEach(function (key) {
|
|
22
|
+
if (key === "default" || key === "__esModule") return;
|
|
23
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
24
|
+
if (key in exports && exports[key] === _react[key]) return;
|
|
25
|
+
Object.defineProperty(exports, key, {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _react[key];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
34
|
+
|
|
35
|
+
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; }
|
|
36
|
+
|
|
37
|
+
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; }
|
|
38
|
+
|
|
39
|
+
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; }
|
|
40
|
+
|
|
41
|
+
const registeredApps = new WeakSet();
|
|
42
|
+
|
|
43
|
+
const plugin = () => ({
|
|
44
|
+
name: '@modern-js/plugin-ssr',
|
|
45
|
+
setup: () => {
|
|
46
|
+
return {
|
|
47
|
+
server: async ({
|
|
48
|
+
App,
|
|
49
|
+
context
|
|
50
|
+
}) => {
|
|
51
|
+
if (!registeredApps.has(App)) {
|
|
52
|
+
(0, _runtimeCore.registerPrefetch)(App, _context => (0, _prefetch.default)(App, _context));
|
|
53
|
+
registeredApps.add(App);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (!(0, _common.isBrowser)()) {
|
|
57
|
+
const html = await require("./serverRender").render(context, (context === null || context === void 0 ? void 0 : context.ssrContext.distDir) || _path.default.join(process.cwd(), 'dist'), App);
|
|
58
|
+
return html;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return null;
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
init({
|
|
65
|
+
context
|
|
66
|
+
}, next) {
|
|
67
|
+
const {
|
|
68
|
+
request
|
|
69
|
+
} = context.ssrContext;
|
|
70
|
+
context.ssrContext.request = (0, _utils.formatServer)(request);
|
|
71
|
+
return next({
|
|
72
|
+
context
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
pickContext: ({
|
|
77
|
+
context,
|
|
78
|
+
pickedContext
|
|
79
|
+
}, next) => {
|
|
80
|
+
const {
|
|
81
|
+
request,
|
|
82
|
+
response
|
|
83
|
+
} = context === null || context === void 0 ? void 0 : context.ssrContext;
|
|
84
|
+
const {
|
|
85
|
+
initialData
|
|
86
|
+
} = context;
|
|
87
|
+
return next({
|
|
88
|
+
context,
|
|
89
|
+
pickedContext: _objectSpread(_objectSpread({}, pickedContext), {}, {
|
|
90
|
+
initialData,
|
|
91
|
+
request,
|
|
92
|
+
response
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
var _default = plugin;
|
|
101
|
+
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
102
|
+
|
|
103
|
+
/* eslint-enable @typescript-eslint/no-var-requires */
|
|
104
|
+
|
|
105
|
+
exports.default = _default;
|
|
@@ -0,0 +1,75 @@
|
|
|
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 _fs = _interopRequireDefault(require("fs"));
|
|
11
|
+
|
|
12
|
+
var _server = require("react-dom/server");
|
|
13
|
+
|
|
14
|
+
var _ssr = require("@modern-js/utils/ssr");
|
|
15
|
+
|
|
16
|
+
var _constants = require("@modern-js/utils/constants");
|
|
17
|
+
|
|
18
|
+
var _server2 = require("@loadable/server");
|
|
19
|
+
|
|
20
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
24
|
+
// todo: SSRContext
|
|
25
|
+
const prefetch = async (App, context) => (0, _ssr.run)(context.ssrContext.request.headers, async () => {
|
|
26
|
+
var _context$store;
|
|
27
|
+
|
|
28
|
+
const {
|
|
29
|
+
ssrContext
|
|
30
|
+
} = context;
|
|
31
|
+
|
|
32
|
+
const loadablefile = _path.default.resolve(ssrContext.distDir, _constants.LOADABLE_STATS_FILE);
|
|
33
|
+
|
|
34
|
+
if (_fs.default.existsSync(loadablefile)) {
|
|
35
|
+
const extractor = new _server2.ChunkExtractor({
|
|
36
|
+
statsFile: _path.default.resolve(ssrContext.distDir, _constants.LOADABLE_STATS_FILE),
|
|
37
|
+
entrypoints: [ssrContext.entryName].filter(Boolean)
|
|
38
|
+
});
|
|
39
|
+
(0, _server.renderToStaticMarkup)(extractor.collectChunks( /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
40
|
+
context: context
|
|
41
|
+
})));
|
|
42
|
+
} else {
|
|
43
|
+
(0, _server.renderToStaticMarkup)( /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
44
|
+
context: context
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (!context.loaderManager.hasPendingLoaders()) {
|
|
49
|
+
return {
|
|
50
|
+
initialData: context.initialData,
|
|
51
|
+
i18nData: context.__i18nData__
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const loadersData = await context.loaderManager.awaitPendingLoaders();
|
|
56
|
+
Object.keys(loadersData).forEach(id => {
|
|
57
|
+
const data = loadersData[id];
|
|
58
|
+
|
|
59
|
+
if (data._error) {
|
|
60
|
+
ssrContext.logger.error('App Prefetch Loader', data._error);
|
|
61
|
+
ssrContext.metrics.emitCounter('app.prefetch.loader.error', 1);
|
|
62
|
+
delete data._error;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return {
|
|
66
|
+
loadersData,
|
|
67
|
+
initialData: context.initialData,
|
|
68
|
+
i18nData: context.__i18nData__,
|
|
69
|
+
// todo: move to plugin state
|
|
70
|
+
storeState: context === null || context === void 0 ? void 0 : (_context$store = context.store) === null || _context$store === void 0 ? void 0 : _context$store.getState()
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
var _default = prefetch;
|
|
75
|
+
exports.default = _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "NoSSR", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _nossr.NoSSR;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "PreRender", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _prerender.PreRender;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
var _prerender = require("./prerender");
|
|
20
|
+
|
|
21
|
+
var _nossr = require("./nossr");
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.NoSSR = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
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); }
|
|
11
|
+
|
|
12
|
+
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; }
|
|
13
|
+
|
|
14
|
+
let csr = false;
|
|
15
|
+
|
|
16
|
+
const NoSSR = props => {
|
|
17
|
+
const [isMounted, setMounted] = (0, _react.useState)(csr);
|
|
18
|
+
(0, _react.useEffect)(() => {
|
|
19
|
+
csr = true;
|
|
20
|
+
setMounted(true);
|
|
21
|
+
});
|
|
22
|
+
const {
|
|
23
|
+
children
|
|
24
|
+
} = props;
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isMounted ? children : null);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.NoSSR = NoSSR;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PreRender = void 0;
|
|
7
|
+
|
|
8
|
+
var _reactSideEffect = _interopRequireDefault(require("react-side-effect"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _util = require("./util");
|
|
13
|
+
|
|
14
|
+
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); }
|
|
15
|
+
|
|
16
|
+
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; }
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
const PROP_NAMES = {
|
|
27
|
+
INTERVAL: 'interval',
|
|
28
|
+
STALE_LIMIT: 'staleLimit',
|
|
29
|
+
LEVEL: 'level',
|
|
30
|
+
INCLUDES: 'includes',
|
|
31
|
+
EXCLUDES: 'excludes',
|
|
32
|
+
FALLBACK: 'fallback',
|
|
33
|
+
MATCHES: 'matches'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const handleClientStateChange = () => {// not used
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const mapStateOnServer = reduceProps => {
|
|
40
|
+
const defaultProps = {
|
|
41
|
+
interval: 10,
|
|
42
|
+
staleLimit: false,
|
|
43
|
+
level: 0,
|
|
44
|
+
includes: null,
|
|
45
|
+
excludes: null,
|
|
46
|
+
fallback: false,
|
|
47
|
+
matches: null
|
|
48
|
+
};
|
|
49
|
+
return Object.keys(defaultProps).reduce((props, key) => {
|
|
50
|
+
const propKey = key;
|
|
51
|
+
const reduceProp = reduceProps[propKey];
|
|
52
|
+
let nextProps = props;
|
|
53
|
+
|
|
54
|
+
if ((0, _util.exist)(reduceProp)) {
|
|
55
|
+
nextProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
56
|
+
[propKey]: reduceProp
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return nextProps;
|
|
61
|
+
}, defaultProps);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const reducePropsToState = propsList => {
|
|
65
|
+
const reduceProps = {
|
|
66
|
+
interval: (0, _util.getOutermostProperty)(propsList, PROP_NAMES.INTERVAL),
|
|
67
|
+
staleLimit: (0, _util.getOutermostProperty)(propsList, PROP_NAMES.STALE_LIMIT),
|
|
68
|
+
level: (0, _util.getOutermostProperty)(propsList, PROP_NAMES.LEVEL),
|
|
69
|
+
includes: (0, _util.aggKeysFromPropsList)(propsList, PROP_NAMES.INCLUDES),
|
|
70
|
+
excludes: (0, _util.aggKeysFromPropsList)(propsList, PROP_NAMES.EXCLUDES),
|
|
71
|
+
fallback: (0, _util.getOutermostProperty)(propsList, PROP_NAMES.FALLBACK),
|
|
72
|
+
matches: (0, _util.aggMatchesFromPropsList)(propsList, PROP_NAMES.MATCHES)
|
|
73
|
+
};
|
|
74
|
+
return reduceProps;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
function factory(Component) {
|
|
78
|
+
class Spr extends _react.default.Component {
|
|
79
|
+
static set canUseDOM(canUseDOM) {
|
|
80
|
+
Component.canUseDOM = canUseDOM;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
static get canUseDOM() {
|
|
84
|
+
return Component.canUseDOM;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
verify() {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
render() {
|
|
92
|
+
const newProps = _objectSpread({}, this.props);
|
|
93
|
+
|
|
94
|
+
const validate = this.verify();
|
|
95
|
+
|
|
96
|
+
if (!validate) {
|
|
97
|
+
throw new Error('invalid props, check usage');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return /*#__PURE__*/(0, _react.createElement)(Component, _objectSpread({}, newProps));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
_defineProperty(Spr, "peek", Component.peek);
|
|
106
|
+
|
|
107
|
+
_defineProperty(Spr, "rewind", Component.rewind);
|
|
108
|
+
|
|
109
|
+
_defineProperty(Spr, "config", () => {
|
|
110
|
+
const mappedState = Component.rewind();
|
|
111
|
+
return mappedState;
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return Spr;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const NullComponent = () => null;
|
|
118
|
+
|
|
119
|
+
const SprSideEffects = (0, _reactSideEffect.default)(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);
|
|
120
|
+
const PreRender = factory(SprSideEffects);
|
|
121
|
+
exports.PreRender = PreRender;
|
|
File without changes
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.aggMatchesFromPropsList = exports.aggKeysFromPropsList = void 0;
|
|
7
|
+
exports.exist = exist;
|
|
8
|
+
exports.getOutermostProperty = exports.getInnermostProperty = void 0;
|
|
9
|
+
const REQUEST_META = ['header', 'query'];
|
|
10
|
+
|
|
11
|
+
const getInnermostProperty = function getInnermostProperty(propsList, propName) {
|
|
12
|
+
for (let i = propsList.length - 1; i >= 0; i--) {
|
|
13
|
+
const props = propsList[i];
|
|
14
|
+
|
|
15
|
+
if (props.hasOwnProperty(propName)) {
|
|
16
|
+
return props[propName];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
exports.getInnermostProperty = getInnermostProperty;
|
|
24
|
+
|
|
25
|
+
const getOutermostProperty = function getOutermostProperty(propsList, propName) {
|
|
26
|
+
for (const props of propsList) {
|
|
27
|
+
if (props.hasOwnProperty(propName)) {
|
|
28
|
+
return props[propName];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return null;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.getOutermostProperty = getOutermostProperty;
|
|
36
|
+
|
|
37
|
+
const aggKeysFromPropsList = function aggKeysFromPropsList(propsList, propName) {
|
|
38
|
+
const initResult = REQUEST_META.reduce((result, next) => {
|
|
39
|
+
const key = next;
|
|
40
|
+
result[key] = [];
|
|
41
|
+
return result;
|
|
42
|
+
}, {});
|
|
43
|
+
const res = propsList.filter(props => usefulObject(props[propName])).reduce((result, next) => {
|
|
44
|
+
REQUEST_META.forEach(key => {
|
|
45
|
+
const prop = next[propName];
|
|
46
|
+
|
|
47
|
+
if (prop !== null && prop !== void 0 && prop.hasOwnProperty(key) && usefulArray(prop[key])) {
|
|
48
|
+
result[key] = unique(result[key].concat(prop[key]));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return result;
|
|
52
|
+
}, initResult);
|
|
53
|
+
return REQUEST_META.reduce((result, next) => {
|
|
54
|
+
var _result$key;
|
|
55
|
+
|
|
56
|
+
const key = next;
|
|
57
|
+
|
|
58
|
+
if (result[key] && ((_result$key = result[key]) === null || _result$key === void 0 ? void 0 : _result$key.length) === 0) {
|
|
59
|
+
delete result[key];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return result;
|
|
63
|
+
}, res);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
exports.aggKeysFromPropsList = aggKeysFromPropsList;
|
|
67
|
+
|
|
68
|
+
const aggMatchesFromPropsList = function aggMatchesFromPropsList(propsList, propName) {
|
|
69
|
+
const initResult = REQUEST_META.reduce((result, next) => {
|
|
70
|
+
const key = next;
|
|
71
|
+
result[key] = {};
|
|
72
|
+
return result;
|
|
73
|
+
}, {});
|
|
74
|
+
const res = propsList.filter(props => usefulObject(props[propName])).reduce((result, next) => {
|
|
75
|
+
REQUEST_META.forEach(key => {
|
|
76
|
+
const prop = next[propName]; // 这边目前是浅拷贝,越后渲染优先级越高
|
|
77
|
+
|
|
78
|
+
if (prop !== null && prop !== void 0 && prop.hasOwnProperty(key) && usefulObject(prop[key])) {
|
|
79
|
+
result[key] = Object.assign(result[key], prop[key]);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return result;
|
|
83
|
+
}, initResult);
|
|
84
|
+
return REQUEST_META.reduce((result, next) => {
|
|
85
|
+
const key = next;
|
|
86
|
+
|
|
87
|
+
if (result[key] && Object.keys(result[key]).length === 0) {
|
|
88
|
+
delete result[key];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return result;
|
|
92
|
+
}, res);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
exports.aggMatchesFromPropsList = aggMatchesFromPropsList;
|
|
96
|
+
|
|
97
|
+
function unique(arr) {
|
|
98
|
+
return Array.from(new Set(arr));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function usefulObject(target) {
|
|
102
|
+
if (!exist(target)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return target.constructor === Object && Object.keys(target).length > 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function usefulArray(target) {
|
|
110
|
+
if (!exist(target)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return Array.isArray(target) && target.length > 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function exist(target) {
|
|
118
|
+
return target != null;
|
|
119
|
+
}
|