@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.
Files changed (156) hide show
  1. package/CHANGELOG.md +77 -19
  2. package/dist/js/modern/cli/index.js +4 -4
  3. package/dist/js/modern/common.js +1 -0
  4. package/dist/js/modern/exports/model.js +2 -1
  5. package/dist/js/modern/exports/router.js +2 -1
  6. package/dist/js/modern/exports/server.js +0 -1
  7. package/dist/js/modern/exports/ssr.js +2 -1
  8. package/dist/js/modern/router/cli/index.js +106 -0
  9. package/dist/js/modern/router/index.js +2 -0
  10. package/dist/js/modern/router/runtime/DefaultNotFound.js +13 -0
  11. package/dist/js/modern/router/runtime/index.js +4 -0
  12. package/dist/js/modern/router/runtime/plugin.js +88 -0
  13. package/dist/js/modern/router/runtime/utils.js +108 -0
  14. package/dist/js/modern/ssr/cli/index.js +120 -0
  15. package/dist/js/modern/ssr/index.js +109 -0
  16. package/dist/js/modern/ssr/index.node.js +78 -0
  17. package/dist/js/modern/ssr/prefetch.js +58 -0
  18. package/dist/js/modern/ssr/react/index.js +2 -0
  19. package/dist/js/modern/ssr/react/nossr/index.js +13 -0
  20. package/dist/js/modern/ssr/react/prerender/index.js +104 -0
  21. package/dist/js/modern/ssr/react/prerender/type.js +0 -0
  22. package/dist/js/modern/ssr/react/prerender/util.js +99 -0
  23. package/dist/js/modern/ssr/serverRender/entry.js +179 -0
  24. package/dist/js/modern/ssr/serverRender/helmet.js +46 -0
  25. package/dist/js/modern/ssr/serverRender/index.js +29 -0
  26. package/dist/js/modern/ssr/serverRender/loadable.js +48 -0
  27. package/dist/js/modern/ssr/serverRender/measure.js +11 -0
  28. package/dist/js/modern/ssr/serverRender/reduce.js +7 -0
  29. package/dist/js/modern/ssr/serverRender/styledComponent.js +8 -0
  30. package/dist/js/modern/ssr/serverRender/template.js +90 -0
  31. package/dist/js/modern/ssr/serverRender/type.js +8 -0
  32. package/dist/js/modern/ssr/utils.js +51 -0
  33. package/dist/js/modern/state/cli/index.js +110 -0
  34. package/dist/js/modern/state/index.js +2 -0
  35. package/dist/js/modern/state/plugins.js +7 -0
  36. package/dist/js/modern/state/runtime/index.js +4 -0
  37. package/dist/js/modern/state/runtime/plugin.js +71 -0
  38. package/dist/js/modern/state/types.js +1 -0
  39. package/dist/js/node/cli/index.js +5 -5
  40. package/dist/js/node/common.js +10 -0
  41. package/dist/js/node/exports/model.js +19 -5
  42. package/dist/js/node/exports/router.js +19 -5
  43. package/dist/js/node/exports/server.js +0 -17
  44. package/dist/js/node/exports/ssr.js +19 -5
  45. package/dist/js/node/router/cli/index.js +122 -0
  46. package/dist/js/node/router/index.js +30 -0
  47. package/dist/js/node/router/runtime/DefaultNotFound.js +26 -0
  48. package/dist/js/node/router/runtime/index.js +39 -0
  49. package/dist/js/node/router/runtime/plugin.js +111 -0
  50. package/dist/js/node/router/runtime/utils.js +128 -0
  51. package/dist/js/node/ssr/cli/index.js +136 -0
  52. package/dist/js/node/ssr/index.js +138 -0
  53. package/dist/js/node/ssr/index.node.js +105 -0
  54. package/dist/js/node/ssr/prefetch.js +75 -0
  55. package/dist/js/node/ssr/react/index.js +21 -0
  56. package/dist/js/node/ssr/react/nossr/index.js +28 -0
  57. package/dist/js/node/ssr/react/prerender/index.js +121 -0
  58. package/dist/js/node/ssr/react/prerender/type.js +0 -0
  59. package/dist/js/node/ssr/react/prerender/util.js +119 -0
  60. package/dist/js/node/ssr/serverRender/entry.js +208 -0
  61. package/dist/js/node/ssr/serverRender/helmet.js +52 -0
  62. package/dist/js/node/ssr/serverRender/index.js +46 -0
  63. package/dist/js/node/ssr/serverRender/loadable.js +60 -0
  64. package/dist/js/node/ssr/serverRender/measure.js +20 -0
  65. package/dist/js/node/ssr/serverRender/reduce.js +14 -0
  66. package/dist/js/node/ssr/serverRender/styledComponent.js +18 -0
  67. package/dist/js/node/ssr/serverRender/template.js +103 -0
  68. package/dist/js/node/ssr/serverRender/type.js +15 -0
  69. package/dist/js/node/ssr/utils.js +65 -0
  70. package/dist/js/node/state/cli/index.js +127 -0
  71. package/dist/js/node/state/index.js +30 -0
  72. package/dist/js/node/state/plugins.js +35 -0
  73. package/dist/js/node/state/runtime/index.js +61 -0
  74. package/dist/js/node/state/runtime/plugin.js +101 -0
  75. package/dist/js/node/state/types.js +5 -0
  76. package/dist/js/treeshaking/cli/index.js +4 -4
  77. package/dist/js/treeshaking/common.js +3 -0
  78. package/dist/js/treeshaking/exports/model.js +2 -1
  79. package/dist/js/treeshaking/exports/router.js +2 -1
  80. package/dist/js/treeshaking/exports/server.js +0 -1
  81. package/dist/js/treeshaking/exports/ssr.js +2 -1
  82. package/dist/js/treeshaking/router/cli/index.js +100 -0
  83. package/dist/js/treeshaking/router/index.js +2 -0
  84. package/dist/js/treeshaking/router/runtime/DefaultNotFound.js +15 -0
  85. package/dist/js/treeshaking/router/runtime/index.js +4 -0
  86. package/dist/js/treeshaking/router/runtime/plugin.js +89 -0
  87. package/dist/js/treeshaking/router/runtime/utils.js +106 -0
  88. package/dist/js/treeshaking/ssr/cli/index.js +113 -0
  89. package/dist/js/treeshaking/ssr/index.js +129 -0
  90. package/dist/js/treeshaking/ssr/index.node.js +100 -0
  91. package/dist/js/treeshaking/ssr/prefetch.js +97 -0
  92. package/dist/js/treeshaking/ssr/react/index.js +2 -0
  93. package/dist/js/treeshaking/ssr/react/nossr/index.js +16 -0
  94. package/dist/js/treeshaking/ssr/react/prerender/index.js +119 -0
  95. package/dist/js/treeshaking/ssr/react/prerender/type.js +0 -0
  96. package/dist/js/treeshaking/ssr/react/prerender/util.js +115 -0
  97. package/dist/js/treeshaking/ssr/serverRender/entry.js +267 -0
  98. package/dist/js/treeshaking/ssr/serverRender/helmet.js +37 -0
  99. package/dist/js/treeshaking/ssr/serverRender/index.js +69 -0
  100. package/dist/js/treeshaking/ssr/serverRender/loadable.js +59 -0
  101. package/dist/js/treeshaking/ssr/serverRender/measure.js +17 -0
  102. package/dist/js/treeshaking/ssr/serverRender/reduce.js +11 -0
  103. package/dist/js/treeshaking/ssr/serverRender/styledComponent.js +8 -0
  104. package/dist/js/treeshaking/ssr/serverRender/template.js +111 -0
  105. package/dist/js/treeshaking/ssr/serverRender/type.js +8 -0
  106. package/dist/js/treeshaking/ssr/utils.js +53 -0
  107. package/dist/js/treeshaking/state/cli/index.js +100 -0
  108. package/dist/js/treeshaking/state/index.js +2 -0
  109. package/dist/js/treeshaking/state/plugins.js +13 -0
  110. package/dist/js/treeshaking/state/runtime/index.js +4 -0
  111. package/dist/js/treeshaking/state/runtime/plugin.js +63 -0
  112. package/dist/js/treeshaking/state/types.js +1 -0
  113. package/dist/types/common.d.ts +1 -0
  114. package/dist/types/exports/model.d.ts +2 -1
  115. package/dist/types/exports/router.d.ts +2 -1
  116. package/dist/types/exports/server.d.ts +0 -1
  117. package/dist/types/exports/ssr.d.ts +2 -1
  118. package/dist/types/index.d.ts +8 -2
  119. package/dist/types/router/cli/index.d.ts +5 -0
  120. package/dist/types/router/index.d.ts +2 -0
  121. package/dist/types/router/runtime/DefaultNotFound.d.ts +2 -0
  122. package/dist/types/router/runtime/index.d.ts +6 -0
  123. package/dist/types/router/runtime/plugin.d.ts +51 -0
  124. package/dist/types/router/runtime/utils.d.ts +6 -0
  125. package/dist/types/ssr/cli/index.d.ts +5 -0
  126. package/dist/types/ssr/index.d.ts +18 -0
  127. package/dist/types/ssr/index.node.d.ts +4 -0
  128. package/dist/types/ssr/prefetch.d.ts +13 -0
  129. package/dist/types/ssr/react/index.d.ts +2 -0
  130. package/dist/types/ssr/react/nossr/index.d.ts +2 -0
  131. package/dist/types/ssr/react/prerender/index.d.ts +1 -0
  132. package/dist/types/ssr/react/prerender/type.d.ts +29 -0
  133. package/dist/types/ssr/react/prerender/util.d.ts +6 -0
  134. package/dist/types/ssr/serverRender/entry.d.ts +20 -0
  135. package/dist/types/ssr/serverRender/helmet.d.ts +2 -0
  136. package/dist/types/ssr/serverRender/index.d.ts +8 -0
  137. package/dist/types/ssr/serverRender/loadable.d.ts +2 -0
  138. package/dist/types/ssr/serverRender/measure.d.ts +1 -0
  139. package/dist/types/ssr/serverRender/reduce.d.ts +3 -0
  140. package/dist/types/ssr/serverRender/styledComponent.d.ts +2 -0
  141. package/dist/types/ssr/serverRender/template.d.ts +14 -0
  142. package/dist/types/ssr/serverRender/type.d.ts +32 -0
  143. package/dist/types/ssr/utils.d.ts +8 -0
  144. package/dist/types/state/cli/index.d.ts +5 -0
  145. package/dist/types/state/index.d.ts +2 -0
  146. package/dist/types/state/plugins.d.ts +4 -0
  147. package/dist/types/state/runtime/index.d.ts +4 -0
  148. package/dist/types/state/runtime/plugin.d.ts +17 -0
  149. package/dist/types/state/types.d.ts +17 -0
  150. package/package.json +37 -20
  151. package/types/model.d.ts +1 -1
  152. package/types/state.d.ts +4 -0
  153. package/dist/js/modern/exports/request.js +0 -1
  154. package/dist/js/node/exports/request.js +0 -13
  155. package/dist/js/treeshaking/exports/request.js +0 -1
  156. 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
+ }