@modern-js/app-tools 2.35.2-alpha.0 → 2.37.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.
- package/dist/cjs/analyze/index.js +5 -7
- package/dist/cjs/analyze/nestedRoutes.js +4 -1
- package/dist/cjs/analyze/templates.js +28 -8
- package/dist/cjs/builder/builder-rspack/adapterCopy.js +14 -10
- package/dist/cjs/builder/builder-webpack/adapterModern.js +0 -2
- package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +2 -0
- package/dist/cjs/config/initialize/inits.js +0 -16
- package/dist/esm/analyze/index.js +5 -7
- package/dist/esm/analyze/nestedRoutes.js +4 -1
- package/dist/esm/analyze/templates.js +19 -7
- package/dist/esm/builder/builder-rspack/adapterCopy.js +12 -8
- package/dist/esm/builder/builder-webpack/adapterModern.js +0 -2
- package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +2 -0
- package/dist/esm/config/initialize/inits.js +2 -17
- package/dist/esm-node/analyze/index.js +5 -7
- package/dist/esm-node/analyze/nestedRoutes.js +4 -1
- package/dist/esm-node/analyze/templates.js +25 -5
- package/dist/esm-node/builder/builder-rspack/adapterCopy.js +14 -10
- package/dist/esm-node/builder/builder-webpack/adapterModern.js +0 -2
- package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +2 -0
- package/dist/esm-node/config/initialize/inits.js +2 -18
- package/package.json +25 -25
- package/dist/js/modern/analyze/constants.js +0 -54
- package/dist/js/modern/analyze/generateCode.js +0 -247
- package/dist/js/modern/analyze/getBundleEntry.js +0 -71
- package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +0 -220
- package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +0 -216
- package/dist/js/modern/analyze/getClientRoutes/index.js +0 -6
- package/dist/js/modern/analyze/getClientRoutes/utils.js +0 -31
- package/dist/js/modern/analyze/getFileSystemEntry.js +0 -109
- package/dist/js/modern/analyze/getHtmlTemplate.js +0 -115
- package/dist/js/modern/analyze/getServerRoutes.js +0 -175
- package/dist/js/modern/analyze/index.js +0 -332
- package/dist/js/modern/analyze/isDefaultExportFunction.js +0 -42
- package/dist/js/modern/analyze/makeLegalIdentifier.js +0 -13
- package/dist/js/modern/analyze/nestedRoutes.js +0 -157
- package/dist/js/modern/analyze/templates.js +0 -334
- package/dist/js/modern/analyze/utils.js +0 -141
- package/dist/js/modern/builder/builderPlugins/compatModern.js +0 -233
- package/dist/js/modern/builder/index.js +0 -159
- package/dist/js/modern/builder/loaders/routerLoader.js +0 -17
- package/dist/js/modern/builder/loaders/serverModuleLoader.js +0 -7
- package/dist/js/modern/builder/share.js +0 -46
- package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +0 -30
- package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +0 -37
- package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +0 -113
- package/dist/js/modern/commands/build.js +0 -91
- package/dist/js/modern/commands/deploy.js +0 -28
- package/dist/js/modern/commands/dev.js +0 -109
- package/dist/js/modern/commands/index.js +0 -3
- package/dist/js/modern/commands/inspect.js +0 -38
- package/dist/js/modern/commands/serve.js +0 -54
- package/dist/js/modern/config/default.js +0 -175
- package/dist/js/modern/config/index.js +0 -8
- package/dist/js/modern/config/initial/createHtmlConfig.js +0 -35
- package/dist/js/modern/config/initial/createOutputConfig.js +0 -68
- package/dist/js/modern/config/initial/createSourceConfig.js +0 -39
- package/dist/js/modern/config/initial/createToolsConfig.js +0 -42
- package/dist/js/modern/config/initial/index.js +0 -16
- package/dist/js/modern/config/initial/inits.js +0 -152
- package/dist/js/modern/config/initial/transformNormalizedConfig.js +0 -47
- package/dist/js/modern/defineConfig.js +0 -27
- package/dist/js/modern/exports/server.js +0 -4
- package/dist/js/modern/hooks.js +0 -35
- package/dist/js/modern/index.js +0 -211
- package/dist/js/modern/initialize/index.js +0 -124
- package/dist/js/modern/locale/en.js +0 -36
- package/dist/js/modern/locale/index.js +0 -9
- package/dist/js/modern/locale/zh.js +0 -36
- package/dist/js/modern/schema/Schema.js +0 -40
- package/dist/js/modern/schema/index.js +0 -88
- package/dist/js/modern/schema/legacy.js +0 -148
- package/dist/js/modern/types/config/deploy.js +0 -0
- package/dist/js/modern/types/config/dev.js +0 -0
- package/dist/js/modern/types/config/experiments.js +0 -0
- package/dist/js/modern/types/config/html.js +0 -0
- package/dist/js/modern/types/config/index.js +0 -1
- package/dist/js/modern/types/config/output.js +0 -0
- package/dist/js/modern/types/config/performance.js +0 -0
- package/dist/js/modern/types/config/security.js +0 -0
- package/dist/js/modern/types/config/source.js +0 -0
- package/dist/js/modern/types/config/tools.js +0 -0
- package/dist/js/modern/types/hooks.js +0 -0
- package/dist/js/modern/types/index.js +0 -3
- package/dist/js/modern/types/legacyConfig/deploy.js +0 -0
- package/dist/js/modern/types/legacyConfig/dev.js +0 -0
- package/dist/js/modern/types/legacyConfig/index.js +0 -0
- package/dist/js/modern/types/legacyConfig/output.js +0 -0
- package/dist/js/modern/types/legacyConfig/source.js +0 -0
- package/dist/js/modern/types/legacyConfig/tools.js +0 -0
- package/dist/js/modern/utils/config.js +0 -128
- package/dist/js/modern/utils/createServer.js +0 -75
- package/dist/js/modern/utils/env.js +0 -15
- package/dist/js/modern/utils/generateWatchFiles.js +0 -55
- package/dist/js/modern/utils/getSelectedEntries.js +0 -58
- package/dist/js/modern/utils/getServerInternalPlugins.js +0 -58
- package/dist/js/modern/utils/language.js +0 -8
- package/dist/js/modern/utils/printInstructions.js +0 -31
- package/dist/js/modern/utils/restart.js +0 -44
- package/dist/js/modern/utils/routes.js +0 -30
- package/dist/js/modern/utils/types.js +0 -0
- package/dist/js/node/analyze/constants.js +0 -98
- package/dist/js/node/analyze/generateCode.js +0 -271
- package/dist/js/node/analyze/getBundleEntry.js +0 -95
- package/dist/js/node/analyze/getClientRoutes/getRoutes.js +0 -242
- package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +0 -238
- package/dist/js/node/analyze/getClientRoutes/index.js +0 -30
- package/dist/js/node/analyze/getClientRoutes/utils.js +0 -58
- package/dist/js/node/analyze/getFileSystemEntry.js +0 -131
- package/dist/js/node/analyze/getHtmlTemplate.js +0 -144
- package/dist/js/node/analyze/getServerRoutes.js +0 -194
- package/dist/js/node/analyze/index.js +0 -339
- package/dist/js/node/analyze/isDefaultExportFunction.js +0 -71
- package/dist/js/node/analyze/makeLegalIdentifier.js +0 -36
- package/dist/js/node/analyze/nestedRoutes.js +0 -184
- package/dist/js/node/analyze/templates.js +0 -365
- package/dist/js/node/analyze/utils.js +0 -172
- package/dist/js/node/builder/builderPlugins/compatModern.js +0 -258
- package/dist/js/node/builder/index.js +0 -177
- package/dist/js/node/builder/loaders/routerLoader.js +0 -38
- package/dist/js/node/builder/loaders/serverModuleLoader.js +0 -28
- package/dist/js/node/builder/share.js +0 -75
- package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +0 -53
- package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +0 -60
- package/dist/js/node/builder/webpackPlugins/routerPlugin.js +0 -135
- package/dist/js/node/commands/build.js +0 -112
- package/dist/js/node/commands/deploy.js +0 -51
- package/dist/js/node/commands/dev.js +0 -126
- package/dist/js/node/commands/index.js +0 -19
- package/dist/js/node/commands/inspect.js +0 -61
- package/dist/js/node/commands/serve.js +0 -83
- package/dist/js/node/config/default.js +0 -197
- package/dist/js/node/config/index.js +0 -34
- package/dist/js/node/config/initial/createHtmlConfig.js +0 -58
- package/dist/js/node/config/initial/createOutputConfig.js +0 -91
- package/dist/js/node/config/initial/createSourceConfig.js +0 -62
- package/dist/js/node/config/initial/createToolsConfig.js +0 -65
- package/dist/js/node/config/initial/index.js +0 -41
- package/dist/js/node/config/initial/inits.js +0 -175
- package/dist/js/node/config/initial/transformNormalizedConfig.js +0 -70
- package/dist/js/node/defineConfig.js +0 -49
- package/dist/js/node/exports/server.js +0 -27
- package/dist/js/node/hooks.js +0 -54
- package/dist/js/node/index.js +0 -235
- package/dist/js/node/initialize/index.js +0 -134
- package/dist/js/node/locale/en.js +0 -59
- package/dist/js/node/locale/index.js +0 -33
- package/dist/js/node/locale/zh.js +0 -59
- package/dist/js/node/schema/Schema.js +0 -63
- package/dist/js/node/schema/index.js +0 -118
- package/dist/js/node/schema/legacy.js +0 -169
- package/dist/js/node/types/config/deploy.js +0 -15
- package/dist/js/node/types/config/dev.js +0 -15
- package/dist/js/node/types/config/experiments.js +0 -15
- package/dist/js/node/types/config/html.js +0 -15
- package/dist/js/node/types/config/index.js +0 -17
- package/dist/js/node/types/config/output.js +0 -15
- package/dist/js/node/types/config/performance.js +0 -15
- package/dist/js/node/types/config/security.js +0 -15
- package/dist/js/node/types/config/source.js +0 -15
- package/dist/js/node/types/config/tools.js +0 -15
- package/dist/js/node/types/hooks.js +0 -15
- package/dist/js/node/types/index.js +0 -19
- package/dist/js/node/types/legacyConfig/deploy.js +0 -15
- package/dist/js/node/types/legacyConfig/dev.js +0 -15
- package/dist/js/node/types/legacyConfig/index.js +0 -15
- package/dist/js/node/types/legacyConfig/output.js +0 -15
- package/dist/js/node/types/legacyConfig/source.js +0 -15
- package/dist/js/node/types/legacyConfig/tools.js +0 -15
- package/dist/js/node/utils/config.js +0 -153
- package/dist/js/node/utils/createServer.js +0 -106
- package/dist/js/node/utils/env.js +0 -38
- package/dist/js/node/utils/generateWatchFiles.js +0 -85
- package/dist/js/node/utils/getSelectedEntries.js +0 -81
- package/dist/js/node/utils/getServerInternalPlugins.js +0 -79
- package/dist/js/node/utils/language.js +0 -31
- package/dist/js/node/utils/printInstructions.js +0 -54
- package/dist/js/node/utils/restart.js +0 -67
- package/dist/js/node/utils/routes.js +0 -59
- package/dist/js/node/utils/types.js +0 -15
- package/dist/js/treeshaking/analyze/constants.js +0 -40
- package/dist/js/treeshaking/analyze/generateCode.js +0 -485
- package/dist/js/treeshaking/analyze/getBundleEntry.js +0 -62
- package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +0 -233
- package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +0 -231
- package/dist/js/treeshaking/analyze/getClientRoutes/index.js +0 -3
- package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +0 -23
- package/dist/js/treeshaking/analyze/getFileSystemEntry.js +0 -107
- package/dist/js/treeshaking/analyze/getHtmlTemplate.js +0 -302
- package/dist/js/treeshaking/analyze/getServerRoutes.js +0 -222
- package/dist/js/treeshaking/analyze/index.js +0 -697
- package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +0 -47
- package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +0 -13
- package/dist/js/treeshaking/analyze/nestedRoutes.js +0 -384
- package/dist/js/treeshaking/analyze/templates.js +0 -468
- package/dist/js/treeshaking/analyze/utils.js +0 -374
- package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +0 -304
- package/dist/js/treeshaking/builder/index.js +0 -374
- package/dist/js/treeshaking/builder/loaders/routerLoader.js +0 -13
- package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +0 -5
- package/dist/js/treeshaking/builder/share.js +0 -40
- package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +0 -110
- package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +0 -72
- package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +0 -343
- package/dist/js/treeshaking/commands/build.js +0 -291
- package/dist/js/treeshaking/commands/deploy.js +0 -154
- package/dist/js/treeshaking/commands/dev.js +0 -301
- package/dist/js/treeshaking/commands/index.js +0 -3
- package/dist/js/treeshaking/commands/inspect.js +0 -149
- package/dist/js/treeshaking/commands/serve.js +0 -199
- package/dist/js/treeshaking/config/default.js +0 -210
- package/dist/js/treeshaking/config/index.js +0 -3
- package/dist/js/treeshaking/config/initial/createHtmlConfig.js +0 -19
- package/dist/js/treeshaking/config/initial/createOutputConfig.js +0 -41
- package/dist/js/treeshaking/config/initial/createSourceConfig.js +0 -42
- package/dist/js/treeshaking/config/initial/createToolsConfig.js +0 -23
- package/dist/js/treeshaking/config/initial/index.js +0 -12
- package/dist/js/treeshaking/config/initial/inits.js +0 -209
- package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +0 -35
- package/dist/js/treeshaking/defineConfig.js +0 -61
- package/dist/js/treeshaking/exports/server.js +0 -2
- package/dist/js/treeshaking/hooks.js +0 -29
- package/dist/js/treeshaking/index.js +0 -706
- package/dist/js/treeshaking/initialize/index.js +0 -276
- package/dist/js/treeshaking/locale/en.js +0 -38
- package/dist/js/treeshaking/locale/index.js +0 -9
- package/dist/js/treeshaking/locale/zh.js +0 -38
- package/dist/js/treeshaking/schema/Schema.js +0 -273
- package/dist/js/treeshaking/schema/index.js +0 -181
- package/dist/js/treeshaking/schema/legacy.js +0 -337
- package/dist/js/treeshaking/types/config/deploy.js +0 -1
- package/dist/js/treeshaking/types/config/dev.js +0 -1
- package/dist/js/treeshaking/types/config/experiments.js +0 -1
- package/dist/js/treeshaking/types/config/html.js +0 -1
- package/dist/js/treeshaking/types/config/index.js +0 -1
- package/dist/js/treeshaking/types/config/output.js +0 -1
- package/dist/js/treeshaking/types/config/performance.js +0 -1
- package/dist/js/treeshaking/types/config/security.js +0 -1
- package/dist/js/treeshaking/types/config/source.js +0 -1
- package/dist/js/treeshaking/types/config/tools.js +0 -1
- package/dist/js/treeshaking/types/hooks.js +0 -1
- package/dist/js/treeshaking/types/index.js +0 -3
- package/dist/js/treeshaking/types/legacyConfig/deploy.js +0 -1
- package/dist/js/treeshaking/types/legacyConfig/dev.js +0 -1
- package/dist/js/treeshaking/types/legacyConfig/index.js +0 -1
- package/dist/js/treeshaking/types/legacyConfig/output.js +0 -1
- package/dist/js/treeshaking/types/legacyConfig/source.js +0 -1
- package/dist/js/treeshaking/types/legacyConfig/tools.js +0 -1
- package/dist/js/treeshaking/utils/config.js +0 -302
- package/dist/js/treeshaking/utils/createServer.js +0 -258
- package/dist/js/treeshaking/utils/env.js +0 -13
- package/dist/js/treeshaking/utils/generateWatchFiles.js +0 -214
- package/dist/js/treeshaking/utils/getSelectedEntries.js +0 -186
- package/dist/js/treeshaking/utils/getServerInternalPlugins.js +0 -210
- package/dist/js/treeshaking/utils/language.js +0 -6
- package/dist/js/treeshaking/utils/printInstructions.js +0 -152
- package/dist/js/treeshaking/utils/restart.js +0 -187
- package/dist/js/treeshaking/utils/routes.js +0 -153
- package/dist/js/treeshaking/utils/types.js +0 -1
@@ -147,13 +147,11 @@ var analyze_default = ({ bundler }) => ({
|
|
147
147
|
});
|
148
148
|
builder.onDevCompileDone(async ({ isFirstCompile }) => {
|
149
149
|
const hookRunners2 = api.useHookRunners();
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
(0, import_printInstructions.printInstructions)(hookRunners2, appContext, normalizedConfig);
|
156
|
-
}
|
150
|
+
hookRunners2.afterDev({
|
151
|
+
isFirstCompile
|
152
|
+
});
|
153
|
+
if (isFirstCompile) {
|
154
|
+
(0, import_printInstructions.printInstructions)(hookRunners2, appContext, normalizedConfig);
|
157
155
|
}
|
158
156
|
});
|
159
157
|
builder.onBeforeCreateCompiler(async ({ bundlerConfigs }) => {
|
@@ -268,7 +268,7 @@ const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldVersion)
|
|
268
268
|
delete finalRoute.path;
|
269
269
|
}
|
270
270
|
const childRoutes = finalRoute.children = (_finalRoute_children = finalRoute.children) === null || _finalRoute_children === void 0 ? void 0 : _finalRoute_children.filter((childRoute) => childRoute);
|
271
|
-
if (childRoutes && childRoutes.length === 0 && !finalRoute.index) {
|
271
|
+
if (childRoutes && childRoutes.length === 0 && !finalRoute.index && !finalRoute._component) {
|
272
272
|
return null;
|
273
273
|
}
|
274
274
|
if (childRoutes && childRoutes.length === 1 && !finalRoute._component) {
|
@@ -281,6 +281,9 @@ const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldVersion)
|
|
281
281
|
};
|
282
282
|
}
|
283
283
|
}
|
284
|
+
if (isRoot && !finalRoute._component) {
|
285
|
+
throw new Error("The root layout component is required, make sure the routes/layout.tsx file exists.");
|
286
|
+
}
|
284
287
|
if (isRoot && !oldVersion) {
|
285
288
|
const optimizedRoutes = optimizeRoute(finalRoute);
|
286
289
|
return optimizedRoutes;
|
@@ -38,7 +38,8 @@ __export(templates_exports, {
|
|
38
38
|
module.exports = __toCommonJS(templates_exports);
|
39
39
|
var import_path = __toESM(require("path"));
|
40
40
|
var import_utils = require("@modern-js/utils");
|
41
|
-
var import_constants = require("
|
41
|
+
var import_constants = require("@modern-js/utils/universal/constants");
|
42
|
+
var import_constants2 = require("./constants");
|
42
43
|
var import_utils2 = require("./utils");
|
43
44
|
const index = ({ mountId, imports, renderFunction: renderFunction2, exportStatement }) => `
|
44
45
|
const IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';
|
@@ -64,7 +65,7 @@ const renderFunction = ({ plugins, customBootstrap, fileSystemRoutes: fileSystem
|
|
64
65
|
return `
|
65
66
|
const finalAppConfig = {
|
66
67
|
...App.config,
|
67
|
-
...typeof ${
|
68
|
+
...typeof ${import_constants2.APP_CONFIG_NAME} === 'function' ? ${import_constants2.APP_CONFIG_NAME}() : {},
|
68
69
|
}
|
69
70
|
|
70
71
|
AppWrapper = createApp({
|
@@ -198,7 +199,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
198
199
|
const loadersMap = {};
|
199
200
|
const configs = [];
|
200
201
|
const configsMap = {};
|
201
|
-
const loadersMapFile = import_path.default.join(internalDirectory, entryName,
|
202
|
+
const loadersMapFile = import_path.default.join(internalDirectory, entryName, import_constants2.TEMP_LOADERS_DIR, "map.json");
|
202
203
|
const importLazyCode = `
|
203
204
|
import { lazy } from "react";
|
204
205
|
import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
|
@@ -210,7 +211,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
210
211
|
}
|
211
212
|
const clientDataStr = clientData ? `&clientData=${clientData}` : "";
|
212
213
|
if (nestedRoutesEntry) {
|
213
|
-
return `?loaderId=${loaderId}${clientDataStr}&action=${action}&inline=${inline}&routeId=${routeId}`;
|
214
|
+
return `?loaderId=${loaderId}${clientDataStr}&action=${action ? (0, import_utils.slash)(action) : action}&inline=${inline}&routeId=${routeId}`;
|
214
215
|
}
|
215
216
|
return "";
|
216
217
|
};
|
@@ -263,18 +264,23 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
263
264
|
if (route._component) {
|
264
265
|
if (splitRouteChunks) {
|
265
266
|
if (route.isRoot) {
|
267
|
+
lazyImport = `async function(){const routeModule = await import('${route._component}'); if(typeof document !== "undefined") window.${import_constants.ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
266
268
|
rootLayoutCode = `import RootLayout from '${route._component}'`;
|
267
269
|
component = `RootLayout`;
|
268
270
|
} else if (ssrMode === "string") {
|
269
|
-
lazyImport = `()
|
271
|
+
lazyImport = `async function(){const routeModule = await import(/* webpackChunkName: "${route.id}" */ '${route._component}'); if(typeof document !== "undefined") window.${import_constants.ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
270
272
|
component = `loadable(${lazyImport})`;
|
271
273
|
} else {
|
272
|
-
lazyImport = `()
|
274
|
+
lazyImport = `async function(){const routeModule = await import(/* webpackChunkName: "${route.id}" */ '${route._component}'); if(typeof document !== "undefined") window.${import_constants.ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
273
275
|
component = `lazy(${lazyImport})`;
|
274
276
|
}
|
275
277
|
} else {
|
276
|
-
|
277
|
-
|
278
|
+
lazyImport = `async function(){const routeModule = await import(/* webpackMode: "eager" */ '${route._component}'); if(typeof document !== "undefined") window.${import_constants.ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
279
|
+
if (ssrMode === "string") {
|
280
|
+
component = `loadable(${lazyImport})`;
|
281
|
+
} else {
|
282
|
+
component = `lazy(${lazyImport})`;
|
283
|
+
}
|
278
284
|
}
|
279
285
|
}
|
280
286
|
} else if (route._component) {
|
@@ -299,6 +305,9 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
299
305
|
if (route._component) {
|
300
306
|
finalRoute.component = component;
|
301
307
|
}
|
308
|
+
if (route.type === "nested" && route._component && (route.loader || route.data)) {
|
309
|
+
finalRoute.shouldRevalidate = `createShouldRevalidate("${route.id}")`;
|
310
|
+
}
|
302
311
|
return finalRoute;
|
303
312
|
};
|
304
313
|
let routeComponentsCode = `
|
@@ -311,6 +320,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
311
320
|
const keywords = [
|
312
321
|
"component",
|
313
322
|
"lazyImport",
|
323
|
+
"shouldRevalidate",
|
314
324
|
"loader",
|
315
325
|
"action",
|
316
326
|
"loading",
|
@@ -391,14 +401,24 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
391
401
|
}
|
392
402
|
await import_utils.fs.ensureFile(loadersMapFile);
|
393
403
|
await import_utils.fs.writeJSON(loadersMapFile, loadersMap);
|
404
|
+
const importRuntimeRouterCode = `
|
405
|
+
import { createShouldRevalidate } from '@modern-js/runtime/router';
|
406
|
+
`;
|
407
|
+
const routeModulesCode = `
|
408
|
+
if(typeof document !== 'undefined'){
|
409
|
+
window.${import_constants.ROUTE_MODULES} = {}
|
410
|
+
}
|
411
|
+
`;
|
394
412
|
return `
|
395
413
|
${importLazyCode}
|
396
414
|
${importComponentsCode}
|
415
|
+
${importRuntimeRouterCode}
|
397
416
|
${rootLayoutCode}
|
398
417
|
${importLoadingCode}
|
399
418
|
${importErrorComponentsCode}
|
400
419
|
${importLoadersCode}
|
401
420
|
${importConfigsCode}
|
421
|
+
${routeModulesCode}
|
402
422
|
${routeComponentsCode}
|
403
423
|
`;
|
404
424
|
};
|
@@ -39,17 +39,21 @@ const builderPluginAdpaterCopy = (options) => ({
|
|
39
39
|
name: "builder-plugin-adapter-rspack-copy",
|
40
40
|
setup(api) {
|
41
41
|
let publicPath;
|
42
|
+
api.modifyBundlerChain((chain, { CHAIN_ID }) => {
|
43
|
+
chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
|
44
|
+
var _args_;
|
45
|
+
return [
|
46
|
+
{
|
47
|
+
patterns: [
|
48
|
+
...((_args_ = args[0]) === null || _args_ === void 0 ? void 0 : _args_.patterns) || [],
|
49
|
+
...createConfigBuiltinCopy(options)
|
50
|
+
]
|
51
|
+
}
|
52
|
+
];
|
53
|
+
});
|
54
|
+
});
|
42
55
|
api.modifyRspackConfig((config) => {
|
43
|
-
var
|
44
|
-
config.builtins = {
|
45
|
-
...config.builtins || {},
|
46
|
-
copy: {
|
47
|
-
patterns: [
|
48
|
-
...((_config_builtins = config.builtins) === null || _config_builtins === void 0 ? void 0 : (_config_builtins_copy = _config_builtins.copy) === null || _config_builtins_copy === void 0 ? void 0 : _config_builtins_copy.patterns) || [],
|
49
|
-
...createConfigBuiltinCopy(options)
|
50
|
-
]
|
51
|
-
}
|
52
|
-
};
|
56
|
+
var _config_output;
|
53
57
|
publicPath = (_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.publicPath;
|
54
58
|
});
|
55
59
|
api.onDevCompileDone(async () => {
|
@@ -21,14 +21,12 @@ __export(adapterModern_exports, {
|
|
21
21
|
builderPluginAdapterModern: () => builderPluginAdapterModern
|
22
22
|
});
|
23
23
|
module.exports = __toCommonJS(adapterModern_exports);
|
24
|
-
var import_path = require("path");
|
25
24
|
var import_createCopyPattern = require("./createCopyPattern");
|
26
25
|
const builderPluginAdapterModern = (options) => ({
|
27
26
|
name: "builder-plugin-adapter-modern",
|
28
27
|
setup(api) {
|
29
28
|
const { normalizedConfig: modernConfig, appContext } = options;
|
30
29
|
api.modifyWebpackChain((chain, { CHAIN_ID }) => {
|
31
|
-
chain.resolve.modules.add("node_modules").add((0, import_path.join)(api.context.rootPath, "node_modules"));
|
32
30
|
if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
|
33
31
|
const defaultCopyPattern = (0, import_createCopyPattern.createPublicPattern)(appContext, modernConfig, chain);
|
34
32
|
chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
|
@@ -31,6 +31,7 @@ __export(adapterBasic_exports, {
|
|
31
31
|
builderPluginAdapterBasic: () => builderPluginAdapterBasic
|
32
32
|
});
|
33
33
|
module.exports = __toCommonJS(adapterBasic_exports);
|
34
|
+
var import_path = __toESM(require("path"));
|
34
35
|
const builderPluginAdapterBasic = () => ({
|
35
36
|
name: "builder-plugin-adapter-modern-basic",
|
36
37
|
setup(api) {
|
@@ -54,6 +55,7 @@ const builderPluginAdapterBasic = () => ({
|
|
54
55
|
chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
|
55
56
|
chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
|
56
57
|
}
|
58
|
+
chain.resolve.modules.add("node_modules").add(import_path.default.join(api.context.rootPath, "node_modules"));
|
57
59
|
});
|
58
60
|
}
|
59
61
|
});
|
@@ -76,22 +76,6 @@ function initSourceConfig(config, appContext, bundler) {
|
|
76
76
|
}
|
77
77
|
return include2;
|
78
78
|
}).concat(defaultInclude);
|
79
|
-
const root = (0, import_utils.findMonorepoRoot)(appContext2.appDirectory);
|
80
|
-
if (!root) {
|
81
|
-
return transformInclude;
|
82
|
-
}
|
83
|
-
const modernjsMonorepo = (0, import_utils.isModernjsMonorepo)(root);
|
84
|
-
if (modernjsMonorepo) {
|
85
|
-
const paths = import_utils.globby.sync(import_path.posix.join(root, "features", "**", "package.json"), {
|
86
|
-
ignore: [
|
87
|
-
"**/node_modules/**/*"
|
88
|
-
]
|
89
|
-
}).map((pathname) => (0, import_path.dirname)(pathname) + import_path.sep);
|
90
|
-
return [
|
91
|
-
...paths,
|
92
|
-
...transformInclude
|
93
|
-
];
|
94
|
-
}
|
95
79
|
return transformInclude;
|
96
80
|
}
|
97
81
|
function createBuilderModuleScope(config2) {
|
@@ -257,13 +257,11 @@ function analyze_default(param) {
|
|
257
257
|
return _ts_generator(this, function(_state2) {
|
258
258
|
isFirstCompile = param2.isFirstCompile;
|
259
259
|
hookRunners2 = api.useHookRunners();
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
printInstructions(hookRunners2, appContext, normalizedConfig);
|
266
|
-
}
|
260
|
+
hookRunners2.afterDev({
|
261
|
+
isFirstCompile
|
262
|
+
});
|
263
|
+
if (isFirstCompile) {
|
264
|
+
printInstructions(hookRunners2, appContext, normalizedConfig);
|
267
265
|
}
|
268
266
|
return [
|
269
267
|
2
|
@@ -360,7 +360,7 @@ var walk = function() {
|
|
360
360
|
childRoutes = finalRoute.children = (_finalRoute_children = finalRoute.children) === null || _finalRoute_children === void 0 ? void 0 : _finalRoute_children.filter(function(childRoute2) {
|
361
361
|
return childRoute2;
|
362
362
|
});
|
363
|
-
if (childRoutes && childRoutes.length === 0 && !finalRoute.index) {
|
363
|
+
if (childRoutes && childRoutes.length === 0 && !finalRoute.index && !finalRoute._component) {
|
364
364
|
return [
|
365
365
|
2,
|
366
366
|
null
|
@@ -375,6 +375,9 @@ var walk = function() {
|
|
375
375
|
});
|
376
376
|
}
|
377
377
|
}
|
378
|
+
if (isRoot && !finalRoute._component) {
|
379
|
+
throw new Error("The root layout component is required, make sure the routes/layout.tsx file exists.");
|
380
|
+
}
|
378
381
|
if (isRoot && !oldVersion) {
|
379
382
|
optimizedRoutes = optimizeRoute(finalRoute);
|
380
383
|
return [
|
@@ -5,6 +5,7 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
5
5
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
6
6
|
import path from "path";
|
7
7
|
import { fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
|
8
|
+
import { ROUTE_MODULES } from "@modern-js/utils/universal/constants";
|
8
9
|
import { APP_CONFIG_NAME, TEMP_LOADERS_DIR } from "./constants";
|
9
10
|
import { getServerLoadersFile } from "./utils";
|
10
11
|
var index = function(param) {
|
@@ -134,7 +135,7 @@ var createMatchReg = function(keyword) {
|
|
134
135
|
};
|
135
136
|
var fileSystemRoutes = function() {
|
136
137
|
var _ref = _async_to_generator(function(param) {
|
137
|
-
var routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, _param_splitRouteChunks, splitRouteChunks, components, loadings, errors, loaders, loadersMap, configs, configsMap, loadersMapFile, importLazyCode, rootLayoutCode, getDataLoaderPath, traverseRouteTree, routeComponentsCode, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, newRoute, routeStr, keywords, regs, newRouteStr, component, finalRoute, keywords1, routeStr1, regs1, newRouteStr1, importLoadingCode, importComponentsCode, importErrorComponentsCode, importLoadersCode, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value, key, loaderInfo, route1, importConfigsCode, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _step_value1, key1, configPath;
|
138
|
+
var routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, _param_splitRouteChunks, splitRouteChunks, components, loadings, errors, loaders, loadersMap, configs, configsMap, loadersMapFile, importLazyCode, rootLayoutCode, getDataLoaderPath, traverseRouteTree, routeComponentsCode, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, newRoute, routeStr, keywords, regs, newRouteStr, component, finalRoute, keywords1, routeStr1, regs1, newRouteStr1, importLoadingCode, importComponentsCode, importErrorComponentsCode, importLoadersCode, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value, key, loaderInfo, route1, importConfigsCode, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _step_value1, key1, configPath, importRuntimeRouterCode, routeModulesCode;
|
138
139
|
return _ts_generator(this, function(_state) {
|
139
140
|
switch (_state.label) {
|
140
141
|
case 0:
|
@@ -156,7 +157,7 @@ var fileSystemRoutes = function() {
|
|
156
157
|
}
|
157
158
|
var clientDataStr = clientData ? "&clientData=".concat(clientData) : "";
|
158
159
|
if (nestedRoutesEntry) {
|
159
|
-
return "?loaderId=".concat(loaderId).concat(clientDataStr, "&action=").concat(action, "&inline=").concat(inline, "&routeId=").concat(routeId);
|
160
|
+
return "?loaderId=".concat(loaderId).concat(clientDataStr, "&action=").concat(action ? slash(action) : action, "&inline=").concat(inline, "&routeId=").concat(routeId);
|
160
161
|
}
|
161
162
|
return "";
|
162
163
|
};
|
@@ -209,18 +210,23 @@ var fileSystemRoutes = function() {
|
|
209
210
|
if (route2._component) {
|
210
211
|
if (splitRouteChunks) {
|
211
212
|
if (route2.isRoot) {
|
213
|
+
lazyImport = "async function(){const routeModule = await import('".concat(route2._component, `'); if(typeof document !== "undefined") window.`).concat(ROUTE_MODULES, '["').concat(route2.id, '"] = routeModule;return routeModule;}');
|
212
214
|
rootLayoutCode = "import RootLayout from '".concat(route2._component, "'");
|
213
215
|
component2 = "RootLayout";
|
214
216
|
} else if (ssrMode === "string") {
|
215
|
-
lazyImport = '()
|
217
|
+
lazyImport = 'async function(){const routeModule = await import(/* webpackChunkName: "'.concat(route2.id, `" */ '`).concat(route2._component, `'); if(typeof document !== "undefined") window.`).concat(ROUTE_MODULES, '["').concat(route2.id, '"] = routeModule;return routeModule;}');
|
216
218
|
component2 = "loadable(".concat(lazyImport, ")");
|
217
219
|
} else {
|
218
|
-
lazyImport = '()
|
220
|
+
lazyImport = 'async function(){const routeModule = await import(/* webpackChunkName: "'.concat(route2.id, `" */ '`).concat(route2._component, `'); if(typeof document !== "undefined") window.`).concat(ROUTE_MODULES, '["').concat(route2.id, '"] = routeModule;return routeModule;}');
|
219
221
|
component2 = "lazy(".concat(lazyImport, ")");
|
220
222
|
}
|
221
223
|
} else {
|
222
|
-
|
223
|
-
|
224
|
+
lazyImport = `async function(){const routeModule = await import(/* webpackMode: "eager" */ '`.concat(route2._component, `'); if(typeof document !== "undefined") window.`).concat(ROUTE_MODULES, '["').concat(route2.id, '"] = routeModule;return routeModule;}');
|
225
|
+
if (ssrMode === "string") {
|
226
|
+
component2 = "loadable(".concat(lazyImport, ")");
|
227
|
+
} else {
|
228
|
+
component2 = "lazy(".concat(lazyImport, ")");
|
229
|
+
}
|
224
230
|
}
|
225
231
|
}
|
226
232
|
} else if (route2._component) {
|
@@ -244,6 +250,9 @@ var fileSystemRoutes = function() {
|
|
244
250
|
if (route2._component) {
|
245
251
|
finalRoute2.component = component2;
|
246
252
|
}
|
253
|
+
if (route2.type === "nested" && route2._component && (route2.loader || route2.data)) {
|
254
|
+
finalRoute2.shouldRevalidate = 'createShouldRevalidate("'.concat(route2.id, '")');
|
255
|
+
}
|
247
256
|
return finalRoute2;
|
248
257
|
};
|
249
258
|
routeComponentsCode = "\n export const routes = [\n ";
|
@@ -257,6 +266,7 @@ var fileSystemRoutes = function() {
|
|
257
266
|
keywords = [
|
258
267
|
"component",
|
259
268
|
"lazyImport",
|
269
|
+
"shouldRevalidate",
|
260
270
|
"loader",
|
261
271
|
"action",
|
262
272
|
"loading",
|
@@ -390,9 +400,11 @@ var fileSystemRoutes = function() {
|
|
390
400
|
];
|
391
401
|
case 2:
|
392
402
|
_state.sent();
|
403
|
+
importRuntimeRouterCode = "\n import { createShouldRevalidate } from '@modern-js/runtime/router';\n ";
|
404
|
+
routeModulesCode = "\n if(typeof document !== 'undefined'){\n window.".concat(ROUTE_MODULES, " = {}\n }\n ");
|
393
405
|
return [
|
394
406
|
2,
|
395
|
-
"\n ".concat(importLazyCode, "\n ").concat(importComponentsCode, "\n ").concat(rootLayoutCode, "\n ").concat(importLoadingCode, "\n ").concat(importErrorComponentsCode, "\n ").concat(importLoadersCode, "\n ").concat(importConfigsCode, "\n ").concat(routeComponentsCode, "\n ")
|
407
|
+
"\n ".concat(importLazyCode, "\n ").concat(importComponentsCode, "\n ").concat(importRuntimeRouterCode, "\n ").concat(rootLayoutCode, "\n ").concat(importLoadingCode, "\n ").concat(importErrorComponentsCode, "\n ").concat(importLoadersCode, "\n ").concat(importConfigsCode, "\n ").concat(routeModulesCode, "\n ").concat(routeComponentsCode, "\n ")
|
396
408
|
];
|
397
409
|
}
|
398
410
|
});
|
@@ -1,6 +1,4 @@
|
|
1
1
|
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
2
|
-
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
3
|
-
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
4
2
|
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
5
3
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
6
4
|
import path from "path";
|
@@ -12,13 +10,19 @@ var builderPluginAdpaterCopy = function(options) {
|
|
12
10
|
name: "builder-plugin-adapter-rspack-copy",
|
13
11
|
setup: function setup(api) {
|
14
12
|
var publicPath;
|
15
|
-
api.
|
16
|
-
var
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
api.modifyBundlerChain(function(chain, param) {
|
14
|
+
var CHAIN_ID = param.CHAIN_ID;
|
15
|
+
chain.plugin(CHAIN_ID.PLUGIN.COPY).tap(function(args) {
|
16
|
+
var _args_;
|
17
|
+
return [
|
18
|
+
{
|
19
|
+
patterns: _to_consumable_array(((_args_ = args[0]) === null || _args_ === void 0 ? void 0 : _args_.patterns) || []).concat(_to_consumable_array(createConfigBuiltinCopy(options)))
|
20
|
+
}
|
21
|
+
];
|
21
22
|
});
|
23
|
+
});
|
24
|
+
api.modifyRspackConfig(function(config) {
|
25
|
+
var _config_output;
|
22
26
|
publicPath = (_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.publicPath;
|
23
27
|
});
|
24
28
|
api.onDevCompileDone(/* @__PURE__ */ _async_to_generator(function() {
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
2
|
-
import { join } from "path";
|
3
2
|
import { createPublicPattern } from "./createCopyPattern";
|
4
3
|
var builderPluginAdapterModern = function(options) {
|
5
4
|
return {
|
@@ -8,7 +7,6 @@ var builderPluginAdapterModern = function(options) {
|
|
8
7
|
var modernConfig = options.normalizedConfig, appContext = options.appContext;
|
9
8
|
api.modifyWebpackChain(function(chain, param) {
|
10
9
|
var CHAIN_ID = param.CHAIN_ID;
|
11
|
-
chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
|
12
10
|
if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
|
13
11
|
var defaultCopyPattern = createPublicPattern(appContext, modernConfig, chain);
|
14
12
|
chain.plugin(CHAIN_ID.PLUGIN.COPY).tap(function(args) {
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import path from "path";
|
1
2
|
var builderPluginAdapterBasic = function() {
|
2
3
|
return {
|
3
4
|
name: "builder-plugin-adapter-modern-basic",
|
@@ -23,6 +24,7 @@ var builderPluginAdapterBasic = function() {
|
|
23
24
|
chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
|
24
25
|
chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
|
25
26
|
}
|
27
|
+
chain.resolve.modules.add("node_modules").add(path.join(api.context.rootPath, "node_modules"));
|
26
28
|
});
|
27
29
|
}
|
28
30
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
2
|
-
import path, {
|
3
|
-
import { findExists
|
2
|
+
import path, { isAbsolute } from "path";
|
3
|
+
import { findExists } from "@modern-js/utils";
|
4
4
|
function initHtmlConfig(config, appContext) {
|
5
5
|
var createBuilderAppIcon = function createBuilderAppIcon2(config2, appContext2) {
|
6
6
|
var configDir = config2.source.configDir;
|
@@ -43,21 +43,6 @@ function initSourceConfig(config, appContext, bundler) {
|
|
43
43
|
}
|
44
44
|
return include2;
|
45
45
|
}).concat(defaultInclude);
|
46
|
-
var root = findMonorepoRoot(appContext2.appDirectory);
|
47
|
-
if (!root) {
|
48
|
-
return transformInclude;
|
49
|
-
}
|
50
|
-
var modernjsMonorepo = isModernjsMonorepo(root);
|
51
|
-
if (modernjsMonorepo) {
|
52
|
-
var paths = globby.sync(posix.join(root, "features", "**", "package.json"), {
|
53
|
-
ignore: [
|
54
|
-
"**/node_modules/**/*"
|
55
|
-
]
|
56
|
-
}).map(function(pathname) {
|
57
|
-
return dirname(pathname) + sep;
|
58
|
-
});
|
59
|
-
return _to_consumable_array(paths).concat(_to_consumable_array(transformInclude));
|
60
|
-
}
|
61
46
|
return transformInclude;
|
62
47
|
};
|
63
48
|
var createBuilderModuleScope = function createBuilderModuleScope2(config2) {
|
@@ -114,13 +114,11 @@ var analyze_default = ({ bundler }) => ({
|
|
114
114
|
});
|
115
115
|
builder.onDevCompileDone(async ({ isFirstCompile }) => {
|
116
116
|
const hookRunners2 = api.useHookRunners();
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
printInstructions(hookRunners2, appContext, normalizedConfig);
|
123
|
-
}
|
117
|
+
hookRunners2.afterDev({
|
118
|
+
isFirstCompile
|
119
|
+
});
|
120
|
+
if (isFirstCompile) {
|
121
|
+
printInstructions(hookRunners2, appContext, normalizedConfig);
|
124
122
|
}
|
125
123
|
});
|
126
124
|
builder.onBeforeCreateCompiler(async ({ bundlerConfigs }) => {
|
@@ -233,7 +233,7 @@ const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldVersion)
|
|
233
233
|
delete finalRoute.path;
|
234
234
|
}
|
235
235
|
const childRoutes = finalRoute.children = (_finalRoute_children = finalRoute.children) === null || _finalRoute_children === void 0 ? void 0 : _finalRoute_children.filter((childRoute) => childRoute);
|
236
|
-
if (childRoutes && childRoutes.length === 0 && !finalRoute.index) {
|
236
|
+
if (childRoutes && childRoutes.length === 0 && !finalRoute.index && !finalRoute._component) {
|
237
237
|
return null;
|
238
238
|
}
|
239
239
|
if (childRoutes && childRoutes.length === 1 && !finalRoute._component) {
|
@@ -246,6 +246,9 @@ const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldVersion)
|
|
246
246
|
};
|
247
247
|
}
|
248
248
|
}
|
249
|
+
if (isRoot && !finalRoute._component) {
|
250
|
+
throw new Error("The root layout component is required, make sure the routes/layout.tsx file exists.");
|
251
|
+
}
|
249
252
|
if (isRoot && !oldVersion) {
|
250
253
|
const optimizedRoutes = optimizeRoute(finalRoute);
|
251
254
|
return optimizedRoutes;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import path from "path";
|
2
2
|
import { fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
|
3
|
+
import { ROUTE_MODULES } from "@modern-js/utils/universal/constants";
|
3
4
|
import { APP_CONFIG_NAME, TEMP_LOADERS_DIR } from "./constants";
|
4
5
|
import { getServerLoadersFile } from "./utils";
|
5
6
|
const index = ({ mountId, imports, renderFunction: renderFunction2, exportStatement }) => `
|
@@ -172,7 +173,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
172
173
|
}
|
173
174
|
const clientDataStr = clientData ? `&clientData=${clientData}` : "";
|
174
175
|
if (nestedRoutesEntry) {
|
175
|
-
return `?loaderId=${loaderId}${clientDataStr}&action=${action}&inline=${inline}&routeId=${routeId}`;
|
176
|
+
return `?loaderId=${loaderId}${clientDataStr}&action=${action ? slash(action) : action}&inline=${inline}&routeId=${routeId}`;
|
176
177
|
}
|
177
178
|
return "";
|
178
179
|
};
|
@@ -225,18 +226,23 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
225
226
|
if (route._component) {
|
226
227
|
if (splitRouteChunks) {
|
227
228
|
if (route.isRoot) {
|
229
|
+
lazyImport = `async function(){const routeModule = await import('${route._component}'); if(typeof document !== "undefined") window.${ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
228
230
|
rootLayoutCode = `import RootLayout from '${route._component}'`;
|
229
231
|
component = `RootLayout`;
|
230
232
|
} else if (ssrMode === "string") {
|
231
|
-
lazyImport = `()
|
233
|
+
lazyImport = `async function(){const routeModule = await import(/* webpackChunkName: "${route.id}" */ '${route._component}'); if(typeof document !== "undefined") window.${ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
232
234
|
component = `loadable(${lazyImport})`;
|
233
235
|
} else {
|
234
|
-
lazyImport = `()
|
236
|
+
lazyImport = `async function(){const routeModule = await import(/* webpackChunkName: "${route.id}" */ '${route._component}'); if(typeof document !== "undefined") window.${ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
235
237
|
component = `lazy(${lazyImport})`;
|
236
238
|
}
|
237
239
|
} else {
|
238
|
-
|
239
|
-
|
240
|
+
lazyImport = `async function(){const routeModule = await import(/* webpackMode: "eager" */ '${route._component}'); if(typeof document !== "undefined") window.${ROUTE_MODULES}["${route.id}"] = routeModule;return routeModule;}`;
|
241
|
+
if (ssrMode === "string") {
|
242
|
+
component = `loadable(${lazyImport})`;
|
243
|
+
} else {
|
244
|
+
component = `lazy(${lazyImport})`;
|
245
|
+
}
|
240
246
|
}
|
241
247
|
}
|
242
248
|
} else if (route._component) {
|
@@ -261,6 +267,9 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
261
267
|
if (route._component) {
|
262
268
|
finalRoute.component = component;
|
263
269
|
}
|
270
|
+
if (route.type === "nested" && route._component && (route.loader || route.data)) {
|
271
|
+
finalRoute.shouldRevalidate = `createShouldRevalidate("${route.id}")`;
|
272
|
+
}
|
264
273
|
return finalRoute;
|
265
274
|
};
|
266
275
|
let routeComponentsCode = `
|
@@ -273,6 +282,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
273
282
|
const keywords = [
|
274
283
|
"component",
|
275
284
|
"lazyImport",
|
285
|
+
"shouldRevalidate",
|
276
286
|
"loader",
|
277
287
|
"action",
|
278
288
|
"loading",
|
@@ -353,14 +363,24 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
353
363
|
}
|
354
364
|
await fs.ensureFile(loadersMapFile);
|
355
365
|
await fs.writeJSON(loadersMapFile, loadersMap);
|
366
|
+
const importRuntimeRouterCode = `
|
367
|
+
import { createShouldRevalidate } from '@modern-js/runtime/router';
|
368
|
+
`;
|
369
|
+
const routeModulesCode = `
|
370
|
+
if(typeof document !== 'undefined'){
|
371
|
+
window.${ROUTE_MODULES} = {}
|
372
|
+
}
|
373
|
+
`;
|
356
374
|
return `
|
357
375
|
${importLazyCode}
|
358
376
|
${importComponentsCode}
|
377
|
+
${importRuntimeRouterCode}
|
359
378
|
${rootLayoutCode}
|
360
379
|
${importLoadingCode}
|
361
380
|
${importErrorComponentsCode}
|
362
381
|
${importLoadersCode}
|
363
382
|
${importConfigsCode}
|
383
|
+
${routeModulesCode}
|
364
384
|
${routeComponentsCode}
|
365
385
|
`;
|
366
386
|
};
|
@@ -6,17 +6,21 @@ const builderPluginAdpaterCopy = (options) => ({
|
|
6
6
|
name: "builder-plugin-adapter-rspack-copy",
|
7
7
|
setup(api) {
|
8
8
|
let publicPath;
|
9
|
+
api.modifyBundlerChain((chain, { CHAIN_ID }) => {
|
10
|
+
chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
|
11
|
+
var _args_;
|
12
|
+
return [
|
13
|
+
{
|
14
|
+
patterns: [
|
15
|
+
...((_args_ = args[0]) === null || _args_ === void 0 ? void 0 : _args_.patterns) || [],
|
16
|
+
...createConfigBuiltinCopy(options)
|
17
|
+
]
|
18
|
+
}
|
19
|
+
];
|
20
|
+
});
|
21
|
+
});
|
9
22
|
api.modifyRspackConfig((config) => {
|
10
|
-
var
|
11
|
-
config.builtins = {
|
12
|
-
...config.builtins || {},
|
13
|
-
copy: {
|
14
|
-
patterns: [
|
15
|
-
...((_config_builtins = config.builtins) === null || _config_builtins === void 0 ? void 0 : (_config_builtins_copy = _config_builtins.copy) === null || _config_builtins_copy === void 0 ? void 0 : _config_builtins_copy.patterns) || [],
|
16
|
-
...createConfigBuiltinCopy(options)
|
17
|
-
]
|
18
|
-
}
|
19
|
-
};
|
23
|
+
var _config_output;
|
20
24
|
publicPath = (_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.publicPath;
|
21
25
|
});
|
22
26
|
api.onDevCompileDone(async () => {
|
@@ -1,11 +1,9 @@
|
|
1
|
-
import { join } from "path";
|
2
1
|
import { createPublicPattern } from "./createCopyPattern";
|
3
2
|
const builderPluginAdapterModern = (options) => ({
|
4
3
|
name: "builder-plugin-adapter-modern",
|
5
4
|
setup(api) {
|
6
5
|
const { normalizedConfig: modernConfig, appContext } = options;
|
7
6
|
api.modifyWebpackChain((chain, { CHAIN_ID }) => {
|
8
|
-
chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
|
9
7
|
if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
|
10
8
|
const defaultCopyPattern = createPublicPattern(appContext, modernConfig, chain);
|
11
9
|
chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import path from "path";
|
1
2
|
const builderPluginAdapterBasic = () => ({
|
2
3
|
name: "builder-plugin-adapter-modern-basic",
|
3
4
|
setup(api) {
|
@@ -21,6 +22,7 @@ const builderPluginAdapterBasic = () => ({
|
|
21
22
|
chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
|
22
23
|
chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
|
23
24
|
}
|
25
|
+
chain.resolve.modules.add("node_modules").add(path.join(api.context.rootPath, "node_modules"));
|
24
26
|
});
|
25
27
|
}
|
26
28
|
});
|