@modern-js/runtime 2.31.2 → 2.31.3-alpha.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.
Files changed (241) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cjs/cli/index.js +2 -1
  3. package/dist/cjs/document/Style.js +2 -2
  4. package/dist/cjs/router/runtime/plugin.node.js +7 -1
  5. package/dist/esm/cli/index.js +2 -1
  6. package/dist/esm/document/Style.js +2 -2
  7. package/dist/esm/router/runtime/plugin.node.js +8 -2
  8. package/dist/esm-node/cli/index.js +2 -1
  9. package/dist/esm-node/document/Style.js +2 -2
  10. package/dist/esm-node/router/runtime/plugin.node.js +7 -1
  11. package/dist/js/modern/cli/index.js +72 -0
  12. package/dist/js/modern/common.js +4 -0
  13. package/dist/js/modern/config.js +0 -0
  14. package/dist/js/modern/core/app-config.js +10 -0
  15. package/dist/js/modern/core/compatible.js +285 -0
  16. package/dist/js/modern/core/index.js +16 -0
  17. package/dist/js/modern/core/loader/index.js +4 -0
  18. package/dist/js/modern/core/loader/loaderManager.js +165 -0
  19. package/dist/js/modern/core/loader/useLoader.js +114 -0
  20. package/dist/js/modern/core/plugin.js +58 -0
  21. package/dist/js/modern/document/Body.js +23 -0
  22. package/dist/js/modern/document/DocumentContext.js +9 -0
  23. package/dist/js/modern/document/DocumentStructrueContext.js +11 -0
  24. package/dist/js/modern/document/Head.js +27 -0
  25. package/dist/js/modern/document/Html.js +78 -0
  26. package/dist/js/modern/document/Links.js +10 -0
  27. package/dist/js/modern/document/Root.js +33 -0
  28. package/dist/js/modern/document/Script.js +20 -0
  29. package/dist/js/modern/document/Scripts.js +10 -0
  30. package/dist/js/modern/document/cli/index.js +228 -0
  31. package/dist/js/modern/document/constants.js +49 -0
  32. package/dist/js/modern/document/index.js +10 -0
  33. package/dist/js/modern/exports/head.js +6 -0
  34. package/dist/js/modern/exports/loadable.js +6 -0
  35. package/dist/js/modern/exports/server.js +4 -0
  36. package/dist/js/modern/exports/styled.js +6 -0
  37. package/dist/js/modern/index.js +22 -0
  38. package/dist/js/modern/router/cli/index.js +120 -0
  39. package/dist/js/modern/router/index.js +7 -0
  40. package/dist/js/modern/router/runtime/DefaultNotFound.js +14 -0
  41. package/dist/js/modern/router/runtime/index.js +9 -0
  42. package/dist/js/modern/router/runtime/plugin.js +104 -0
  43. package/dist/js/modern/router/runtime/plugin.node.js +149 -0
  44. package/dist/js/modern/router/runtime/server.js +1 -0
  45. package/dist/js/modern/router/runtime/types.js +0 -0
  46. package/dist/js/modern/router/runtime/utils.js +196 -0
  47. package/dist/js/modern/router/runtime/withRouter.js +36 -0
  48. package/dist/js/modern/runtime-context.js +7 -0
  49. package/dist/js/modern/ssr/cli/babel-plugin-ssr-loader-id.js +130 -0
  50. package/dist/js/modern/ssr/cli/index.js +172 -0
  51. package/dist/js/modern/ssr/index.js +159 -0
  52. package/dist/js/modern/ssr/index.node.js +79 -0
  53. package/dist/js/modern/ssr/prefetch.js +69 -0
  54. package/dist/js/modern/ssr/react/index.js +6 -0
  55. package/dist/js/modern/ssr/react/nossr/index.js +14 -0
  56. package/dist/js/modern/ssr/react/prerender/index.js +108 -0
  57. package/dist/js/modern/ssr/react/prerender/type.js +0 -0
  58. package/dist/js/modern/ssr/react/prerender/util.js +96 -0
  59. package/dist/js/modern/ssr/react/withCallback/index.js +15 -0
  60. package/dist/js/modern/ssr/serverRender/helmet.js +44 -0
  61. package/dist/js/modern/ssr/serverRender/index.js +35 -0
  62. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +36 -0
  63. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +11 -0
  64. package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +61 -0
  65. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +58 -0
  66. package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +24 -0
  67. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +94 -0
  68. package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +12 -0
  69. package/dist/js/modern/ssr/serverRender/renderToStream/template.js +22 -0
  70. package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
  71. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +171 -0
  72. package/dist/js/modern/ssr/serverRender/renderToString/index.js +52 -0
  73. package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +48 -0
  74. package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +8 -0
  75. package/dist/js/modern/ssr/serverRender/renderToString/styledComponent.js +11 -0
  76. package/dist/js/modern/ssr/serverRender/renderToString/template.js +58 -0
  77. package/dist/js/modern/ssr/serverRender/renderToString/type.js +9 -0
  78. package/dist/js/modern/ssr/serverRender/types.js +4 -0
  79. package/dist/js/modern/ssr/serverRender/utils.js +22 -0
  80. package/dist/js/modern/ssr/utils.js +81 -0
  81. package/dist/js/modern/state/cli/index.js +83 -0
  82. package/dist/js/modern/state/index.js +7 -0
  83. package/dist/js/modern/state/plugins.js +13 -0
  84. package/dist/js/modern/state/runtime/index.js +9 -0
  85. package/dist/js/modern/state/runtime/plugin.js +97 -0
  86. package/dist/js/modern/state/types.js +0 -0
  87. package/dist/js/node/cli/index.js +99 -0
  88. package/dist/js/node/common.js +27 -0
  89. package/dist/js/node/config.js +15 -0
  90. package/dist/js/node/core/app-config.js +34 -0
  91. package/dist/js/node/core/compatible.js +312 -0
  92. package/dist/js/node/core/index.js +47 -0
  93. package/dist/js/node/core/loader/index.js +33 -0
  94. package/dist/js/node/core/loader/loaderManager.js +195 -0
  95. package/dist/js/node/core/loader/useLoader.js +132 -0
  96. package/dist/js/node/core/plugin.js +80 -0
  97. package/dist/js/node/document/Body.js +43 -0
  98. package/dist/js/node/document/DocumentContext.js +38 -0
  99. package/dist/js/node/document/DocumentStructrueContext.js +40 -0
  100. package/dist/js/node/document/Head.js +51 -0
  101. package/dist/js/node/document/Html.js +101 -0
  102. package/dist/js/node/document/Links.js +33 -0
  103. package/dist/js/node/document/Root.js +57 -0
  104. package/dist/js/node/document/Script.js +40 -0
  105. package/dist/js/node/document/Scripts.js +33 -0
  106. package/dist/js/node/document/cli/index.js +240 -0
  107. package/dist/js/node/document/constants.js +86 -0
  108. package/dist/js/node/document/index.js +26 -0
  109. package/dist/js/node/exports/head.js +34 -0
  110. package/dist/js/node/exports/loadable.js +34 -0
  111. package/dist/js/node/exports/server.js +27 -0
  112. package/dist/js/node/exports/styled.js +34 -0
  113. package/dist/js/node/index.js +44 -0
  114. package/dist/js/node/router/cli/index.js +135 -0
  115. package/dist/js/node/router/index.js +37 -0
  116. package/dist/js/node/router/runtime/DefaultNotFound.js +37 -0
  117. package/dist/js/node/router/runtime/index.js +33 -0
  118. package/dist/js/node/router/runtime/plugin.js +127 -0
  119. package/dist/js/node/router/runtime/plugin.node.js +175 -0
  120. package/dist/js/node/router/runtime/server.js +17 -0
  121. package/dist/js/node/router/runtime/types.js +15 -0
  122. package/dist/js/node/router/runtime/utils.js +221 -0
  123. package/dist/js/node/router/runtime/withRouter.js +57 -0
  124. package/dist/js/node/runtime-context.js +31 -0
  125. package/dist/js/node/ssr/cli/babel-plugin-ssr-loader-id.js +139 -0
  126. package/dist/js/node/ssr/cli/index.js +190 -0
  127. package/dist/js/node/ssr/index.js +185 -0
  128. package/dist/js/node/ssr/index.node.js +107 -0
  129. package/dist/js/node/ssr/prefetch.js +90 -0
  130. package/dist/js/node/ssr/react/index.js +30 -0
  131. package/dist/js/node/ssr/react/nossr/index.js +43 -0
  132. package/dist/js/node/ssr/react/prerender/index.js +130 -0
  133. package/dist/js/node/ssr/react/prerender/type.js +15 -0
  134. package/dist/js/node/ssr/react/prerender/util.js +123 -0
  135. package/dist/js/node/ssr/react/withCallback/index.js +38 -0
  136. package/dist/js/node/ssr/serverRender/helmet.js +65 -0
  137. package/dist/js/node/ssr/serverRender/index.js +56 -0
  138. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +65 -0
  139. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +35 -0
  140. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +87 -0
  141. package/dist/js/node/ssr/serverRender/renderToStream/index.js +87 -0
  142. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +47 -0
  143. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +111 -0
  144. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +35 -0
  145. package/dist/js/node/ssr/serverRender/renderToStream/template.js +45 -0
  146. package/dist/js/node/ssr/serverRender/renderToStream/type.js +15 -0
  147. package/dist/js/node/ssr/serverRender/renderToString/entry.js +196 -0
  148. package/dist/js/node/ssr/serverRender/renderToString/index.js +81 -0
  149. package/dist/js/node/ssr/serverRender/renderToString/loadable.js +71 -0
  150. package/dist/js/node/ssr/serverRender/renderToString/reduce.js +31 -0
  151. package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +34 -0
  152. package/dist/js/node/ssr/serverRender/renderToString/template.js +82 -0
  153. package/dist/js/node/ssr/serverRender/renderToString/type.js +32 -0
  154. package/dist/js/node/ssr/serverRender/types.js +27 -0
  155. package/dist/js/node/ssr/serverRender/utils.js +46 -0
  156. package/dist/js/node/ssr/utils.js +106 -0
  157. package/dist/js/node/state/cli/index.js +100 -0
  158. package/dist/js/node/state/index.js +37 -0
  159. package/dist/js/node/state/plugins.js +45 -0
  160. package/dist/js/node/state/runtime/index.js +40 -0
  161. package/dist/js/node/state/runtime/plugin.js +121 -0
  162. package/dist/js/node/state/types.js +15 -0
  163. package/dist/js/treeshaking/cli/index.js +186 -0
  164. package/dist/js/treeshaking/common.js +4 -0
  165. package/dist/js/treeshaking/config.js +1 -0
  166. package/dist/js/treeshaking/core/app-config.js +9 -0
  167. package/dist/js/treeshaking/core/compatible.js +485 -0
  168. package/dist/js/treeshaking/core/index.js +7 -0
  169. package/dist/js/treeshaking/core/loader/index.js +2 -0
  170. package/dist/js/treeshaking/core/loader/loaderManager.js +406 -0
  171. package/dist/js/treeshaking/core/loader/useLoader.js +188 -0
  172. package/dist/js/treeshaking/core/plugin.js +176 -0
  173. package/dist/js/treeshaking/document/Body.js +18 -0
  174. package/dist/js/treeshaking/document/DocumentContext.js +7 -0
  175. package/dist/js/treeshaking/document/DocumentStructrueContext.js +9 -0
  176. package/dist/js/treeshaking/document/Head.js +24 -0
  177. package/dist/js/treeshaking/document/Html.js +99 -0
  178. package/dist/js/treeshaking/document/Links.js +8 -0
  179. package/dist/js/treeshaking/document/Root.js +26 -0
  180. package/dist/js/treeshaking/document/Script.js +15 -0
  181. package/dist/js/treeshaking/document/Scripts.js +8 -0
  182. package/dist/js/treeshaking/document/cli/index.js +393 -0
  183. package/dist/js/treeshaking/document/constants.js +35 -0
  184. package/dist/js/treeshaking/document/index.js +10 -0
  185. package/dist/js/treeshaking/exports/head.js +4 -0
  186. package/dist/js/treeshaking/exports/loadable.js +4 -0
  187. package/dist/js/treeshaking/exports/server.js +4 -0
  188. package/dist/js/treeshaking/exports/styled.js +4 -0
  189. package/dist/js/treeshaking/index.js +3 -0
  190. package/dist/js/treeshaking/router/cli/index.js +148 -0
  191. package/dist/js/treeshaking/router/index.js +4 -0
  192. package/dist/js/treeshaking/router/runtime/DefaultNotFound.js +14 -0
  193. package/dist/js/treeshaking/router/runtime/index.js +6 -0
  194. package/dist/js/treeshaking/router/runtime/plugin.js +132 -0
  195. package/dist/js/treeshaking/router/runtime/plugin.node.js +390 -0
  196. package/dist/js/treeshaking/router/runtime/server.js +1 -0
  197. package/dist/js/treeshaking/router/runtime/types.js +1 -0
  198. package/dist/js/treeshaking/router/runtime/utils.js +260 -0
  199. package/dist/js/treeshaking/router/runtime/withRouter.js +67 -0
  200. package/dist/js/treeshaking/runtime-context.js +4 -0
  201. package/dist/js/treeshaking/ssr/cli/babel-plugin-ssr-loader-id.js +122 -0
  202. package/dist/js/treeshaking/ssr/cli/index.js +217 -0
  203. package/dist/js/treeshaking/ssr/index.js +315 -0
  204. package/dist/js/treeshaking/ssr/index.node.js +240 -0
  205. package/dist/js/treeshaking/ssr/prefetch.js +199 -0
  206. package/dist/js/treeshaking/ssr/react/index.js +3 -0
  207. package/dist/js/treeshaking/ssr/react/nossr/index.js +58 -0
  208. package/dist/js/treeshaking/ssr/react/prerender/index.js +237 -0
  209. package/dist/js/treeshaking/ssr/react/prerender/type.js +1 -0
  210. package/dist/js/treeshaking/ssr/react/prerender/util.js +108 -0
  211. package/dist/js/treeshaking/ssr/react/withCallback/index.js +16 -0
  212. package/dist/js/treeshaking/ssr/serverRender/helmet.js +42 -0
  213. package/dist/js/treeshaking/ssr/serverRender/index.js +169 -0
  214. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +34 -0
  215. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
  216. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +115 -0
  217. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +165 -0
  218. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +22 -0
  219. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +119 -0
  220. package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +11 -0
  221. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +63 -0
  222. package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +1 -0
  223. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +393 -0
  224. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +165 -0
  225. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +56 -0
  226. package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +10 -0
  227. package/dist/js/treeshaking/ssr/serverRender/renderToString/styledComponent.js +9 -0
  228. package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +156 -0
  229. package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +7 -0
  230. package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
  231. package/dist/js/treeshaking/ssr/serverRender/utils.js +69 -0
  232. package/dist/js/treeshaking/ssr/utils.js +134 -0
  233. package/dist/js/treeshaking/state/cli/index.js +71 -0
  234. package/dist/js/treeshaking/state/index.js +4 -0
  235. package/dist/js/treeshaking/state/plugins.js +14 -0
  236. package/dist/js/treeshaking/state/runtime/index.js +5 -0
  237. package/dist/js/treeshaking/state/runtime/plugin.js +198 -0
  238. package/dist/js/treeshaking/state/types.js +1 -0
  239. package/dist/types/router/runtime/index.d.ts +2 -1
  240. package/dist/types/router/runtime/types.d.ts +12 -2
  241. package/package.json +19 -19
@@ -0,0 +1,159 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+ import { jsx } from "react/jsx-runtime";
41
+ import { loadableReady } from "@loadable/component";
42
+ import hoistNonReactStatics from "hoist-non-react-statics";
43
+ import {
44
+ RenderLevel
45
+ } from "./serverRender/types";
46
+ import { WithCallback } from "./react/withCallback";
47
+ import { formatClient, mockResponse, isReact18 } from "./utils";
48
+ const ssr = (config) => ({
49
+ name: "@modern-js/plugin-ssr",
50
+ setup: () => {
51
+ const mockResp = mockResponse();
52
+ return {
53
+ client: (_0) => __async(void 0, [_0], function* ({ App, context, ModernRender, ModernHydrate }) {
54
+ var _a;
55
+ const hydrateContext = __spreadProps(__spreadValues({}, context), {
56
+ _hydration: true
57
+ });
58
+ const callback = () => {
59
+ delete hydrateContext._hydration;
60
+ };
61
+ const renderLevel = ((_a = window == null ? void 0 : window._SSR_DATA) == null ? void 0 : _a.renderLevel) || RenderLevel.CLIENT_RENDER;
62
+ if (isReact18() && config.mode === "stream") {
63
+ return streamSSRHydrate();
64
+ }
65
+ return stringSSRHydrate();
66
+ function stringSSRHydrate() {
67
+ if (renderLevel === RenderLevel.CLIENT_RENDER || renderLevel === RenderLevel.SERVER_PREFETCH) {
68
+ ModernRender(/* @__PURE__ */ jsx(App, {
69
+ context
70
+ }));
71
+ } else if (renderLevel === RenderLevel.SERVER_RENDER) {
72
+ if (isReact18()) {
73
+ loadableReady(() => {
74
+ let SSRApp = () => /* @__PURE__ */ jsx(WithCallback, {
75
+ callback,
76
+ children: /* @__PURE__ */ jsx(App, {
77
+ context: hydrateContext
78
+ })
79
+ });
80
+ SSRApp = hoistNonReactStatics(SSRApp, App);
81
+ ModernHydrate(/* @__PURE__ */ jsx(SSRApp, {}));
82
+ });
83
+ } else {
84
+ loadableReady(() => {
85
+ ModernHydrate(/* @__PURE__ */ jsx(App, {
86
+ context: hydrateContext
87
+ }), callback);
88
+ });
89
+ }
90
+ } else {
91
+ console.warn(
92
+ `unknow render level: ${renderLevel}, execute render()`
93
+ );
94
+ ModernRender(/* @__PURE__ */ jsx(App, {
95
+ context
96
+ }));
97
+ }
98
+ }
99
+ function streamSSRHydrate() {
100
+ if (renderLevel === RenderLevel.SERVER_RENDER) {
101
+ let SSRApp = () => /* @__PURE__ */ jsx(WithCallback, {
102
+ callback,
103
+ children: /* @__PURE__ */ jsx(App, {
104
+ context: hydrateContext
105
+ })
106
+ });
107
+ SSRApp = hoistNonReactStatics(SSRApp, App);
108
+ ModernHydrate(/* @__PURE__ */ jsx(SSRApp, {}));
109
+ } else {
110
+ ModernRender(/* @__PURE__ */ jsx(App, {
111
+ context
112
+ }));
113
+ }
114
+ }
115
+ }),
116
+ init({ context }, next) {
117
+ var _a, _b;
118
+ const request = (_b = (_a = window == null ? void 0 : window._SSR_DATA) == null ? void 0 : _a.context) == null ? void 0 : _b.request;
119
+ if (!request) {
120
+ context.ssrContext = __spreadProps(__spreadValues({}, context.ssrContext), {
121
+ response: mockResp,
122
+ request: formatClient({})
123
+ });
124
+ return next({ context });
125
+ }
126
+ context.ssrContext.response = mockResp;
127
+ context.ssrContext.request = formatClient(request);
128
+ return next({ context });
129
+ },
130
+ pickContext: ({ context, pickedContext }, next) => {
131
+ var _a, _b;
132
+ const request = (_b = (_a = window == null ? void 0 : window._SSR_DATA) == null ? void 0 : _a.context) == null ? void 0 : _b.request;
133
+ const { initialData } = context;
134
+ if (!request) {
135
+ return next({
136
+ context,
137
+ pickedContext: __spreadProps(__spreadValues({}, pickedContext), {
138
+ initialData
139
+ })
140
+ });
141
+ }
142
+ return next({
143
+ context,
144
+ pickedContext: __spreadProps(__spreadValues({}, pickedContext), {
145
+ initialData,
146
+ request,
147
+ response: mockResp
148
+ })
149
+ });
150
+ }
151
+ };
152
+ }
153
+ });
154
+ var ssr_default = ssr;
155
+ export * from "./react";
156
+ export {
157
+ ssr_default as default,
158
+ ssr
159
+ };
@@ -0,0 +1,79 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+ import { formatServer } from "./utils";
41
+ import render from "./serverRender";
42
+ const ssr = (config = {}) => ({
43
+ name: "@modern-js/plugin-ssr",
44
+ setup: () => {
45
+ return {
46
+ server: (_0) => __async(void 0, [_0], function* ({ App, context }) {
47
+ const html = yield render({
48
+ context,
49
+ App,
50
+ config
51
+ });
52
+ return html;
53
+ }),
54
+ init({ context }, next) {
55
+ const { request } = context.ssrContext;
56
+ context.ssrContext.request = formatServer(request);
57
+ return next({ context });
58
+ },
59
+ pickContext: ({ context, pickedContext }, next) => {
60
+ const { request, response } = context == null ? void 0 : context.ssrContext;
61
+ const { initialData } = context;
62
+ return next({
63
+ context,
64
+ pickedContext: __spreadProps(__spreadValues({}, pickedContext), {
65
+ initialData,
66
+ request,
67
+ response
68
+ })
69
+ });
70
+ }
71
+ };
72
+ }
73
+ });
74
+ var index_node_default = ssr;
75
+ export * from "./react";
76
+ export {
77
+ index_node_default as default,
78
+ ssr
79
+ };
@@ -0,0 +1,69 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import { jsx } from "react/jsx-runtime";
22
+ import { renderToStaticMarkup } from "react-dom/server";
23
+ import { run } from "@modern-js/utils/ssr";
24
+ import { ChunkExtractor } from "@loadable/server";
25
+ const prefetch = (App, context) => __async(void 0, null, function* () {
26
+ return run(context.ssrContext.request.headers, () => __async(void 0, null, function* () {
27
+ var _a;
28
+ const { ssrContext } = context;
29
+ const { loadableStats } = ssrContext;
30
+ if (loadableStats) {
31
+ const extractor = new ChunkExtractor({
32
+ stats: loadableStats,
33
+ entrypoints: [ssrContext.entryName].filter(Boolean)
34
+ });
35
+ renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ jsx(App, {
36
+ context
37
+ })));
38
+ } else {
39
+ renderToStaticMarkup(/* @__PURE__ */ jsx(App, {
40
+ context
41
+ }));
42
+ }
43
+ if (!context.loaderManager.hasPendingLoaders()) {
44
+ return {
45
+ initialData: context.initialData,
46
+ i18nData: context.__i18nData__
47
+ };
48
+ }
49
+ const loadersData = yield context.loaderManager.awaitPendingLoaders();
50
+ Object.keys(loadersData).forEach((id) => {
51
+ const data = loadersData[id];
52
+ if (data._error) {
53
+ ssrContext.logger.error("App Prefetch Loader", data._error);
54
+ ssrContext.metrics.emitCounter("app.prefetch.loader.error", 1);
55
+ delete data._error;
56
+ }
57
+ });
58
+ return {
59
+ loadersData,
60
+ initialData: context.initialData,
61
+ i18nData: context.__i18nData__,
62
+ storeState: (_a = context == null ? void 0 : context.store) == null ? void 0 : _a.getState()
63
+ };
64
+ }));
65
+ });
66
+ var prefetch_default = prefetch;
67
+ export {
68
+ prefetch_default as default
69
+ };
@@ -0,0 +1,6 @@
1
+ import { PreRender } from "./prerender";
2
+ import { NoSSR } from "./nossr";
3
+ export {
4
+ NoSSR,
5
+ PreRender
6
+ };
@@ -0,0 +1,14 @@
1
+ import React, { useEffect, useState } from "react";
2
+ let csr = false;
3
+ const NoSSR = (props) => {
4
+ const [isMounted, setMounted] = useState(csr);
5
+ useEffect(() => {
6
+ csr = true;
7
+ setMounted(true);
8
+ });
9
+ const { children } = props;
10
+ return React.createElement(React.Fragment, null, isMounted ? children : null);
11
+ };
12
+ export {
13
+ NoSSR
14
+ };
@@ -0,0 +1,108 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import withSideEffect from "react-side-effect";
21
+ import React, { createElement } from "react";
22
+ import {
23
+ getOutermostProperty,
24
+ aggKeysFromPropsList,
25
+ exist,
26
+ aggMatchesFromPropsList
27
+ } from "./util";
28
+ const PROP_NAMES = {
29
+ INTERVAL: "interval",
30
+ STALE_LIMIT: "staleLimit",
31
+ LEVEL: "level",
32
+ INCLUDES: "includes",
33
+ EXCLUDES: "excludes",
34
+ FALLBACK: "fallback",
35
+ MATCHES: "matches"
36
+ };
37
+ const handleClientStateChange = () => {
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
+ if (exist(reduceProp)) {
54
+ nextProps = __spreadProps(__spreadValues({}, props), { [propKey]: reduceProp });
55
+ }
56
+ return nextProps;
57
+ }, defaultProps);
58
+ };
59
+ const reducePropsToState = (propsList) => {
60
+ const reduceProps = {
61
+ interval: getOutermostProperty(propsList, PROP_NAMES.INTERVAL),
62
+ staleLimit: getOutermostProperty(propsList, PROP_NAMES.STALE_LIMIT),
63
+ level: getOutermostProperty(propsList, PROP_NAMES.LEVEL),
64
+ includes: aggKeysFromPropsList(propsList, PROP_NAMES.INCLUDES),
65
+ excludes: aggKeysFromPropsList(propsList, PROP_NAMES.EXCLUDES),
66
+ fallback: getOutermostProperty(propsList, PROP_NAMES.FALLBACK),
67
+ matches: aggMatchesFromPropsList(propsList, PROP_NAMES.MATCHES)
68
+ };
69
+ return reduceProps;
70
+ };
71
+ function factory(Component) {
72
+ class Spr extends React.Component {
73
+ static set canUseDOM(canUseDOM) {
74
+ Component.canUseDOM = canUseDOM;
75
+ }
76
+ static get canUseDOM() {
77
+ return Component.canUseDOM;
78
+ }
79
+ verify() {
80
+ return true;
81
+ }
82
+ render() {
83
+ const newProps = __spreadValues({}, this.props);
84
+ const validate = this.verify();
85
+ if (!validate) {
86
+ throw new Error("invalid props, check usage");
87
+ }
88
+ return createElement(Component, __spreadValues({}, newProps));
89
+ }
90
+ }
91
+ Spr.peek = Component.peek;
92
+ Spr.rewind = Component.rewind;
93
+ Spr.config = () => {
94
+ const mappedState = Component.rewind();
95
+ return mappedState;
96
+ };
97
+ return Spr;
98
+ }
99
+ const NullComponent = () => null;
100
+ const SprSideEffects = withSideEffect(
101
+ reducePropsToState,
102
+ handleClientStateChange,
103
+ mapStateOnServer
104
+ )(NullComponent);
105
+ const PreRender = factory(SprSideEffects);
106
+ export {
107
+ PreRender
108
+ };
File without changes
@@ -0,0 +1,96 @@
1
+ const REQUEST_META = ["header", "query"];
2
+ const getInnermostProperty = function getInnermostProperty2(propsList, propName) {
3
+ for (let i = propsList.length - 1; i >= 0; i--) {
4
+ const props = propsList[i];
5
+ if (props.hasOwnProperty(propName)) {
6
+ return props[propName];
7
+ }
8
+ }
9
+ return null;
10
+ };
11
+ const getOutermostProperty = function getOutermostProperty2(propsList, propName) {
12
+ for (const props of propsList) {
13
+ if (props.hasOwnProperty(propName)) {
14
+ return props[propName];
15
+ }
16
+ }
17
+ return null;
18
+ };
19
+ const aggKeysFromPropsList = function aggKeysFromPropsList2(propsList, propName) {
20
+ const initResult = REQUEST_META.reduce(
21
+ (result, next) => {
22
+ const key = next;
23
+ result[key] = [];
24
+ return result;
25
+ },
26
+ {}
27
+ );
28
+ const res = propsList.filter((props) => usefulObject(props[propName])).reduce((result, next) => {
29
+ REQUEST_META.forEach((key) => {
30
+ const prop = next[propName];
31
+ if ((prop == null ? void 0 : prop.hasOwnProperty(key)) && usefulArray(prop[key])) {
32
+ result[key] = unique(result[key].concat(prop[key]));
33
+ }
34
+ });
35
+ return result;
36
+ }, initResult);
37
+ return REQUEST_META.reduce((result, next) => {
38
+ var _a;
39
+ const key = next;
40
+ if (result[key] && ((_a = result[key]) == null ? void 0 : _a.length) === 0) {
41
+ delete result[key];
42
+ }
43
+ return result;
44
+ }, res);
45
+ };
46
+ const aggMatchesFromPropsList = function aggMatchesFromPropsList2(propsList, propName) {
47
+ const initResult = REQUEST_META.reduce(
48
+ (result, next) => {
49
+ const key = next;
50
+ result[key] = {};
51
+ return result;
52
+ },
53
+ {}
54
+ );
55
+ const res = propsList.filter((props) => usefulObject(props[propName])).reduce((result, next) => {
56
+ REQUEST_META.forEach((key) => {
57
+ const prop = next[propName];
58
+ if ((prop == null ? void 0 : prop.hasOwnProperty(key)) && usefulObject(prop[key])) {
59
+ result[key] = Object.assign(result[key], prop[key]);
60
+ }
61
+ });
62
+ return result;
63
+ }, initResult);
64
+ return REQUEST_META.reduce((result, next) => {
65
+ const key = next;
66
+ if (result[key] && Object.keys(result[key]).length === 0) {
67
+ delete result[key];
68
+ }
69
+ return result;
70
+ }, res);
71
+ };
72
+ function unique(arr) {
73
+ return Array.from(new Set(arr));
74
+ }
75
+ function usefulObject(target) {
76
+ if (!exist(target)) {
77
+ return false;
78
+ }
79
+ return target.constructor === Object && Object.keys(target).length > 0;
80
+ }
81
+ function usefulArray(target) {
82
+ if (!exist(target)) {
83
+ return false;
84
+ }
85
+ return Array.isArray(target) && target.length > 0;
86
+ }
87
+ function exist(target) {
88
+ return target != null;
89
+ }
90
+ export {
91
+ aggKeysFromPropsList,
92
+ aggMatchesFromPropsList,
93
+ exist,
94
+ getInnermostProperty,
95
+ getOutermostProperty
96
+ };
@@ -0,0 +1,15 @@
1
+ import { useRef, useLayoutEffect } from "react";
2
+ const WithCallback = ({ callback, children }) => {
3
+ const once = useRef(false);
4
+ useLayoutEffect(() => {
5
+ if (once.current) {
6
+ return;
7
+ }
8
+ once.current = true;
9
+ callback();
10
+ }, [callback]);
11
+ return children;
12
+ };
13
+ export {
14
+ WithCallback
15
+ };
@@ -0,0 +1,44 @@
1
+ import { EOL } from "os";
2
+ const RE_HTML_ATTR = /<html[^>]*>/;
3
+ const RE_BODY_ATTR = /<body[^>]*>/;
4
+ const RE_LAST_IN_HEAD = /<\/head>/;
5
+ const RE_TITLE = /<title[^>]*>([\s\S\n\r]*?)<\/title>/;
6
+ const TEST_TITLE_CONTENT = new RegExp("(?<=<title[^>]*>)([\\s\\S\\n\\r]*?)([.|\\S])([\\s\\S\\n\\r]*?)(?=<\\/title>)");
7
+ function helmet(content, helmetData) {
8
+ let result = content;
9
+ const bodyAttributes = helmetData.bodyAttributes.toString();
10
+ if (bodyAttributes) {
11
+ result = result.replace(RE_BODY_ATTR, `<body ${bodyAttributes}>`);
12
+ }
13
+ const htmlAttributes = helmetData.htmlAttributes.toString();
14
+ if (htmlAttributes) {
15
+ result = result.replace(RE_HTML_ATTR, `<html ${htmlAttributes}>`);
16
+ }
17
+ const base = helmetData.base.toString();
18
+ const link = helmetData.link.toString();
19
+ const meta = helmetData.meta.toString();
20
+ const noscript = helmetData.noscript.toString();
21
+ const script = helmetData.script.toString();
22
+ const style = helmetData.style.toString();
23
+ const title = helmetData.title.toString();
24
+ const existTitleTag = RE_TITLE.test(content);
25
+ const shouldReplaceTitle = existTitleTag && TEST_TITLE_CONTENT.test(title.trim());
26
+ if (shouldReplaceTitle) {
27
+ result = result.replace(RE_TITLE, title);
28
+ }
29
+ const helmetStr = [
30
+ base,
31
+ link,
32
+ meta,
33
+ noscript,
34
+ script,
35
+ style,
36
+ !existTitleTag ? title : ""
37
+ ].reduce((pre, cur) => {
38
+ return pre + (cur.length > 0 ? ` ${cur}${EOL}` : "");
39
+ }, "");
40
+ return result.replace(RE_LAST_IN_HEAD, `${helmetStr}</head>`);
41
+ }
42
+ export {
43
+ helmet as default
44
+ };
@@ -0,0 +1,35 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import { isReact18 } from "../utils";
22
+ function serverRender(options) {
23
+ return __async(this, null, function* () {
24
+ if (isReact18() && options.config.mode === "stream") {
25
+ const pipe = yield require("./renderToStream").render(options);
26
+ return pipe;
27
+ } else {
28
+ const html = yield require("./renderToString").render(options);
29
+ return html;
30
+ }
31
+ });
32
+ }
33
+ export {
34
+ serverRender as default
35
+ };
@@ -0,0 +1,36 @@
1
+ import serialize from "serialize-javascript";
2
+ import { buildTemplate } from "./buildTemplate.share";
3
+ function buildShellAfterTemplate(afterAppTemplate, options) {
4
+ const callbacks = [injectSSRDataScript];
5
+ return buildTemplate(afterAppTemplate, callbacks);
6
+ function injectSSRDataScript(template) {
7
+ const ssrDataScript = buildSSRDataScript();
8
+ return template.replace("<!--<?- SSRDataScript ?>-->", ssrDataScript);
9
+ function buildSSRDataScript() {
10
+ const { ssrContext, renderLevel } = options;
11
+ const { request } = ssrContext;
12
+ const SSRData = {
13
+ context: {
14
+ request: {
15
+ params: request.params,
16
+ query: request.query,
17
+ pathname: request.pathname,
18
+ host: request.host,
19
+ url: request.url,
20
+ headers: request.headers,
21
+ cookieMap: request.cookieMap
22
+ }
23
+ },
24
+ renderLevel
25
+ };
26
+ return `
27
+ <script>window._SSR_DATA = ${serialize(SSRData, {
28
+ isJSON: true
29
+ })}<\/script>
30
+ `;
31
+ }
32
+ }
33
+ }
34
+ export {
35
+ buildShellAfterTemplate
36
+ };
@@ -0,0 +1,11 @@
1
+ const HEAD_REG_EXP = /<head(.|\n)*>(.|\n)*<\/head>/;
2
+ function buildTemplate(template, callbacks) {
3
+ return callbacks.reduce(
4
+ (template2, buildTemplateCb) => buildTemplateCb(template2),
5
+ template
6
+ );
7
+ }
8
+ export {
9
+ HEAD_REG_EXP,
10
+ buildTemplate
11
+ };