@modern-js/app-tools 2.0.0-beta.2 → 2.0.0-beta.4

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 (236) hide show
  1. package/CHANGELOG.md +556 -0
  2. package/bin/modern.js +11 -1
  3. package/dist/js/modern/analyze/Builder.js +39 -0
  4. package/dist/js/modern/analyze/constants.js +38 -16
  5. package/dist/js/modern/analyze/generateCode.js +272 -211
  6. package/dist/js/modern/analyze/getBundleEntry.js +34 -32
  7. package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +93 -49
  8. package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +89 -47
  9. package/dist/js/modern/analyze/getClientRoutes/index.js +6 -2
  10. package/dist/js/modern/analyze/getClientRoutes/utils.js +23 -10
  11. package/dist/js/modern/analyze/getFileSystemEntry.js +43 -22
  12. package/dist/js/modern/analyze/getHtmlTemplate.js +89 -49
  13. package/dist/js/modern/analyze/getServerRoutes.js +122 -126
  14. package/dist/js/modern/analyze/index.js +201 -160
  15. package/dist/js/modern/analyze/isDefaultExportFunction.js +30 -16
  16. package/dist/js/modern/analyze/makeLegalIdentifier.js +10 -11
  17. package/dist/js/modern/analyze/nestedRoutes.js +110 -53
  18. package/dist/js/modern/analyze/templates.js +191 -77
  19. package/dist/js/modern/analyze/utils.js +98 -51
  20. package/dist/js/modern/builder/builderPlugins/compatModern.js +125 -107
  21. package/dist/js/modern/builder/index.js +124 -89
  22. package/dist/js/modern/builder/loaders/routerLoader.js +17 -0
  23. package/dist/js/modern/builder/loaders/serverModuleLoader.js +7 -0
  24. package/dist/js/modern/builder/share.js +23 -21
  25. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
  26. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
  27. package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +100 -84
  28. package/dist/js/modern/commands/build.js +67 -42
  29. package/dist/js/modern/commands/deploy.js +27 -4
  30. package/dist/js/modern/commands/dev.js +93 -47
  31. package/dist/js/modern/commands/index.js +1 -1
  32. package/dist/js/modern/commands/inspect.js +30 -5
  33. package/dist/js/modern/commands/start.js +37 -16
  34. package/dist/js/modern/config/default.js +103 -114
  35. package/dist/js/modern/config/index.js +8 -2
  36. package/dist/js/modern/config/initial/createHtmlConfig.js +5 -2
  37. package/dist/js/modern/config/initial/createOutputConfig.js +11 -9
  38. package/dist/js/modern/config/initial/createSourceConfig.js +5 -2
  39. package/dist/js/modern/config/initial/createToolsConfig.js +7 -6
  40. package/dist/js/modern/config/initial/index.js +9 -4
  41. package/dist/js/modern/config/initial/inits.js +109 -73
  42. package/dist/js/modern/config/initial/transformNormalizedConfig.js +6 -3
  43. package/dist/js/modern/defineConfig.js +26 -11
  44. package/dist/js/modern/exports/server.js +4 -1
  45. package/dist/js/modern/hooks.js +15 -4
  46. package/dist/js/modern/index.js +178 -90
  47. package/dist/js/modern/initialize/index.js +98 -51
  48. package/dist/js/modern/locale/en.js +20 -21
  49. package/dist/js/modern/locale/index.js +6 -6
  50. package/dist/js/modern/locale/zh.js +21 -22
  51. package/dist/js/modern/schema/Schema.js +6 -5
  52. package/dist/js/modern/schema/index.js +51 -100
  53. package/dist/js/modern/schema/legacy.js +96 -231
  54. package/dist/js/modern/types/config/index.js +0 -1
  55. package/dist/js/modern/types/index.js +0 -1
  56. package/dist/js/modern/types/legacyConfig/output.js +0 -1
  57. package/dist/js/modern/utils/commands.js +5 -2
  58. package/dist/js/modern/utils/config.js +102 -41
  59. package/dist/js/modern/utils/createFileWatcher.js +84 -51
  60. package/dist/js/modern/utils/createServer.js +63 -17
  61. package/dist/js/modern/utils/getSpecifiedEntries.js +46 -19
  62. package/dist/js/modern/utils/language.js +6 -3
  63. package/dist/js/modern/utils/printInstructions.js +27 -8
  64. package/dist/js/modern/utils/restart.js +43 -16
  65. package/dist/js/modern/utils/routes.js +29 -12
  66. package/dist/js/node/analyze/Builder.js +58 -0
  67. package/dist/js/node/analyze/constants.js +54 -35
  68. package/dist/js/node/analyze/generateCode.js +291 -228
  69. package/dist/js/node/analyze/getBundleEntry.js +58 -44
  70. package/dist/js/node/analyze/getClientRoutes/getRoutes.js +132 -76
  71. package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +128 -74
  72. package/dist/js/node/analyze/getClientRoutes/index.js +23 -17
  73. package/dist/js/node/analyze/getClientRoutes/utils.js +44 -21
  74. package/dist/js/node/analyze/getFileSystemEntry.js +70 -39
  75. package/dist/js/node/analyze/getHtmlTemplate.js +116 -61
  76. package/dist/js/node/analyze/getServerRoutes.js +143 -137
  77. package/dist/js/node/analyze/index.js +247 -174
  78. package/dist/js/node/analyze/isDefaultExportFunction.js +55 -26
  79. package/dist/js/node/analyze/makeLegalIdentifier.js +27 -15
  80. package/dist/js/node/analyze/nestedRoutes.js +140 -67
  81. package/dist/js/node/analyze/templates.js +212 -84
  82. package/dist/js/node/analyze/utils.js +123 -62
  83. package/dist/js/node/builder/builderPlugins/compatModern.js +153 -120
  84. package/dist/js/node/builder/index.js +152 -98
  85. package/dist/js/node/builder/loaders/routerLoader.js +36 -0
  86. package/dist/js/node/builder/loaders/serverModuleLoader.js +26 -0
  87. package/dist/js/node/builder/share.js +46 -26
  88. package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +39 -26
  89. package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +47 -31
  90. package/dist/js/node/builder/webpackPlugins/routerPlugin.js +118 -90
  91. package/dist/js/node/commands/build.js +89 -52
  92. package/dist/js/node/commands/deploy.js +45 -10
  93. package/dist/js/node/commands/dev.js +115 -61
  94. package/dist/js/node/commands/index.js +19 -38
  95. package/dist/js/node/commands/inspect.js +48 -11
  96. package/dist/js/node/commands/start.js +65 -27
  97. package/dist/js/node/config/default.js +119 -118
  98. package/dist/js/node/config/index.js +25 -29
  99. package/dist/js/node/config/initial/createHtmlConfig.js +22 -6
  100. package/dist/js/node/config/initial/createOutputConfig.js +28 -13
  101. package/dist/js/node/config/initial/createSourceConfig.js +22 -6
  102. package/dist/js/node/config/initial/createToolsConfig.js +24 -10
  103. package/dist/js/node/config/initial/index.js +28 -17
  104. package/dist/js/node/config/initial/inits.js +126 -81
  105. package/dist/js/node/config/initial/transformNormalizedConfig.js +31 -15
  106. package/dist/js/node/defineConfig.js +43 -17
  107. package/dist/js/node/exports/server.js +21 -10
  108. package/dist/js/node/hooks.js +48 -29
  109. package/dist/js/node/index.js +225 -128
  110. package/dist/js/node/initialize/index.js +116 -61
  111. package/dist/js/node/locale/en.js +36 -25
  112. package/dist/js/node/locale/index.js +27 -15
  113. package/dist/js/node/locale/zh.js +37 -26
  114. package/dist/js/node/schema/Schema.js +23 -10
  115. package/dist/js/node/schema/index.js +77 -114
  116. package/dist/js/node/schema/legacy.js +117 -240
  117. package/dist/js/node/types/config/index.js +17 -16
  118. package/dist/js/node/types/index.js +19 -38
  119. package/dist/js/node/types/legacyConfig/output.js +0 -5
  120. package/dist/js/node/utils/commands.js +21 -6
  121. package/dist/js/node/utils/config.js +120 -51
  122. package/dist/js/node/utils/createFileWatcher.js +104 -60
  123. package/dist/js/node/utils/createServer.js +86 -25
  124. package/dist/js/node/utils/getSpecifiedEntries.js +64 -25
  125. package/dist/js/node/utils/language.js +24 -8
  126. package/dist/js/node/utils/printInstructions.js +47 -16
  127. package/dist/js/node/utils/restart.js +61 -21
  128. package/dist/js/node/utils/routes.js +53 -18
  129. package/dist/js/treeshaking/analyze/Builder.js +199 -0
  130. package/dist/js/treeshaking/analyze/constants.js +28 -16
  131. package/dist/js/treeshaking/analyze/generateCode.js +605 -355
  132. package/dist/js/treeshaking/analyze/getBundleEntry.js +55 -63
  133. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +214 -168
  134. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +215 -169
  135. package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -2
  136. package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +19 -20
  137. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +89 -86
  138. package/dist/js/treeshaking/analyze/getHtmlTemplate.js +298 -125
  139. package/dist/js/treeshaking/analyze/getServerRoutes.js +210 -146
  140. package/dist/js/treeshaking/analyze/index.js +571 -304
  141. package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +45 -26
  142. package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -16
  143. package/dist/js/treeshaking/analyze/nestedRoutes.js +414 -160
  144. package/dist/js/treeshaking/analyze/templates.js +432 -161
  145. package/dist/js/treeshaking/analyze/utils.js +361 -80
  146. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +282 -195
  147. package/dist/js/treeshaking/builder/index.js +371 -167
  148. package/dist/js/treeshaking/builder/loaders/routerLoader.js +13 -0
  149. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +5 -0
  150. package/dist/js/treeshaking/builder/share.js +38 -44
  151. package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
  152. package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
  153. package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +334 -112
  154. package/dist/js/treeshaking/commands/build.js +286 -88
  155. package/dist/js/treeshaking/commands/deploy.js +153 -25
  156. package/dist/js/treeshaking/commands/dev.js +318 -132
  157. package/dist/js/treeshaking/commands/index.js +1 -1
  158. package/dist/js/treeshaking/commands/inspect.js +147 -32
  159. package/dist/js/treeshaking/commands/start.js +190 -68
  160. package/dist/js/treeshaking/config/default.js +210 -199
  161. package/dist/js/treeshaking/config/index.js +3 -2
  162. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -31
  163. package/dist/js/treeshaking/config/initial/createOutputConfig.js +43 -67
  164. package/dist/js/treeshaking/config/initial/createSourceConfig.js +37 -40
  165. package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -38
  166. package/dist/js/treeshaking/config/initial/index.js +10 -9
  167. package/dist/js/treeshaking/config/initial/inits.js +205 -106
  168. package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +27 -34
  169. package/dist/js/treeshaking/defineConfig.js +60 -13
  170. package/dist/js/treeshaking/exports/server.js +2 -1
  171. package/dist/js/treeshaking/hooks.js +30 -25
  172. package/dist/js/treeshaking/index.js +681 -256
  173. package/dist/js/treeshaking/initialize/index.js +290 -112
  174. package/dist/js/treeshaking/locale/en.js +34 -33
  175. package/dist/js/treeshaking/locale/index.js +5 -5
  176. package/dist/js/treeshaking/locale/zh.js +34 -33
  177. package/dist/js/treeshaking/schema/Schema.js +267 -69
  178. package/dist/js/treeshaking/schema/index.js +165 -121
  179. package/dist/js/treeshaking/schema/legacy.js +323 -256
  180. package/dist/js/treeshaking/types/config/deploy.js +1 -0
  181. package/dist/js/treeshaking/types/config/dev.js +1 -0
  182. package/dist/js/treeshaking/types/config/experiments.js +1 -0
  183. package/dist/js/treeshaking/types/config/html.js +1 -0
  184. package/dist/js/treeshaking/types/config/index.js +0 -1
  185. package/dist/js/treeshaking/types/config/output.js +1 -0
  186. package/dist/js/treeshaking/types/config/performance.js +1 -0
  187. package/dist/js/treeshaking/types/config/security.js +1 -0
  188. package/dist/js/treeshaking/types/config/source.js +1 -0
  189. package/dist/js/treeshaking/types/config/tools.js +1 -0
  190. package/dist/js/treeshaking/types/hooks.js +1 -0
  191. package/dist/js/treeshaking/types/index.js +0 -1
  192. package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
  193. package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
  194. package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
  195. package/dist/js/treeshaking/types/legacyConfig/output.js +1 -1
  196. package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
  197. package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
  198. package/dist/js/treeshaking/utils/commands.js +6 -5
  199. package/dist/js/treeshaking/utils/config.js +295 -117
  200. package/dist/js/treeshaking/utils/createFileWatcher.js +278 -118
  201. package/dist/js/treeshaking/utils/createServer.js +252 -67
  202. package/dist/js/treeshaking/utils/getSpecifiedEntries.js +182 -55
  203. package/dist/js/treeshaking/utils/language.js +6 -5
  204. package/dist/js/treeshaking/utils/printInstructions.js +151 -29
  205. package/dist/js/treeshaking/utils/restart.js +184 -42
  206. package/dist/js/treeshaking/utils/routes.js +151 -27
  207. package/dist/js/treeshaking/utils/types.js +1 -0
  208. package/dist/types/analyze/Builder.d.ts +8 -0
  209. package/dist/types/analyze/constants.d.ts +2 -0
  210. package/dist/types/analyze/index.d.ts +2 -0
  211. package/dist/types/analyze/templates.d.ts +10 -7
  212. package/dist/types/analyze/utils.d.ts +9 -1
  213. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  214. package/dist/types/builder/index.d.ts +3 -3
  215. package/dist/types/builder/loaders/routerLoader.d.ts +3 -0
  216. package/dist/types/builder/loaders/serverModuleLoader.d.ts +3 -0
  217. package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
  218. package/dist/types/defineConfig.d.ts +1 -0
  219. package/dist/types/index.d.ts +6 -1
  220. package/dist/types/initialize/index.d.ts +2 -0
  221. package/dist/types/types/config/dev.d.ts +2 -2
  222. package/dist/types/types/config/index.d.ts +1 -0
  223. package/dist/types/types/config/output.d.ts +0 -1
  224. package/dist/types/types/config/source.d.ts +1 -0
  225. package/dist/types/types/config/tools.d.ts +10 -1
  226. package/dist/types/types/hooks.d.ts +7 -1
  227. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  228. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  229. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  230. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  231. package/dist/types/utils/config.d.ts +1 -0
  232. package/dist/types/utils/createFileWatcher.d.ts +2 -1
  233. package/dist/types/utils/createServer.d.ts +1 -0
  234. package/dist/types/utils/restart.d.ts +1 -1
  235. package/lib/types.d.ts +1 -1
  236. package/package.json +26 -22
@@ -1,66 +1,120 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import * as path from 'path';
5
- import { fs, getRouteId } from '@modern-js/utils';
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 * as path from "path";
41
+ import { fs, getRouteId } from "@modern-js/utils";
6
42
  import { JS_EXTENSIONS } from "./constants";
7
- import { replaceWithAlias } from "./utils";
8
- const LAYOUT_FILE = 'layout';
9
- const PAGE_FILE = 'page';
10
- const LOADING_FILE = 'loading';
11
- const ERROR_FILE = 'error';
12
- const LOADER_FILE = 'loader';
13
- const conventionNames = [LAYOUT_FILE, PAGE_FILE, LOADING_FILE, ERROR_FILE, LOADER_FILE];
14
- const replaceDynamicPath = routePath => {
15
- return routePath.replace(/\[(.*?)\]/g, ':$1');
43
+ import { hasLoader, replaceWithAlias } from "./utils";
44
+ const LAYOUT_FILE = "layout";
45
+ const PAGE_FILE = "page";
46
+ const LOADING_FILE = "loading";
47
+ const ERROR_FILE = "error";
48
+ const LOADER_FILE = "loader";
49
+ const conventionNames = [
50
+ LAYOUT_FILE,
51
+ PAGE_FILE,
52
+ LOADING_FILE,
53
+ ERROR_FILE,
54
+ LOADER_FILE
55
+ ];
56
+ const getLoaderPath = (filename) => __async(void 0, null, function* () {
57
+ if (yield hasLoader(filename)) {
58
+ return filename;
59
+ }
60
+ return void 0;
61
+ });
62
+ const replaceDynamicPath = (routePath) => {
63
+ return routePath.replace(/\[(.*?)\]/g, ":$1");
16
64
  };
17
65
  const createIndexRoute = (routeInfo, rootDir, filename, entryName) => {
18
- return createRoute(_objectSpread(_objectSpread({}, routeInfo), {}, {
19
- index: true,
20
- children: undefined
21
- }), rootDir, filename, entryName);
66
+ return createRoute(
67
+ __spreadProps(__spreadValues({}, routeInfo), {
68
+ index: true,
69
+ children: void 0
70
+ }),
71
+ rootDir,
72
+ filename,
73
+ entryName
74
+ );
22
75
  };
23
76
  const createRoute = (routeInfo, rootDir, filename, entryName) => {
24
77
  const id = getRouteId(filename, rootDir, entryName);
25
- return _objectSpread(_objectSpread({}, routeInfo), {}, {
78
+ return __spreadProps(__spreadValues({}, routeInfo), {
26
79
  id,
27
- type: 'nested'
80
+ type: "nested"
28
81
  });
29
82
  };
30
- export const walk = async (dirname, rootDir, alias, entryName) => {
31
- if (!(await fs.pathExists(dirname))) {
83
+ const walk = (dirname, rootDir, alias, entryName) => __async(void 0, null, function* () {
84
+ var _a, _b;
85
+ if (!(yield fs.pathExists(dirname))) {
32
86
  return null;
33
87
  }
34
- const isDirectory = (await fs.stat(dirname)).isDirectory();
88
+ const isDirectory = (yield fs.stat(dirname)).isDirectory();
35
89
  if (!isDirectory) {
36
90
  return null;
37
91
  }
38
92
  const relativeDir = path.relative(rootDir, dirname);
39
93
  const pathSegments = relativeDir.split(path.sep);
40
94
  const lastSegment = pathSegments[pathSegments.length - 1];
41
- const isRoot = lastSegment === '';
42
- const isPathlessLayout = lastSegment.startsWith('__');
43
- const isWithoutLayoutPath = lastSegment.includes('.');
44
- let routePath = isRoot || isPathlessLayout ? '/' : `${lastSegment}`;
95
+ const isRoot = lastSegment === "";
96
+ const isPathlessLayout = lastSegment.startsWith("__");
97
+ const isWithoutLayoutPath = lastSegment.includes(".");
98
+ let routePath = isRoot || isPathlessLayout ? "/" : `${lastSegment}`;
45
99
  if (isWithoutLayoutPath) {
46
- routePath = lastSegment.split('.').join('/');
100
+ routePath = lastSegment.split(".").join("/");
47
101
  }
48
102
  routePath = replaceDynamicPath(routePath);
49
103
  const route = {
50
104
  path: routePath,
51
- children: []
105
+ children: [],
106
+ isRoot
52
107
  };
53
- const items = await fs.readdir(dirname);
108
+ const items = yield fs.readdir(dirname);
54
109
  for (const item of items) {
55
110
  const itemPath = path.join(dirname, item);
56
111
  const extname = path.extname(item);
57
112
  const itemWithoutExt = item.slice(0, -extname.length);
58
- const isDirectory = (await fs.stat(itemPath)).isDirectory();
59
- if (isDirectory) {
60
- const childRoute = await walk(itemPath, rootDir, alias, entryName);
113
+ const isDirectory2 = (yield fs.stat(itemPath)).isDirectory();
114
+ if (isDirectory2) {
115
+ const childRoute = yield walk(itemPath, rootDir, alias, entryName);
61
116
  if (childRoute) {
62
- var _route$children;
63
- (_route$children = route.children) === null || _route$children === void 0 ? void 0 : _route$children.push(childRoute);
117
+ (_a = route.children) == null ? void 0 : _a.push(childRoute);
64
118
  }
65
119
  }
66
120
  if (extname && (!JS_EXTENSIONS.includes(extname) || !conventionNames.includes(itemWithoutExt))) {
@@ -68,16 +122,19 @@ export const walk = async (dirname, rootDir, alias, entryName) => {
68
122
  }
69
123
  if (itemWithoutExt === LAYOUT_FILE) {
70
124
  route._component = replaceWithAlias(alias.basename, itemPath, alias.name);
125
+ route.loader = yield getLoaderPath(itemPath);
71
126
  }
72
127
  if (itemWithoutExt === PAGE_FILE) {
73
- var _route$children2;
74
- const childRoute = createIndexRoute({
75
- _component: replaceWithAlias(alias.basename, itemPath, alias.name)
76
- }, rootDir, itemPath, entryName);
77
- (_route$children2 = route.children) === null || _route$children2 === void 0 ? void 0 : _route$children2.push(childRoute);
78
- }
79
- if (itemWithoutExt === LOADER_FILE) {
80
- route.loader = replaceWithAlias(alias.basename, itemPath, alias.name);
128
+ const childRoute = createIndexRoute(
129
+ {
130
+ _component: replaceWithAlias(alias.basename, itemPath, alias.name)
131
+ },
132
+ rootDir,
133
+ itemPath,
134
+ entryName
135
+ );
136
+ childRoute.loader = yield getLoaderPath(itemPath);
137
+ (_b = route.children) == null ? void 0 : _b.push(childRoute);
81
138
  }
82
139
  if (itemWithoutExt === LOADING_FILE) {
83
140
  route.loading = replaceWithAlias(alias.basename, itemPath, alias.name);
@@ -86,17 +143,17 @@ export const walk = async (dirname, rootDir, alias, entryName) => {
86
143
  route.error = replaceWithAlias(alias.basename, itemPath, alias.name);
87
144
  }
88
145
  }
89
- const finalRoute = createRoute(route, rootDir, path.join(dirname, `${LAYOUT_FILE}.ts`), entryName);
90
-
91
- /**
92
- * when the url is /, the __auth/layout.tsx component should not be rendered
93
- * - routes
94
- * - __auth
95
- * - layout.tsx
96
- * - layout.tsx
97
- */
146
+ const finalRoute = createRoute(
147
+ route,
148
+ rootDir,
149
+ path.join(dirname, `${LAYOUT_FILE}.ts`),
150
+ entryName
151
+ );
98
152
  if (isPathlessLayout) {
99
153
  delete finalRoute.path;
100
154
  }
101
155
  return finalRoute;
102
- };
156
+ });
157
+ export {
158
+ walk
159
+ };
@@ -1,10 +1,49 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- export const index = ({
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 path from "path";
41
+ import { fs, slash } from "@modern-js/utils";
42
+ import { TEMP_LOADERS_DIR } from "./constants";
43
+ const index = ({
5
44
  mountId,
6
45
  imports,
7
- renderFunction,
46
+ renderFunction: renderFunction2,
8
47
  exportStatement
9
48
  }) => `
10
49
  const IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';
@@ -18,27 +57,25 @@ let AppWrapper = null;
18
57
  let root = null;
19
58
 
20
59
  function render() {
21
- ${renderFunction}
60
+ ${renderFunction2}
22
61
  }
23
62
 
24
63
  AppWrapper = render();
25
64
 
26
65
  ${exportStatement};
27
66
  `;
28
- export const renderFunction = ({
67
+ const renderFunction = ({
29
68
  plugins,
30
69
  customBootstrap,
31
- fileSystemRoutes
70
+ fileSystemRoutes: fileSystemRoutes2
32
71
  }) => `
33
72
  AppWrapper = createApp({
34
73
  plugins: [
35
- ${plugins.map(({
36
- name,
37
- options,
38
- args
39
- }) => `${name}({...${options}, ...App?.config?.${args || name}}),`).join('\n')}
74
+ ${plugins.map(
75
+ ({ name, options, args }) => `${name}({...${options}, ...App?.config?.${args || name}}),`
76
+ ).join("\n")}
40
77
  ]
41
- })(${fileSystemRoutes ? '' : `App`})
78
+ })(${fileSystemRoutes2 ? "" : `App`})
42
79
 
43
80
  if (IS_BROWSER) {
44
81
  ${customBootstrap ? `customBootstrap(AppWrapper);` : `bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM);`}
@@ -46,19 +83,19 @@ export const renderFunction = ({
46
83
 
47
84
  return AppWrapper
48
85
  `;
49
- export const html = partials => `
86
+ const html = (partials) => `
50
87
  <!DOCTYPE html>
51
88
  <html>
52
89
  <head>
53
90
  <%= meta %>
54
91
  <title><%= title %></title>
55
92
 
56
- ${partials.top.join('\n')}
93
+ ${partials.top.join("\n")}
57
94
 
58
95
  <script>
59
96
  window.__assetPrefix__ = '<%= assetPrefix %>';
60
- </script>
61
- ${partials.head.join('\n')}
97
+ <\/script>
98
+ ${partials.head.join("\n")}
62
99
 
63
100
  <!--<?- chunksMap.css ?>-->
64
101
  </head>
@@ -68,7 +105,7 @@ export const html = partials => `
68
105
  We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue.
69
106
  </noscript>
70
107
  <div id="<%= mountId %>"><!--<?- html ?>--></div>
71
- ${partials.body.join('\n')}
108
+ ${partials.body.join("\n")}
72
109
  <!--<?- chunksMap.js ?>-->
73
110
  <!--<?- SSRDataScript ?>-->
74
111
  <!--<?- bottomTemplate ?>-->
@@ -76,29 +113,32 @@ export const html = partials => `
76
113
 
77
114
  </html>
78
115
  `;
79
- export const routesForServer = ({
116
+ const routesForServer = ({
80
117
  routes,
81
- alias
118
+ internalDirectory,
119
+ entryName
82
120
  }) => {
83
- const {
84
- name,
85
- basename
86
- } = alias;
87
121
  const loaders = [];
88
- const traverseRouteTree = route => {
122
+ const loaderIndexFile = path.join(
123
+ internalDirectory,
124
+ entryName,
125
+ TEMP_LOADERS_DIR,
126
+ "index.js"
127
+ );
128
+ const traverseRouteTree = (route) => {
129
+ var _a;
89
130
  let children;
90
- if ('children' in route && route.children) {
91
- var _route$children;
92
- children = route === null || route === void 0 ? void 0 : (_route$children = route.children) === null || _route$children === void 0 ? void 0 : _route$children.map(traverseRouteTree);
131
+ if ("children" in route && route.children) {
132
+ children = (_a = route == null ? void 0 : route.children) == null ? void 0 : _a.map(traverseRouteTree);
93
133
  }
94
134
  let loader;
95
- if (route.type === 'nested') {
135
+ if (route.type === "nested") {
96
136
  if (route.loader) {
97
137
  loaders.push(route.loader);
98
138
  loader = `loader_${loaders.length - 1}`;
99
139
  }
100
140
  }
101
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
141
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
102
142
  loader,
103
143
  children
104
144
  });
@@ -108,57 +148,82 @@ export const routesForServer = ({
108
148
  export const routes = [
109
149
  `;
110
150
  for (const route of routes) {
111
- if ('type' in route) {
151
+ if ("type" in route) {
112
152
  const newRoute = traverseRouteTree(route);
113
- routesCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loader_[^"])"/g, '$1')},`;
153
+ routesCode += `${JSON.stringify(newRoute, null, 2).replace(
154
+ /"(loader_[^"])"/g,
155
+ "$1"
156
+ )},`;
114
157
  } else {
115
158
  routesCode += `${JSON.stringify(route, null, 2)}`;
116
159
  }
117
160
  }
118
- routesCode += `\n];`;
119
- const importLoadersCode = loaders.map((loader, index) => {
120
- const realLoaderPath = loader.replace(name, basename);
121
- return `import loader_${index} from '${realLoaderPath}';\n`;
122
- }).join('');
161
+ routesCode += `
162
+ ];`;
163
+ let importLoadersCode = "";
164
+ if (loaders.length > 0) {
165
+ importLoadersCode = `
166
+ import { ${loaders.map(
167
+ (loader, index2) => `loader_${index2}`
168
+ )} } from "${slash(loaderIndexFile)}"`;
169
+ }
123
170
  return `
124
171
  ${importLoadersCode}
125
172
  ${routesCode}
126
173
  `;
127
174
  };
128
- export const fileSystemRoutes = ({
175
+ const fileSystemRoutes = (_0) => __async(void 0, [_0], function* ({
129
176
  routes,
130
177
  ssrMode,
131
178
  nestedRoutesEntry,
132
- entryName
133
- }) => {
134
- // The legacy mode and pages dir routes should use loadable
135
- // nested routes + renderTostring should use loadable.lazy
136
- // nested routes + renderToStream should use react.lazy
179
+ entryName,
180
+ internalDirectory,
181
+ internalDirAlias
182
+ }) {
183
+ const loadings = [];
184
+ const errors = [];
185
+ const loaders = [];
186
+ const loadersMap = {};
187
+ const loadersIndexFile = path.join(
188
+ internalDirAlias,
189
+ entryName,
190
+ TEMP_LOADERS_DIR,
191
+ "index.js"
192
+ );
193
+ const loadersMapFile = path.join(
194
+ internalDirectory,
195
+ entryName,
196
+ TEMP_LOADERS_DIR,
197
+ "map.json"
198
+ );
137
199
  const importLazyCode = `
138
200
  import { lazy } from "react";
139
201
  import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
140
202
  `;
141
- let dataLoaderPath = '';
203
+ let rootLayoutCode = ``;
204
+ let dataLoaderPath = "";
205
+ let componentLoaderPath = "";
142
206
  if (ssrMode) {
143
- dataLoaderPath = require.resolve(`@modern-js/plugin-data-loader/loader`);
207
+ dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
144
208
  if (nestedRoutesEntry) {
145
- dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&entryName=${entryName}!`;
209
+ dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&mapFile=${loadersMapFile}!`;
146
210
  }
211
+ componentLoaderPath = `${path.join(
212
+ __dirname,
213
+ "../builder/loaders/routerLoader"
214
+ )}!`;
147
215
  }
148
- const loadings = [];
149
- const errors = [];
150
- const loaders = [];
151
- const traverseRouteTree = route => {
216
+ const traverseRouteTree = (route) => {
217
+ var _a;
152
218
  let children;
153
- if ('children' in route && route.children) {
154
- var _route$children2;
155
- children = route === null || route === void 0 ? void 0 : (_route$children2 = route.children) === null || _route$children2 === void 0 ? void 0 : _route$children2.map(traverseRouteTree);
219
+ if ("children" in route && route.children) {
220
+ children = (_a = route == null ? void 0 : route.children) == null ? void 0 : _a.map(traverseRouteTree);
156
221
  }
157
222
  let loading;
158
223
  let error;
159
224
  let loader;
160
- let component = '';
161
- if (route.type === 'nested') {
225
+ let component = "";
226
+ if (route.type === "nested") {
162
227
  if (route.loading) {
163
228
  loadings.push(route.loading);
164
229
  loading = `loading_${loadings.length - 1}`;
@@ -169,19 +234,24 @@ export const fileSystemRoutes = ({
169
234
  }
170
235
  if (route.loader) {
171
236
  loaders.push(route.loader);
172
- loader = `loader_${loaders.length - 1}`;
237
+ const loaderId = loaders.length - 1;
238
+ loader = `loader_${loaderId}`;
239
+ loadersMap[loader] = route.id;
173
240
  }
174
241
  if (route._component) {
175
- if (ssrMode === 'stream') {
176
- component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ /* webpackMode: "lazy-once" */ '${route._component}'))`;
242
+ if (route.isRoot) {
243
+ rootLayoutCode = `import RootLayout from '${route._component}'`;
244
+ component = `RootLayout`;
245
+ } else if (ssrMode === "string") {
246
+ component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
177
247
  } else {
178
- component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ /* webpackMode: "lazy-once" */ '${route._component}'))`;
248
+ component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
179
249
  }
180
250
  }
181
251
  } else if (route._component) {
182
252
  component = `loadable(() => import('${route._component}'))`;
183
253
  }
184
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
254
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
185
255
  loading,
186
256
  loader,
187
257
  error,
@@ -196,32 +266,76 @@ export const fileSystemRoutes = ({
196
266
  export const routes = [
197
267
  `;
198
268
  for (const route of routes) {
199
- if ('type' in route) {
269
+ if ("type" in route) {
200
270
  const newRoute = traverseRouteTree(route);
201
- routeComponentsCode += `${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, '"')},`;
271
+ routeComponentsCode += `${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, '"')},`;
202
272
  } else {
203
273
  const component = `loadable(() => import('${route._component}'))`;
204
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
274
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
205
275
  component
206
276
  });
207
- routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, '$1').replace(/"(lazy[^"]*)"/g, '$1')},`;
277
+ routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, "$1").replace(/"(lazy[^"]*)"/g, "$1")},`;
208
278
  }
209
279
  }
210
- routeComponentsCode += `\n];`;
211
- const importLoadingCode = loadings.map((loading, index) => {
212
- return `import loading_${index} from '${loading}';\n`;
213
- }).join('');
214
- const importErrorComponentsCode = errors.map((error, index) => {
215
- return `import error_${index} from '${error}';\n`;
216
- }).join('');
217
- const importLoaderComponentsCode = loaders.map((loader, index) => {
218
- return `import loader_${index} from '${dataLoaderPath}${loader}';\n`;
219
- }).join('');
280
+ routeComponentsCode += `
281
+ ];`;
282
+ const importLoadingCode = loadings.map((loading, index2) => {
283
+ return `import loading_${index2} from '${loading}';
284
+ `;
285
+ }).join("");
286
+ const importErrorComponentsCode = errors.map((error, index2) => {
287
+ return `import error_${index2} from '${error}';
288
+ `;
289
+ }).join("");
290
+ let importLoadersCode = "";
291
+ if (loaders.length > 0) {
292
+ importLoadersCode = `
293
+ import { ${loaders.map(
294
+ (loader, index2) => `loader_${index2}`
295
+ )} } from "${slash(dataLoaderPath)}${slash(loadersIndexFile)}"
296
+ `;
297
+ const loaderEntryCode = loaders.map((loader, index2) => {
298
+ return `export * from './loader_${index2}.js';`;
299
+ }).join("\n");
300
+ const loaderEntryFile = path.join(
301
+ internalDirectory,
302
+ entryName,
303
+ TEMP_LOADERS_DIR,
304
+ "entry.js"
305
+ );
306
+ yield fs.ensureFile(loaderEntryFile);
307
+ yield fs.writeFile(loaderEntryFile, loaderEntryCode);
308
+ yield fs.writeJSON(loadersMapFile, loadersMap);
309
+ yield Promise.all(
310
+ loaders.map((loader, index2) => __async(void 0, null, function* () {
311
+ const name = `loader_${index2}`;
312
+ const filename = path.join(
313
+ internalDirectory,
314
+ entryName,
315
+ TEMP_LOADERS_DIR,
316
+ `${name}.js`
317
+ );
318
+ const code = `
319
+ export { loader as ${name} } from '${slash(loader)}'
320
+ `;
321
+ yield fs.ensureFile(filename);
322
+ yield fs.writeFile(filename, code);
323
+ }))
324
+ );
325
+ }
220
326
  return `
221
327
  ${importLazyCode}
328
+ ${rootLayoutCode}
222
329
  ${importLoadingCode}
223
330
  ${importErrorComponentsCode}
224
- ${importLoaderComponentsCode}
331
+ ${importLoadersCode}
225
332
  ${routeComponentsCode}
226
333
  `;
227
- };
334
+ });
335
+ export {
336
+ fileSystemRoutes,
337
+ html,
338
+ index,
339
+ renderFunction,
340
+ routesForServer
341
+ };