@modern-js/runtime 2.0.0-beta.0 → 2.0.0-beta.2
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 +158 -0
- package/dist/js/modern/cli/index.js +6 -6
- package/dist/js/modern/core/app-config.js +2 -1
- package/dist/js/modern/core/compatible.js +66 -48
- package/dist/js/modern/core/index.js +3 -2
- package/dist/js/modern/core/loader/loaderManager.js +12 -34
- package/dist/js/modern/core/loader/useLoader.js +8 -26
- package/dist/js/modern/core/plugin.js +6 -28
- package/dist/js/modern/document/Body.js +17 -0
- package/dist/js/modern/document/DocumentContext.js +6 -0
- package/dist/js/modern/document/DocumentStructrueContext.js +7 -0
- package/dist/js/modern/document/Head.js +24 -0
- package/dist/js/modern/document/Html.js +92 -0
- package/dist/js/modern/document/Root.js +31 -0
- package/dist/js/modern/document/Scripts.js +10 -0
- package/dist/js/modern/document/cli/index.js +132 -0
- package/dist/js/modern/document/constants.js +19 -0
- package/dist/js/modern/document/index.js +8 -0
- package/dist/js/modern/index.js +1 -1
- package/dist/js/modern/router/cli/index.js +0 -16
- package/dist/js/modern/router/runtime/plugin.js +0 -9
- package/dist/js/modern/router/runtime/plugin.node.js +18 -24
- package/dist/js/modern/router/runtime/root/index.js +19 -0
- package/dist/js/modern/router/runtime/root/load.js +61 -0
- package/dist/js/modern/router/runtime/utils.js +16 -35
- package/dist/js/modern/router/runtime/withRouter.js +1 -3
- package/dist/js/modern/ssr/cli/index.js +2 -23
- package/dist/js/modern/ssr/index.js +23 -34
- package/dist/js/modern/ssr/index.node.js +0 -13
- package/dist/js/modern/ssr/prefetch.js +0 -7
- package/dist/js/modern/ssr/react/prerender/index.js +2 -23
- package/dist/js/modern/ssr/react/prerender/util.js +2 -17
- package/dist/js/modern/ssr/react/withCallback/index.js +0 -1
- package/dist/js/modern/ssr/serverRender/helmet.js +12 -20
- package/dist/js/modern/ssr/serverRender/index.js +1 -2
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -5
- package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +45 -11
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +6 -39
- package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +0 -2
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +26 -15
- package/dist/js/modern/ssr/serverRender/renderToStream/template.js +14 -18
- package/dist/js/modern/ssr/serverRender/renderToString/entry.js +2 -34
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +0 -2
- package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +0 -10
- package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +0 -2
- package/dist/js/modern/ssr/serverRender/renderToString/template.js +0 -15
- package/dist/js/modern/ssr/serverRender/renderToString/type.js +0 -1
- package/dist/js/modern/ssr/serverRender/utils.js +2 -6
- package/dist/js/modern/ssr/utils.js +0 -11
- package/dist/js/modern/state/cli/index.js +0 -11
- package/dist/js/modern/state/runtime/plugin.js +1 -14
- package/dist/js/node/cli/index.js +6 -14
- package/dist/js/node/common.js +0 -2
- package/dist/js/node/core/app-config.js +2 -5
- package/dist/js/node/core/compatible.js +66 -66
- package/dist/js/node/core/index.js +0 -16
- package/dist/js/node/core/loader/index.js +0 -2
- package/dist/js/node/core/loader/loaderManager.js +12 -37
- package/dist/js/node/core/loader/useLoader.js +8 -31
- package/dist/js/node/core/plugin.js +5 -34
- package/dist/js/node/document/Body.js +26 -0
- package/dist/js/node/document/DocumentContext.js +14 -0
- package/dist/js/node/document/DocumentStructrueContext.js +15 -0
- package/dist/js/node/document/Head.js +33 -0
- package/dist/js/node/document/Html.js +98 -0
- package/dist/js/node/document/Root.js +41 -0
- package/dist/js/node/document/Scripts.js +17 -0
- package/dist/js/node/document/cli/index.js +142 -0
- package/dist/js/node/document/constants.js +36 -0
- package/dist/js/node/document/index.js +93 -0
- package/dist/js/node/exports/head.js +0 -5
- package/dist/js/node/exports/loadable.js +0 -5
- package/dist/js/node/exports/server.js +0 -2
- package/dist/js/node/exports/styled.js +0 -5
- package/dist/js/node/index.js +0 -8
- package/dist/js/node/router/cli/index.js +0 -20
- package/dist/js/node/router/index.js +0 -4
- package/dist/js/node/router/runtime/DefaultNotFound.js +1 -5
- package/dist/js/node/router/runtime/index.js +0 -5
- package/dist/js/node/router/runtime/plugin.js +0 -17
- package/dist/js/node/router/runtime/plugin.node.js +16 -38
- package/dist/js/node/router/runtime/root/index.js +26 -0
- package/dist/js/node/router/runtime/root/load.js +69 -0
- package/dist/js/node/router/runtime/utils.js +16 -44
- package/dist/js/node/router/runtime/withRouter.js +0 -9
- package/dist/js/node/runtime-context.js +0 -2
- package/dist/js/node/ssr/cli/index.js +2 -26
- package/dist/js/node/ssr/index.js +23 -45
- package/dist/js/node/ssr/index.node.js +0 -23
- package/dist/js/node/ssr/prefetch.js +0 -11
- package/dist/js/node/ssr/react/index.js +0 -2
- package/dist/js/node/ssr/react/nossr/index.js +0 -6
- package/dist/js/node/ssr/react/prerender/index.js +2 -30
- package/dist/js/node/ssr/react/prerender/util.js +2 -25
- package/dist/js/node/ssr/react/withCallback/index.js +1 -4
- package/dist/js/node/ssr/serverRender/helmet.js +13 -20
- package/dist/js/node/ssr/serverRender/index.js +1 -4
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -9
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -1
- package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +43 -15
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +6 -48
- package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +0 -4
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +26 -17
- package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +0 -2
- package/dist/js/node/ssr/serverRender/renderToStream/template.js +16 -23
- package/dist/js/node/ssr/serverRender/renderToString/entry.js +2 -51
- package/dist/js/node/ssr/serverRender/renderToString/index.js +0 -10
- package/dist/js/node/ssr/serverRender/renderToString/loadable.js +0 -14
- package/dist/js/node/ssr/serverRender/renderToString/reduce.js +0 -3
- package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +0 -3
- package/dist/js/node/ssr/serverRender/renderToString/template.js +0 -18
- package/dist/js/node/ssr/serverRender/renderToString/type.js +0 -1
- package/dist/js/node/ssr/serverRender/types.js +0 -1
- package/dist/js/node/ssr/serverRender/utils.js +2 -8
- package/dist/js/node/ssr/utils.js +0 -20
- package/dist/js/node/state/cli/index.js +0 -16
- package/dist/js/node/state/index.js +0 -4
- package/dist/js/node/state/plugins.js +0 -11
- package/dist/js/node/state/runtime/index.js +0 -7
- package/dist/js/node/state/runtime/plugin.js +1 -25
- package/dist/js/treeshaking/cli/index.js +6 -4
- package/dist/js/treeshaking/core/app-config.js +2 -1
- package/dist/js/treeshaking/core/compatible.js +74 -81
- package/dist/js/treeshaking/core/index.js +3 -2
- package/dist/js/treeshaking/core/loader/loaderManager.js +19 -51
- package/dist/js/treeshaking/core/loader/useLoader.js +11 -28
- package/dist/js/treeshaking/core/plugin.js +6 -51
- package/dist/js/treeshaking/document/Body.js +14 -0
- package/dist/js/treeshaking/document/DocumentContext.js +6 -0
- package/dist/js/treeshaking/document/DocumentStructrueContext.js +7 -0
- package/dist/js/treeshaking/document/Head.js +21 -0
- package/dist/js/treeshaking/document/Html.js +104 -0
- package/dist/js/treeshaking/document/Root.js +24 -0
- package/dist/js/treeshaking/document/Scripts.js +10 -0
- package/dist/js/treeshaking/document/cli/index.js +175 -0
- package/dist/js/treeshaking/document/constants.js +16 -0
- package/dist/js/treeshaking/document/index.js +8 -0
- package/dist/js/treeshaking/index.js +1 -1
- package/dist/js/treeshaking/router/cli/index.js +6 -18
- package/dist/js/treeshaking/router/runtime/plugin.js +5 -13
- package/dist/js/treeshaking/router/runtime/plugin.node.js +23 -36
- package/dist/js/treeshaking/router/runtime/root/index.js +17 -0
- package/dist/js/treeshaking/router/runtime/root/load.js +102 -0
- package/dist/js/treeshaking/router/runtime/utils.js +21 -39
- package/dist/js/treeshaking/router/runtime/withRouter.js +1 -0
- package/dist/js/treeshaking/ssr/cli/index.js +9 -31
- package/dist/js/treeshaking/ssr/index.js +26 -40
- package/dist/js/treeshaking/ssr/index.node.js +12 -29
- package/dist/js/treeshaking/ssr/prefetch.js +0 -13
- package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -4
- package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -21
- package/dist/js/treeshaking/ssr/react/prerender/util.js +3 -20
- package/dist/js/treeshaking/ssr/react/withCallback/index.js +1 -2
- package/dist/js/treeshaking/ssr/serverRender/helmet.js +12 -11
- package/dist/js/treeshaking/ssr/serverRender/index.js +1 -9
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -6
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +46 -15
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +9 -79
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +3 -5
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +46 -35
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +17 -24
- package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +20 -73
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +2 -6
- package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +5 -16
- package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +0 -2
- package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +2 -18
- package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +0 -1
- package/dist/js/treeshaking/ssr/serverRender/utils.js +5 -10
- package/dist/js/treeshaking/ssr/utils.js +8 -17
- package/dist/js/treeshaking/state/cli/index.js +3 -11
- package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
- package/dist/types/cli/index.d.ts +2 -4
- package/dist/types/core/compatible.d.ts +8 -10
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/loader/loaderManager.d.ts +0 -1
- package/dist/types/core/loader/useLoader.d.ts +0 -5
- package/dist/types/core/plugin.d.ts +16 -28
- package/dist/types/document/Body.d.ts +4 -0
- package/dist/types/document/DocumentContext.d.ts +13 -0
- package/dist/types/document/DocumentStructrueContext.d.ts +10 -0
- package/dist/types/document/Head.d.ts +5 -0
- package/dist/types/document/Html.d.ts +4 -0
- package/dist/types/document/Root.d.ts +8 -0
- package/dist/types/document/Scripts.d.ts +2 -0
- package/dist/types/document/cli/index.d.ts +3 -0
- package/dist/types/document/constants.d.ts +14 -0
- package/dist/types/document/index.d.ts +8 -0
- package/dist/types/exports/server.d.ts +3 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/router/cli/index.d.ts +2 -4
- package/dist/types/router/runtime/root/index.d.ts +8 -0
- package/dist/types/router/runtime/root/load.d.ts +22 -0
- package/dist/types/router/runtime/types.d.ts +0 -2
- package/dist/types/runtime-context.d.ts +1 -0
- package/dist/types/ssr/cli/index.d.ts +2 -4
- package/dist/types/ssr/prefetch.d.ts +2 -2
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +3 -2
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -1
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +3 -3
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +2 -2
- package/dist/types/ssr/serverRender/types.d.ts +3 -6
- package/dist/types/state/cli/index.d.ts +2 -4
- package/dist/types/state/types.d.ts +0 -1
- package/package.json +24 -15
|
@@ -5,18 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getConfig = exports.defineConfig = void 0;
|
|
7
7
|
const APP_CONFIG_SYMBOL = 'config';
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const getConfig = Component =>
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
10
|
// @ts-expect-error
|
|
11
11
|
Component[APP_CONFIG_SYMBOL];
|
|
12
|
-
|
|
13
12
|
exports.getConfig = getConfig;
|
|
14
|
-
|
|
15
13
|
const defineConfig = (Component, config) => {
|
|
16
14
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
17
15
|
// @ts-expect-error
|
|
18
16
|
Component[APP_CONFIG_SYMBOL] = config;
|
|
19
17
|
return Component;
|
|
20
18
|
};
|
|
21
|
-
|
|
22
19
|
exports.defineConfig = defineConfig;
|
|
@@ -4,65 +4,42 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useRuntimeContext = exports.createApp = exports.bootstrap = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
11
|
-
|
|
12
8
|
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
|
|
13
|
-
|
|
14
9
|
var _runtimeContext = require("../runtime-context");
|
|
15
|
-
|
|
16
10
|
var _plugin = require("./plugin");
|
|
17
|
-
|
|
18
11
|
var _loaderManager = require("./loader/loaderManager");
|
|
19
|
-
|
|
20
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
-
|
|
22
13
|
const _excluded = ["context"];
|
|
23
|
-
|
|
24
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
15
|
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); }
|
|
27
|
-
|
|
28
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; }
|
|
29
|
-
|
|
30
17
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
31
|
-
|
|
32
18
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
33
|
-
|
|
34
19
|
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; }
|
|
35
|
-
|
|
36
20
|
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; }
|
|
37
|
-
|
|
38
21
|
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; }
|
|
39
|
-
|
|
40
22
|
const IS_REACT18 = process.env.IS_REACT18 === 'true';
|
|
41
|
-
|
|
23
|
+
const ROUTE_MANIFEST = `_MODERNJS_ROUTE_MANIFEST`;
|
|
42
24
|
function isClientArgs(id) {
|
|
43
25
|
return typeof id === 'string' || typeof HTMLElement !== 'undefined' && id instanceof HTMLElement;
|
|
44
26
|
}
|
|
45
|
-
|
|
46
27
|
const runnerMap = new WeakMap();
|
|
47
|
-
|
|
48
28
|
const getInitialContext = runner => ({
|
|
49
29
|
loaderManager: (0, _loaderManager.createLoaderManager)({}),
|
|
50
30
|
runner,
|
|
51
|
-
isBrowser: true
|
|
31
|
+
isBrowser: true,
|
|
32
|
+
routeManifest: typeof window !== 'undefined' && window[ROUTE_MANIFEST]
|
|
52
33
|
});
|
|
53
|
-
|
|
54
34
|
const createApp = ({
|
|
55
35
|
plugins
|
|
56
36
|
}) => {
|
|
57
37
|
const appRuntime = _plugin.runtime.clone();
|
|
58
|
-
|
|
59
38
|
appRuntime.usePlugin(...plugins);
|
|
60
39
|
return App => {
|
|
61
40
|
const runner = appRuntime.init();
|
|
62
|
-
|
|
63
41
|
const WrapperComponent = props => {
|
|
64
42
|
const element = /*#__PURE__*/_react.default.createElement(App || _react.default.Fragment, _objectSpread({}, props), props.children);
|
|
65
|
-
|
|
66
43
|
const context = (0, _react.useContext)(_runtimeContext.RuntimeReactContext);
|
|
67
44
|
return runner.provide({
|
|
68
45
|
element,
|
|
@@ -74,11 +51,9 @@ const createApp = ({
|
|
|
74
51
|
}) => element
|
|
75
52
|
});
|
|
76
53
|
};
|
|
77
|
-
|
|
78
54
|
if (App) {
|
|
79
55
|
(0, _hoistNonReactStatics.default)(WrapperComponent, App);
|
|
80
56
|
}
|
|
81
|
-
|
|
82
57
|
const HOCApp = runner.hoc({
|
|
83
58
|
App: WrapperComponent
|
|
84
59
|
}, {
|
|
@@ -87,14 +62,13 @@ const createApp = ({
|
|
|
87
62
|
}) => {
|
|
88
63
|
const WrapComponent = _ref => {
|
|
89
64
|
var _contextValue;
|
|
90
|
-
|
|
91
65
|
let {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
let contextValue = context; // We should construct the context, when root component is not passed into `bootstrap`.
|
|
66
|
+
context
|
|
67
|
+
} = _ref,
|
|
68
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
69
|
+
let contextValue = context;
|
|
97
70
|
|
|
71
|
+
// We should construct the context, when root component is not passed into `bootstrap`.
|
|
98
72
|
if (!((_contextValue = contextValue) !== null && _contextValue !== void 0 && _contextValue.runner)) {
|
|
99
73
|
contextValue = getInitialContext(runner);
|
|
100
74
|
runner.init({
|
|
@@ -104,18 +78,15 @@ const createApp = ({
|
|
|
104
78
|
context: context1
|
|
105
79
|
}) => {
|
|
106
80
|
var _App$init;
|
|
107
|
-
|
|
108
81
|
return App === null || App === void 0 ? void 0 : (_App$init = App.init) === null || _App$init === void 0 ? void 0 : _App$init.call(App, context1);
|
|
109
82
|
}
|
|
110
83
|
});
|
|
111
84
|
}
|
|
112
|
-
|
|
113
85
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_runtimeContext.RuntimeReactContext.Provider, {
|
|
114
86
|
value: contextValue,
|
|
115
87
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(App, _objectSpread({}, props))
|
|
116
88
|
});
|
|
117
89
|
};
|
|
118
|
-
|
|
119
90
|
return (0, _hoistNonReactStatics.default)(WrapComponent, App);
|
|
120
91
|
}
|
|
121
92
|
});
|
|
@@ -123,9 +94,7 @@ const createApp = ({
|
|
|
123
94
|
return HOCApp;
|
|
124
95
|
};
|
|
125
96
|
};
|
|
126
|
-
|
|
127
97
|
exports.createApp = createApp;
|
|
128
|
-
|
|
129
98
|
const bootstrap = async (BootApp,
|
|
130
99
|
/**
|
|
131
100
|
* When csr, id is root id.
|
|
@@ -135,19 +104,20 @@ id,
|
|
|
135
104
|
/**
|
|
136
105
|
* root.render need use root to run function
|
|
137
106
|
*/
|
|
138
|
-
root, ReactDOM
|
|
107
|
+
root, ReactDOM
|
|
108
|
+
// eslint-disable-next-line consistent-return
|
|
109
|
+
) => {
|
|
139
110
|
let App = BootApp;
|
|
140
|
-
let runner = runnerMap.get(App);
|
|
111
|
+
let runner = runnerMap.get(App);
|
|
141
112
|
|
|
113
|
+
// ensure Component used is created by `createApp`
|
|
142
114
|
if (!runner) {
|
|
143
115
|
App = createApp({
|
|
144
116
|
plugins: []
|
|
145
117
|
})(App);
|
|
146
118
|
runner = runnerMap.get(App);
|
|
147
119
|
}
|
|
148
|
-
|
|
149
120
|
const context = getInitialContext(runner);
|
|
150
|
-
|
|
151
121
|
const runInit = _context => runner.init({
|
|
152
122
|
context: _context
|
|
153
123
|
}, {
|
|
@@ -155,33 +125,27 @@ root, ReactDOM = _reactDom.default) => {
|
|
|
155
125
|
context: context1
|
|
156
126
|
}) => {
|
|
157
127
|
var _App, _App$init2;
|
|
158
|
-
|
|
159
128
|
return (_App = App) === null || _App === void 0 ? void 0 : (_App$init2 = _App.init) === null || _App$init2 === void 0 ? void 0 : _App$init2.call(_App, context1);
|
|
160
129
|
}
|
|
161
|
-
});
|
|
162
|
-
|
|
130
|
+
});
|
|
163
131
|
|
|
132
|
+
// don't mount the App, let user in charge of it.
|
|
164
133
|
if (!id) {
|
|
165
134
|
return /*#__PURE__*/_react.default.createElement(App, {
|
|
166
135
|
context
|
|
167
136
|
});
|
|
168
137
|
}
|
|
169
|
-
|
|
170
138
|
const isBrowser = typeof window !== 'undefined' && window.name !== 'nodejs';
|
|
171
|
-
|
|
172
139
|
if (isBrowser) {
|
|
173
140
|
if (isClientArgs(id)) {
|
|
174
141
|
var _ssrData$data, _ssrData$data2;
|
|
175
|
-
|
|
176
142
|
const ssrData = window._SSR_DATA;
|
|
177
143
|
const loadersData = (ssrData === null || ssrData === void 0 ? void 0 : (_ssrData$data = ssrData.data) === null || _ssrData$data === void 0 ? void 0 : _ssrData$data.loadersData) || {};
|
|
178
144
|
const initialLoadersState = Object.keys(loadersData).reduce((res, key) => {
|
|
179
145
|
const loaderData = loadersData[key];
|
|
180
|
-
|
|
181
146
|
if (loaderData.loading !== false) {
|
|
182
147
|
return res;
|
|
183
148
|
}
|
|
184
|
-
|
|
185
149
|
res[key] = loaderData;
|
|
186
150
|
return res;
|
|
187
151
|
}, {});
|
|
@@ -194,29 +158,43 @@ root, ReactDOM = _reactDom.default) => {
|
|
|
194
158
|
} : {}));
|
|
195
159
|
context.initialData = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData$data2 = ssrData.data) === null || _ssrData$data2 === void 0 ? void 0 : _ssrData$data2.initialData;
|
|
196
160
|
const initialData = await runInit(context);
|
|
197
|
-
|
|
198
161
|
if (initialData) {
|
|
199
162
|
context.initialData = initialData;
|
|
200
163
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
164
|
+
const rootElement = typeof id !== 'string' ? id : document.getElementById(id || 'root');
|
|
165
|
+
if (!ReactDOM) {
|
|
166
|
+
throw Error('The `bootstrap` need provide `ReactDOM` parameter');
|
|
167
|
+
}
|
|
168
|
+
// https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
|
|
204
169
|
const ModernRender = App => {
|
|
205
170
|
if (IS_REACT18) {
|
|
206
|
-
(root
|
|
171
|
+
if (root) {
|
|
172
|
+
root.render(App);
|
|
173
|
+
} else if (ReactDOM.createRoot) {
|
|
174
|
+
ReactDOM.createRoot(rootElement).render(App);
|
|
175
|
+
} else {
|
|
176
|
+
throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `createRoot` method');
|
|
177
|
+
}
|
|
207
178
|
} else {
|
|
179
|
+
if (!ReactDOM.render) {
|
|
180
|
+
throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `render` method');
|
|
181
|
+
}
|
|
208
182
|
ReactDOM.render(App, rootElement);
|
|
209
183
|
}
|
|
210
184
|
};
|
|
211
|
-
|
|
212
185
|
const ModernHydrate = (App, callback) => {
|
|
213
186
|
if (IS_REACT18) {
|
|
187
|
+
if (!ReactDOM.hydrateRoot) {
|
|
188
|
+
throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `hydrateRoot` method');
|
|
189
|
+
}
|
|
214
190
|
ReactDOM.hydrateRoot(rootElement, App);
|
|
215
191
|
} else {
|
|
192
|
+
if (!ReactDOM.hydrate) {
|
|
193
|
+
throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `hydrate` method');
|
|
194
|
+
}
|
|
216
195
|
ReactDOM.hydrate(App, rootElement, callback);
|
|
217
196
|
}
|
|
218
197
|
};
|
|
219
|
-
|
|
220
198
|
return runner.client({
|
|
221
199
|
App,
|
|
222
200
|
context,
|
|
@@ -244,17 +222,40 @@ root, ReactDOM = _reactDom.default) => {
|
|
|
244
222
|
skipStatic: process.env.NODE_ENV === 'production' && !id.staticGenerate
|
|
245
223
|
})
|
|
246
224
|
});
|
|
225
|
+
|
|
226
|
+
// Handle redirects from React Router with an HTTP redirect
|
|
227
|
+
const isRedirectResponse = result => {
|
|
228
|
+
if (typeof Response !== 'undefined' &&
|
|
229
|
+
// fix: ssg workflow doesn't inject Web Response
|
|
230
|
+
result instanceof Response && result.status >= 300 && result.status <= 399) {
|
|
231
|
+
const {
|
|
232
|
+
status
|
|
233
|
+
} = result;
|
|
234
|
+
const redirectUrl = result.headers.get('Location') || '/';
|
|
235
|
+
const {
|
|
236
|
+
ssrContext
|
|
237
|
+
} = context;
|
|
238
|
+
if (ssrContext) {
|
|
239
|
+
ssrContext.res.statusCode = status;
|
|
240
|
+
ssrContext.res.setHeader('Location', redirectUrl);
|
|
241
|
+
ssrContext.redirection.status = status;
|
|
242
|
+
ssrContext.redirection.url = redirectUrl;
|
|
243
|
+
}
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
return false;
|
|
247
|
+
};
|
|
247
248
|
const initialData = await runInit(context);
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
if (!isRedirectResponse(initialData)) {
|
|
250
|
+
context.initialData = initialData;
|
|
251
|
+
return runner.server({
|
|
252
|
+
App,
|
|
253
|
+
context
|
|
254
|
+
});
|
|
255
|
+
}
|
|
253
256
|
}
|
|
254
257
|
};
|
|
255
|
-
|
|
256
258
|
exports.bootstrap = bootstrap;
|
|
257
|
-
|
|
258
259
|
const useRuntimeContext = () => {
|
|
259
260
|
const context = (0, _react.useContext)(_runtimeContext.RuntimeReactContext);
|
|
260
261
|
const memoizedContext = (0, _react.useMemo)(() => context.runner.pickContext({
|
|
@@ -267,5 +268,4 @@ const useRuntimeContext = () => {
|
|
|
267
268
|
}), [context]);
|
|
268
269
|
return memoizedContext;
|
|
269
270
|
};
|
|
270
|
-
|
|
271
271
|
exports.useRuntimeContext = useRuntimeContext;
|
|
@@ -8,7 +8,6 @@ var _exportNames = {
|
|
|
8
8
|
createRuntime: true,
|
|
9
9
|
runtime: true,
|
|
10
10
|
registerInit: true,
|
|
11
|
-
registerPrefetch: true,
|
|
12
11
|
defineConfig: true,
|
|
13
12
|
getConfig: true,
|
|
14
13
|
RuntimeReactContext: true,
|
|
@@ -56,25 +55,15 @@ Object.defineProperty(exports, "registerInit", {
|
|
|
56
55
|
return _plugin.registerInit;
|
|
57
56
|
}
|
|
58
57
|
});
|
|
59
|
-
Object.defineProperty(exports, "registerPrefetch", {
|
|
60
|
-
enumerable: true,
|
|
61
|
-
get: function () {
|
|
62
|
-
return _plugin.registerPrefetch;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
58
|
Object.defineProperty(exports, "runtime", {
|
|
66
59
|
enumerable: true,
|
|
67
60
|
get: function () {
|
|
68
61
|
return _plugin.runtime;
|
|
69
62
|
}
|
|
70
63
|
});
|
|
71
|
-
|
|
72
64
|
var _plugin = require("./plugin");
|
|
73
|
-
|
|
74
65
|
var _appConfig = require("./app-config");
|
|
75
|
-
|
|
76
66
|
var _compatible = require("./compatible");
|
|
77
|
-
|
|
78
67
|
Object.keys(_compatible).forEach(function (key) {
|
|
79
68
|
if (key === "default" || key === "__esModule") return;
|
|
80
69
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -86,11 +75,8 @@ Object.keys(_compatible).forEach(function (key) {
|
|
|
86
75
|
}
|
|
87
76
|
});
|
|
88
77
|
});
|
|
89
|
-
|
|
90
78
|
var _runtimeContext = require("../runtime-context");
|
|
91
|
-
|
|
92
79
|
var _loader = require("./loader");
|
|
93
|
-
|
|
94
80
|
Object.keys(_loader).forEach(function (key) {
|
|
95
81
|
if (key === "default" || key === "__esModule") return;
|
|
96
82
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -102,9 +88,7 @@ Object.keys(_loader).forEach(function (key) {
|
|
|
102
88
|
}
|
|
103
89
|
});
|
|
104
90
|
});
|
|
105
|
-
|
|
106
91
|
var _plugin2 = require("@modern-js/plugin");
|
|
107
|
-
|
|
108
92
|
Object.keys(_plugin2).forEach(function (key) {
|
|
109
93
|
if (key === "default" || key === "__esModule") return;
|
|
110
94
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createLoaderManager = exports.LoaderStatus = void 0;
|
|
7
|
-
|
|
8
7
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
/**
|
|
13
10
|
* Calc id from string or object
|
|
14
11
|
*/
|
|
@@ -16,29 +13,25 @@ const createGetId = () => {
|
|
|
16
13
|
const idCache = new Map();
|
|
17
14
|
return objectId => {
|
|
18
15
|
const cachedId = idCache.get(objectId);
|
|
19
|
-
|
|
20
16
|
if (cachedId) {
|
|
21
17
|
return cachedId;
|
|
22
|
-
}
|
|
23
|
-
|
|
18
|
+
}
|
|
24
19
|
|
|
20
|
+
// WARNING: id should be unique after serialize.
|
|
25
21
|
const id = JSON.stringify(objectId);
|
|
26
22
|
(0, _invariant.default)(id, 'params should be not null value');
|
|
27
23
|
idCache.set(objectId, id);
|
|
28
24
|
return id;
|
|
29
25
|
};
|
|
30
26
|
};
|
|
31
|
-
|
|
32
27
|
let LoaderStatus;
|
|
33
28
|
exports.LoaderStatus = LoaderStatus;
|
|
34
|
-
|
|
35
29
|
(function (LoaderStatus) {
|
|
36
30
|
LoaderStatus[LoaderStatus["idle"] = 0] = "idle";
|
|
37
31
|
LoaderStatus[LoaderStatus["loading"] = 1] = "loading";
|
|
38
32
|
LoaderStatus[LoaderStatus["fulfilled"] = 2] = "fulfilled";
|
|
39
33
|
LoaderStatus[LoaderStatus["rejected"] = 3] = "rejected";
|
|
40
34
|
})(LoaderStatus || (exports.LoaderStatus = LoaderStatus = {}));
|
|
41
|
-
|
|
42
35
|
const createLoader = (id, initialData = {
|
|
43
36
|
loading: false,
|
|
44
37
|
reloading: false,
|
|
@@ -53,16 +46,13 @@ const createLoader = (id, initialData = {
|
|
|
53
46
|
} = initialData;
|
|
54
47
|
let hasLoaded = false;
|
|
55
48
|
const handlers = new Set();
|
|
56
|
-
|
|
57
49
|
const load = async () => {
|
|
58
50
|
if (skip) {
|
|
59
51
|
return promise;
|
|
60
52
|
}
|
|
61
|
-
|
|
62
53
|
if (status === LoaderStatus.loading) {
|
|
63
54
|
return promise;
|
|
64
55
|
}
|
|
65
|
-
|
|
66
56
|
status = LoaderStatus.loading;
|
|
67
57
|
notify();
|
|
68
58
|
promise = loaderFn().then(value => {
|
|
@@ -80,7 +70,6 @@ const createLoader = (id, initialData = {
|
|
|
80
70
|
});
|
|
81
71
|
return promise;
|
|
82
72
|
};
|
|
83
|
-
|
|
84
73
|
const getResult = () => ({
|
|
85
74
|
loading: !hasLoaded && status === LoaderStatus.loading,
|
|
86
75
|
reloading: hasLoaded && status === LoaderStatus.loading,
|
|
@@ -89,35 +78,29 @@ const createLoader = (id, initialData = {
|
|
|
89
78
|
// redundant fields for ssr log
|
|
90
79
|
_error: error
|
|
91
80
|
});
|
|
92
|
-
|
|
93
81
|
const notify = () => {
|
|
94
82
|
// don't iterate handlers directly, since it could be modified during iteration
|
|
95
83
|
[...handlers].forEach(handler => {
|
|
96
84
|
handler(status, getResult());
|
|
97
85
|
});
|
|
98
86
|
};
|
|
99
|
-
|
|
100
87
|
const onChange = handler => {
|
|
101
88
|
handlers.add(handler);
|
|
102
89
|
return () => {
|
|
103
90
|
handlers.delete(handler);
|
|
104
91
|
};
|
|
105
92
|
};
|
|
106
|
-
|
|
107
93
|
return {
|
|
108
94
|
get result() {
|
|
109
95
|
return getResult();
|
|
110
96
|
},
|
|
111
|
-
|
|
112
97
|
get promise() {
|
|
113
98
|
return promise;
|
|
114
99
|
},
|
|
115
|
-
|
|
116
100
|
onChange,
|
|
117
101
|
load
|
|
118
102
|
};
|
|
119
103
|
};
|
|
120
|
-
|
|
121
104
|
/**
|
|
122
105
|
* Create loaders manager. It's returned instance will add to context
|
|
123
106
|
* @param initialDataMap used to initialing loader data
|
|
@@ -129,67 +112,60 @@ const createLoaderManager = (initialDataMap, managerOptions = {}) => {
|
|
|
129
112
|
} = managerOptions;
|
|
130
113
|
const loadersMap = new Map();
|
|
131
114
|
const getId = createGetId();
|
|
132
|
-
|
|
133
115
|
const add = (loaderFn, loaderOptions) => {
|
|
134
116
|
const id = getId(loaderOptions.params);
|
|
135
|
-
let loader = loadersMap.get(id);
|
|
117
|
+
let loader = loadersMap.get(id);
|
|
136
118
|
|
|
119
|
+
// private property for opting out loader cache, maybe change in future
|
|
137
120
|
const cache = loaderOptions._cache;
|
|
138
|
-
|
|
139
121
|
if (!loader || cache === false) {
|
|
140
122
|
// ignore non-static loader on static phase
|
|
141
|
-
const ignoreNonStatic = skipNonStatic && !loaderOptions.static;
|
|
123
|
+
const ignoreNonStatic = skipNonStatic && !loaderOptions.static;
|
|
142
124
|
|
|
125
|
+
// ignore static loader on non-static phase
|
|
143
126
|
const ignoreStatic = skipStatic && loaderOptions.static;
|
|
144
127
|
const skipExec = ignoreNonStatic || ignoreStatic;
|
|
145
128
|
loader = createLoader(id, typeof initialDataMap[id] !== 'undefined' ? initialDataMap[id] : {
|
|
146
129
|
data: loaderOptions.initialData
|
|
147
|
-
}, loaderFn,
|
|
130
|
+
}, loaderFn,
|
|
131
|
+
// Todo whether static loader is exec when CSR
|
|
148
132
|
skipExec);
|
|
149
133
|
loadersMap.set(id, loader);
|
|
150
134
|
}
|
|
151
|
-
|
|
152
135
|
return id;
|
|
153
136
|
};
|
|
137
|
+
const get = id => loadersMap.get(id);
|
|
154
138
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
// check if there has pending loaders
|
|
158
140
|
const hasPendingLoaders = () => {
|
|
159
141
|
for (const loader of loadersMap.values()) {
|
|
160
142
|
const {
|
|
161
143
|
promise
|
|
162
144
|
} = loader;
|
|
163
|
-
|
|
164
145
|
if (promise instanceof Promise) {
|
|
165
146
|
return true;
|
|
166
147
|
}
|
|
167
148
|
}
|
|
168
|
-
|
|
169
149
|
return false;
|
|
170
|
-
};
|
|
171
|
-
|
|
150
|
+
};
|
|
172
151
|
|
|
152
|
+
// waiting for all pending loaders to be settled
|
|
173
153
|
const awaitPendingLoaders = async () => {
|
|
174
154
|
const pendingLoaders = [];
|
|
175
|
-
|
|
176
155
|
for (const [id, loader] of loadersMap) {
|
|
177
156
|
const {
|
|
178
157
|
promise
|
|
179
158
|
} = loader;
|
|
180
|
-
|
|
181
159
|
if (promise instanceof Promise) {
|
|
182
160
|
pendingLoaders.push([id, loader]);
|
|
183
161
|
}
|
|
184
162
|
}
|
|
185
|
-
|
|
186
163
|
await Promise.all(pendingLoaders.map(item => item[1].promise));
|
|
187
164
|
return pendingLoaders.reduce((res, [id, loader]) => {
|
|
188
165
|
res[id] = loader.result;
|
|
189
166
|
return res;
|
|
190
167
|
}, {});
|
|
191
168
|
};
|
|
192
|
-
|
|
193
169
|
return {
|
|
194
170
|
hasPendingLoaders,
|
|
195
171
|
awaitPendingLoaders,
|
|
@@ -197,5 +173,4 @@ const createLoaderManager = (initialDataMap, managerOptions = {}) => {
|
|
|
197
173
|
get
|
|
198
174
|
};
|
|
199
175
|
};
|
|
200
|
-
|
|
201
176
|
exports.createLoaderManager = createLoaderManager;
|
|
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
11
|
-
|
|
12
9
|
var _runtimeContext = require("../../runtime-context");
|
|
13
|
-
|
|
14
10
|
var _loaderManager = require("./loaderManager");
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
12
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
-
|
|
20
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
|
-
|
|
22
14
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
|
-
|
|
24
15
|
const useLoader = (loaderFn, options = {
|
|
25
16
|
params: undefined
|
|
26
17
|
}) => {
|
|
@@ -30,29 +21,24 @@ const useLoader = (loaderFn, options = {
|
|
|
30
21
|
loaderManager
|
|
31
22
|
} = context;
|
|
32
23
|
const loaderRef = (0, _react.useRef)();
|
|
33
|
-
const unlistenLoaderChangeRef = (0, _react.useRef)(null);
|
|
24
|
+
const unlistenLoaderChangeRef = (0, _react.useRef)(null);
|
|
34
25
|
|
|
26
|
+
// SSR render should ignore `_cache` prop
|
|
35
27
|
if (isSSRRender && Object.prototype.hasOwnProperty.call(options, '_cache')) {
|
|
36
28
|
delete options._cache;
|
|
37
29
|
}
|
|
38
|
-
|
|
39
30
|
const load = (0, _react.useCallback)(params => {
|
|
40
31
|
var _unlistenLoaderChange, _window, _window$_SSR_DATA, _window$_SSR_DATA$dat, _window$_SSR_DATA$dat2, _loaderRef$current2;
|
|
41
|
-
|
|
42
32
|
if (typeof params === 'undefined') {
|
|
43
33
|
var _loaderRef$current;
|
|
44
|
-
|
|
45
34
|
return (_loaderRef$current = loaderRef.current) === null || _loaderRef$current === void 0 ? void 0 : _loaderRef$current.load();
|
|
46
35
|
}
|
|
47
|
-
|
|
48
36
|
const id = loaderManager.add(() => {
|
|
49
37
|
try {
|
|
50
38
|
const res = loaderFn(context, params);
|
|
51
|
-
|
|
52
39
|
if (res instanceof Promise) {
|
|
53
40
|
return res;
|
|
54
41
|
}
|
|
55
|
-
|
|
56
42
|
return Promise.resolve(res);
|
|
57
43
|
} catch (e) {
|
|
58
44
|
return Promise.reject(e);
|
|
@@ -60,37 +46,31 @@ const useLoader = (loaderFn, options = {
|
|
|
60
46
|
}, _objectSpread(_objectSpread({}, options), {}, {
|
|
61
47
|
params
|
|
62
48
|
}));
|
|
63
|
-
loaderRef.current = loaderManager.get(id);
|
|
64
|
-
|
|
49
|
+
loaderRef.current = loaderManager.get(id);
|
|
50
|
+
// unsubscribe old loader onChange event
|
|
65
51
|
(_unlistenLoaderChange = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange === void 0 ? void 0 : _unlistenLoaderChange.call(unlistenLoaderChangeRef);
|
|
66
|
-
|
|
67
52
|
if (isSSRRender) {
|
|
68
53
|
return undefined;
|
|
69
|
-
}
|
|
70
|
-
|
|
54
|
+
}
|
|
71
55
|
|
|
56
|
+
// skip this loader, then try to unlisten loader change
|
|
72
57
|
if (options.skip) {
|
|
73
58
|
return undefined;
|
|
74
|
-
}
|
|
75
|
-
|
|
59
|
+
}
|
|
76
60
|
|
|
61
|
+
// do not load data again in CSR hydrate stage if SSR data exists
|
|
77
62
|
if (context._hydration && ((_window = window) === null || _window === void 0 ? void 0 : (_window$_SSR_DATA = _window._SSR_DATA) === null || _window$_SSR_DATA === void 0 ? void 0 : (_window$_SSR_DATA$dat = _window$_SSR_DATA.data) === null || _window$_SSR_DATA$dat === void 0 ? void 0 : (_window$_SSR_DATA$dat2 = _window$_SSR_DATA$dat.loadersData[id]) === null || _window$_SSR_DATA$dat2 === void 0 ? void 0 : _window$_SSR_DATA$dat2.error) === null) {
|
|
78
63
|
return undefined;
|
|
79
64
|
}
|
|
80
|
-
|
|
81
65
|
const res = loaderRef.current.load();
|
|
82
66
|
unlistenLoaderChangeRef.current = (_loaderRef$current2 = loaderRef.current) === null || _loaderRef$current2 === void 0 ? void 0 : _loaderRef$current2.onChange((_status, _result) => {
|
|
83
67
|
setResult(_result);
|
|
84
|
-
|
|
85
68
|
if (_status === _loaderManager.LoaderStatus.fulfilled) {
|
|
86
69
|
var _options$onSuccess;
|
|
87
|
-
|
|
88
70
|
options === null || options === void 0 ? void 0 : (_options$onSuccess = options.onSuccess) === null || _options$onSuccess === void 0 ? void 0 : _options$onSuccess.call(options, _result.data);
|
|
89
71
|
}
|
|
90
|
-
|
|
91
72
|
if (_status === _loaderManager.LoaderStatus.rejected) {
|
|
92
73
|
var _options$onError;
|
|
93
|
-
|
|
94
74
|
options === null || options === void 0 ? void 0 : (_options$onError = options.onError) === null || _options$onError === void 0 ? void 0 : _options$onError.call(options, _result.error);
|
|
95
75
|
}
|
|
96
76
|
});
|
|
@@ -98,12 +78,10 @@ const useLoader = (loaderFn, options = {
|
|
|
98
78
|
}, [options.skip]);
|
|
99
79
|
(0, _react.useEffect)(() => () => {
|
|
100
80
|
var _unlistenLoaderChange2;
|
|
101
|
-
|
|
102
81
|
(_unlistenLoaderChange2 = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange2 === void 0 ? void 0 : _unlistenLoaderChange2.call(unlistenLoaderChangeRef);
|
|
103
82
|
}, []);
|
|
104
83
|
(0, _react.useMemo)(() => {
|
|
105
84
|
var _options$params;
|
|
106
|
-
|
|
107
85
|
const p = (_options$params = options.params) !== null && _options$params !== void 0 ? _options$params : loaderFn.id;
|
|
108
86
|
(0, _invariant.default)(typeof p !== 'undefined' && p !== null, 'Params is required in useLoader');
|
|
109
87
|
load(p);
|
|
@@ -113,6 +91,5 @@ const useLoader = (loaderFn, options = {
|
|
|
113
91
|
reload: load
|
|
114
92
|
});
|
|
115
93
|
};
|
|
116
|
-
|
|
117
94
|
var _default = useLoader;
|
|
118
95
|
exports.default = _default;
|