@modern-js/runtime 1.4.3 → 1.15.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.
Files changed (83) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/js/modern/cli/index.js +1 -3
  3. package/dist/js/modern/core/app-config.js +10 -0
  4. package/dist/js/modern/core/compatible.js +218 -0
  5. package/dist/js/modern/core/index.js +7 -0
  6. package/dist/js/modern/core/loader/index.js +1 -0
  7. package/dist/js/modern/core/loader/loaderManager.js +189 -0
  8. package/dist/js/modern/core/loader/useLoader.js +105 -0
  9. package/dist/js/modern/core/plugin.js +63 -0
  10. package/dist/js/modern/core/runtime-context.js +2 -0
  11. package/dist/js/modern/exports/styled.js +2 -2
  12. package/dist/js/modern/index.js +1 -1
  13. package/dist/js/modern/router/runtime/plugin.js +1 -1
  14. package/dist/js/modern/router/runtime/utils.js +3 -1
  15. package/dist/js/modern/ssr/index.js +4 -0
  16. package/dist/js/modern/ssr/index.node.js +1 -1
  17. package/dist/js/modern/ssr/prefetch.js +2 -2
  18. package/dist/js/modern/ssr/serverRender/index.js +1 -1
  19. package/dist/js/modern/ssr/serverRender/styledComponent.js +1 -1
  20. package/dist/js/modern/ssr/utils.js +9 -3
  21. package/dist/js/modern/state/cli/index.js +1 -1
  22. package/dist/js/modern/state/runtime/plugin.js +1 -1
  23. package/dist/js/node/cli/index.js +1 -3
  24. package/dist/js/node/core/app-config.js +22 -0
  25. package/dist/js/node/core/compatible.js +247 -0
  26. package/dist/js/node/core/index.js +111 -0
  27. package/dist/js/node/core/loader/index.js +15 -0
  28. package/dist/js/node/core/loader/loaderManager.js +201 -0
  29. package/dist/js/node/core/loader/useLoader.js +118 -0
  30. package/dist/js/node/core/plugin.js +79 -0
  31. package/dist/js/node/core/runtime-context.js +11 -0
  32. package/dist/js/node/exports/styled.js +5 -5
  33. package/dist/js/node/index.js +10 -10
  34. package/dist/js/node/router/runtime/plugin.js +3 -3
  35. package/dist/js/node/router/runtime/utils.js +3 -1
  36. package/dist/js/node/ssr/index.js +4 -0
  37. package/dist/js/node/ssr/index.node.js +2 -2
  38. package/dist/js/node/ssr/serverRender/index.js +2 -2
  39. package/dist/js/node/ssr/serverRender/styledComponent.js +2 -2
  40. package/dist/js/node/ssr/utils.js +9 -3
  41. package/dist/js/node/state/cli/index.js +1 -1
  42. package/dist/js/node/state/runtime/plugin.js +3 -3
  43. package/dist/js/treeshaking/cli/index.js +1 -3
  44. package/dist/js/treeshaking/core/app-config.js +13 -0
  45. package/dist/js/treeshaking/core/compatible.js +255 -0
  46. package/dist/js/treeshaking/core/index.js +7 -0
  47. package/dist/js/treeshaking/core/loader/index.js +1 -0
  48. package/dist/js/treeshaking/core/loader/loaderManager.js +267 -0
  49. package/dist/js/treeshaking/core/loader/useLoader.js +107 -0
  50. package/dist/js/treeshaking/core/plugin.js +105 -0
  51. package/dist/js/treeshaking/core/runtime-context.js +2 -0
  52. package/dist/js/treeshaking/exports/styled.js +2 -2
  53. package/dist/js/treeshaking/index.js +1 -1
  54. package/dist/js/treeshaking/router/runtime/plugin.js +1 -1
  55. package/dist/js/treeshaking/router/runtime/utils.js +3 -1
  56. package/dist/js/treeshaking/ssr/index.js +4 -0
  57. package/dist/js/treeshaking/ssr/index.node.js +1 -1
  58. package/dist/js/treeshaking/ssr/prefetch.js +2 -2
  59. package/dist/js/treeshaking/ssr/serverRender/index.js +1 -1
  60. package/dist/js/treeshaking/ssr/serverRender/styledComponent.js +1 -1
  61. package/dist/js/treeshaking/ssr/utils.js +8 -3
  62. package/dist/js/treeshaking/state/cli/index.js +1 -1
  63. package/dist/js/treeshaking/state/runtime/plugin.js +1 -1
  64. package/dist/types/core/app-config.d.ts +6 -0
  65. package/dist/types/core/compatible.d.ts +13 -0
  66. package/dist/types/core/index.d.ts +9 -0
  67. package/dist/types/core/loader/index.d.ts +2 -0
  68. package/dist/types/core/loader/loaderManager.d.ts +57 -0
  69. package/dist/types/core/loader/useLoader.d.ts +54 -0
  70. package/dist/types/core/plugin.d.ts +208 -0
  71. package/dist/types/core/runtime-context.d.ts +13 -0
  72. package/dist/types/exports/styled.d.ts +2 -2
  73. package/dist/types/index.d.ts +4 -9
  74. package/dist/types/router/runtime/plugin.d.ts +1 -1
  75. package/dist/types/ssr/index.d.ts +2 -2
  76. package/dist/types/ssr/index.node.d.ts +1 -1
  77. package/dist/types/ssr/prefetch.d.ts +2 -2
  78. package/dist/types/ssr/serverRender/entry.d.ts +1 -1
  79. package/dist/types/ssr/serverRender/index.d.ts +1 -1
  80. package/dist/types/ssr/serverRender/type.d.ts +1 -1
  81. package/dist/types/state/runtime/plugin.d.ts +2 -2
  82. package/lib/types.d.ts +10 -0
  83. package/package.json +36 -26
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createLoaderManager = exports.LoaderStatus = void 0;
7
+
8
+ var _invariant = _interopRequireDefault(require("invariant"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ /**
13
+ * Calc id from string or object
14
+ */
15
+ const createGetId = () => {
16
+ const idCache = new Map();
17
+ return objectId => {
18
+ const cachedId = idCache.get(objectId);
19
+
20
+ if (cachedId) {
21
+ return cachedId;
22
+ } // WARNING: id should be unique after serialize.
23
+
24
+
25
+ const id = JSON.stringify(objectId);
26
+ (0, _invariant.default)(id, 'params should be not null value');
27
+ idCache.set(objectId, id);
28
+ return id;
29
+ };
30
+ };
31
+
32
+ let LoaderStatus;
33
+ exports.LoaderStatus = LoaderStatus;
34
+
35
+ (function (LoaderStatus) {
36
+ LoaderStatus[LoaderStatus["idle"] = 0] = "idle";
37
+ LoaderStatus[LoaderStatus["loading"] = 1] = "loading";
38
+ LoaderStatus[LoaderStatus["fulfilled"] = 2] = "fulfilled";
39
+ LoaderStatus[LoaderStatus["rejected"] = 3] = "rejected";
40
+ })(LoaderStatus || (exports.LoaderStatus = LoaderStatus = {}));
41
+
42
+ const createLoader = (id, initialData = {
43
+ loading: false,
44
+ reloading: false,
45
+ data: undefined,
46
+ error: undefined
47
+ }, loaderFn, skip = false) => {
48
+ let promise;
49
+ let status = LoaderStatus.idle;
50
+ let {
51
+ data,
52
+ error
53
+ } = initialData;
54
+ let hasLoaded = false;
55
+ const handlers = new Set();
56
+
57
+ const load = async () => {
58
+ if (skip) {
59
+ return promise;
60
+ }
61
+
62
+ if (status === LoaderStatus.loading) {
63
+ return promise;
64
+ }
65
+
66
+ status = LoaderStatus.loading;
67
+ notify();
68
+ promise = loaderFn().then(value => {
69
+ data = value;
70
+ error = null;
71
+ status = LoaderStatus.fulfilled;
72
+ }).catch(e => {
73
+ error = e;
74
+ data = null;
75
+ status = LoaderStatus.rejected;
76
+ }).finally(() => {
77
+ promise = null;
78
+ hasLoaded = true;
79
+ notify();
80
+ });
81
+ return promise;
82
+ };
83
+
84
+ const getResult = () => ({
85
+ loading: !hasLoaded && status === LoaderStatus.loading,
86
+ reloading: hasLoaded && status === LoaderStatus.loading,
87
+ data,
88
+ error: error instanceof Error ? `${error.message}` : error,
89
+ // redundant fields for ssr log
90
+ _error: error
91
+ });
92
+
93
+ const notify = () => {
94
+ // don't iterate handlers directly, since it could be modified during iteration
95
+ [...handlers].forEach(handler => {
96
+ handler(status, getResult());
97
+ });
98
+ };
99
+
100
+ const onChange = handler => {
101
+ handlers.add(handler);
102
+ return () => {
103
+ handlers.delete(handler);
104
+ };
105
+ };
106
+
107
+ return {
108
+ get result() {
109
+ return getResult();
110
+ },
111
+
112
+ get promise() {
113
+ return promise;
114
+ },
115
+
116
+ onChange,
117
+ load
118
+ };
119
+ };
120
+
121
+ /**
122
+ * Create loaders manager. It's returned instance will add to context
123
+ * @param initialDataMap used to initialing loader data
124
+ */
125
+ const createLoaderManager = (initialDataMap, managerOptions = {}) => {
126
+ const {
127
+ skipStatic = false,
128
+ skipNonStatic = false
129
+ } = managerOptions;
130
+ const loadersMap = new Map();
131
+ const getId = createGetId();
132
+
133
+ const add = (loaderFn, loaderOptions) => {
134
+ const id = getId(loaderOptions.params);
135
+ let loader = loadersMap.get(id); // private property for opting out loader cache, maybe change in future
136
+
137
+ const cache = loaderOptions._cache;
138
+
139
+ if (!loader || cache === false) {
140
+ // ignore non-static loader on static phase
141
+ const ignoreNonStatic = skipNonStatic && !loaderOptions.static; // ignore static loader on non-static phase
142
+
143
+ const ignoreStatic = skipStatic && loaderOptions.static;
144
+ const skipExec = ignoreNonStatic || ignoreStatic;
145
+ loader = createLoader(id, typeof initialDataMap[id] !== 'undefined' ? initialDataMap[id] : {
146
+ data: loaderOptions.initialData
147
+ }, loaderFn, // Todo whether static loader is exec when CSR
148
+ skipExec);
149
+ loadersMap.set(id, loader);
150
+ }
151
+
152
+ return id;
153
+ };
154
+
155
+ const get = id => loadersMap.get(id); // check if there has pending loaders
156
+
157
+
158
+ const hasPendingLoaders = () => {
159
+ for (const loader of loadersMap.values()) {
160
+ const {
161
+ promise
162
+ } = loader;
163
+
164
+ if (promise instanceof Promise) {
165
+ return true;
166
+ }
167
+ }
168
+
169
+ return false;
170
+ }; // waiting for all pending loaders to be settled
171
+
172
+
173
+ const awaitPendingLoaders = async () => {
174
+ const pendingLoaders = [];
175
+
176
+ for (const [id, loader] of loadersMap) {
177
+ const {
178
+ promise
179
+ } = loader;
180
+
181
+ if (promise instanceof Promise) {
182
+ pendingLoaders.push([id, loader]);
183
+ }
184
+ }
185
+
186
+ await Promise.all(pendingLoaders.map(item => item[1].promise));
187
+ return pendingLoaders.reduce((res, [id, loader]) => {
188
+ res[id] = loader.result;
189
+ return res;
190
+ }, {});
191
+ };
192
+
193
+ return {
194
+ hasPendingLoaders,
195
+ awaitPendingLoaders,
196
+ add,
197
+ get
198
+ };
199
+ };
200
+
201
+ exports.createLoaderManager = createLoaderManager;
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _invariant = _interopRequireDefault(require("invariant"));
11
+
12
+ var _runtimeContext = require("../runtime-context");
13
+
14
+ var _loaderManager = require("./loaderManager");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ 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
+ 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
+ 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
+ const useLoader = (loaderFn, options = {
25
+ params: undefined
26
+ }) => {
27
+ const context = (0, _react.useContext)(_runtimeContext.RuntimeReactContext);
28
+ const isSSRRender = Boolean(context.ssr);
29
+ const {
30
+ loaderManager
31
+ } = context;
32
+ const loaderRef = (0, _react.useRef)();
33
+ const unlistenLoaderChangeRef = (0, _react.useRef)(null); // SSR render should ignore `_cache` prop
34
+
35
+ if (isSSRRender && Object.prototype.hasOwnProperty.call(options, '_cache')) {
36
+ delete options._cache;
37
+ }
38
+
39
+ const load = (0, _react.useCallback)(params => {
40
+ var _unlistenLoaderChange, _window, _window$_SSR_DATA, _window$_SSR_DATA$dat, _window$_SSR_DATA$dat2, _loaderRef$current2;
41
+
42
+ if (typeof params === 'undefined') {
43
+ var _loaderRef$current;
44
+
45
+ return (_loaderRef$current = loaderRef.current) === null || _loaderRef$current === void 0 ? void 0 : _loaderRef$current.load();
46
+ }
47
+
48
+ const id = loaderManager.add(() => {
49
+ try {
50
+ const res = loaderFn(context, params);
51
+
52
+ if (res instanceof Promise) {
53
+ return res;
54
+ }
55
+
56
+ return Promise.resolve(res);
57
+ } catch (e) {
58
+ return Promise.reject(e);
59
+ }
60
+ }, _objectSpread(_objectSpread({}, options), {}, {
61
+ params
62
+ }));
63
+ loaderRef.current = loaderManager.get(id); // unsubscribe old loader onChange event
64
+
65
+ (_unlistenLoaderChange = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange === void 0 ? void 0 : _unlistenLoaderChange.call(unlistenLoaderChangeRef);
66
+
67
+ if (isSSRRender) {
68
+ return undefined;
69
+ } // skip this loader, then try to unlisten loader change
70
+
71
+
72
+ if (options.skip) {
73
+ return undefined;
74
+ } // do not load data again in CSR hydrate stage if SSR data exists
75
+
76
+
77
+ 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
+ return undefined;
79
+ }
80
+
81
+ const res = loaderRef.current.load();
82
+ unlistenLoaderChangeRef.current = (_loaderRef$current2 = loaderRef.current) === null || _loaderRef$current2 === void 0 ? void 0 : _loaderRef$current2.onChange((_status, _result) => {
83
+ setResult(_result);
84
+
85
+ if (_status === _loaderManager.LoaderStatus.fulfilled) {
86
+ var _options$onSuccess;
87
+
88
+ 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
+ }
90
+
91
+ if (_status === _loaderManager.LoaderStatus.rejected) {
92
+ var _options$onError;
93
+
94
+ 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
+ }
96
+ });
97
+ return res;
98
+ }, [options.skip]);
99
+ (0, _react.useEffect)(() => () => {
100
+ var _unlistenLoaderChange2;
101
+
102
+ (_unlistenLoaderChange2 = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChange2 === void 0 ? void 0 : _unlistenLoaderChange2.call(unlistenLoaderChangeRef);
103
+ }, []);
104
+ (0, _react.useMemo)(() => {
105
+ var _options$params;
106
+
107
+ const p = (_options$params = options.params) !== null && _options$params !== void 0 ? _options$params : loaderFn.id;
108
+ (0, _invariant.default)(typeof p !== 'undefined' && p !== null, 'Params is required in useLoader');
109
+ load(p);
110
+ }, [options.params]);
111
+ const [result, setResult] = (0, _react.useState)(loaderRef.current.result);
112
+ return _objectSpread(_objectSpread({}, result), {}, {
113
+ reload: load
114
+ });
115
+ };
116
+
117
+ var _default = useLoader;
118
+ exports.default = _default;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.runtime = exports.registerPrefetch = exports.registerInit = exports.createRuntime = exports.createPlugin = void 0;
7
+
8
+ var _plugin = require("@modern-js/plugin");
9
+
10
+ var _loaderManager = require("./loader/loaderManager");
11
+
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; }
13
+
14
+ 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; }
15
+
16
+ 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; }
17
+
18
+ const hoc = (0, _plugin.createPipeline)(); // eslint-disable-next-line @typescript-eslint/no-empty-interface
19
+
20
+ const provide = (0, _plugin.createPipeline)();
21
+ const client = (0, _plugin.createAsyncPipeline)();
22
+ const server = (0, _plugin.createAsyncPipeline)();
23
+ const init = (0, _plugin.createAsyncPipeline)();
24
+ const pickContext = (0, _plugin.createPipeline)();
25
+ const runtimeHooks = {
26
+ hoc,
27
+ provide,
28
+ client,
29
+ server,
30
+ init,
31
+ pickContext
32
+ };
33
+ /** All hooks of runtime plugin. */
34
+
35
+ const createRuntime = () => (0, _plugin.createManager)(runtimeHooks);
36
+ /**
37
+ * register init hook. It would be revoked both ssr and csr.
38
+ */
39
+
40
+
41
+ exports.createRuntime = createRuntime;
42
+
43
+ const registerInit = (App, _init) => {
44
+ const originalInit = App.init;
45
+
46
+ App.init = async context => {
47
+ if (!context.loaderManager) {
48
+ context.loaderManager = (0, _loaderManager.createLoaderManager)({});
49
+ }
50
+
51
+ await Promise.all([originalInit === null || originalInit === void 0 ? void 0 : originalInit(context), _init === null || _init === void 0 ? void 0 : _init(context)]);
52
+ };
53
+ };
54
+ /**
55
+ * register prefetch hook. It would be revoked both ssr and csr.
56
+ * But if ssr success, It wont exec in csr again.
57
+ * If ssr prefetch failed, It will fallback to exec in csr.
58
+ */
59
+
60
+
61
+ exports.registerInit = registerInit;
62
+
63
+ const registerPrefetch = (App, prefetch) => {
64
+ const originalPrefetch = App.prefetch;
65
+
66
+ App.prefetch = async context => {
67
+ const originResult = await (originalPrefetch === null || originalPrefetch === void 0 ? void 0 : originalPrefetch(context));
68
+ const result = await (prefetch === null || prefetch === void 0 ? void 0 : prefetch(context));
69
+ return _objectSpread(_objectSpread({}, originResult), result);
70
+ };
71
+ };
72
+
73
+ exports.registerPrefetch = registerPrefetch;
74
+ const runtime = createRuntime();
75
+ exports.runtime = runtime;
76
+ const {
77
+ createPlugin
78
+ } = runtime;
79
+ exports.createPlugin = createPlugin;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RuntimeReactContext = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ const RuntimeReactContext = /*#__PURE__*/(0, _react.createContext)({});
11
+ exports.RuntimeReactContext = RuntimeReactContext;
@@ -6,16 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  var _exportNames = {};
7
7
  exports.default = void 0;
8
8
 
9
- var _styled = _interopRequireWildcard(require("@modern-js/runtime-core/styled"));
9
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
10
10
 
11
- Object.keys(_styled).forEach(function (key) {
11
+ Object.keys(_styledComponents).forEach(function (key) {
12
12
  if (key === "default" || key === "__esModule") return;
13
13
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
14
- if (key in exports && exports[key] === _styled[key]) return;
14
+ if (key in exports && exports[key] === _styledComponents[key]) return;
15
15
  Object.defineProperty(exports, key, {
16
16
  enumerable: true,
17
17
  get: function () {
18
- return _styled[key];
18
+ return _styledComponents[key];
19
19
  }
20
20
  });
21
21
  });
@@ -24,5 +24,5 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
24
24
 
25
25
  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; }
26
26
 
27
- var _default = _styled.default;
27
+ var _default = _styledComponents.default;
28
28
  exports.default = _default;
@@ -6,56 +6,56 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "RuntimeReactContext", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _runtimeCore.RuntimeReactContext;
9
+ return _core.RuntimeReactContext;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "bootstrap", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _runtimeCore.bootstrap;
15
+ return _core.bootstrap;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "createApp", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _runtimeCore.createApp;
21
+ return _core.createApp;
22
22
  }
23
23
  });
24
24
  Object.defineProperty(exports, "createPlugin", {
25
25
  enumerable: true,
26
26
  get: function () {
27
- return _runtimeCore.createPlugin;
27
+ return _core.createPlugin;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "defineConfig", {
31
31
  enumerable: true,
32
32
  get: function () {
33
- return _runtimeCore.defineConfig;
33
+ return _core.defineConfig;
34
34
  }
35
35
  });
36
36
  Object.defineProperty(exports, "registerInit", {
37
37
  enumerable: true,
38
38
  get: function () {
39
- return _runtimeCore.registerInit;
39
+ return _core.registerInit;
40
40
  }
41
41
  });
42
42
  Object.defineProperty(exports, "registerPrefetch", {
43
43
  enumerable: true,
44
44
  get: function () {
45
- return _runtimeCore.registerPrefetch;
45
+ return _core.registerPrefetch;
46
46
  }
47
47
  });
48
48
  Object.defineProperty(exports, "useLoader", {
49
49
  enumerable: true,
50
50
  get: function () {
51
- return _runtimeCore.useLoader;
51
+ return _core.useLoader;
52
52
  }
53
53
  });
54
54
  Object.defineProperty(exports, "useRuntimeContext", {
55
55
  enumerable: true,
56
56
  get: function () {
57
- return _runtimeCore.useRuntimeContext;
57
+ return _core.useRuntimeContext;
58
58
  }
59
59
  });
60
60
 
61
- var _runtimeCore = require("@modern-js/runtime-core");
61
+ var _core = require("./core");
@@ -11,10 +11,10 @@ var _history = require("history");
11
11
 
12
12
  var _reactRouterDom = require("react-router-dom");
13
13
 
14
- var _runtimeCore = require("@modern-js/runtime-core");
15
-
16
14
  var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
17
15
 
16
+ var _core = require("../../core");
17
+
18
18
  var _common = require("../../common");
19
19
 
20
20
  var _utils = require("./utils");
@@ -67,7 +67,7 @@ const routerPlugin = ({
67
67
  }
68
68
 
69
69
  return props => {
70
- const runtimeContext = (0, _react.useContext)(_runtimeCore.RuntimeReactContext);
70
+ const runtimeContext = (0, _react.useContext)(_core.RuntimeReactContext);
71
71
  const {
72
72
  ssrContext
73
73
  } = runtimeContext;
@@ -83,11 +83,13 @@ function renderRoutes(routesConfig, extraProps = {}) {
83
83
  }
84
84
 
85
85
  function getLocation(serverContext) {
86
+ var _url$replace;
87
+
86
88
  const {
87
89
  pathname,
88
90
  url
89
91
  } = (serverContext === null || serverContext === void 0 ? void 0 : serverContext.request) || {};
90
- const cleanUrl = url.replace('http://', '').replace('https://', '');
92
+ const cleanUrl = url === null || url === void 0 ? void 0 : (_url$replace = url.replace('http://', '')) === null || _url$replace === void 0 ? void 0 : _url$replace.replace('https://', '');
91
93
  const index = (cleanUrl || '').indexOf(pathname);
92
94
 
93
95
  if (index === -1) {
@@ -89,6 +89,10 @@ const ssr = () => ({
89
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
90
 
91
91
  if (!request) {
92
+ context.ssrContext = _objectSpread(_objectSpread({}, context.ssrContext), {}, {
93
+ response: mockResp,
94
+ request: (0, _utils.formatClient)({})
95
+ });
92
96
  return next({
93
97
  context
94
98
  });
@@ -8,7 +8,7 @@ exports.default = void 0;
8
8
 
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
 
11
- var _runtimeCore = require("@modern-js/runtime-core");
11
+ var _core = require("../core");
12
12
 
13
13
  var _common = require("../common");
14
14
 
@@ -49,7 +49,7 @@ const plugin = () => ({
49
49
  context
50
50
  }) => {
51
51
  if (!registeredApps.has(App)) {
52
- (0, _runtimeCore.registerPrefetch)(App, _context => (0, _prefetch.default)(App, _context));
52
+ (0, _core.registerPrefetch)(App, _context => (0, _prefetch.default)(App, _context));
53
53
  registeredApps.add(App);
54
54
  }
55
55
 
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.render = void 0;
7
7
 
8
- var _runtimeCore = require("@modern-js/runtime-core");
9
-
10
8
  var _ssr = require("@modern-js/utils/ssr");
11
9
 
10
+ var _core = require("../../core");
11
+
12
12
  var _prerender = require("../react/prerender");
13
13
 
14
14
  var _entry = _interopRequireDefault(require("./entry"));
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.toHtml = void 0;
7
7
 
8
- var _styled = require("@modern-js/runtime-core/styled");
8
+ var _styledComponents = require("styled-components");
9
9
 
10
10
  const toHtml = (jsx, renderer, next) => {
11
- const sheet = new _styled.ServerStyleSheet();
11
+ const sheet = new _styledComponents.ServerStyleSheet();
12
12
  const html = next(sheet.collectStyles(jsx));
13
13
  const css = sheet.getStyleTags();
14
14
  renderer.result.chunksMap.css += css;
@@ -28,19 +28,25 @@ exports.formatServer = formatServer;
28
28
 
29
29
  const getQuery = () => window.location.search.substring(1).split('&').reduce((res, item) => {
30
30
  const [key, value] = item.split('=');
31
- res[key] = value;
31
+
32
+ if (key) {
33
+ res[key] = value;
34
+ }
35
+
32
36
  return res;
33
37
  }, {});
34
38
 
35
39
  const formatClient = request => {
40
+ var _request$headers, _request$headers2;
41
+
36
42
  return {
37
43
  params: request.params || {},
38
44
  host: request.host || location.host,
39
45
  pathname: request.pathname || location.pathname,
40
46
  headers: request.headers || {},
41
47
  cookieMap: request.cookieMap || {},
42
- cookie: request.headers.cookie || document.cookie,
43
- userAgent: request.headers['user-agent'] || navigator.userAgent,
48
+ cookie: ((_request$headers = request.headers) === null || _request$headers === void 0 ? void 0 : _request$headers.cookie) || document.cookie,
49
+ userAgent: ((_request$headers2 = request.headers) === null || _request$headers2 === void 0 ? void 0 : _request$headers2['user-agent']) || navigator.userAgent,
44
50
  referer: request.referer || document.referrer,
45
51
  query: request.query || getQuery(),
46
52
  url: location.href
@@ -110,7 +110,7 @@ var _default = () => ({
110
110
  },
111
111
 
112
112
  addRuntimeExports() {
113
- pluginsExportsUtils.addExport(`export { default as state } from '@modern-js/runtime/-state'`);
113
+ pluginsExportsUtils.addExport(`export { default as state } from '@modern-js/runtime/runtime-state'`);
114
114
  }
115
115
 
116
116
  };
@@ -8,14 +8,14 @@ exports.default = void 0;
8
8
 
9
9
  var _react = require("react");
10
10
 
11
- var _runtimeCore = require("@modern-js/runtime-core");
12
-
13
11
  var _store = require("@modern-js-reduck/store");
14
12
 
15
13
  var _react2 = require("@modern-js-reduck/react");
16
14
 
17
15
  var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
18
16
 
17
+ var _core = require("../../core");
18
+
19
19
  var _common = require("../../common");
20
20
 
21
21
  var _jsxRuntime = require("react/jsx-runtime");
@@ -51,7 +51,7 @@ const state = config => ({
51
51
  }, next) {
52
52
  const getStateApp = props => {
53
53
  // eslint-disable-next-line react-hooks/rules-of-hooks
54
- const context = (0, _react.useContext)(_runtimeCore.RuntimeReactContext);
54
+ const context = (0, _react.useContext)(_core.RuntimeReactContext);
55
55
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react2.Provider, {
56
56
  store: context.store,
57
57
  config: config,
@@ -28,9 +28,7 @@ export default (function () {
28
28
  * But it will not be installed under the user project.
29
29
  * So need to add alias
30
30
  */
31
- 'styled-components': require.resolve('styled-components', {
32
- paths: [require.resolve('@modern-js/runtime-core')]
33
- })
31
+ 'styled-components': require.resolve('styled-components')
34
32
  }
35
33
  }
36
34
  };