@modern-js/runtime 2.15.1-alpha.2 → 2.16.1-alpha.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 (261) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/cli/index.js +32 -48
  3. package/dist/cjs/common.js +13 -27
  4. package/dist/cjs/config.js +4 -15
  5. package/dist/cjs/core/appConfig.js +13 -26
  6. package/dist/cjs/core/compatible.js +170 -158
  7. package/dist/cjs/core/index.js +38 -45
  8. package/dist/cjs/core/loader/index.js +12 -35
  9. package/dist/cjs/core/loader/loaderManager.js +42 -56
  10. package/dist/cjs/core/loader/useLoader.js +80 -105
  11. package/dist/cjs/core/plugin.js +28 -40
  12. package/dist/cjs/core/types.js +4 -15
  13. package/dist/cjs/document/Body.js +61 -37
  14. package/dist/cjs/document/Comment.js +22 -32
  15. package/dist/cjs/document/DocumentContext.js +14 -37
  16. package/dist/cjs/document/DocumentStructureContext.js +14 -37
  17. package/dist/cjs/document/Head.js +71 -40
  18. package/dist/cjs/document/Html.js +46 -58
  19. package/dist/cjs/document/Links.js +18 -28
  20. package/dist/cjs/document/Root.js +73 -44
  21. package/dist/cjs/document/Script.js +22 -32
  22. package/dist/cjs/document/Scripts.js +18 -28
  23. package/dist/cjs/document/cli/index.js +161 -207
  24. package/dist/cjs/document/constants.js +36 -75
  25. package/dist/cjs/document/index.js +28 -27
  26. package/dist/cjs/exports/head.js +27 -37
  27. package/dist/cjs/exports/loadable.js +27 -37
  28. package/dist/cjs/exports/server.js +7 -25
  29. package/dist/cjs/exports/styled.js +27 -37
  30. package/dist/cjs/index.js +22 -42
  31. package/dist/cjs/router/cli/index.js +91 -114
  32. package/dist/cjs/router/index.js +32 -39
  33. package/dist/cjs/router/runtime/DefaultNotFound.js +23 -38
  34. package/dist/cjs/router/runtime/DeferredDataScripts.js +8 -24
  35. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +69 -112
  36. package/dist/cjs/router/runtime/PrefetchLink.js +117 -96
  37. package/dist/cjs/router/runtime/fetch.js +7 -25
  38. package/dist/cjs/router/runtime/fetch.node.js +7 -25
  39. package/dist/cjs/router/runtime/fetch.worker.js +7 -25
  40. package/dist/cjs/router/runtime/hooks.js +8 -26
  41. package/dist/cjs/router/runtime/index.js +97 -149
  42. package/dist/cjs/router/runtime/plugin.js +56 -76
  43. package/dist/cjs/router/runtime/plugin.node.js +95 -74
  44. package/dist/cjs/router/runtime/server.js +18 -17
  45. package/dist/cjs/router/runtime/types.js +4 -15
  46. package/dist/cjs/router/runtime/utils.js +57 -83
  47. package/dist/cjs/router/runtime/withRouter.js +24 -39
  48. package/dist/cjs/runtimeContext.js +14 -27
  49. package/dist/cjs/ssr/cli/babel-plugin-ssr-loader-id.js +75 -59
  50. package/dist/cjs/ssr/cli/index.js +120 -150
  51. package/dist/cjs/ssr/index.js +149 -132
  52. package/dist/cjs/ssr/index.node.js +73 -74
  53. package/dist/cjs/ssr/prefetch.js +51 -59
  54. package/dist/cjs/ssr/react/index.js +15 -28
  55. package/dist/cjs/ssr/react/nossr/index.js +51 -43
  56. package/dist/cjs/ssr/react/prerender/index.js +93 -59
  57. package/dist/cjs/ssr/react/prerender/type.js +4 -15
  58. package/dist/cjs/ssr/react/prerender/util.js +32 -51
  59. package/dist/cjs/ssr/react/withCallback/index.js +53 -29
  60. package/dist/cjs/ssr/serverRender/helmet.js +15 -26
  61. package/dist/cjs/ssr/serverRender/index.js +14 -32
  62. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +15 -34
  63. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.share.js +12 -28
  64. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +28 -55
  65. package/dist/cjs/ssr/serverRender/renderToStream/index.js +23 -48
  66. package/dist/cjs/ssr/serverRender/renderToStream/loadable.js +13 -32
  67. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +33 -64
  68. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +26 -54
  69. package/dist/cjs/ssr/serverRender/renderToStream/styledComponent.js +9 -27
  70. package/dist/cjs/ssr/serverRender/renderToStream/template.js +11 -32
  71. package/dist/cjs/ssr/serverRender/renderToStream/type.js +4 -15
  72. package/dist/cjs/ssr/serverRender/renderToString/entry.js +133 -99
  73. package/dist/cjs/ssr/serverRender/renderToString/index.js +21 -48
  74. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +20 -45
  75. package/dist/cjs/ssr/serverRender/renderToString/reduce.js +13 -25
  76. package/dist/cjs/ssr/serverRender/renderToString/styledComponent.js +9 -27
  77. package/dist/cjs/ssr/serverRender/renderToString/template.js +42 -37
  78. package/dist/cjs/ssr/serverRender/renderToString/type.js +10 -28
  79. package/dist/cjs/ssr/serverRender/time.js +7 -25
  80. package/dist/cjs/ssr/serverRender/time.worker.js +11 -26
  81. package/dist/cjs/ssr/serverRender/types.js +7 -25
  82. package/dist/cjs/ssr/serverRender/utils.js +12 -27
  83. package/dist/cjs/ssr/utils.js +26 -51
  84. package/dist/cjs/state/cli/index.js +71 -95
  85. package/dist/cjs/state/index.js +32 -39
  86. package/dist/cjs/state/plugins.js +26 -46
  87. package/dist/cjs/state/runtime/index.js +27 -37
  88. package/dist/cjs/state/runtime/plugin.js +82 -84
  89. package/dist/cjs/state/types.js +4 -15
  90. package/dist/esm/cli/index.js +184 -176
  91. package/dist/esm/common.js +4 -5
  92. package/dist/esm/config.js +1 -1
  93. package/dist/esm/core/appConfig.js +8 -7
  94. package/dist/esm/core/compatible.js +470 -448
  95. package/dist/esm/core/index.js +3 -4
  96. package/dist/esm/core/loader/index.js +1 -2
  97. package/dist/esm/core/loader/loaderManager.js +391 -366
  98. package/dist/esm/core/loader/useLoader.js +173 -162
  99. package/dist/esm/core/plugin.js +162 -155
  100. package/dist/esm/core/types.js +1 -1
  101. package/dist/esm/document/Body.js +12 -13
  102. package/dist/esm/document/Comment.js +11 -12
  103. package/dist/esm/document/DocumentContext.js +4 -5
  104. package/dist/esm/document/DocumentStructureContext.js +6 -7
  105. package/dist/esm/document/Head.js +16 -17
  106. package/dist/esm/document/Html.js +84 -85
  107. package/dist/esm/document/Links.js +5 -6
  108. package/dist/esm/document/Root.js +20 -21
  109. package/dist/esm/document/Script.js +12 -13
  110. package/dist/esm/document/Scripts.js +5 -6
  111. package/dist/esm/document/cli/index.js +390 -371
  112. package/dist/esm/document/constants.js +33 -34
  113. package/dist/esm/exports/head.js +1 -2
  114. package/dist/esm/exports/loadable.js +1 -2
  115. package/dist/esm/exports/server.js +2 -3
  116. package/dist/esm/exports/styled.js +1 -2
  117. package/dist/esm/index.js +2 -3
  118. package/dist/esm/router/cli/index.js +141 -141
  119. package/dist/esm/router/index.js +2 -3
  120. package/dist/esm/router/runtime/DefaultNotFound.js +12 -13
  121. package/dist/esm/router/runtime/DeferredDataScripts.js +4 -4
  122. package/dist/esm/router/runtime/DeferredDataScripts.node.js +154 -143
  123. package/dist/esm/router/runtime/PrefetchLink.js +418 -394
  124. package/dist/esm/router/runtime/fetch.js +2 -1
  125. package/dist/esm/router/runtime/fetch.worker.js +2 -1
  126. package/dist/esm/router/runtime/index.js +62 -9
  127. package/dist/esm/router/runtime/plugin.js +141 -142
  128. package/dist/esm/router/runtime/plugin.node.js +372 -353
  129. package/dist/esm/router/runtime/types.js +1 -1
  130. package/dist/esm/router/runtime/utils.js +295 -279
  131. package/dist/esm/router/runtime/withRouter.js +57 -58
  132. package/dist/esm/runtimeContext.js +2 -3
  133. package/dist/esm/ssr/cli/babel-plugin-ssr-loader-id.js +105 -118
  134. package/dist/esm/ssr/cli/index.js +146 -146
  135. package/dist/esm/ssr/index.js +303 -297
  136. package/dist/esm/ssr/index.node.js +227 -221
  137. package/dist/esm/ssr/prefetch.js +192 -186
  138. package/dist/esm/ssr/react/index.js +2 -3
  139. package/dist/esm/ssr/react/nossr/index.js +58 -47
  140. package/dist/esm/ssr/react/prerender/index.js +214 -206
  141. package/dist/esm/ssr/react/prerender/type.js +1 -1
  142. package/dist/esm/ssr/react/prerender/util.js +91 -92
  143. package/dist/esm/ssr/react/withCallback/index.js +13 -14
  144. package/dist/esm/ssr/serverRender/helmet.js +34 -35
  145. package/dist/esm/ssr/serverRender/index.js +167 -160
  146. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +58 -59
  147. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.share.js +5 -6
  148. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +106 -93
  149. package/dist/esm/ssr/serverRender/renderToStream/index.js +157 -151
  150. package/dist/esm/ssr/serverRender/renderToStream/loadable.js +17 -18
  151. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +117 -117
  152. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +286 -279
  153. package/dist/esm/ssr/serverRender/renderToStream/styledComponent.js +8 -9
  154. package/dist/esm/ssr/serverRender/renderToStream/template.js +62 -51
  155. package/dist/esm/ssr/serverRender/renderToStream/type.js +1 -1
  156. package/dist/esm/ssr/serverRender/renderToString/entry.js +393 -383
  157. package/dist/esm/ssr/serverRender/renderToString/index.js +158 -152
  158. package/dist/esm/ssr/serverRender/renderToString/loadable.js +46 -47
  159. package/dist/esm/ssr/serverRender/renderToString/reduce.js +7 -8
  160. package/dist/esm/ssr/serverRender/renderToString/styledComponent.js +6 -7
  161. package/dist/esm/ssr/serverRender/renderToString/template.js +142 -128
  162. package/dist/esm/ssr/serverRender/renderToString/type.js +6 -7
  163. package/dist/esm/ssr/serverRender/time.js +57 -46
  164. package/dist/esm/ssr/serverRender/time.worker.js +72 -61
  165. package/dist/esm/ssr/serverRender/utils.js +14 -15
  166. package/dist/esm/ssr/utils.js +128 -117
  167. package/dist/esm/state/cli/index.js +67 -67
  168. package/dist/esm/state/index.js +2 -3
  169. package/dist/esm/state/plugins.js +7 -8
  170. package/dist/esm/state/runtime/index.js +1 -2
  171. package/dist/esm/state/runtime/plugin.js +177 -166
  172. package/dist/esm/state/types.js +1 -1
  173. package/dist/esm-node/cli/index.js +11 -9
  174. package/dist/esm-node/common.js +3 -8
  175. package/dist/esm-node/config.js +1 -0
  176. package/dist/esm-node/core/appConfig.js +2 -6
  177. package/dist/esm-node/core/compatible.js +104 -120
  178. package/dist/esm-node/core/index.js +3 -13
  179. package/dist/esm-node/core/loader/index.js +1 -4
  180. package/dist/esm-node/core/loader/loaderManager.js +25 -25
  181. package/dist/esm-node/core/loader/useLoader.js +60 -74
  182. package/dist/esm-node/core/plugin.js +9 -15
  183. package/dist/esm-node/core/types.js +1 -0
  184. package/dist/esm-node/document/Body.js +11 -15
  185. package/dist/esm-node/document/Comment.js +10 -14
  186. package/dist/esm-node/document/DocumentContext.js +1 -4
  187. package/dist/esm-node/document/DocumentStructureContext.js +1 -4
  188. package/dist/esm-node/document/Head.js +14 -14
  189. package/dist/esm-node/document/Html.js +31 -34
  190. package/dist/esm-node/document/Links.js +5 -6
  191. package/dist/esm-node/document/Root.js +19 -21
  192. package/dist/esm-node/document/Script.js +10 -14
  193. package/dist/esm-node/document/Scripts.js +5 -6
  194. package/dist/esm-node/document/cli/index.js +136 -184
  195. package/dist/esm-node/document/constants.js +22 -52
  196. package/dist/esm-node/exports/head.js +1 -4
  197. package/dist/esm-node/exports/loadable.js +1 -4
  198. package/dist/esm-node/exports/server.js +1 -4
  199. package/dist/esm-node/exports/styled.js +1 -4
  200. package/dist/esm-node/index.js +2 -22
  201. package/dist/esm-node/router/cli/index.js +83 -98
  202. package/dist/esm-node/router/index.js +2 -6
  203. package/dist/esm-node/router/runtime/DefaultNotFound.js +11 -17
  204. package/dist/esm-node/router/runtime/DeferredDataScripts.js +1 -4
  205. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +51 -85
  206. package/dist/esm-node/router/runtime/PrefetchLink.js +53 -59
  207. package/dist/esm-node/router/runtime/fetch.js +1 -3
  208. package/dist/esm-node/router/runtime/fetch.node.js +1 -3
  209. package/dist/esm-node/router/runtime/fetch.worker.js +1 -3
  210. package/dist/esm-node/router/runtime/hooks.js +1 -3
  211. package/dist/esm-node/router/runtime/index.js +10 -69
  212. package/dist/esm-node/router/runtime/plugin.js +27 -41
  213. package/dist/esm-node/router/runtime/plugin.node.js +24 -32
  214. package/dist/esm-node/router/runtime/types.js +1 -0
  215. package/dist/esm-node/router/runtime/utils.js +34 -50
  216. package/dist/esm-node/router/runtime/withRouter.js +8 -14
  217. package/dist/esm-node/runtimeContext.js +2 -6
  218. package/dist/esm-node/ssr/cli/babel-plugin-ssr-loader-id.js +99 -119
  219. package/dist/esm-node/ssr/cli/index.js +106 -125
  220. package/dist/esm-node/ssr/index.js +112 -96
  221. package/dist/esm-node/ssr/index.node.js +39 -39
  222. package/dist/esm-node/ssr/prefetch.js +40 -35
  223. package/dist/esm-node/ssr/react/index.js +2 -6
  224. package/dist/esm-node/ssr/react/nossr/index.js +2 -9
  225. package/dist/esm-node/ssr/react/prerender/index.js +32 -23
  226. package/dist/esm-node/ssr/react/prerender/type.js +1 -0
  227. package/dist/esm-node/ssr/react/prerender/util.js +23 -33
  228. package/dist/esm-node/ssr/react/withCallback/index.js +4 -5
  229. package/dist/esm-node/ssr/serverRender/helmet.js +2 -5
  230. package/dist/esm-node/ssr/serverRender/index.js +5 -10
  231. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -9
  232. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.share.js +3 -10
  233. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +7 -17
  234. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +2 -7
  235. package/dist/esm-node/ssr/serverRender/renderToStream/loadable.js +4 -8
  236. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +21 -39
  237. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +16 -31
  238. package/dist/esm-node/ssr/serverRender/renderToStream/styledComponent.js +1 -4
  239. package/dist/esm-node/ssr/serverRender/renderToStream/template.js +2 -8
  240. package/dist/esm-node/ssr/serverRender/renderToStream/type.js +1 -0
  241. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +50 -39
  242. package/dist/esm-node/ssr/serverRender/renderToString/index.js +1 -8
  243. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +8 -18
  244. package/dist/esm-node/ssr/serverRender/renderToString/reduce.js +1 -4
  245. package/dist/esm-node/ssr/serverRender/renderToString/styledComponent.js +1 -4
  246. package/dist/esm-node/ssr/serverRender/renderToString/template.js +32 -18
  247. package/dist/esm-node/ssr/serverRender/renderToString/type.js +3 -6
  248. package/dist/esm-node/ssr/serverRender/time.js +1 -4
  249. package/dist/esm-node/ssr/serverRender/time.worker.js +5 -5
  250. package/dist/esm-node/ssr/serverRender/types.js +1 -3
  251. package/dist/esm-node/ssr/serverRender/utils.js +4 -10
  252. package/dist/esm-node/ssr/utils.js +8 -19
  253. package/dist/esm-node/state/cli/index.js +63 -78
  254. package/dist/esm-node/state/index.js +2 -6
  255. package/dist/esm-node/state/plugins.js +4 -10
  256. package/dist/esm-node/state/runtime/index.js +1 -4
  257. package/dist/esm-node/state/runtime/plugin.js +47 -44
  258. package/dist/esm-node/state/types.js +1 -0
  259. package/dist/types/router/runtime/index.d.ts +1 -1
  260. package/package.json +14 -10
  261. package/types/model.d.ts +1 -0
@@ -1,130 +1,110 @@
1
- var __getOwnPropNames = Object.getOwnPropertyNames;
2
- var __commonJS = (cb, mod) => function __require() {
3
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
- };
5
1
  import crypto from "crypto";
6
- import { Buffer as Buffer2 } from "buffer";
2
+ import { Buffer } from "buffer";
7
3
  import * as t from "@babel/types";
8
4
  import { get } from "@modern-js/utils/lodash";
9
- var require_babel_plugin_ssr_loader_id = __commonJS({
10
- "src/ssr/cli/babel-plugin-ssr-loader-id.ts"(exports, module) {
11
- const RUNTIME_PACKAGE_NAMES = ["@modern-js/runtime"];
12
- const FUNCTION_USE_LOADER_NAME = "useLoader";
13
- function getHash(filepath) {
14
- const cwd = process.cwd();
15
- const point = filepath.indexOf(cwd);
16
- let relativePath = filepath;
17
- if (point !== -1) {
18
- relativePath = filepath.substring(point + cwd.length);
19
- }
20
- const fileBuf = Buffer2.from(relativePath);
21
- const fsHash = crypto.createHash("md5");
22
- const md5 = fsHash.update(fileBuf).digest("hex");
23
- return md5;
5
+ const RUNTIME_PACKAGE_NAMES = [
6
+ "@modern-js/runtime"
7
+ ];
8
+ const FUNCTION_USE_LOADER_NAME = "useLoader";
9
+ function getHash(filepath) {
10
+ const cwd = process.cwd();
11
+ const point = filepath.indexOf(cwd);
12
+ let relativePath = filepath;
13
+ if (point !== -1) {
14
+ relativePath = filepath.substring(point + cwd.length);
15
+ }
16
+ const fileBuf = Buffer.from(relativePath);
17
+ const fsHash = crypto.createHash("md5");
18
+ const md5 = fsHash.update(fileBuf).digest("hex");
19
+ return md5;
20
+ }
21
+ function getUseLoaderPath(path, calleeName) {
22
+ const { node } = path;
23
+ if (!calleeName || node.callee.name !== calleeName) {
24
+ return false;
25
+ }
26
+ const arg1 = get(node, "arguments.0");
27
+ if (t.isFunction(arg1) || t.isFunctionExpression(arg1) || t.isArrowFunctionExpression(arg1) || t.isIdentifier(arg1) || t.isCallExpression(arg1) || t.isMemberExpression(arg1)) {
28
+ const loaderPath = path.get("arguments.0");
29
+ if (isDuplicateInnerLoader(loaderPath)) {
30
+ return false;
31
+ } else {
32
+ return loaderPath;
24
33
  }
25
- function getUseLoaderPath(path, calleeName) {
26
- const { node } = path;
27
- if (!calleeName || node.callee.name !== calleeName) {
28
- return false;
29
- }
30
- const arg1 = get(node, "arguments.0");
31
- if (t.isFunction(arg1) || t.isFunctionExpression(arg1) || t.isArrowFunctionExpression(arg1) || t.isIdentifier(arg1) || t.isCallExpression(arg1) || t.isMemberExpression(arg1)) {
32
- const loaderPath = path.get("arguments.0");
33
- if (isDuplicateInnerLoader(loaderPath)) {
34
- return false;
35
- } else {
36
- return loaderPath;
37
- }
38
- }
39
- console.warn("useLoader 中 loaderId 生成失败,请检查 useLoader");
40
- throw path.buildCodeFrameError(`
34
+ }
35
+ console.warn("useLoader loaderId 生成失败,请检查 useLoader");
36
+ throw path.buildCodeFrameError(`
41
37
  please check the usage of ${path.node.name}
42
38
  `);
39
+ }
40
+ function isDuplicateInnerLoader(path) {
41
+ const { node } = path;
42
+ if (t.isFunctionExpression(node.callee)) {
43
+ if (t.isBlockStatement(node.callee.body)) {
44
+ if (get(node.callee.body, "body.0.declarations.0.id.name") === "innerLoader" && get(node.callee.body, "body.2.argument.name") === "innerLoader") {
45
+ return true;
46
+ }
43
47
  }
44
- function isDuplicateInnerLoader(path) {
45
- const { node } = path;
46
- if (t.isFunctionExpression(node.callee)) {
47
- if (t.isBlockStatement(node.callee.body)) {
48
- if (get(node.callee.body, "body.0.declarations.0.id.name") === "innerLoader" && get(node.callee.body, "body.2.argument.name") === "innerLoader") {
49
- return true;
48
+ }
49
+ return false;
50
+ }
51
+ function getSelfRunLoaderExpression(loaderExpression, id) {
52
+ return t.callExpression(t.functionExpression(null, [], t.blockStatement([
53
+ t.variableDeclaration("var", [
54
+ t.variableDeclarator(t.identifier("innerLoader"), loaderExpression)
55
+ ]),
56
+ t.expressionStatement(t.assignmentExpression("=", t.memberExpression(t.identifier("innerLoader"), t.identifier("id")), t.stringLiteral(id))),
57
+ t.returnStatement(t.identifier("innerLoader"))
58
+ ])), []);
59
+ }
60
+ module.exports = function() {
61
+ let useLoader = null;
62
+ let hash = "";
63
+ let index = 0;
64
+ function genId() {
65
+ return `${hash}_${index++}`;
66
+ }
67
+ return {
68
+ name: "babel-plugin-ssr-loader-id",
69
+ pre() {
70
+ index = 0;
71
+ useLoader = null;
72
+ hash = "";
73
+ },
74
+ visitor: {
75
+ ImportDeclaration(path, state) {
76
+ if (useLoader) {
77
+ return false;
78
+ }
79
+ if (!RUNTIME_PACKAGE_NAMES.includes(get(path, "node.source.value"))) {
80
+ return false;
81
+ }
82
+ hash = getHash(state.file.opts.filename);
83
+ get(path, "node.specifiers", []).forEach(({ imported, local }) => {
84
+ if (!imported) {
85
+ throw path.buildCodeFrameError(`please \`import { useLoader } from ${RUNTIME_PACKAGE_NAMES[0]}\``);
86
+ }
87
+ if (!useLoader && imported.name === FUNCTION_USE_LOADER_NAME) {
88
+ useLoader = local.name;
50
89
  }
90
+ });
91
+ return false;
92
+ },
93
+ CallExpression(path) {
94
+ let loaderPath = getUseLoaderPath(path, useLoader);
95
+ if (loaderPath) {
96
+ if (!Array.isArray(loaderPath)) {
97
+ loaderPath = [
98
+ loaderPath
99
+ ];
100
+ }
101
+ loaderPath.forEach((p) => {
102
+ p.replaceWith(getSelfRunLoaderExpression(p.node, genId()));
103
+ });
104
+ return false;
51
105
  }
106
+ return false;
52
107
  }
53
- return false;
54
- }
55
- function getSelfRunLoaderExpression(loaderExpression, id) {
56
- return t.callExpression(
57
- t.functionExpression(
58
- null,
59
- [],
60
- t.blockStatement([
61
- t.variableDeclaration("var", [
62
- t.variableDeclarator(t.identifier("innerLoader"), loaderExpression)
63
- ]),
64
- t.expressionStatement(
65
- t.assignmentExpression(
66
- "=",
67
- t.memberExpression(t.identifier("innerLoader"), t.identifier("id")),
68
- t.stringLiteral(id)
69
- )
70
- ),
71
- t.returnStatement(t.identifier("innerLoader"))
72
- ])
73
- ),
74
- []
75
- );
76
108
  }
77
- module.exports = function() {
78
- let useLoader = null;
79
- let hash = "";
80
- let index = 0;
81
- function genId() {
82
- return `${hash}_${index++}`;
83
- }
84
- return {
85
- name: "babel-plugin-ssr-loader-id",
86
- pre() {
87
- index = 0;
88
- useLoader = null;
89
- hash = "";
90
- },
91
- visitor: {
92
- ImportDeclaration(path, state) {
93
- if (useLoader) {
94
- return false;
95
- }
96
- if (!RUNTIME_PACKAGE_NAMES.includes(get(path, "node.source.value"))) {
97
- return false;
98
- }
99
- hash = getHash(state.file.opts.filename);
100
- get(path, "node.specifiers", []).forEach(({ imported, local }) => {
101
- if (!imported) {
102
- throw path.buildCodeFrameError(
103
- `please \`import { useLoader } from ${RUNTIME_PACKAGE_NAMES[0]}\``
104
- );
105
- }
106
- if (!useLoader && imported.name === FUNCTION_USE_LOADER_NAME) {
107
- useLoader = local.name;
108
- }
109
- });
110
- return false;
111
- },
112
- CallExpression(path) {
113
- let loaderPath = getUseLoaderPath(path, useLoader);
114
- if (loaderPath) {
115
- if (!Array.isArray(loaderPath)) {
116
- loaderPath = [loaderPath];
117
- }
118
- loaderPath.forEach((p) => {
119
- p.replaceWith(getSelfRunLoaderExpression(p.node, genId()));
120
- });
121
- return false;
122
- }
123
- return false;
124
- }
125
- }
126
- };
127
- };
128
- }
129
- });
130
- export default require_babel_plugin_ssr_loader_id();
109
+ };
110
+ };
@@ -1,20 +1,13 @@
1
1
  import path from "path";
2
- import {
3
- getEntryOptions,
4
- SERVER_RENDER_FUNCTION_NAME,
5
- LOADABLE_STATS_FILE,
6
- isUseSSRBundle,
7
- createRuntimeExportsUtils,
8
- isSSGEntry
9
- } from "@modern-js/utils";
2
+ import { getEntryOptions, SERVER_RENDER_FUNCTION_NAME, LOADABLE_STATS_FILE, isUseSSRBundle, createRuntimeExportsUtils, isSSGEntry } from "@modern-js/utils";
10
3
  const PLUGIN_IDENTIFIER = "ssr";
11
4
  const hasStringSSREntry = (userConfig) => {
12
5
  const isStreaming = (ssr) => ssr && typeof ssr === "object" && ssr.mode === "stream";
13
6
  const { server } = userConfig;
14
- if ((server == null ? void 0 : server.ssr) && !isStreaming(server.ssr)) {
7
+ if ((server === null || server === void 0 ? void 0 : server.ssr) && !isStreaming(server.ssr)) {
15
8
  return true;
16
9
  }
17
- if ((server == null ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
10
+ if ((server === null || server === void 0 ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
18
11
  for (const name of Object.keys(server.ssrByEntries)) {
19
12
  if (!isStreaming(server.ssrByEntries[name])) {
20
13
  return true;
@@ -23,131 +16,119 @@ const hasStringSSREntry = (userConfig) => {
23
16
  }
24
17
  return false;
25
18
  };
26
- var cli_default = () => ({
27
- name: "@modern-js/plugin-ssr",
28
- required: ["@modern-js/runtime"],
29
- setup: (api) => {
30
- const ssrConfigMap = /* @__PURE__ */ new Map();
31
- let pluginsExportsUtils;
32
- return {
33
- config() {
34
- const appContext = api.useAppContext();
35
- pluginsExportsUtils = createRuntimeExportsUtils(
36
- appContext.internalDirectory,
37
- "plugins"
38
- );
39
- const { bundlerType = "webpack" } = api.useAppContext();
40
- const babelConfig = bundlerType === "webpack" ? (config) => {
41
- var _a, _b;
42
- (_a = config.plugins) == null ? void 0 : _a.push(
43
- path.join(__dirname, "./babel-plugin-ssr-loader-id")
44
- );
45
- const userConfig = api.useResolvedConfigContext();
46
- if (isUseSSRBundle(userConfig) && hasStringSSREntry(userConfig)) {
47
- (_b = config.plugins) == null ? void 0 : _b.push(
48
- require.resolve("@loadable/babel-plugin")
49
- );
50
- }
51
- } : void 0;
52
- return {
53
- source: {
54
- alias: {
55
- // ensure that all packages use the same storage in @modern-js/utils/ssr
56
- "@modern-js/utils/ssr": require.resolve("@modern-js/utils/ssr"),
57
- "@modern-js/runtime/plugins": pluginsExportsUtils.getPath()
58
- },
59
- globalVars: (values, { target }) => {
60
- values["process.env.MODERN_TARGET"] = target === "node" || target === "service-worker" ? "node" : "browser";
19
+ export default () => {
20
+ return {
21
+ name: "@modern-js/plugin-ssr",
22
+ required: [
23
+ "@modern-js/runtime"
24
+ ],
25
+ setup: (api) => {
26
+ const ssrConfigMap = /* @__PURE__ */ new Map();
27
+ let pluginsExportsUtils;
28
+ return {
29
+ config() {
30
+ const appContext = api.useAppContext();
31
+ pluginsExportsUtils = createRuntimeExportsUtils(appContext.internalDirectory, "plugins");
32
+ const { bundlerType = "webpack" } = api.useAppContext();
33
+ const babelConfig = bundlerType === "webpack" ? (config) => {
34
+ var _config_plugins;
35
+ (_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(path.join(__dirname, "./babel-plugin-ssr-loader-id"));
36
+ const userConfig = api.useResolvedConfigContext();
37
+ if (isUseSSRBundle(userConfig) && hasStringSSREntry(userConfig)) {
38
+ var _config_plugins1;
39
+ (_config_plugins1 = config.plugins) === null || _config_plugins1 === void 0 ? void 0 : _config_plugins1.push(require.resolve("@loadable/babel-plugin"));
61
40
  }
62
- },
63
- tools: {
64
- webpackChain: (chain, { isServer, isServiceWorker, CHAIN_ID }) => {
65
- const userConfig = api.useResolvedConfigContext();
66
- if (isUseSSRBundle(userConfig) && !isServer && !isServiceWorker && hasStringSSREntry(userConfig)) {
67
- const LoadableWebpackPlugin = require("@loadable/webpack-plugin");
68
- chain.plugin(CHAIN_ID.PLUGIN.LOADABLE).use(LoadableWebpackPlugin, [
69
- { filename: LOADABLE_STATS_FILE }
70
- ]);
41
+ } : void 0;
42
+ return {
43
+ source: {
44
+ alias: {
45
+ // ensure that all packages use the same storage in @modern-js/utils/ssr
46
+ "@modern-js/utils/ssr": require.resolve("@modern-js/utils/ssr"),
47
+ "@modern-js/runtime/plugins": pluginsExportsUtils.getPath()
48
+ },
49
+ globalVars: (values, { target }) => {
50
+ values["process.env.MODERN_TARGET"] = target === "node" || target === "service-worker" ? "node" : "browser";
71
51
  }
72
52
  },
73
- babel: babelConfig
53
+ tools: {
54
+ webpackChain: (chain, { isServer, isServiceWorker, CHAIN_ID }) => {
55
+ const userConfig = api.useResolvedConfigContext();
56
+ if (isUseSSRBundle(userConfig) && !isServer && !isServiceWorker && hasStringSSREntry(userConfig)) {
57
+ const LoadableWebpackPlugin = require("@loadable/webpack-plugin");
58
+ chain.plugin(CHAIN_ID.PLUGIN.LOADABLE).use(LoadableWebpackPlugin, [
59
+ {
60
+ filename: LOADABLE_STATS_FILE
61
+ }
62
+ ]);
63
+ }
64
+ },
65
+ babel: babelConfig
66
+ }
67
+ };
68
+ },
69
+ modifyEntryImports({ entrypoint, imports }) {
70
+ const { entryName, fileSystemRoutes } = entrypoint;
71
+ const userConfig = api.useResolvedConfigContext();
72
+ const { packageName, entrypoints } = api.useAppContext();
73
+ pluginsExportsUtils.addExport(`export { default as ssr } from '@modern-js/runtime/ssr'`);
74
+ const ssrConfig = getEntryOptions(entryName, userConfig.server.ssr, userConfig.server.ssrByEntries, packageName);
75
+ if (typeof ssrConfig === "object" && ssrConfig.mode === "stream") {
76
+ var _ref;
77
+ const runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
78
+ if (((_ref = runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.router) === null || _ref === void 0 ? void 0 : _ref.mode) === "react-router-5") {
79
+ throw new Error(`router v5 plugin doesn't support streaming SSR, check your config 'runtime.router'`);
80
+ }
81
+ if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
82
+ throw new Error(`You should switch to file-system based router to support streaming SSR.`);
83
+ }
74
84
  }
75
- };
76
- },
77
- modifyEntryImports({ entrypoint, imports }) {
78
- var _a;
79
- const { entryName, fileSystemRoutes } = entrypoint;
80
- const userConfig = api.useResolvedConfigContext();
81
- const { packageName, entrypoints } = api.useAppContext();
82
- pluginsExportsUtils.addExport(
83
- `export { default as ssr } from '@modern-js/runtime/ssr'`
84
- );
85
- const ssrConfig = getEntryOptions(
86
- entryName,
87
- userConfig.server.ssr,
88
- userConfig.server.ssrByEntries,
89
- packageName
90
- );
91
- if (typeof ssrConfig === "object" && ssrConfig.mode === "stream") {
92
- const runtimeConfig = getEntryOptions(
93
- entryName,
94
- userConfig.runtime,
95
- userConfig.runtimeByEntries,
96
- packageName
97
- );
98
- if (((_a = runtimeConfig == null ? void 0 : runtimeConfig.router) == null ? void 0 : _a.mode) === "react-router-5") {
99
- throw new Error(
100
- `router v5 plugin doesn't support streaming SSR, check your config 'runtime.router'`
101
- );
85
+ const useSSG = isSSGEntry(userConfig, entryName, entrypoints);
86
+ ssrConfigMap.set(entryName, ssrConfig || useSSG);
87
+ if (ssrConfig || useSSG) {
88
+ imports.push({
89
+ value: "@modern-js/runtime/plugins",
90
+ specifiers: [
91
+ {
92
+ imported: PLUGIN_IDENTIFIER
93
+ }
94
+ ]
95
+ });
102
96
  }
103
- if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
104
- throw new Error(
105
- `You should switch to file-system based router to support streaming SSR.`
106
- );
97
+ return {
98
+ entrypoint,
99
+ imports
100
+ };
101
+ },
102
+ modifyEntryRuntimePlugins({ entrypoint, plugins }) {
103
+ if (ssrConfigMap.get(entrypoint.entryName)) {
104
+ plugins.push({
105
+ name: PLUGIN_IDENTIFIER,
106
+ options: JSON.stringify(ssrConfigMap.get(entrypoint.entryName))
107
+ });
107
108
  }
108
- }
109
- const useSSG = isSSGEntry(userConfig, entryName, entrypoints);
110
- ssrConfigMap.set(entryName, ssrConfig || useSSG);
111
- if (ssrConfig || useSSG) {
112
- imports.push({
113
- value: "@modern-js/runtime/plugins",
114
- specifiers: [{ imported: PLUGIN_IDENTIFIER }]
115
- });
116
- }
117
- return {
118
- entrypoint,
119
- imports
120
- };
121
- },
122
- modifyEntryRuntimePlugins({ entrypoint, plugins }) {
123
- if (ssrConfigMap.get(entrypoint.entryName)) {
124
- plugins.push({
125
- name: PLUGIN_IDENTIFIER,
126
- options: JSON.stringify(ssrConfigMap.get(entrypoint.entryName))
127
- });
128
- }
129
- return {
130
- entrypoint,
131
- plugins
132
- };
133
- },
134
- modifyEntryExport({ entrypoint, exportStatement }) {
135
- if (ssrConfigMap.get(entrypoint.entryName)) {
136
109
  return {
137
110
  entrypoint,
138
- exportStatement: [
139
- `export function ${SERVER_RENDER_FUNCTION_NAME}(context) {
111
+ plugins
112
+ };
113
+ },
114
+ modifyEntryExport({ entrypoint, exportStatement }) {
115
+ if (ssrConfigMap.get(entrypoint.entryName)) {
116
+ return {
117
+ entrypoint,
118
+ exportStatement: [
119
+ `export function ${SERVER_RENDER_FUNCTION_NAME}(context) {
140
120
  return bootstrap(AppWrapper, context)
141
121
  }`,
142
- exportStatement
143
- ].join("\n")
122
+ exportStatement
123
+ ].join("\n")
124
+ };
125
+ }
126
+ return {
127
+ entrypoint,
128
+ exportStatement
144
129
  };
145
130
  }
146
- return { entrypoint, exportStatement };
147
- }
148
- };
149
- }
150
- });
151
- export {
152
- cli_default as default
131
+ };
132
+ }
133
+ };
153
134
  };