@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,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,81 @@ 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
+ }) {
182
+ const loadings = [];
183
+ const errors = [];
184
+ const loaders = [];
185
+ const loadersMap = {};
186
+ const loadersIndexFile = path.join(
187
+ "@_modern_js_internal",
188
+ entryName,
189
+ TEMP_LOADERS_DIR,
190
+ "index.js"
191
+ );
192
+ const loadersMapFile = path.join(
193
+ internalDirectory,
194
+ entryName,
195
+ TEMP_LOADERS_DIR,
196
+ "map.json"
197
+ );
137
198
  const importLazyCode = `
138
199
  import { lazy } from "react";
139
200
  import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
140
201
  `;
141
- let dataLoaderPath = '';
202
+ let rootLayoutCode = ``;
203
+ let dataLoaderPath = "";
204
+ let componentLoaderPath = "";
142
205
  if (ssrMode) {
143
- dataLoaderPath = require.resolve(`@modern-js/plugin-data-loader/loader`);
206
+ dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
144
207
  if (nestedRoutesEntry) {
145
- dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&entryName=${entryName}!`;
208
+ dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&mapFile=${loadersMapFile}!`;
146
209
  }
210
+ componentLoaderPath = `${path.join(
211
+ __dirname,
212
+ "../builder/loaders/routerLoader"
213
+ )}!`;
147
214
  }
148
- const loadings = [];
149
- const errors = [];
150
- const loaders = [];
151
- const traverseRouteTree = route => {
215
+ const traverseRouteTree = (route) => {
216
+ var _a;
152
217
  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);
218
+ if ("children" in route && route.children) {
219
+ children = (_a = route == null ? void 0 : route.children) == null ? void 0 : _a.map(traverseRouteTree);
156
220
  }
157
221
  let loading;
158
222
  let error;
159
223
  let loader;
160
- let component = '';
161
- if (route.type === 'nested') {
224
+ let component = "";
225
+ if (route.type === "nested") {
162
226
  if (route.loading) {
163
227
  loadings.push(route.loading);
164
228
  loading = `loading_${loadings.length - 1}`;
@@ -169,19 +233,24 @@ export const fileSystemRoutes = ({
169
233
  }
170
234
  if (route.loader) {
171
235
  loaders.push(route.loader);
172
- loader = `loader_${loaders.length - 1}`;
236
+ const loaderId = loaders.length - 1;
237
+ loader = `loader_${loaderId}`;
238
+ loadersMap[loader] = route.id;
173
239
  }
174
240
  if (route._component) {
175
- if (ssrMode === 'stream') {
176
- component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ /* webpackMode: "lazy-once" */ '${route._component}'))`;
241
+ if (route.isRoot) {
242
+ rootLayoutCode = `import RootLayout from '${route._component}'`;
243
+ component = `RootLayout`;
244
+ } else if (ssrMode === "string") {
245
+ component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
177
246
  } else {
178
- component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ /* webpackMode: "lazy-once" */ '${route._component}'))`;
247
+ component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
179
248
  }
180
249
  }
181
250
  } else if (route._component) {
182
251
  component = `loadable(() => import('${route._component}'))`;
183
252
  }
184
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
253
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
185
254
  loading,
186
255
  loader,
187
256
  error,
@@ -196,32 +265,76 @@ export const fileSystemRoutes = ({
196
265
  export const routes = [
197
266
  `;
198
267
  for (const route of routes) {
199
- if ('type' in route) {
268
+ if ("type" in route) {
200
269
  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, '"')},`;
270
+ 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
271
  } else {
203
272
  const component = `loadable(() => import('${route._component}'))`;
204
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
273
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
205
274
  component
206
275
  });
207
- routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, '$1').replace(/"(lazy[^"]*)"/g, '$1')},`;
276
+ routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, "$1").replace(/"(lazy[^"]*)"/g, "$1")},`;
208
277
  }
209
278
  }
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('');
279
+ routeComponentsCode += `
280
+ ];`;
281
+ const importLoadingCode = loadings.map((loading, index2) => {
282
+ return `import loading_${index2} from '${loading}';
283
+ `;
284
+ }).join("");
285
+ const importErrorComponentsCode = errors.map((error, index2) => {
286
+ return `import error_${index2} from '${error}';
287
+ `;
288
+ }).join("");
289
+ let importLoadersCode = "";
290
+ if (loaders.length > 0) {
291
+ importLoadersCode = `
292
+ import { ${loaders.map(
293
+ (loader, index2) => `loader_${index2}`
294
+ )} } from "${slash(dataLoaderPath)}${slash(loadersIndexFile)}"
295
+ `;
296
+ const loaderEntryCode = loaders.map((loader, index2) => {
297
+ return `export * from './loader_${index2}.js';`;
298
+ }).join("\n");
299
+ const loaderEntryFile = path.join(
300
+ internalDirectory,
301
+ entryName,
302
+ TEMP_LOADERS_DIR,
303
+ "entry.js"
304
+ );
305
+ yield fs.ensureFile(loaderEntryFile);
306
+ yield fs.writeFile(loaderEntryFile, loaderEntryCode);
307
+ yield fs.writeJSON(loadersMapFile, loadersMap);
308
+ yield Promise.all(
309
+ loaders.map((loader, index2) => __async(void 0, null, function* () {
310
+ const name = `loader_${index2}`;
311
+ const filename = path.join(
312
+ internalDirectory,
313
+ entryName,
314
+ TEMP_LOADERS_DIR,
315
+ `${name}.js`
316
+ );
317
+ const code = `
318
+ export { loader as ${name} } from '${slash(loader)}'
319
+ `;
320
+ yield fs.ensureFile(filename);
321
+ yield fs.writeFile(filename, code);
322
+ }))
323
+ );
324
+ }
220
325
  return `
221
326
  ${importLazyCode}
327
+ ${rootLayoutCode}
222
328
  ${importLoadingCode}
223
329
  ${importErrorComponentsCode}
224
- ${importLoaderComponentsCode}
330
+ ${importLoadersCode}
225
331
  ${routeComponentsCode}
226
332
  `;
227
- };
333
+ });
334
+ export {
335
+ fileSystemRoutes,
336
+ html,
337
+ index,
338
+ renderFunction,
339
+ routesForServer
340
+ };