@modern-js/app-tools 2.0.0-beta.2 → 2.0.0-canary.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 (231) hide show
  1. package/CHANGELOG.md +251 -0
  2. package/bin/modern.js +10 -1
  3. package/dist/js/modern/analyze/constants.js +38 -16
  4. package/dist/js/modern/analyze/generateCode.js +271 -211
  5. package/dist/js/modern/analyze/getBundleEntry.js +31 -32
  6. package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +93 -49
  7. package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +89 -47
  8. package/dist/js/modern/analyze/getClientRoutes/index.js +6 -2
  9. package/dist/js/modern/analyze/getClientRoutes/utils.js +23 -10
  10. package/dist/js/modern/analyze/getFileSystemEntry.js +43 -22
  11. package/dist/js/modern/analyze/getHtmlTemplate.js +89 -49
  12. package/dist/js/modern/analyze/getServerRoutes.js +122 -126
  13. package/dist/js/modern/analyze/index.js +193 -159
  14. package/dist/js/modern/analyze/isDefaultExportFunction.js +30 -16
  15. package/dist/js/modern/analyze/makeLegalIdentifier.js +10 -11
  16. package/dist/js/modern/analyze/nestedRoutes.js +110 -53
  17. package/dist/js/modern/analyze/templates.js +190 -77
  18. package/dist/js/modern/analyze/utils.js +98 -51
  19. package/dist/js/modern/builder/builderPlugins/compatModern.js +124 -107
  20. package/dist/js/modern/builder/index.js +123 -86
  21. package/dist/js/modern/builder/loaders/routerLoader.js +17 -0
  22. package/dist/js/modern/builder/loaders/serverModuleLoader.js +7 -0
  23. package/dist/js/modern/builder/share.js +22 -20
  24. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
  25. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
  26. package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +98 -84
  27. package/dist/js/modern/commands/build.js +67 -42
  28. package/dist/js/modern/commands/deploy.js +27 -4
  29. package/dist/js/modern/commands/dev.js +93 -47
  30. package/dist/js/modern/commands/index.js +1 -1
  31. package/dist/js/modern/commands/inspect.js +30 -5
  32. package/dist/js/modern/commands/start.js +37 -16
  33. package/dist/js/modern/config/default.js +103 -114
  34. package/dist/js/modern/config/index.js +8 -2
  35. package/dist/js/modern/config/initial/createHtmlConfig.js +5 -2
  36. package/dist/js/modern/config/initial/createOutputConfig.js +11 -9
  37. package/dist/js/modern/config/initial/createSourceConfig.js +5 -2
  38. package/dist/js/modern/config/initial/createToolsConfig.js +7 -6
  39. package/dist/js/modern/config/initial/index.js +9 -4
  40. package/dist/js/modern/config/initial/inits.js +109 -73
  41. package/dist/js/modern/config/initial/transformNormalizedConfig.js +6 -3
  42. package/dist/js/modern/defineConfig.js +26 -11
  43. package/dist/js/modern/exports/server.js +4 -1
  44. package/dist/js/modern/hooks.js +10 -3
  45. package/dist/js/modern/index.js +140 -89
  46. package/dist/js/modern/initialize/index.js +98 -51
  47. package/dist/js/modern/locale/en.js +20 -21
  48. package/dist/js/modern/locale/index.js +6 -6
  49. package/dist/js/modern/locale/zh.js +21 -22
  50. package/dist/js/modern/schema/Schema.js +6 -5
  51. package/dist/js/modern/schema/index.js +51 -100
  52. package/dist/js/modern/schema/legacy.js +96 -231
  53. package/dist/js/modern/types/config/index.js +0 -1
  54. package/dist/js/modern/types/index.js +0 -1
  55. package/dist/js/modern/types/legacyConfig/output.js +0 -1
  56. package/dist/js/modern/utils/commands.js +5 -2
  57. package/dist/js/modern/utils/config.js +102 -41
  58. package/dist/js/modern/utils/createFileWatcher.js +84 -51
  59. package/dist/js/modern/utils/createServer.js +63 -17
  60. package/dist/js/modern/utils/getSpecifiedEntries.js +46 -19
  61. package/dist/js/modern/utils/language.js +6 -3
  62. package/dist/js/modern/utils/printInstructions.js +27 -8
  63. package/dist/js/modern/utils/restart.js +43 -16
  64. package/dist/js/modern/utils/routes.js +29 -12
  65. package/dist/js/node/analyze/constants.js +54 -35
  66. package/dist/js/node/analyze/generateCode.js +290 -228
  67. package/dist/js/node/analyze/getBundleEntry.js +55 -44
  68. package/dist/js/node/analyze/getClientRoutes/getRoutes.js +132 -76
  69. package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +128 -74
  70. package/dist/js/node/analyze/getClientRoutes/index.js +23 -17
  71. package/dist/js/node/analyze/getClientRoutes/utils.js +44 -21
  72. package/dist/js/node/analyze/getFileSystemEntry.js +70 -39
  73. package/dist/js/node/analyze/getHtmlTemplate.js +116 -61
  74. package/dist/js/node/analyze/getServerRoutes.js +143 -137
  75. package/dist/js/node/analyze/index.js +240 -174
  76. package/dist/js/node/analyze/isDefaultExportFunction.js +55 -26
  77. package/dist/js/node/analyze/makeLegalIdentifier.js +27 -15
  78. package/dist/js/node/analyze/nestedRoutes.js +140 -67
  79. package/dist/js/node/analyze/templates.js +211 -84
  80. package/dist/js/node/analyze/utils.js +123 -62
  81. package/dist/js/node/builder/builderPlugins/compatModern.js +152 -120
  82. package/dist/js/node/builder/index.js +151 -95
  83. package/dist/js/node/builder/loaders/routerLoader.js +36 -0
  84. package/dist/js/node/builder/loaders/serverModuleLoader.js +26 -0
  85. package/dist/js/node/builder/share.js +45 -25
  86. package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +39 -26
  87. package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +47 -31
  88. package/dist/js/node/builder/webpackPlugins/routerPlugin.js +116 -90
  89. package/dist/js/node/commands/build.js +89 -52
  90. package/dist/js/node/commands/deploy.js +45 -10
  91. package/dist/js/node/commands/dev.js +115 -61
  92. package/dist/js/node/commands/index.js +19 -38
  93. package/dist/js/node/commands/inspect.js +48 -11
  94. package/dist/js/node/commands/start.js +65 -27
  95. package/dist/js/node/config/default.js +119 -118
  96. package/dist/js/node/config/index.js +25 -29
  97. package/dist/js/node/config/initial/createHtmlConfig.js +22 -6
  98. package/dist/js/node/config/initial/createOutputConfig.js +28 -13
  99. package/dist/js/node/config/initial/createSourceConfig.js +22 -6
  100. package/dist/js/node/config/initial/createToolsConfig.js +24 -10
  101. package/dist/js/node/config/initial/index.js +28 -17
  102. package/dist/js/node/config/initial/inits.js +126 -81
  103. package/dist/js/node/config/initial/transformNormalizedConfig.js +31 -15
  104. package/dist/js/node/defineConfig.js +43 -17
  105. package/dist/js/node/exports/server.js +21 -10
  106. package/dist/js/node/hooks.js +44 -29
  107. package/dist/js/node/index.js +190 -130
  108. package/dist/js/node/initialize/index.js +116 -61
  109. package/dist/js/node/locale/en.js +36 -25
  110. package/dist/js/node/locale/index.js +27 -15
  111. package/dist/js/node/locale/zh.js +37 -26
  112. package/dist/js/node/schema/Schema.js +23 -10
  113. package/dist/js/node/schema/index.js +77 -114
  114. package/dist/js/node/schema/legacy.js +117 -240
  115. package/dist/js/node/types/config/index.js +17 -16
  116. package/dist/js/node/types/index.js +19 -38
  117. package/dist/js/node/types/legacyConfig/output.js +0 -5
  118. package/dist/js/node/utils/commands.js +21 -6
  119. package/dist/js/node/utils/config.js +120 -51
  120. package/dist/js/node/utils/createFileWatcher.js +104 -60
  121. package/dist/js/node/utils/createServer.js +86 -25
  122. package/dist/js/node/utils/getSpecifiedEntries.js +64 -25
  123. package/dist/js/node/utils/language.js +24 -8
  124. package/dist/js/node/utils/printInstructions.js +47 -16
  125. package/dist/js/node/utils/restart.js +61 -21
  126. package/dist/js/node/utils/routes.js +53 -18
  127. package/dist/js/treeshaking/analyze/constants.js +28 -16
  128. package/dist/js/treeshaking/analyze/generateCode.js +604 -355
  129. package/dist/js/treeshaking/analyze/getBundleEntry.js +52 -63
  130. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +214 -168
  131. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +215 -169
  132. package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -2
  133. package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +19 -20
  134. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +89 -86
  135. package/dist/js/treeshaking/analyze/getHtmlTemplate.js +298 -125
  136. package/dist/js/treeshaking/analyze/getServerRoutes.js +210 -146
  137. package/dist/js/treeshaking/analyze/index.js +558 -303
  138. package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +45 -26
  139. package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -16
  140. package/dist/js/treeshaking/analyze/nestedRoutes.js +414 -160
  141. package/dist/js/treeshaking/analyze/templates.js +432 -161
  142. package/dist/js/treeshaking/analyze/utils.js +361 -80
  143. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +281 -195
  144. package/dist/js/treeshaking/builder/index.js +371 -165
  145. package/dist/js/treeshaking/builder/loaders/routerLoader.js +13 -0
  146. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +5 -0
  147. package/dist/js/treeshaking/builder/share.js +41 -44
  148. package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
  149. package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
  150. package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +332 -112
  151. package/dist/js/treeshaking/commands/build.js +286 -88
  152. package/dist/js/treeshaking/commands/deploy.js +153 -25
  153. package/dist/js/treeshaking/commands/dev.js +318 -132
  154. package/dist/js/treeshaking/commands/index.js +1 -1
  155. package/dist/js/treeshaking/commands/inspect.js +147 -32
  156. package/dist/js/treeshaking/commands/start.js +190 -68
  157. package/dist/js/treeshaking/config/default.js +210 -199
  158. package/dist/js/treeshaking/config/index.js +3 -2
  159. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -31
  160. package/dist/js/treeshaking/config/initial/createOutputConfig.js +43 -67
  161. package/dist/js/treeshaking/config/initial/createSourceConfig.js +37 -40
  162. package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -38
  163. package/dist/js/treeshaking/config/initial/index.js +10 -9
  164. package/dist/js/treeshaking/config/initial/inits.js +205 -106
  165. package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +27 -34
  166. package/dist/js/treeshaking/defineConfig.js +60 -13
  167. package/dist/js/treeshaking/exports/server.js +2 -1
  168. package/dist/js/treeshaking/hooks.js +26 -25
  169. package/dist/js/treeshaking/index.js +465 -257
  170. package/dist/js/treeshaking/initialize/index.js +290 -112
  171. package/dist/js/treeshaking/locale/en.js +34 -33
  172. package/dist/js/treeshaking/locale/index.js +5 -5
  173. package/dist/js/treeshaking/locale/zh.js +34 -33
  174. package/dist/js/treeshaking/schema/Schema.js +267 -69
  175. package/dist/js/treeshaking/schema/index.js +165 -121
  176. package/dist/js/treeshaking/schema/legacy.js +323 -256
  177. package/dist/js/treeshaking/types/config/deploy.js +1 -0
  178. package/dist/js/treeshaking/types/config/dev.js +1 -0
  179. package/dist/js/treeshaking/types/config/experiments.js +1 -0
  180. package/dist/js/treeshaking/types/config/html.js +1 -0
  181. package/dist/js/treeshaking/types/config/index.js +0 -1
  182. package/dist/js/treeshaking/types/config/output.js +1 -0
  183. package/dist/js/treeshaking/types/config/performance.js +1 -0
  184. package/dist/js/treeshaking/types/config/security.js +1 -0
  185. package/dist/js/treeshaking/types/config/source.js +1 -0
  186. package/dist/js/treeshaking/types/config/tools.js +1 -0
  187. package/dist/js/treeshaking/types/hooks.js +1 -0
  188. package/dist/js/treeshaking/types/index.js +0 -1
  189. package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
  190. package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
  191. package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
  192. package/dist/js/treeshaking/types/legacyConfig/output.js +1 -1
  193. package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
  194. package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
  195. package/dist/js/treeshaking/utils/commands.js +6 -5
  196. package/dist/js/treeshaking/utils/config.js +295 -117
  197. package/dist/js/treeshaking/utils/createFileWatcher.js +278 -118
  198. package/dist/js/treeshaking/utils/createServer.js +252 -67
  199. package/dist/js/treeshaking/utils/getSpecifiedEntries.js +182 -55
  200. package/dist/js/treeshaking/utils/language.js +6 -5
  201. package/dist/js/treeshaking/utils/printInstructions.js +151 -29
  202. package/dist/js/treeshaking/utils/restart.js +184 -42
  203. package/dist/js/treeshaking/utils/routes.js +151 -27
  204. package/dist/js/treeshaking/utils/types.js +1 -0
  205. package/dist/types/analyze/constants.d.ts +2 -0
  206. package/dist/types/analyze/index.d.ts +2 -0
  207. package/dist/types/analyze/templates.d.ts +8 -7
  208. package/dist/types/analyze/utils.d.ts +9 -1
  209. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  210. package/dist/types/builder/index.d.ts +2 -2
  211. package/dist/types/builder/loaders/routerLoader.d.ts +3 -0
  212. package/dist/types/builder/loaders/serverModuleLoader.d.ts +3 -0
  213. package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
  214. package/dist/types/defineConfig.d.ts +1 -0
  215. package/dist/types/index.d.ts +2 -0
  216. package/dist/types/initialize/index.d.ts +2 -0
  217. package/dist/types/types/config/index.d.ts +1 -0
  218. package/dist/types/types/config/output.d.ts +0 -1
  219. package/dist/types/types/config/source.d.ts +1 -0
  220. package/dist/types/types/config/tools.d.ts +10 -1
  221. package/dist/types/types/hooks.d.ts +2 -1
  222. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  223. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  224. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  225. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  226. package/dist/types/utils/config.d.ts +1 -0
  227. package/dist/types/utils/createFileWatcher.d.ts +2 -1
  228. package/dist/types/utils/createServer.d.ts +1 -0
  229. package/dist/types/utils/restart.d.ts +1 -1
  230. package/lib/types.d.ts +1 -1
  231. package/package.json +27 -23
@@ -1,170 +1,441 @@
1
- import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
- export var index = function index(_ref) {
4
- var mountId = _ref.mountId,
5
- imports = _ref.imports,
6
- renderFunction = _ref.renderFunction,
7
- exportStatement = _ref.exportStatement;
8
- return "\nconst IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';\nconst IS_REACT18 = process.env.IS_REACT18 === 'true';\nconst MOUNT_ID = '".concat(mountId, "';\n\n").concat(imports, "\n\nlet AppWrapper = null;\n\nlet root = null;\n\nfunction render() {\n ").concat(renderFunction, "\n}\n\nAppWrapper = render();\n\n").concat(exportStatement, ";\n");
9
- };
10
- export var renderFunction = function renderFunction(_ref2) {
11
- var plugins = _ref2.plugins,
12
- customBootstrap = _ref2.customBootstrap,
13
- fileSystemRoutes = _ref2.fileSystemRoutes;
14
- return "\n AppWrapper = createApp({\n plugins: [\n ".concat(plugins.map(function (_ref3) {
15
- var name = _ref3.name,
16
- options = _ref3.options,
17
- args = _ref3.args;
18
- return "".concat(name, "({...").concat(options, ", ...App?.config?.").concat(args || name, "}),");
19
- }).join('\n'), "\n ]\n })(").concat(fileSystemRoutes ? '' : "App", ")\n\n if (IS_BROWSER) {\n ").concat(customBootstrap ? "customBootstrap(AppWrapper);" : "bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM);", "\n }\n\n return AppWrapper\n");
20
- };
21
- export var html = function html(partials) {
22
- return "\n<!DOCTYPE html>\n<html>\n<head>\n <%= meta %>\n <title><%= title %></title>\n\n ".concat(partials.top.join('\n'), "\n\n <script>\n window.__assetPrefix__ = '<%= assetPrefix %>';\n </script>\n ").concat(partials.head.join('\n'), "\n\n <!--<?- chunksMap.css ?>-->\n</head>\n\n<body>\n <noscript>\n We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue.\n </noscript>\n <div id=\"<%= mountId %>\"><!--<?- html ?>--></div>\n ").concat(partials.body.join('\n'), "\n <!--<?- chunksMap.js ?>-->\n <!--<?- SSRDataScript ?>-->\n <!--<?- bottomTemplate ?>-->\n</body>\n\n</html>\n");
23
- };
24
- export var routesForServer = function routesForServer(_ref4) {
25
- var routes = _ref4.routes,
26
- alias = _ref4.alias;
27
- var name = alias.name,
28
- basename = alias.basename;
29
- var loaders = [];
30
- var traverseRouteTree = function traverseRouteTree(route) {
31
- var children;
32
- if ('children' in route && route.children) {
33
- var _route$children;
34
- children = route === null || route === void 0 ? void 0 : (_route$children = route.children) === null || _route$children === void 0 ? void 0 : _route$children.map(traverseRouteTree);
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
35
8
  }
36
- var loader;
37
- if (route.type === 'nested') {
38
- if (route.loader) {
39
- loaders.push(route.loader);
40
- loader = "loader_".concat(loaders.length - 1);
41
- }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
42
13
  }
43
- var finalRoute = _objectSpread(_objectSpread({}, route), {}, {
44
- loader: loader,
45
- children: children
46
- });
47
- return finalRoute;
48
- };
49
- var routesCode = "\n export const routes = [\n ";
50
- var _iterator = _createForOfIteratorHelper(routes),
51
- _step;
52
- try {
53
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
54
- var route = _step.value;
55
- if ('type' in route) {
56
- var newRoute = traverseRouteTree(route);
57
- routesCode += "".concat(JSON.stringify(newRoute, null, 2).replace(/"(loader_[^"])"/g, '$1'), ",");
58
- } else {
59
- routesCode += "".concat(JSON.stringify(route, null, 2));
60
- }
61
- }
62
- } catch (err) {
63
- _iterator.e(err);
64
- } finally {
65
- _iterator.f();
66
- }
67
- routesCode += "\n];";
68
- var importLoadersCode = loaders.map(function (loader, index) {
69
- var realLoaderPath = loader.replace(name, basename);
70
- return "import loader_".concat(index, " from '").concat(realLoaderPath, "';\n");
71
- }).join('');
72
- return "\n ".concat(importLoadersCode, "\n ").concat(routesCode, "\n ");
73
- };
74
- export var fileSystemRoutes = function fileSystemRoutes(_ref5) {
75
- var routes = _ref5.routes,
76
- ssrMode = _ref5.ssrMode,
77
- nestedRoutesEntry = _ref5.nestedRoutesEntry,
78
- entryName = _ref5.entryName;
79
- // The legacy mode and pages dir routes should use loadable
80
- // nested routes + renderTostring should use loadable.lazy
81
- // nested routes + renderToStream should use react.lazy
82
- var importLazyCode = "\n import { lazy } from \"react\";\n import loadable, { lazy as loadableLazy } from \"@modern-js/runtime/loadable\"\n ";
83
- var dataLoaderPath = '';
84
- if (ssrMode) {
85
- dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
86
- if (nestedRoutesEntry) {
87
- dataLoaderPath = "".concat(dataLoaderPath, "?routesDir=").concat(nestedRoutesEntry, "&entryName=").concat(entryName, "!");
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ function _defineProperty(obj, key, value) {
31
+ if (key in obj) {
32
+ Object.defineProperty(obj, key, {
33
+ value: value,
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true
37
+ });
38
+ } else {
39
+ obj[key] = value;
88
40
  }
89
- }
90
- var loadings = [];
91
- var errors = [];
92
- var loaders = [];
93
- var traverseRouteTree = function traverseRouteTree(route) {
94
- var children;
95
- if ('children' in route && route.children) {
96
- var _route$children2;
97
- children = route === null || route === void 0 ? void 0 : (_route$children2 = route.children) === null || _route$children2 === void 0 ? void 0 : _route$children2.map(traverseRouteTree);
41
+ return obj;
42
+ }
43
+ function _objectSpread(target) {
44
+ for(var i = 1; i < arguments.length; i++){
45
+ var source = arguments[i] != null ? arguments[i] : {};
46
+ var ownKeys = Object.keys(source);
47
+ if (typeof Object.getOwnPropertySymbols === "function") {
48
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
49
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
50
+ }));
51
+ }
52
+ ownKeys.forEach(function(key) {
53
+ _defineProperty(target, key, source[key]);
54
+ });
98
55
  }
99
- var loading;
100
- var error;
101
- var loader;
102
- var component = '';
103
- if (route.type === 'nested') {
104
- if (route.loading) {
105
- loadings.push(route.loading);
106
- loading = "loading_".concat(loadings.length - 1);
107
- }
108
- if (route.error) {
109
- errors.push(route.error);
110
- error = "error_".concat(errors.length - 1);
111
- }
112
- if (route.loader) {
113
- loaders.push(route.loader);
114
- loader = "loader_".concat(loaders.length - 1);
115
- }
116
- if (route._component) {
117
- if (ssrMode === 'stream') {
118
- component = "lazy(() => import(/* webpackChunkName: \"".concat(route.id, "\" */ /* webpackMode: \"lazy-once\" */ '").concat(route._component, "'))");
119
- } else {
120
- component = "loadable(() => import(/* webpackChunkName: \"".concat(route.id, "\" */ /* webpackMode: \"lazy-once\" */ '").concat(route._component, "'))");
56
+ return target;
57
+ }
58
+ function ownKeys(object, enumerableOnly) {
59
+ var keys = Object.keys(object);
60
+ if (Object.getOwnPropertySymbols) {
61
+ var symbols = Object.getOwnPropertySymbols(object);
62
+ if (enumerableOnly) {
63
+ symbols = symbols.filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
65
+ });
121
66
  }
122
- }
123
- } else if (route._component) {
124
- component = "loadable(() => import('".concat(route._component, "'))");
67
+ keys.push.apply(keys, symbols);
125
68
  }
126
- var finalRoute = _objectSpread(_objectSpread({}, route), {}, {
127
- loading: loading,
128
- loader: loader,
129
- error: error,
130
- children: children
131
- });
132
- if (route._component) {
133
- finalRoute.component = component;
69
+ return keys;
70
+ }
71
+ function _objectSpreadProps(target, source) {
72
+ source = source != null ? source : {};
73
+ if (Object.getOwnPropertyDescriptors) {
74
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
75
+ } else {
76
+ ownKeys(Object(source)).forEach(function(key) {
77
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
78
+ });
79
+ }
80
+ return target;
81
+ }
82
+ var __generator = this && this.__generator || function(thisArg, body) {
83
+ var f, y, t, g, _ = {
84
+ label: 0,
85
+ sent: function() {
86
+ if (t[0] & 1) throw t[1];
87
+ return t[1];
88
+ },
89
+ trys: [],
90
+ ops: []
91
+ };
92
+ return(g = {
93
+ next: verb(0),
94
+ "throw": verb(1),
95
+ "return": verb(2)
96
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
97
+ return this;
98
+ }), g);
99
+ function verb(n) {
100
+ return function(v) {
101
+ return step([
102
+ n,
103
+ v
104
+ ]);
105
+ };
134
106
  }
135
- return finalRoute;
136
- };
137
- var routeComponentsCode = "\n export const routes = [\n ";
138
- var _iterator2 = _createForOfIteratorHelper(routes),
139
- _step2;
140
- try {
141
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
142
- var route = _step2.value;
143
- if ('type' in route) {
144
- var newRoute = traverseRouteTree(route);
145
- routeComponentsCode += "".concat(JSON.stringify(newRoute, null, 2).replace(/"(loadable.*\))"/g, '$1').replace(/"(loadableLazy.*\))"/g, '$1').replace(/"(lazy.*\))"/g, '$1').replace(/"(loading_[^"])"/g, '$1').replace(/"(loader_[^"])"/g, '$1').replace(/"(error_[^"])"/g, '$1').replace(/\\"/g, '"'), ",");
146
- } else {
147
- var component = "loadable(() => import('".concat(route._component, "'))");
148
- var finalRoute = _objectSpread(_objectSpread({}, route), {}, {
149
- component: component
107
+ function step(op) {
108
+ if (f) throw new TypeError("Generator is already executing.");
109
+ while(_)try {
110
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
111
+ if (y = 0, t) op = [
112
+ op[0] & 2,
113
+ t.value
114
+ ];
115
+ switch(op[0]){
116
+ case 0:
117
+ case 1:
118
+ t = op;
119
+ break;
120
+ case 4:
121
+ _.label++;
122
+ return {
123
+ value: op[1],
124
+ done: false
125
+ };
126
+ case 5:
127
+ _.label++;
128
+ y = op[1];
129
+ op = [
130
+ 0
131
+ ];
132
+ continue;
133
+ case 7:
134
+ op = _.ops.pop();
135
+ _.trys.pop();
136
+ continue;
137
+ default:
138
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
139
+ _ = 0;
140
+ continue;
141
+ }
142
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
143
+ _.label = op[1];
144
+ break;
145
+ }
146
+ if (op[0] === 6 && _.label < t[1]) {
147
+ _.label = t[1];
148
+ t = op;
149
+ break;
150
+ }
151
+ if (t && _.label < t[2]) {
152
+ _.label = t[2];
153
+ _.ops.push(op);
154
+ break;
155
+ }
156
+ if (t[2]) _.ops.pop();
157
+ _.trys.pop();
158
+ continue;
159
+ }
160
+ op = body.call(thisArg, _);
161
+ } catch (e) {
162
+ op = [
163
+ 6,
164
+ e
165
+ ];
166
+ y = 0;
167
+ } finally{
168
+ f = t = 0;
169
+ }
170
+ if (op[0] & 5) throw op[1];
171
+ return {
172
+ value: op[0] ? op[1] : void 0,
173
+ done: true
174
+ };
175
+ }
176
+ };
177
+ import path from "path";
178
+ import { fs, slash } from "@modern-js/utils";
179
+ import { TEMP_LOADERS_DIR } from "./constants";
180
+ var index = function(param) {
181
+ var mountId = param.mountId, imports = param.imports, renderFunction2 = param.renderFunction, exportStatement = param.exportStatement;
182
+ return "\nconst IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';\nconst IS_REACT18 = process.env.IS_REACT18 === 'true';\nconst MOUNT_ID = '".concat(mountId, "';\n\n").concat(imports, "\n\nlet AppWrapper = null;\n\nlet root = null;\n\nfunction render() {\n ").concat(renderFunction2, "\n}\n\nAppWrapper = render();\n\n").concat(exportStatement, ";\n");
183
+ };
184
+ var renderFunction = function(param) {
185
+ var plugins = param.plugins, customBootstrap = param.customBootstrap, fileSystemRoutes2 = param.fileSystemRoutes;
186
+ return "\n AppWrapper = createApp({\n plugins: [\n ".concat(plugins.map(function(param) {
187
+ var name = param.name, options = param.options, args = param.args;
188
+ return "".concat(name, "({...").concat(options, ", ...App?.config?.").concat(args || name, "}),");
189
+ }).join("\n"), "\n ]\n })(").concat(fileSystemRoutes2 ? "" : "App", ")\n\n if (IS_BROWSER) {\n ").concat(customBootstrap ? "customBootstrap(AppWrapper);" : "bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM);", "\n }\n\n return AppWrapper\n");
190
+ };
191
+ var html = function(partials) {
192
+ return "\n<!DOCTYPE html>\n<html>\n<head>\n <%= meta %>\n <title><%= title %></title>\n\n ".concat(partials.top.join("\n"), "\n\n <script>\n window.__assetPrefix__ = '<%= assetPrefix %>';\n </script>\n ").concat(partials.head.join("\n"), "\n\n <!--<?- chunksMap.css ?>-->\n</head>\n\n<body>\n <noscript>\n We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue.\n </noscript>\n <div id=\"<%= mountId %>\"><!--<?- html ?>--></div>\n ").concat(partials.body.join("\n"), "\n <!--<?- chunksMap.js ?>-->\n <!--<?- SSRDataScript ?>-->\n <!--<?- bottomTemplate ?>-->\n</body>\n\n</html>\n");
193
+ };
194
+ var routesForServer = function(param) {
195
+ var routes = param.routes, internalDirectory = param.internalDirectory, entryName = param.entryName;
196
+ var loaders = [];
197
+ var loaderIndexFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, "index.js");
198
+ var traverseRouteTree = function(route) {
199
+ var children;
200
+ if ("children" in route && route.children) {
201
+ var ref;
202
+ children = route === null || route === void 0 ? void 0 : (ref = route.children) === null || ref === void 0 ? void 0 : ref.map(traverseRouteTree);
203
+ }
204
+ var loader;
205
+ if (route.type === "nested") {
206
+ if (route.loader) {
207
+ loaders.push(route.loader);
208
+ loader = "loader_".concat(loaders.length - 1);
209
+ }
210
+ }
211
+ var finalRoute = _objectSpreadProps(_objectSpread({}, route), {
212
+ loader: loader,
213
+ children: children
150
214
  });
151
- routeComponentsCode += "".concat(JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, '$1').replace(/"(lazy[^"]*)"/g, '$1'), ",");
152
- }
215
+ return finalRoute;
216
+ };
217
+ var routesCode = "\n export const routes = [\n ";
218
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
219
+ try {
220
+ for(var _iterator = routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
221
+ var route = _step.value;
222
+ if ("type" in route) {
223
+ var newRoute = traverseRouteTree(route);
224
+ routesCode += "".concat(JSON.stringify(newRoute, null, 2).replace(/"(loader_[^"])"/g, "$1"), ",");
225
+ } else {
226
+ routesCode += "".concat(JSON.stringify(route, null, 2));
227
+ }
228
+ }
229
+ } catch (err) {
230
+ _didIteratorError = true;
231
+ _iteratorError = err;
232
+ } finally{
233
+ try {
234
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
235
+ _iterator.return();
236
+ }
237
+ } finally{
238
+ if (_didIteratorError) {
239
+ throw _iteratorError;
240
+ }
241
+ }
242
+ }
243
+ routesCode += "\n];";
244
+ var importLoadersCode = "";
245
+ if (loaders.length > 0) {
246
+ importLoadersCode = "\n import { ".concat(loaders.map(function(loader, index2) {
247
+ return "loader_".concat(index2);
248
+ }), ' } from "').concat(slash(loaderIndexFile), '"');
153
249
  }
154
- } catch (err) {
155
- _iterator2.e(err);
156
- } finally {
157
- _iterator2.f();
158
- }
159
- routeComponentsCode += "\n];";
160
- var importLoadingCode = loadings.map(function (loading, index) {
161
- return "import loading_".concat(index, " from '").concat(loading, "';\n");
162
- }).join('');
163
- var importErrorComponentsCode = errors.map(function (error, index) {
164
- return "import error_".concat(index, " from '").concat(error, "';\n");
165
- }).join('');
166
- var importLoaderComponentsCode = loaders.map(function (loader, index) {
167
- return "import loader_".concat(index, " from '").concat(dataLoaderPath).concat(loader, "';\n");
168
- }).join('');
169
- return "\n ".concat(importLazyCode, "\n ").concat(importLoadingCode, "\n ").concat(importErrorComponentsCode, "\n ").concat(importLoaderComponentsCode, "\n ").concat(routeComponentsCode, "\n ");
170
- };
250
+ return "\n ".concat(importLoadersCode, "\n ").concat(routesCode, "\n ");
251
+ };
252
+ var fileSystemRoutes = function() {
253
+ var _ref = _asyncToGenerator(function(param) {
254
+ var routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, loadings, errors, loaders, loadersMap, loadersIndexFile, loadersMapFile, importLazyCode, rootLayoutCode, dataLoaderPath, componentLoaderPath, traverseRouteTree, routeComponentsCode, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, newRoute, component, finalRoute, importLoadingCode, importErrorComponentsCode, importLoadersCode, loaderEntryCode, loaderEntryFile;
255
+ return __generator(this, function(_state) {
256
+ switch(_state.label){
257
+ case 0:
258
+ routes = param.routes, ssrMode = param.ssrMode, nestedRoutesEntry = param.nestedRoutesEntry, entryName = param.entryName, internalDirectory = param.internalDirectory;
259
+ loadings = [];
260
+ errors = [];
261
+ loaders = [];
262
+ loadersMap = {};
263
+ loadersIndexFile = path.join("@_modern_js_internal", entryName, TEMP_LOADERS_DIR, "index.js");
264
+ loadersMapFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, "map.json");
265
+ importLazyCode = '\n import { lazy } from "react";\n import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"\n ';
266
+ rootLayoutCode = "";
267
+ dataLoaderPath = "";
268
+ componentLoaderPath = "";
269
+ if (ssrMode) {
270
+ dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
271
+ if (nestedRoutesEntry) {
272
+ dataLoaderPath = "".concat(dataLoaderPath, "?routesDir=").concat(nestedRoutesEntry, "&mapFile=").concat(loadersMapFile, "!");
273
+ }
274
+ componentLoaderPath = "".concat(path.join(__dirname, "../builder/loaders/routerLoader"), "!");
275
+ }
276
+ traverseRouteTree = function(route) {
277
+ var children;
278
+ if ("children" in route && route.children) {
279
+ var ref;
280
+ children = route === null || route === void 0 ? void 0 : (ref = route.children) === null || ref === void 0 ? void 0 : ref.map(traverseRouteTree);
281
+ }
282
+ var loading;
283
+ var error;
284
+ var loader;
285
+ var component = "";
286
+ if (route.type === "nested") {
287
+ if (route.loading) {
288
+ loadings.push(route.loading);
289
+ loading = "loading_".concat(loadings.length - 1);
290
+ }
291
+ if (route.error) {
292
+ errors.push(route.error);
293
+ error = "error_".concat(errors.length - 1);
294
+ }
295
+ if (route.loader) {
296
+ loaders.push(route.loader);
297
+ var loaderId = loaders.length - 1;
298
+ loader = "loader_".concat(loaderId);
299
+ loadersMap[loader] = route.id;
300
+ }
301
+ if (route._component) {
302
+ if (route.isRoot) {
303
+ rootLayoutCode = "import RootLayout from '".concat(route._component, "'");
304
+ component = "RootLayout";
305
+ } else if (ssrMode === "string") {
306
+ component = 'loadable(() => import(/* webpackChunkName: "'.concat(route.id, "\" */ '").concat(componentLoaderPath).concat(route._component, "'))");
307
+ } else {
308
+ component = 'lazy(() => import(/* webpackChunkName: "'.concat(route.id, "\" */ '").concat(componentLoaderPath).concat(route._component, "'))");
309
+ }
310
+ }
311
+ } else if (route._component) {
312
+ component = "loadable(() => import('".concat(route._component, "'))");
313
+ }
314
+ var finalRoute = _objectSpreadProps(_objectSpread({}, route), {
315
+ loading: loading,
316
+ loader: loader,
317
+ error: error,
318
+ children: children
319
+ });
320
+ if (route._component) {
321
+ finalRoute.component = component;
322
+ }
323
+ return finalRoute;
324
+ };
325
+ routeComponentsCode = "\n export const routes = [\n ";
326
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
327
+ try {
328
+ for(_iterator = routes[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
329
+ route = _step.value;
330
+ if ("type" in route) {
331
+ newRoute = traverseRouteTree(route);
332
+ routeComponentsCode += "".concat(JSON.stringify(newRoute, null, 2).replace(/"(loadable.*\))"/g, "$1").replace(/"(loadableLazy.*\))"/g, "$1").replace(/"(lazy.*\))"/g, "$1").replace(/"(loading_[^"])"/g, "$1").replace(/"(loader_[^"])"/g, "$1").replace(/"(RootLayout)"/g, "$1").replace(/"(error_[^"])"/g, "$1").replace(/\\"/g, '"'), ",");
333
+ } else {
334
+ component = "loadable(() => import('".concat(route._component, "'))");
335
+ finalRoute = _objectSpreadProps(_objectSpread({}, route), {
336
+ component: component
337
+ });
338
+ routeComponentsCode += "".concat(JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, "$1").replace(/"(lazy[^"]*)"/g, "$1"), ",");
339
+ }
340
+ }
341
+ } catch (err) {
342
+ _didIteratorError = true;
343
+ _iteratorError = err;
344
+ } finally{
345
+ try {
346
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
347
+ _iterator.return();
348
+ }
349
+ } finally{
350
+ if (_didIteratorError) {
351
+ throw _iteratorError;
352
+ }
353
+ }
354
+ }
355
+ routeComponentsCode += "\n];";
356
+ importLoadingCode = loadings.map(function(loading, index2) {
357
+ return "import loading_".concat(index2, " from '").concat(loading, "';\n");
358
+ }).join("");
359
+ importErrorComponentsCode = errors.map(function(error, index2) {
360
+ return "import error_".concat(index2, " from '").concat(error, "';\n");
361
+ }).join("");
362
+ importLoadersCode = "";
363
+ if (!(loaders.length > 0)) return [
364
+ 3,
365
+ 5
366
+ ];
367
+ importLoadersCode = "\n import { ".concat(loaders.map(function(loader, index2) {
368
+ return "loader_".concat(index2);
369
+ }), ' } from "').concat(slash(dataLoaderPath)).concat(slash(loadersIndexFile), '"\n ');
370
+ loaderEntryCode = loaders.map(function(loader, index2) {
371
+ return "export * from './loader_".concat(index2, ".js';");
372
+ }).join("\n");
373
+ loaderEntryFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, "entry.js");
374
+ return [
375
+ 4,
376
+ fs.ensureFile(loaderEntryFile)
377
+ ];
378
+ case 1:
379
+ _state.sent();
380
+ return [
381
+ 4,
382
+ fs.writeFile(loaderEntryFile, loaderEntryCode)
383
+ ];
384
+ case 2:
385
+ _state.sent();
386
+ return [
387
+ 4,
388
+ fs.writeJSON(loadersMapFile, loadersMap)
389
+ ];
390
+ case 3:
391
+ _state.sent();
392
+ return [
393
+ 4,
394
+ Promise.all(loaders.map(function() {
395
+ var _ref = _asyncToGenerator(function(loader, index2) {
396
+ var name, filename, code;
397
+ return __generator(this, function(_state) {
398
+ switch(_state.label){
399
+ case 0:
400
+ name = "loader_".concat(index2);
401
+ filename = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, "".concat(name, ".js"));
402
+ code = "\n export { loader as ".concat(name, " } from '").concat(slash(loader), "'\n ");
403
+ return [
404
+ 4,
405
+ fs.ensureFile(filename)
406
+ ];
407
+ case 1:
408
+ _state.sent();
409
+ return [
410
+ 4,
411
+ fs.writeFile(filename, code)
412
+ ];
413
+ case 2:
414
+ _state.sent();
415
+ return [
416
+ 2
417
+ ];
418
+ }
419
+ });
420
+ });
421
+ return function(loader, index2) {
422
+ return _ref.apply(this, arguments);
423
+ };
424
+ }()))
425
+ ];
426
+ case 4:
427
+ _state.sent();
428
+ _state.label = 5;
429
+ case 5:
430
+ return [
431
+ 2,
432
+ "\n ".concat(importLazyCode, "\n ").concat(rootLayoutCode, "\n ").concat(importLoadingCode, "\n ").concat(importErrorComponentsCode, "\n ").concat(importLoadersCode, "\n ").concat(routeComponentsCode, "\n ")
433
+ ];
434
+ }
435
+ });
436
+ });
437
+ return function fileSystemRoutes(_) {
438
+ return _ref.apply(this, arguments);
439
+ };
440
+ }();
441
+ export { fileSystemRoutes, html, index, renderFunction, routesForServer };