@modern-js/app-tools 2.5.1-alpha.0 → 2.5.1-alpha.1

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 (148) hide show
  1. package/dist/cjs/analyze/generateCode.js +19 -13
  2. package/dist/cjs/analyze/getBundleEntry.js +1 -1
  3. package/dist/cjs/builder/builder-webpack/builderPlugins/compatModern.js +3 -3
  4. package/dist/cjs/builder/builder-webpack/index.js +11 -5
  5. package/dist/cjs/builder/generator/getBuilderTargets.js +1 -1
  6. package/dist/cjs/commands/dev.js +12 -14
  7. package/dist/cjs/commands/serve.js +17 -0
  8. package/dist/cjs/config/legacy/createToolsConfig.js +1 -4
  9. package/dist/esm/analyze/generateCode.js +37 -26
  10. package/dist/esm/analyze/getBundleEntry.js +2 -2
  11. package/dist/esm/builder/builder-webpack/builderPlugins/compatModern.js +2 -2
  12. package/dist/esm/builder/builder-webpack/index.js +11 -7
  13. package/dist/esm/builder/generator/getBuilderTargets.js +1 -1
  14. package/dist/esm/commands/dev.js +9 -8
  15. package/dist/esm/commands/serve.js +6 -1
  16. package/dist/esm/config/legacy/createToolsConfig.js +1 -4
  17. package/dist/esm-node/analyze/generateCode.js +20 -14
  18. package/dist/esm-node/analyze/getBundleEntry.js +2 -3
  19. package/dist/esm-node/builder/builder-webpack/builderPlugins/compatModern.js +2 -2
  20. package/dist/esm-node/builder/builder-webpack/index.js +12 -6
  21. package/dist/esm-node/builder/generator/getBuilderTargets.js +1 -1
  22. package/dist/esm-node/commands/dev.js +12 -14
  23. package/dist/esm-node/commands/serve.js +18 -1
  24. package/dist/esm-node/config/legacy/createToolsConfig.js +1 -4
  25. package/dist/js/modern/analyze/constants.js +3 -1
  26. package/dist/js/modern/analyze/getServerRoutes.js +5 -2
  27. package/dist/js/modern/analyze/index.js +47 -46
  28. package/dist/js/modern/analyze/nestedRoutes.js +32 -3
  29. package/dist/js/modern/analyze/templates.js +4 -10
  30. package/dist/js/modern/builder/builder-rspack/index.js +8 -0
  31. package/dist/js/modern/builder/builder-webpack/builderPlugins/compatModern.js +41 -0
  32. package/dist/js/modern/builder/builder-webpack/index.js +93 -0
  33. package/dist/js/modern/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +4 -1
  34. package/dist/js/modern/builder/builder-webpack/webpackPlugins/index.js +1 -0
  35. package/dist/js/modern/builder/generator/createBuilderOptions.js +24 -0
  36. package/dist/js/modern/builder/generator/createBuilderProviderConfig.js +39 -0
  37. package/dist/js/modern/builder/generator/getBuilderTargets.js +21 -0
  38. package/dist/js/modern/builder/generator/index.js +53 -0
  39. package/dist/js/modern/builder/index.js +13 -133
  40. package/dist/js/modern/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +102 -116
  41. package/dist/js/modern/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +27 -0
  42. package/dist/js/modern/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +34 -0
  43. package/dist/js/modern/builder/shared/index.js +3 -0
  44. package/dist/js/modern/builder/shared/types.js +0 -0
  45. package/dist/js/modern/config/default.js +2 -2
  46. package/dist/js/modern/config/index.js +3 -8
  47. package/dist/js/modern/config/initialize/index.js +12 -0
  48. package/dist/js/modern/config/{initial → initialize}/inits.js +4 -2
  49. package/dist/js/modern/config/{initial/transformNormalizedConfig.js → legacy/index.js} +4 -0
  50. package/dist/js/modern/index.js +18 -8
  51. package/dist/js/modern/initialize/index.js +36 -28
  52. package/dist/js/modern/locale/zh.js +1 -1
  53. package/dist/js/modern/types/utils.js +0 -0
  54. package/dist/js/node/analyze/constants.js +3 -1
  55. package/dist/js/node/analyze/getServerRoutes.js +3 -1
  56. package/dist/js/node/analyze/index.js +48 -47
  57. package/dist/js/node/analyze/nestedRoutes.js +32 -3
  58. package/dist/js/node/analyze/templates.js +4 -10
  59. package/dist/js/node/{config/initial → builder/builder-rspack}/index.js +9 -19
  60. package/dist/js/node/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  61. package/dist/js/node/builder/builder-webpack/index.js +118 -0
  62. package/dist/js/node/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +10 -5
  63. package/dist/js/node/builder/builder-webpack/webpackPlugins/index.js +17 -0
  64. package/dist/js/node/builder/generator/createBuilderOptions.js +47 -0
  65. package/dist/js/node/builder/generator/createBuilderProviderConfig.js +60 -0
  66. package/dist/js/node/builder/generator/getBuilderTargets.js +39 -0
  67. package/dist/js/node/builder/generator/index.js +82 -0
  68. package/dist/js/node/builder/index.js +14 -123
  69. package/dist/js/node/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +107 -120
  70. package/dist/js/node/builder/{webpackPlugins/htmlAsyncChunkPlugin.js → shared/bundlerPlugins/HtmlAsyncChunkPlugin.js} +17 -20
  71. package/dist/js/node/builder/{webpackPlugins/htmlBottomTemplate.js → shared/bundlerPlugins/HtmlBottomTemplate.js} +21 -24
  72. package/dist/js/node/builder/{share.js → shared/createCopyPattern.js} +3 -3
  73. package/dist/js/node/builder/shared/index.js +19 -0
  74. package/dist/js/node/builder/shared/types.js +15 -0
  75. package/dist/js/node/config/default.js +2 -2
  76. package/dist/js/node/config/index.js +4 -19
  77. package/dist/js/node/{builder/loaders/routerLoader.js → config/initialize/index.js} +14 -17
  78. package/dist/js/node/config/{initial → initialize}/inits.js +4 -2
  79. package/dist/js/node/config/{initial/transformNormalizedConfig.js → legacy/index.js} +8 -3
  80. package/dist/js/node/index.js +18 -8
  81. package/dist/js/node/initialize/index.js +35 -28
  82. package/dist/js/node/locale/zh.js +1 -1
  83. package/dist/js/node/types/utils.js +15 -0
  84. package/dist/js/treeshaking/analyze/constants.js +3 -1
  85. package/dist/js/treeshaking/analyze/generateCode.js +14 -14
  86. package/dist/js/treeshaking/analyze/getBundleEntry.js +2 -2
  87. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +1 -1
  88. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +1 -1
  89. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +1 -1
  90. package/dist/js/treeshaking/analyze/getServerRoutes.js +8 -6
  91. package/dist/js/treeshaking/analyze/index.js +142 -137
  92. package/dist/js/treeshaking/analyze/nestedRoutes.js +29 -4
  93. package/dist/js/treeshaking/analyze/templates.js +10 -13
  94. package/dist/js/treeshaking/analyze/utils.js +3 -3
  95. package/dist/js/treeshaking/builder/builder-rspack/index.js +6 -0
  96. package/dist/js/treeshaking/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  97. package/dist/js/treeshaking/builder/builder-webpack/index.js +301 -0
  98. package/dist/js/treeshaking/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +6 -3
  99. package/dist/js/treeshaking/builder/builder-webpack/webpackPlugins/index.js +1 -0
  100. package/dist/js/treeshaking/builder/generator/createBuilderOptions.js +41 -0
  101. package/dist/js/treeshaking/builder/generator/createBuilderProviderConfig.js +70 -0
  102. package/dist/js/treeshaking/builder/generator/getBuilderTargets.js +16 -0
  103. package/dist/js/treeshaking/builder/generator/index.js +199 -0
  104. package/dist/js/treeshaking/builder/index.js +29 -228
  105. package/dist/js/treeshaking/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +138 -142
  106. package/dist/js/treeshaking/builder/{webpackPlugins/htmlBottomTemplate.js → shared/bundlerPlugins/HtmlBottomTemplate.js} +2 -2
  107. package/dist/js/treeshaking/builder/shared/index.js +3 -0
  108. package/dist/js/treeshaking/builder/shared/types.js +1 -0
  109. package/dist/js/treeshaking/commands/dev.js +2 -2
  110. package/dist/js/treeshaking/commands/serve.js +2 -2
  111. package/dist/js/treeshaking/config/default.js +2 -2
  112. package/dist/js/treeshaking/config/index.js +3 -3
  113. package/dist/js/treeshaking/config/initialize/index.js +10 -0
  114. package/dist/js/treeshaking/config/{initial → initialize}/inits.js +6 -4
  115. package/dist/js/treeshaking/config/legacy/createHtmlConfig.js +19 -0
  116. package/dist/js/treeshaking/config/{initial → legacy}/createOutputConfig.js +1 -1
  117. package/dist/js/treeshaking/config/{initial → legacy}/createSourceConfig.js +1 -1
  118. package/dist/js/treeshaking/config/{initial → legacy}/createToolsConfig.js +1 -1
  119. package/dist/js/treeshaking/config/{initial/transformNormalizedConfig.js → legacy/index.js} +4 -1
  120. package/dist/js/treeshaking/index.js +19 -12
  121. package/dist/js/treeshaking/initialize/index.js +36 -28
  122. package/dist/js/treeshaking/locale/zh.js +1 -1
  123. package/dist/js/treeshaking/types/utils.js +1 -0
  124. package/dist/js/treeshaking/utils/config.js +2 -2
  125. package/dist/js/treeshaking/utils/getServerInternalPlugins.js +2 -2
  126. package/dist/types/builder/builder-webpack/builderPlugins/compatModern.d.ts +7 -1
  127. package/package.json +6 -6
  128. package/dist/js/modern/builder/loaders/routerLoader.js +0 -17
  129. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +0 -30
  130. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +0 -37
  131. package/dist/js/modern/config/initial/index.js +0 -16
  132. package/dist/js/treeshaking/builder/loaders/routerLoader.js +0 -13
  133. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +0 -19
  134. package/dist/js/treeshaking/config/initial/index.js +0 -12
  135. /package/dist/js/modern/builder/{share.js → shared/createCopyPattern.js} +0 -0
  136. /package/dist/js/modern/builder/{loaders → shared/loaders}/serverModuleLoader.js +0 -0
  137. /package/dist/js/modern/config/{initial → legacy}/createHtmlConfig.js +0 -0
  138. /package/dist/js/modern/config/{initial → legacy}/createOutputConfig.js +0 -0
  139. /package/dist/js/modern/config/{initial → legacy}/createSourceConfig.js +0 -0
  140. /package/dist/js/modern/config/{initial → legacy}/createToolsConfig.js +0 -0
  141. /package/dist/js/node/builder/{loaders → shared/loaders}/serverModuleLoader.js +0 -0
  142. /package/dist/js/node/config/{initial → legacy}/createHtmlConfig.js +0 -0
  143. /package/dist/js/node/config/{initial → legacy}/createOutputConfig.js +0 -0
  144. /package/dist/js/node/config/{initial → legacy}/createSourceConfig.js +0 -0
  145. /package/dist/js/node/config/{initial → legacy}/createToolsConfig.js +0 -0
  146. /package/dist/js/treeshaking/builder/{webpackPlugins/htmlAsyncChunkPlugin.js → shared/bundlerPlugins/HtmlAsyncChunkPlugin.js} +0 -0
  147. /package/dist/js/treeshaking/builder/{share.js → shared/createCopyPattern.js} +0 -0
  148. /package/dist/js/treeshaking/builder/{loaders → shared/loaders}/serverModuleLoader.js +0 -0
@@ -3,8 +3,7 @@ import {
3
3
  ensureAbsolutePath,
4
4
  fs,
5
5
  findExists,
6
- MAIN_ENTRY_NAME,
7
- isRouterV5
6
+ MAIN_ENTRY_NAME
8
7
  } from "@modern-js/utils";
9
8
  import { getFileSystemEntry } from "./getFileSystemEntry";
10
9
  import { JS_EXTENSIONS } from "./constants";
@@ -56,7 +55,7 @@ const getBundleEntry = (appContext, config) => {
56
55
  customBootstrap: value.customBootstrap && ensureAbsolutePath(appDirectory, value.customBootstrap),
57
56
  fileSystemRoutes: fs.statSync(ensureAbsolutePath(appDirectory, value.entry)).isDirectory() ? {} : void 0
58
57
  };
59
- if (entrypoint.fileSystemRoutes && isRouterV5(config)) {
58
+ if (entrypoint.fileSystemRoutes) {
60
59
  entrypoint.nestedRoutesEntry = entrypoint.entry;
61
60
  }
62
61
  if (!ifAlreadyExists(defaults, entrypoint)) {
@@ -1,7 +1,7 @@
1
1
  import { join } from "path";
2
2
  import { createCopyPattern } from "../../shared";
3
3
  import { RouterPlugin } from "../webpackPlugins";
4
- const builderPluginCompatModern = (options) => ({
4
+ const PluginCompatModern = (options) => ({
5
5
  name: "builder-plugin-compat-modern",
6
6
  setup(api) {
7
7
  const { normalizedConfig: modernConfig, appContext } = options;
@@ -37,5 +37,5 @@ const builderPluginCompatModern = (options) => ({
37
37
  }
38
38
  });
39
39
  export {
40
- builderPluginCompatModern
40
+ PluginCompatModern
41
41
  };
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  builderWebpackProvider
3
3
  } from "@modern-js/builder-webpack-provider";
4
+ import { applyOptionsChain } from "@modern-js/utils";
4
5
  import { createCopyPattern } from "../shared";
5
6
  import { generateBuilder } from "../generator";
6
- import { builderPluginCompatModern } from "./builderPlugins/compatModern";
7
+ import { PluginCompatModern } from "./builderPlugins/compatModern";
7
8
  function createWebpackBuilderForModern(options) {
8
9
  return generateBuilder(options, builderWebpackProvider, {
9
10
  modifyBuilderConfig(config) {
@@ -30,15 +31,20 @@ function modifyOutputConfig(config, appContext) {
30
31
  async function applyBuilderPlugins(builder, options) {
31
32
  const { normalizedConfig } = options;
32
33
  if (!normalizedConfig.output.disableNodePolyfill) {
33
- const { builderPluginNodePolyfill } = await import("@modern-js/builder-plugin-node-polyfill");
34
- builder.addPlugins([builderPluginNodePolyfill()]);
34
+ const { PluginNodePolyfill } = await import("@modern-js/builder-plugin-node-polyfill");
35
+ builder.addPlugins([PluginNodePolyfill()]);
35
36
  }
36
37
  if (normalizedConfig.tools.esbuild) {
37
38
  const { esbuild: esbuildOptions } = normalizedConfig.tools;
38
- const { builderPluginEsbuild } = await import("@modern-js/builder-plugin-esbuild");
39
- builder.addPlugins([builderPluginEsbuild(esbuildOptions)]);
39
+ const { PluginEsbuild } = await import("@modern-js/builder-plugin-esbuild");
40
+ builder.addPlugins([
41
+ PluginEsbuild({
42
+ loader: false,
43
+ minimize: applyOptionsChain({}, esbuildOptions)
44
+ })
45
+ ]);
40
46
  }
41
- builder.addPlugins([builderPluginCompatModern(options)]);
47
+ builder.addPlugins([PluginCompatModern(options)]);
42
48
  }
43
49
  export {
44
50
  createWebpackBuilderForModern
@@ -10,7 +10,7 @@ function getBuilderTargets(normalizedConfig) {
10
10
  if (useNodeTarget) {
11
11
  targets.push("node");
12
12
  }
13
- const useWorkerTarget = isServiceWorker(normalizedConfig);
13
+ const useWorkerTarget = isProd() ? isServiceWorker(normalizedConfig) : false;
14
14
  if (useWorkerTarget) {
15
15
  targets.push("service-worker");
16
16
  }
@@ -9,7 +9,7 @@ import { generateRoutes } from "../utils/routes";
9
9
  import { buildServerConfig } from "../utils/config";
10
10
  import { getServerInternalPlugins } from "../utils/getServerInternalPlugins";
11
11
  const dev = async (api, options) => {
12
- var _a, _b;
12
+ var _a;
13
13
  if (options.analyze) {
14
14
  process.env.BUNDLE_ANALYZE = "true";
15
15
  }
@@ -41,9 +41,14 @@ const dev = async (api, options) => {
41
41
  dev: {
42
42
  port,
43
43
  https: normalizedConfig.dev.https,
44
- host: normalizedConfig.dev.host,
45
44
  ...(_a = normalizedConfig.tools) == null ? void 0 : _a.devServer
46
45
  },
46
+ appContext: {
47
+ appDirectory: appContext.appDirectory,
48
+ sharedDirectory: appContext.sharedDirectory,
49
+ apiDirectory: appContext.apiDirectory,
50
+ lambdaDirectory: appContext.lambdaDirectory
51
+ },
47
52
  pwd: appDirectory,
48
53
  config: normalizedConfig,
49
54
  serverConfigFile,
@@ -54,19 +59,12 @@ const dev = async (api, options) => {
54
59
  ...serverOptions,
55
60
  compiler: null
56
61
  });
57
- const host = ((_b = normalizedConfig.dev) == null ? void 0 : _b.host) || "localhost";
58
- app.listen(
59
- {
60
- port,
61
- host
62
- },
63
- async (err) => {
64
- if (err) {
65
- throw err;
66
- }
67
- printInstructions(hookRunners, appContext, normalizedConfig);
62
+ app.listen(port, async (err) => {
63
+ if (err) {
64
+ throw err;
68
65
  }
69
- );
66
+ printInstructions(hookRunners, appContext, normalizedConfig);
67
+ });
70
68
  } else {
71
69
  const { server } = await appContext.builder.startDevServer({
72
70
  printURLs: false,
@@ -1,4 +1,4 @@
1
- import { logger, chalk, isApiOnly } from "@modern-js/utils";
1
+ import { logger, chalk, isApiOnly, getTargetDir } from "@modern-js/utils";
2
2
  import server from "@modern-js/prod-server";
3
3
  import { printInstructions } from "../utils/printInstructions";
4
4
  import { injectDataLoaderPlugin } from "../utils/createServer";
@@ -18,6 +18,23 @@ const start = async (api) => {
18
18
  const app = await server({
19
19
  pwd: appDirectory,
20
20
  config: userConfig,
21
+ appContext: {
22
+ sharedDirectory: getTargetDir(
23
+ appContext.sharedDirectory,
24
+ appContext.appDirectory,
25
+ appContext.distDirectory
26
+ ),
27
+ apiDirectory: getTargetDir(
28
+ appContext.apiDirectory,
29
+ appContext.appDirectory,
30
+ appContext.distDirectory
31
+ ),
32
+ lambdaDirectory: getTargetDir(
33
+ appContext.lambdaDirectory,
34
+ appContext.appDirectory,
35
+ appContext.distDirectory
36
+ )
37
+ },
21
38
  serverConfigFile,
22
39
  internalPlugins: injectDataLoaderPlugin(serverInternalPlugins),
23
40
  apiOnly
@@ -34,10 +34,7 @@ function createToolsConfig(config) {
34
34
  devServer,
35
35
  tailwindcss,
36
36
  jest,
37
- esbuild: {
38
- loader: false,
39
- minimize: esbuild
40
- }
37
+ esbuild
41
38
  };
42
39
  }
43
40
  export {
@@ -23,7 +23,9 @@ const NESTED_ROUTE = {
23
23
  PAGE_LOADER_FILE: "page.loader",
24
24
  LOADING_FILE: "loading",
25
25
  ERROR_FILE: "error",
26
- LOADER_FILE: "loader"
26
+ LOADER_FILE: "loader",
27
+ SPLATE_FILE: "$",
28
+ SPLATE_LOADER_FILE: "$.loader"
27
29
  };
28
30
  const APP_CONFIG_NAME = "config";
29
31
  const APP_INIT_EXPORTED = "init";
@@ -38,7 +38,8 @@ import {
38
38
  getEntryOptions,
39
39
  SERVER_BUNDLE_DIRECTORY,
40
40
  MAIN_ENTRY_NAME,
41
- removeTailSlash
41
+ removeTailSlash,
42
+ SERVER_WORKER_BUNDLE_DIRECTORY
42
43
  } from "@modern-js/utils";
43
44
  import { walkDirectory } from "./utils";
44
45
  const applyBaseUrl = (baseUrl, routes) => {
@@ -101,7 +102,7 @@ const collectHtmlRoutes = (entrypoints, appContext, config) => {
101
102
  const {
102
103
  html: { disableHtmlFolder },
103
104
  output: { distPath: { html: htmlPath } = {} },
104
- server: { baseUrl, routes, ssr, ssrByEntries }
105
+ server: { baseUrl, routes, ssr, ssrByEntries, worker }
105
106
  } = config;
106
107
  const { packageName } = appContext;
107
108
  let htmlRoutes = entrypoints.reduce(
@@ -113,6 +114,7 @@ const collectHtmlRoutes = (entrypoints, appContext, config) => {
113
114
  packageName
114
115
  );
115
116
  const isSSR = Boolean(entryOptions);
117
+ const isWorker = Boolean(worker);
116
118
  const { resHeaders } = (routes == null ? void 0 : routes[entryName]) || {};
117
119
  let route = {
118
120
  urlPath: `/${entryName === MAIN_ENTRY_NAME ? "" : entryName}`,
@@ -125,6 +127,7 @@ const collectHtmlRoutes = (entrypoints, appContext, config) => {
125
127
  isSPA: true,
126
128
  isSSR,
127
129
  responseHeaders: resHeaders,
130
+ worker: isWorker ? `${SERVER_WORKER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0,
128
131
  bundle: isSSR ? `${SERVER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0
129
132
  };
130
133
  if (routes == null ? void 0 : routes.hasOwnProperty(entryName)) {
@@ -49,12 +49,12 @@ import {
49
49
  isDevCommand
50
50
  } from "@modern-js/utils";
51
51
  import { cloneDeep } from "@modern-js/utils/lodash";
52
- import { createBuilderForModern } from "../builder";
53
52
  import { printInstructions } from "../utils/printInstructions";
54
53
  import { generateRoutes } from "../utils/routes";
55
54
  import { emitResolvedConfig } from "../utils/config";
56
55
  import { getSelectedEntries } from "../utils/getSelectedEntries";
57
56
  import { initialNormalizedConfig } from "../config";
57
+ import { createBuilderGenerator } from "../builder";
58
58
  import {
59
59
  getServerLoadersFile,
60
60
  isPageComponentFile,
@@ -67,7 +67,9 @@ import {
67
67
  APP_INIT_IMPORTED
68
68
  } from "./constants";
69
69
  const debug = createDebugger("plugin-analyze");
70
- var analyze_default = () => ({
70
+ var analyze_default = ({
71
+ bundler
72
+ }) => ({
71
73
  name: "@modern-js/plugin-analyze",
72
74
  setup: (api) => {
73
75
  let pagesDir = [];
@@ -159,56 +161,55 @@ var analyze_default = () => ({
159
161
  if (buildCommands.includes(command)) {
160
162
  let _b;
161
163
  const normalizedConfig = api.useResolvedConfigContext();
164
+ const createBuilderForModern = yield createBuilderGenerator(bundler);
162
165
  const builder = yield createBuilderForModern({
163
166
  normalizedConfig,
164
167
  appContext,
165
- compatPluginConfig: {
166
- onBeforeBuild(_0) {
167
- return __async(this, arguments, function* ({ bundlerConfigs }) {
168
- const hookRunners2 = api.useHookRunners();
169
- yield generateRoutes(appContext);
170
- yield hookRunners2.beforeBuild({ bundlerConfigs });
168
+ onBeforeBuild(_0) {
169
+ return __async(this, arguments, function* ({ bundlerConfigs }) {
170
+ const hookRunners2 = api.useHookRunners();
171
+ yield generateRoutes(appContext);
172
+ yield hookRunners2.beforeBuild({
173
+ bundlerConfigs
171
174
  });
172
- },
173
- onAfterBuild(_0) {
174
- return __async(this, arguments, function* ({ stats }) {
175
- const hookRunners2 = api.useHookRunners();
176
- yield hookRunners2.afterBuild({ stats });
177
- yield emitResolvedConfig(
178
- appContext.appDirectory,
179
- normalizedConfig
180
- );
181
- });
182
- },
183
- onDevCompileDone(_0) {
184
- return __async(this, arguments, function* ({ isFirstCompile }) {
185
- const hookRunners2 = api.useHookRunners();
186
- if (process.stdout.isTTY || isFirstCompile) {
187
- hookRunners2.afterDev();
188
- if (isFirstCompile) {
189
- printInstructions(
190
- hookRunners2,
191
- appContext,
192
- normalizedConfig
193
- );
194
- }
175
+ });
176
+ },
177
+ onAfterBuild(_0) {
178
+ return __async(this, arguments, function* ({ stats }) {
179
+ const hookRunners2 = api.useHookRunners();
180
+ yield hookRunners2.afterBuild({ stats });
181
+ yield emitResolvedConfig(
182
+ appContext.appDirectory,
183
+ normalizedConfig
184
+ );
185
+ });
186
+ },
187
+ onDevCompileDone(_0) {
188
+ return __async(this, arguments, function* ({ isFirstCompile }) {
189
+ const hookRunners2 = api.useHookRunners();
190
+ if (process.stdout.isTTY || isFirstCompile) {
191
+ hookRunners2.afterDev();
192
+ if (isFirstCompile) {
193
+ printInstructions(hookRunners2, appContext, normalizedConfig);
195
194
  }
195
+ }
196
+ });
197
+ },
198
+ onBeforeCreateCompiler(_0) {
199
+ return __async(this, arguments, function* ({ bundlerConfigs }) {
200
+ const hookRunners2 = api.useHookRunners();
201
+ yield hookRunners2.beforeCreateCompiler({
202
+ bundlerConfigs
196
203
  });
197
- },
198
- onBeforeCreateCompiler(_0) {
199
- return __async(this, arguments, function* ({ bundlerConfigs }) {
200
- const hookRunners2 = api.useHookRunners();
201
- yield hookRunners2.beforeCreateCompiler({
202
- bundlerConfigs
203
- });
204
- });
205
- },
206
- onAfterCreateCompiler(_0) {
207
- return __async(this, arguments, function* ({ compiler }) {
208
- const hookRunners2 = api.useHookRunners();
209
- yield hookRunners2.afterCreateCompiler({ compiler });
204
+ });
205
+ },
206
+ onAfterCreateCompiler(_0) {
207
+ return __async(this, arguments, function* ({ compiler }) {
208
+ const hookRunners2 = api.useHookRunners();
209
+ yield hookRunners2.afterCreateCompiler({
210
+ compiler
210
211
  });
211
- }
212
+ });
212
213
  }
213
214
  });
214
215
  builder.addPlugins(resolvedConfig.builderPlugins);
@@ -251,7 +252,7 @@ var analyze_default = () => ({
251
252
  },
252
253
  resolvedConfig({ resolved }) {
253
254
  const appContext = api.useAppContext();
254
- const config = initialNormalizedConfig(resolved, appContext);
255
+ const config = initialNormalizedConfig(resolved, appContext, bundler);
255
256
  return {
256
257
  resolved: config
257
258
  };
@@ -64,7 +64,7 @@ const createRoute = (routeInfo, rootDir, filename, entryName) => {
64
64
  });
65
65
  };
66
66
  const walk = (dirname, rootDir, alias, entryName) => __async(void 0, null, function* () {
67
- var _a, _b, _c;
67
+ var _a, _b, _c, _d;
68
68
  if (!(yield fs.pathExists(dirname))) {
69
69
  return null;
70
70
  }
@@ -90,6 +90,8 @@ const walk = (dirname, rootDir, alias, entryName) => __async(void 0, null, funct
90
90
  };
91
91
  let pageLoaderFile = "";
92
92
  let pageRoute = null;
93
+ let splatLoaderFile = "";
94
+ let splatRoute = null;
93
95
  const items = yield fs.readdir(dirname);
94
96
  for (const item of items) {
95
97
  const itemPath = path.join(dirname, item);
@@ -130,6 +132,24 @@ const walk = (dirname, rootDir, alias, entryName) => __async(void 0, null, funct
130
132
  }
131
133
  (_b = route.children) == null ? void 0 : _b.push(pageRoute);
132
134
  }
135
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_LOADER_FILE) {
136
+ splatLoaderFile = itemPath;
137
+ }
138
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_FILE) {
139
+ splatRoute = createRoute(
140
+ {
141
+ _component: replaceWithAlias(alias.basename, itemPath, alias.name),
142
+ path: "*"
143
+ },
144
+ rootDir,
145
+ itemPath,
146
+ entryName
147
+ );
148
+ if (splatLoaderFile) {
149
+ splatRoute.loader = splatLoaderFile;
150
+ }
151
+ (_c = route.children) == null ? void 0 : _c.push(splatRoute);
152
+ }
133
153
  if (itemWithoutExt === NESTED_ROUTE.LOADING_FILE) {
134
154
  route.loading = replaceWithAlias(alias.basename, itemPath, alias.name);
135
155
  }
@@ -137,7 +157,7 @@ const walk = (dirname, rootDir, alias, entryName) => __async(void 0, null, funct
137
157
  route.error = replaceWithAlias(alias.basename, itemPath, alias.name);
138
158
  }
139
159
  }
140
- const finalRoute = createRoute(
160
+ let finalRoute = createRoute(
141
161
  route,
142
162
  rootDir,
143
163
  path.join(dirname, `${NESTED_ROUTE.LAYOUT_FILE}.ts`),
@@ -146,10 +166,19 @@ const walk = (dirname, rootDir, alias, entryName) => __async(void 0, null, funct
146
166
  if (isPathlessLayout) {
147
167
  delete finalRoute.path;
148
168
  }
149
- route.children = (_c = route.children) == null ? void 0 : _c.filter((childRoute) => childRoute);
169
+ route.children = (_d = route.children) == null ? void 0 : _d.filter((childRoute) => childRoute);
150
170
  if (route.children && route.children.length === 0 && !route.index) {
151
171
  return null;
152
172
  }
173
+ if (finalRoute.children && finalRoute.children.length === 1 && !finalRoute._component) {
174
+ const childRoute = finalRoute.children[0];
175
+ if (childRoute.path === "*") {
176
+ const path2 = `${finalRoute.path || ""}/${childRoute.path || ""}`;
177
+ finalRoute = __spreadProps(__spreadValues({}, childRoute), {
178
+ path: path2
179
+ });
180
+ }
181
+ }
153
182
  return finalRoute;
154
183
  });
155
184
  export {
@@ -69,6 +69,7 @@ const renderFunction = ({
69
69
  customBootstrap,
70
70
  fileSystemRoutes: fileSystemRoutes2
71
71
  }) => {
72
+ const bootstrap = "bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM)";
72
73
  return `
73
74
  const finalAppConfig = {
74
75
  ...App.config,
@@ -90,7 +91,7 @@ const renderFunction = ({
90
91
 
91
92
 
92
93
  if (IS_BROWSER) {
93
- ${customBootstrap ? `customBootstrap(AppWrapper);` : `bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM);`}
94
+ ${customBootstrap ? `customBootstrap(AppWrapper, () => ${bootstrap});` : `${bootstrap};`}
94
95
  }
95
96
 
96
97
  return AppWrapper
@@ -198,7 +199,6 @@ const fileSystemRoutes = (_0) => __async(void 0, [_0], function* ({
198
199
  import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
199
200
  `;
200
201
  let rootLayoutCode = ``;
201
- let componentLoaderPath = "";
202
202
  const getDataLoaderPath = (loaderId) => {
203
203
  if (!ssrMode) {
204
204
  return "";
@@ -211,12 +211,6 @@ const fileSystemRoutes = (_0) => __async(void 0, [_0], function* ({
211
211
  }
212
212
  return dataLoaderPath;
213
213
  };
214
- if (ssrMode) {
215
- componentLoaderPath = `${path.join(
216
- __dirname,
217
- "../builder/loaders/routerLoader"
218
- )}!`;
219
- }
220
214
  const traverseRouteTree = (route) => {
221
215
  var _a;
222
216
  let children;
@@ -252,10 +246,10 @@ const fileSystemRoutes = (_0) => __async(void 0, [_0], function* ({
252
246
  rootLayoutCode = `import RootLayout from '${route._component}'`;
253
247
  component = `RootLayout`;
254
248
  } else if (ssrMode === "string") {
255
- lazyImport = `() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}')`;
249
+ lazyImport = `() => import(/* webpackChunkName: "${route.id}" */ '${route._component}')`;
256
250
  component = `loadable(${lazyImport})`;
257
251
  } else {
258
- lazyImport = `() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}')`;
252
+ lazyImport = `() => import(/* webpackChunkName: "${route.id}" */ '${route._component}')`;
259
253
  component = `lazy(${lazyImport})`;
260
254
  }
261
255
  }
@@ -0,0 +1,8 @@
1
+ import { builderRspackProvider } from "@modern-js/builder-rspack-provider";
2
+ import { generateBuilder } from "../generator";
3
+ function createRspackBuilderForModern(options) {
4
+ return generateBuilder(options, builderRspackProvider);
5
+ }
6
+ export {
7
+ createRspackBuilderForModern
8
+ };
@@ -0,0 +1,41 @@
1
+ import { join } from "path";
2
+ import { createCopyPattern } from "../../shared";
3
+ import { RouterPlugin } from "../webpackPlugins";
4
+ const PluginCompatModern = (options) => ({
5
+ name: "builder-plugin-compat-modern",
6
+ setup(api) {
7
+ const { normalizedConfig: modernConfig, appContext } = options;
8
+ api.modifyWebpackChain((chain, { CHAIN_ID }) => {
9
+ var _a;
10
+ chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
11
+ if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
12
+ const defaultCopyPattern = createCopyPattern(
13
+ appContext,
14
+ modernConfig,
15
+ "public",
16
+ chain
17
+ );
18
+ chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
19
+ var _a2;
20
+ return [
21
+ {
22
+ patterns: [...((_a2 = args[0]) == null ? void 0 : _a2.patterns) || [], defaultCopyPattern]
23
+ }
24
+ ];
25
+ });
26
+ }
27
+ const { entrypoints } = appContext;
28
+ const existNestedRoutes = entrypoints.some(
29
+ (entrypoint) => entrypoint.nestedRoutesEntry
30
+ );
31
+ const routerConfig = (_a = modernConfig == null ? void 0 : modernConfig.runtime) == null ? void 0 : _a.router;
32
+ const routerManifest = Boolean(routerConfig == null ? void 0 : routerConfig.manifest);
33
+ if (existNestedRoutes || routerManifest) {
34
+ chain.plugin("route-plugin").use(RouterPlugin);
35
+ }
36
+ });
37
+ }
38
+ });
39
+ export {
40
+ PluginCompatModern
41
+ };
@@ -0,0 +1,93 @@
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 {
41
+ builderWebpackProvider
42
+ } from "@modern-js/builder-webpack-provider";
43
+ import { applyOptionsChain } from "@modern-js/utils";
44
+ import { createCopyPattern } from "../shared";
45
+ import { generateBuilder } from "../generator";
46
+ import { PluginCompatModern } from "./builderPlugins/compatModern";
47
+ function createWebpackBuilderForModern(options) {
48
+ return generateBuilder(options, builderWebpackProvider, {
49
+ modifyBuilderConfig(config) {
50
+ modifyOutputConfig(config, options.appContext);
51
+ },
52
+ modifyBuilderInstance(builder) {
53
+ return __async(this, null, function* () {
54
+ yield applyBuilderPlugins(builder, options);
55
+ });
56
+ }
57
+ });
58
+ }
59
+ function modifyOutputConfig(config, appContext) {
60
+ config.output = createOutputConfig(config, appContext);
61
+ function createOutputConfig(config2, appContext2) {
62
+ const defaultCopyPattern = createCopyPattern(appContext2, config2, "upload");
63
+ const { copy } = config2.output;
64
+ const copyOptions = Array.isArray(copy) ? copy : copy == null ? void 0 : copy.patterns;
65
+ const builderCopy = [...copyOptions || [], defaultCopyPattern];
66
+ return __spreadProps(__spreadValues({}, config2.output), {
67
+ copy: builderCopy
68
+ });
69
+ }
70
+ }
71
+ function applyBuilderPlugins(builder, options) {
72
+ return __async(this, null, function* () {
73
+ const { normalizedConfig } = options;
74
+ if (!normalizedConfig.output.disableNodePolyfill) {
75
+ const { PluginNodePolyfill } = yield import("@modern-js/builder-plugin-node-polyfill");
76
+ builder.addPlugins([PluginNodePolyfill()]);
77
+ }
78
+ if (normalizedConfig.tools.esbuild) {
79
+ const { esbuild: esbuildOptions } = normalizedConfig.tools;
80
+ const { PluginEsbuild } = yield import("@modern-js/builder-plugin-esbuild");
81
+ builder.addPlugins([
82
+ PluginEsbuild({
83
+ loader: false,
84
+ minimize: applyOptionsChain({}, esbuildOptions)
85
+ })
86
+ ]);
87
+ }
88
+ builder.addPlugins([PluginCompatModern(options)]);
89
+ });
90
+ }
91
+ export {
92
+ createWebpackBuilderForModern
93
+ };
@@ -32,6 +32,9 @@ class RouterPlugin {
32
32
  if (target === "node" || Array.isArray(target) && target.includes("node")) {
33
33
  return;
34
34
  }
35
+ if (target === "webworker" || Array.isArray(target) && target.includes("webworker")) {
36
+ return;
37
+ }
35
38
  const { webpack } = compiler;
36
39
  const { Compilation, sources } = webpack;
37
40
  const { RawSource } = sources;
@@ -109,5 +112,5 @@ class RouterPlugin {
109
112
  }
110
113
  }
111
114
  export {
112
- RouterPlugin as default
115
+ RouterPlugin
113
116
  };
@@ -0,0 +1 @@
1
+ export * from "./RouterPlugin";
@@ -0,0 +1,24 @@
1
+ function createBuilderOptions(target, appContext) {
2
+ const entries = {};
3
+ const { entrypoints = [], checkedEntries } = appContext;
4
+ for (const { entryName, entry } of entrypoints) {
5
+ if (checkedEntries && !checkedEntries.includes(entryName)) {
6
+ continue;
7
+ }
8
+ if (entryName in entries) {
9
+ entries[entryName].push(entry);
10
+ } else {
11
+ entries[entryName] = [entry];
12
+ }
13
+ }
14
+ return {
15
+ cwd: appContext.appDirectory,
16
+ target,
17
+ configPath: appContext.configFile || void 0,
18
+ entry: entries,
19
+ framework: appContext.metaName
20
+ };
21
+ }
22
+ export {
23
+ createBuilderOptions
24
+ };