@modern-js/app-tools 2.0.0-beta.3 → 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 (230) hide show
  1. package/CHANGELOG.md +305 -0
  2. package/bin/modern.js +1 -0
  3. package/dist/js/modern/analyze/Builder.js +39 -0
  4. package/dist/js/modern/analyze/constants.js +38 -18
  5. package/dist/js/modern/analyze/generateCode.js +262 -221
  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 +106 -60
  18. package/dist/js/modern/analyze/templates.js +163 -81
  19. package/dist/js/modern/analyze/utils.js +87 -66
  20. package/dist/js/modern/builder/builderPlugins/compatModern.js +122 -109
  21. package/dist/js/modern/builder/index.js +123 -86
  22. package/dist/js/modern/builder/loaders/routerLoader.js +9 -12
  23. package/dist/js/modern/builder/loaders/serverModuleLoader.js +4 -1
  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 +77 -27
  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 -15
  34. package/dist/js/modern/config/default.js +103 -113
  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 +9 -10
  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 -39
  68. package/dist/js/node/analyze/generateCode.js +282 -239
  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 +137 -75
  81. package/dist/js/node/analyze/templates.js +185 -90
  82. package/dist/js/node/analyze/utils.js +114 -81
  83. package/dist/js/node/builder/builderPlugins/compatModern.js +150 -122
  84. package/dist/js/node/builder/index.js +151 -95
  85. package/dist/js/node/builder/loaders/routerLoader.js +27 -18
  86. package/dist/js/node/builder/loaders/serverModuleLoader.js +22 -7
  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 +99 -41
  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 -26
  97. package/dist/js/node/config/default.js +119 -117
  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 +26 -14
  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 -61
  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 -18
  131. package/dist/js/treeshaking/analyze/generateCode.js +600 -406
  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 -147
  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 +411 -200
  144. package/dist/js/treeshaking/analyze/templates.js +433 -236
  145. package/dist/js/treeshaking/analyze/utils.js +358 -153
  146. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +282 -200
  147. package/dist/js/treeshaking/builder/index.js +371 -165
  148. package/dist/js/treeshaking/builder/loaders/routerLoader.js +11 -12
  149. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +3 -2
  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 -131
  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 -67
  160. package/dist/js/treeshaking/config/default.js +210 -198
  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 -70
  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/index.d.ts +2 -0
  210. package/dist/types/analyze/templates.d.ts +3 -1
  211. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  212. package/dist/types/builder/index.d.ts +3 -3
  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 +6 -1
  216. package/dist/types/initialize/index.d.ts +2 -0
  217. package/dist/types/types/config/dev.d.ts +2 -2
  218. package/dist/types/types/config/index.d.ts +1 -0
  219. package/dist/types/types/config/output.d.ts +0 -1
  220. package/dist/types/types/config/source.d.ts +1 -0
  221. package/dist/types/types/config/tools.d.ts +2 -0
  222. package/dist/types/types/hooks.d.ts +5 -0
  223. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  224. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  225. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  226. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  227. package/dist/types/utils/config.d.ts +1 -0
  228. package/dist/types/utils/createServer.d.ts +1 -0
  229. package/dist/types/utils/restart.d.ts +1 -1
  230. package/package.json +23 -22
@@ -1,55 +1,103 @@
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, normalizeToPosixPath } 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
43
  import { hasLoader, 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 getLoaderPath = async filename => {
15
- if (await hasLoader(filename)) {
16
- return normalizeToPosixPath(filename);
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;
17
59
  }
18
- return undefined;
19
- };
20
- const replaceDynamicPath = routePath => {
21
- return routePath.replace(/\[(.*?)\]/g, ':$1');
60
+ return void 0;
61
+ });
62
+ const replaceDynamicPath = (routePath) => {
63
+ return routePath.replace(/\[(.*?)\]/g, ":$1");
22
64
  };
23
65
  const createIndexRoute = (routeInfo, rootDir, filename, entryName) => {
24
- return createRoute(_objectSpread(_objectSpread({}, routeInfo), {}, {
25
- index: true,
26
- children: undefined
27
- }), 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
+ );
28
75
  };
29
76
  const createRoute = (routeInfo, rootDir, filename, entryName) => {
30
77
  const id = getRouteId(filename, rootDir, entryName);
31
- return _objectSpread(_objectSpread({}, routeInfo), {}, {
78
+ return __spreadProps(__spreadValues({}, routeInfo), {
32
79
  id,
33
- type: 'nested'
80
+ type: "nested"
34
81
  });
35
82
  };
36
- export const walk = async (dirname, rootDir, alias, entryName) => {
37
- 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))) {
38
86
  return null;
39
87
  }
40
- const isDirectory = (await fs.stat(dirname)).isDirectory();
88
+ const isDirectory = (yield fs.stat(dirname)).isDirectory();
41
89
  if (!isDirectory) {
42
90
  return null;
43
91
  }
44
92
  const relativeDir = path.relative(rootDir, dirname);
45
93
  const pathSegments = relativeDir.split(path.sep);
46
94
  const lastSegment = pathSegments[pathSegments.length - 1];
47
- const isRoot = lastSegment === '';
48
- const isPathlessLayout = lastSegment.startsWith('__');
49
- const isWithoutLayoutPath = lastSegment.includes('.');
50
- 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}`;
51
99
  if (isWithoutLayoutPath) {
52
- routePath = lastSegment.split('.').join('/');
100
+ routePath = lastSegment.split(".").join("/");
53
101
  }
54
102
  routePath = replaceDynamicPath(routePath);
55
103
  const route = {
@@ -57,17 +105,16 @@ export const walk = async (dirname, rootDir, alias, entryName) => {
57
105
  children: [],
58
106
  isRoot
59
107
  };
60
- const items = await fs.readdir(dirname);
108
+ const items = yield fs.readdir(dirname);
61
109
  for (const item of items) {
62
110
  const itemPath = path.join(dirname, item);
63
111
  const extname = path.extname(item);
64
112
  const itemWithoutExt = item.slice(0, -extname.length);
65
- const isDirectory = (await fs.stat(itemPath)).isDirectory();
66
- if (isDirectory) {
67
- 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);
68
116
  if (childRoute) {
69
- var _route$children;
70
- (_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);
71
118
  }
72
119
  }
73
120
  if (extname && (!JS_EXTENSIONS.includes(extname) || !conventionNames.includes(itemWithoutExt))) {
@@ -75,21 +122,20 @@ export const walk = async (dirname, rootDir, alias, entryName) => {
75
122
  }
76
123
  if (itemWithoutExt === LAYOUT_FILE) {
77
124
  route._component = replaceWithAlias(alias.basename, itemPath, alias.name);
78
- route.loader = await getLoaderPath(itemPath);
125
+ route.loader = yield getLoaderPath(itemPath);
79
126
  }
80
127
  if (itemWithoutExt === PAGE_FILE) {
81
- var _route$children2;
82
- const childRoute = createIndexRoute({
83
- _component: replaceWithAlias(alias.basename, itemPath, alias.name)
84
- }, rootDir, itemPath, entryName);
85
- childRoute.loader = await getLoaderPath(itemPath);
86
- (_route$children2 = route.children) === null || _route$children2 === void 0 ? void 0 : _route$children2.push(childRoute);
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);
87
138
  }
88
-
89
- // if (itemWithoutExt === LOADER_FILE) {
90
- // route.loader = replaceWithAlias(alias.basename, itemPath, alias.name);
91
- // }
92
-
93
139
  if (itemWithoutExt === LOADING_FILE) {
94
140
  route.loading = replaceWithAlias(alias.basename, itemPath, alias.name);
95
141
  }
@@ -97,17 +143,17 @@ export const walk = async (dirname, rootDir, alias, entryName) => {
97
143
  route.error = replaceWithAlias(alias.basename, itemPath, alias.name);
98
144
  }
99
145
  }
100
- const finalRoute = createRoute(route, rootDir, path.join(dirname, `${LAYOUT_FILE}.ts`), entryName);
101
-
102
- /**
103
- * when the url is /, the __auth/layout.tsx component should not be rendered
104
- * - routes
105
- * - __auth
106
- * - layout.tsx
107
- * - layout.tsx
108
- */
146
+ const finalRoute = createRoute(
147
+ route,
148
+ rootDir,
149
+ path.join(dirname, `${LAYOUT_FILE}.ts`),
150
+ entryName
151
+ );
109
152
  if (isPathlessLayout) {
110
153
  delete finalRoute.path;
111
154
  }
112
155
  return finalRoute;
113
- };
156
+ });
157
+ export {
158
+ walk
159
+ };
@@ -1,13 +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
- import path from 'path';
5
- import { fs } 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 path from "path";
41
+ import { fs, slash } from "@modern-js/utils";
6
42
  import { TEMP_LOADERS_DIR } from "./constants";
7
- export const index = ({
43
+ const index = ({
8
44
  mountId,
9
45
  imports,
10
- renderFunction,
46
+ renderFunction: renderFunction2,
11
47
  exportStatement
12
48
  }) => `
13
49
  const IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';
@@ -21,27 +57,25 @@ let AppWrapper = null;
21
57
  let root = null;
22
58
 
23
59
  function render() {
24
- ${renderFunction}
60
+ ${renderFunction2}
25
61
  }
26
62
 
27
63
  AppWrapper = render();
28
64
 
29
65
  ${exportStatement};
30
66
  `;
31
- export const renderFunction = ({
67
+ const renderFunction = ({
32
68
  plugins,
33
69
  customBootstrap,
34
- fileSystemRoutes
70
+ fileSystemRoutes: fileSystemRoutes2
35
71
  }) => `
36
72
  AppWrapper = createApp({
37
73
  plugins: [
38
- ${plugins.map(({
39
- name,
40
- options,
41
- args
42
- }) => `${name}({...${options}, ...App?.config?.${args || name}}),`).join('\n')}
74
+ ${plugins.map(
75
+ ({ name, options, args }) => `${name}({...${options}, ...App?.config?.${args || name}}),`
76
+ ).join("\n")}
43
77
  ]
44
- })(${fileSystemRoutes ? '' : `App`})
78
+ })(${fileSystemRoutes2 ? "" : `App`})
45
79
 
46
80
  if (IS_BROWSER) {
47
81
  ${customBootstrap ? `customBootstrap(AppWrapper);` : `bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM);`}
@@ -49,19 +83,19 @@ export const renderFunction = ({
49
83
 
50
84
  return AppWrapper
51
85
  `;
52
- export const html = partials => `
86
+ const html = (partials) => `
53
87
  <!DOCTYPE html>
54
88
  <html>
55
89
  <head>
56
90
  <%= meta %>
57
91
  <title><%= title %></title>
58
92
 
59
- ${partials.top.join('\n')}
93
+ ${partials.top.join("\n")}
60
94
 
61
95
  <script>
62
96
  window.__assetPrefix__ = '<%= assetPrefix %>';
63
- </script>
64
- ${partials.head.join('\n')}
97
+ <\/script>
98
+ ${partials.head.join("\n")}
65
99
 
66
100
  <!--<?- chunksMap.css ?>-->
67
101
  </head>
@@ -71,7 +105,7 @@ export const html = partials => `
71
105
  We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue.
72
106
  </noscript>
73
107
  <div id="<%= mountId %>"><!--<?- html ?>--></div>
74
- ${partials.body.join('\n')}
108
+ ${partials.body.join("\n")}
75
109
  <!--<?- chunksMap.js ?>-->
76
110
  <!--<?- SSRDataScript ?>-->
77
111
  <!--<?- bottomTemplate ?>-->
@@ -79,27 +113,32 @@ export const html = partials => `
79
113
 
80
114
  </html>
81
115
  `;
82
- export const routesForServer = ({
116
+ const routesForServer = ({
83
117
  routes,
84
118
  internalDirectory,
85
119
  entryName
86
120
  }) => {
87
121
  const loaders = [];
88
- const loaderIndexFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, 'index.js');
89
- 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;
90
130
  let children;
91
- if ('children' in route && route.children) {
92
- var _route$children;
93
- 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);
94
133
  }
95
134
  let loader;
96
- if (route.type === 'nested') {
135
+ if (route.type === "nested") {
97
136
  if (route.loader) {
98
137
  loaders.push(route.loader);
99
138
  loader = `loader_${loaders.length - 1}`;
100
139
  }
101
140
  }
102
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
141
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
103
142
  loader,
104
143
  children
105
144
  });
@@ -109,62 +148,82 @@ export const routesForServer = ({
109
148
  export const routes = [
110
149
  `;
111
150
  for (const route of routes) {
112
- if ('type' in route) {
151
+ if ("type" in route) {
113
152
  const newRoute = traverseRouteTree(route);
114
- routesCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loader_[^"])"/g, '$1')},`;
153
+ routesCode += `${JSON.stringify(newRoute, null, 2).replace(
154
+ /"(loader_[^"])"/g,
155
+ "$1"
156
+ )},`;
115
157
  } else {
116
158
  routesCode += `${JSON.stringify(route, null, 2)}`;
117
159
  }
118
160
  }
119
- routesCode += `\n];`;
120
- let importLoadersCode = '';
161
+ routesCode += `
162
+ ];`;
163
+ let importLoadersCode = "";
121
164
  if (loaders.length > 0) {
122
165
  importLoadersCode = `
123
- import { ${loaders.map((loader, index) => `loader_${index}`)} } from "${loaderIndexFile}"`;
166
+ import { ${loaders.map(
167
+ (loader, index2) => `loader_${index2}`
168
+ )} } from "${slash(loaderIndexFile)}"`;
124
169
  }
125
170
  return `
126
171
  ${importLoadersCode}
127
172
  ${routesCode}
128
173
  `;
129
174
  };
130
- export const fileSystemRoutes = async ({
175
+ const fileSystemRoutes = (_0) => __async(void 0, [_0], function* ({
131
176
  routes,
132
177
  ssrMode,
133
178
  nestedRoutesEntry,
134
179
  entryName,
135
- internalDirectory
136
- }) => {
180
+ internalDirectory,
181
+ internalDirAlias
182
+ }) {
137
183
  const loadings = [];
138
184
  const errors = [];
139
185
  const loaders = [];
140
186
  const loadersMap = {};
141
- const loadersIndexFile = path.join('@_modern_js_internal', entryName, TEMP_LOADERS_DIR, 'index.js');
142
- const loadersMapFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, 'map.json');
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
+ );
143
199
  const importLazyCode = `
144
200
  import { lazy } from "react";
145
201
  import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
146
202
  `;
147
203
  let rootLayoutCode = ``;
148
- let dataLoaderPath = '';
149
- let componentLoaderPath = '';
204
+ let dataLoaderPath = "";
205
+ let componentLoaderPath = "";
150
206
  if (ssrMode) {
151
- dataLoaderPath = require.resolve(`@modern-js/plugin-data-loader/loader`);
207
+ dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
152
208
  if (nestedRoutesEntry) {
153
209
  dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&mapFile=${loadersMapFile}!`;
154
210
  }
155
- componentLoaderPath = `${path.join(__dirname, '../builder/loaders/routerLoader')}!`;
211
+ componentLoaderPath = `${path.join(
212
+ __dirname,
213
+ "../builder/loaders/routerLoader"
214
+ )}!`;
156
215
  }
157
- const traverseRouteTree = route => {
216
+ const traverseRouteTree = (route) => {
217
+ var _a;
158
218
  let children;
159
- if ('children' in route && route.children) {
160
- var _route$children2;
161
- 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);
162
221
  }
163
222
  let loading;
164
223
  let error;
165
224
  let loader;
166
- let component = '';
167
- if (route.type === 'nested') {
225
+ let component = "";
226
+ if (route.type === "nested") {
168
227
  if (route.loading) {
169
228
  loadings.push(route.loading);
170
229
  loading = `loading_${loadings.length - 1}`;
@@ -183,17 +242,16 @@ export const fileSystemRoutes = async ({
183
242
  if (route.isRoot) {
184
243
  rootLayoutCode = `import RootLayout from '${route._component}'`;
185
244
  component = `RootLayout`;
186
- } else if (ssrMode === 'string') {
245
+ } else if (ssrMode === "string") {
187
246
  component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
188
247
  } else {
189
- // csr and streaming
190
248
  component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
191
249
  }
192
250
  }
193
251
  } else if (route._component) {
194
252
  component = `loadable(() => import('${route._component}'))`;
195
253
  }
196
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
254
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
197
255
  loading,
198
256
  loader,
199
257
  error,
@@ -208,45 +266,62 @@ export const fileSystemRoutes = async ({
208
266
  export const routes = [
209
267
  `;
210
268
  for (const route of routes) {
211
- if ('type' in route) {
269
+ if ("type" in route) {
212
270
  const newRoute = traverseRouteTree(route);
213
- 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, '"')},`;
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, '"')},`;
214
272
  } else {
215
273
  const component = `loadable(() => import('${route._component}'))`;
216
- const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
274
+ const finalRoute = __spreadProps(__spreadValues({}, route), {
217
275
  component
218
276
  });
219
- 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")},`;
220
278
  }
221
279
  }
222
- routeComponentsCode += `\n];`;
223
- const importLoadingCode = loadings.map((loading, index) => {
224
- return `import loading_${index} from '${loading}';\n`;
225
- }).join('');
226
- const importErrorComponentsCode = errors.map((error, index) => {
227
- return `import error_${index} from '${error}';\n`;
228
- }).join('');
229
- let importLoadersCode = '';
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 = "";
230
291
  if (loaders.length > 0) {
231
292
  importLoadersCode = `
232
- import { ${loaders.map((loader, index) => `loader_${index}`)} } from "${dataLoaderPath}${loadersIndexFile}"
293
+ import { ${loaders.map(
294
+ (loader, index2) => `loader_${index2}`
295
+ )} } from "${slash(dataLoaderPath)}${slash(loadersIndexFile)}"
233
296
  `;
234
- const loaderEntryCode = loaders.map((loader, index) => {
235
- return `export * from './loader_${index}.js';`;
236
- }).join('\n');
237
- const loaderEntryFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, 'entry.js');
238
- await fs.ensureFile(loaderEntryFile);
239
- await fs.writeFile(loaderEntryFile, loaderEntryCode);
240
- await fs.writeJSON(loadersMapFile, loadersMap);
241
- await Promise.all(loaders.map(async (loader, index) => {
242
- const name = `loader_${index}`;
243
- const filename = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, `${name}.js`);
244
- const code = `
245
- export { loader as ${name} } from '${loader}'
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)}'
246
320
  `;
247
- await fs.ensureFile(filename);
248
- await fs.writeFile(filename, code);
249
- }));
321
+ yield fs.ensureFile(filename);
322
+ yield fs.writeFile(filename, code);
323
+ }))
324
+ );
250
325
  }
251
326
  return `
252
327
  ${importLazyCode}
@@ -256,4 +331,11 @@ export const fileSystemRoutes = async ({
256
331
  ${importLoadersCode}
257
332
  ${routeComponentsCode}
258
333
  `;
259
- };
334
+ });
335
+ export {
336
+ fileSystemRoutes,
337
+ html,
338
+ index,
339
+ renderFunction,
340
+ routesForServer
341
+ };