@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.
- package/CHANGELOG.md +305 -0
- package/bin/modern.js +1 -0
- package/dist/js/modern/analyze/Builder.js +39 -0
- package/dist/js/modern/analyze/constants.js +38 -18
- package/dist/js/modern/analyze/generateCode.js +262 -221
- package/dist/js/modern/analyze/getBundleEntry.js +34 -32
- package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +93 -49
- package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +89 -47
- package/dist/js/modern/analyze/getClientRoutes/index.js +6 -2
- package/dist/js/modern/analyze/getClientRoutes/utils.js +23 -10
- package/dist/js/modern/analyze/getFileSystemEntry.js +43 -22
- package/dist/js/modern/analyze/getHtmlTemplate.js +89 -49
- package/dist/js/modern/analyze/getServerRoutes.js +122 -126
- package/dist/js/modern/analyze/index.js +201 -160
- package/dist/js/modern/analyze/isDefaultExportFunction.js +30 -16
- package/dist/js/modern/analyze/makeLegalIdentifier.js +10 -11
- package/dist/js/modern/analyze/nestedRoutes.js +106 -60
- package/dist/js/modern/analyze/templates.js +163 -81
- package/dist/js/modern/analyze/utils.js +87 -66
- package/dist/js/modern/builder/builderPlugins/compatModern.js +122 -109
- package/dist/js/modern/builder/index.js +123 -86
- package/dist/js/modern/builder/loaders/routerLoader.js +9 -12
- package/dist/js/modern/builder/loaders/serverModuleLoader.js +4 -1
- package/dist/js/modern/builder/share.js +23 -21
- package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
- package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
- package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +100 -84
- package/dist/js/modern/commands/build.js +67 -42
- package/dist/js/modern/commands/deploy.js +27 -4
- package/dist/js/modern/commands/dev.js +77 -27
- package/dist/js/modern/commands/index.js +1 -1
- package/dist/js/modern/commands/inspect.js +30 -5
- package/dist/js/modern/commands/start.js +37 -15
- package/dist/js/modern/config/default.js +103 -113
- package/dist/js/modern/config/index.js +8 -2
- package/dist/js/modern/config/initial/createHtmlConfig.js +5 -2
- package/dist/js/modern/config/initial/createOutputConfig.js +9 -10
- package/dist/js/modern/config/initial/createSourceConfig.js +5 -2
- package/dist/js/modern/config/initial/createToolsConfig.js +7 -6
- package/dist/js/modern/config/initial/index.js +9 -4
- package/dist/js/modern/config/initial/inits.js +109 -73
- package/dist/js/modern/config/initial/transformNormalizedConfig.js +6 -3
- package/dist/js/modern/defineConfig.js +26 -11
- package/dist/js/modern/exports/server.js +4 -1
- package/dist/js/modern/hooks.js +15 -4
- package/dist/js/modern/index.js +178 -90
- package/dist/js/modern/initialize/index.js +98 -51
- package/dist/js/modern/locale/en.js +20 -21
- package/dist/js/modern/locale/index.js +6 -6
- package/dist/js/modern/locale/zh.js +21 -22
- package/dist/js/modern/schema/Schema.js +6 -5
- package/dist/js/modern/schema/index.js +51 -100
- package/dist/js/modern/schema/legacy.js +96 -231
- package/dist/js/modern/types/config/index.js +0 -1
- package/dist/js/modern/types/index.js +0 -1
- package/dist/js/modern/types/legacyConfig/output.js +0 -1
- package/dist/js/modern/utils/commands.js +5 -2
- package/dist/js/modern/utils/config.js +102 -41
- package/dist/js/modern/utils/createFileWatcher.js +84 -51
- package/dist/js/modern/utils/createServer.js +63 -17
- package/dist/js/modern/utils/getSpecifiedEntries.js +46 -19
- package/dist/js/modern/utils/language.js +6 -3
- package/dist/js/modern/utils/printInstructions.js +27 -8
- package/dist/js/modern/utils/restart.js +43 -16
- package/dist/js/modern/utils/routes.js +29 -12
- package/dist/js/node/analyze/Builder.js +58 -0
- package/dist/js/node/analyze/constants.js +54 -39
- package/dist/js/node/analyze/generateCode.js +282 -239
- package/dist/js/node/analyze/getBundleEntry.js +58 -44
- package/dist/js/node/analyze/getClientRoutes/getRoutes.js +132 -76
- package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +128 -74
- package/dist/js/node/analyze/getClientRoutes/index.js +23 -17
- package/dist/js/node/analyze/getClientRoutes/utils.js +44 -21
- package/dist/js/node/analyze/getFileSystemEntry.js +70 -39
- package/dist/js/node/analyze/getHtmlTemplate.js +116 -61
- package/dist/js/node/analyze/getServerRoutes.js +143 -137
- package/dist/js/node/analyze/index.js +247 -174
- package/dist/js/node/analyze/isDefaultExportFunction.js +55 -26
- package/dist/js/node/analyze/makeLegalIdentifier.js +27 -15
- package/dist/js/node/analyze/nestedRoutes.js +137 -75
- package/dist/js/node/analyze/templates.js +185 -90
- package/dist/js/node/analyze/utils.js +114 -81
- package/dist/js/node/builder/builderPlugins/compatModern.js +150 -122
- package/dist/js/node/builder/index.js +151 -95
- package/dist/js/node/builder/loaders/routerLoader.js +27 -18
- package/dist/js/node/builder/loaders/serverModuleLoader.js +22 -7
- package/dist/js/node/builder/share.js +46 -26
- package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +39 -26
- package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +47 -31
- package/dist/js/node/builder/webpackPlugins/routerPlugin.js +118 -90
- package/dist/js/node/commands/build.js +89 -52
- package/dist/js/node/commands/deploy.js +45 -10
- package/dist/js/node/commands/dev.js +99 -41
- package/dist/js/node/commands/index.js +19 -38
- package/dist/js/node/commands/inspect.js +48 -11
- package/dist/js/node/commands/start.js +65 -26
- package/dist/js/node/config/default.js +119 -117
- package/dist/js/node/config/index.js +25 -29
- package/dist/js/node/config/initial/createHtmlConfig.js +22 -6
- package/dist/js/node/config/initial/createOutputConfig.js +26 -14
- package/dist/js/node/config/initial/createSourceConfig.js +22 -6
- package/dist/js/node/config/initial/createToolsConfig.js +24 -10
- package/dist/js/node/config/initial/index.js +28 -17
- package/dist/js/node/config/initial/inits.js +126 -81
- package/dist/js/node/config/initial/transformNormalizedConfig.js +31 -15
- package/dist/js/node/defineConfig.js +43 -17
- package/dist/js/node/exports/server.js +21 -10
- package/dist/js/node/hooks.js +48 -29
- package/dist/js/node/index.js +225 -128
- package/dist/js/node/initialize/index.js +116 -61
- package/dist/js/node/locale/en.js +36 -25
- package/dist/js/node/locale/index.js +27 -15
- package/dist/js/node/locale/zh.js +37 -26
- package/dist/js/node/schema/Schema.js +23 -10
- package/dist/js/node/schema/index.js +77 -114
- package/dist/js/node/schema/legacy.js +117 -240
- package/dist/js/node/types/config/index.js +17 -16
- package/dist/js/node/types/index.js +19 -38
- package/dist/js/node/types/legacyConfig/output.js +0 -5
- package/dist/js/node/utils/commands.js +21 -6
- package/dist/js/node/utils/config.js +120 -51
- package/dist/js/node/utils/createFileWatcher.js +104 -61
- package/dist/js/node/utils/createServer.js +86 -25
- package/dist/js/node/utils/getSpecifiedEntries.js +64 -25
- package/dist/js/node/utils/language.js +24 -8
- package/dist/js/node/utils/printInstructions.js +47 -16
- package/dist/js/node/utils/restart.js +61 -21
- package/dist/js/node/utils/routes.js +53 -18
- package/dist/js/treeshaking/analyze/Builder.js +199 -0
- package/dist/js/treeshaking/analyze/constants.js +28 -18
- package/dist/js/treeshaking/analyze/generateCode.js +600 -406
- package/dist/js/treeshaking/analyze/getBundleEntry.js +55 -63
- package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +214 -168
- package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +215 -169
- package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -2
- package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +19 -20
- package/dist/js/treeshaking/analyze/getFileSystemEntry.js +89 -86
- package/dist/js/treeshaking/analyze/getHtmlTemplate.js +298 -125
- package/dist/js/treeshaking/analyze/getServerRoutes.js +210 -147
- package/dist/js/treeshaking/analyze/index.js +571 -304
- package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +45 -26
- package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -16
- package/dist/js/treeshaking/analyze/nestedRoutes.js +411 -200
- package/dist/js/treeshaking/analyze/templates.js +433 -236
- package/dist/js/treeshaking/analyze/utils.js +358 -153
- package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +282 -200
- package/dist/js/treeshaking/builder/index.js +371 -165
- package/dist/js/treeshaking/builder/loaders/routerLoader.js +11 -12
- package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +3 -2
- package/dist/js/treeshaking/builder/share.js +38 -44
- package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
- package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
- package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +334 -112
- package/dist/js/treeshaking/commands/build.js +286 -88
- package/dist/js/treeshaking/commands/deploy.js +153 -25
- package/dist/js/treeshaking/commands/dev.js +318 -131
- package/dist/js/treeshaking/commands/index.js +1 -1
- package/dist/js/treeshaking/commands/inspect.js +147 -32
- package/dist/js/treeshaking/commands/start.js +190 -67
- package/dist/js/treeshaking/config/default.js +210 -198
- package/dist/js/treeshaking/config/index.js +3 -2
- package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -31
- package/dist/js/treeshaking/config/initial/createOutputConfig.js +43 -70
- package/dist/js/treeshaking/config/initial/createSourceConfig.js +37 -40
- package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -38
- package/dist/js/treeshaking/config/initial/index.js +10 -9
- package/dist/js/treeshaking/config/initial/inits.js +205 -106
- package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +27 -34
- package/dist/js/treeshaking/defineConfig.js +60 -13
- package/dist/js/treeshaking/exports/server.js +2 -1
- package/dist/js/treeshaking/hooks.js +30 -25
- package/dist/js/treeshaking/index.js +681 -256
- package/dist/js/treeshaking/initialize/index.js +290 -112
- package/dist/js/treeshaking/locale/en.js +34 -33
- package/dist/js/treeshaking/locale/index.js +5 -5
- package/dist/js/treeshaking/locale/zh.js +34 -33
- package/dist/js/treeshaking/schema/Schema.js +267 -69
- package/dist/js/treeshaking/schema/index.js +165 -121
- package/dist/js/treeshaking/schema/legacy.js +323 -256
- package/dist/js/treeshaking/types/config/deploy.js +1 -0
- package/dist/js/treeshaking/types/config/dev.js +1 -0
- package/dist/js/treeshaking/types/config/experiments.js +1 -0
- package/dist/js/treeshaking/types/config/html.js +1 -0
- package/dist/js/treeshaking/types/config/index.js +0 -1
- package/dist/js/treeshaking/types/config/output.js +1 -0
- package/dist/js/treeshaking/types/config/performance.js +1 -0
- package/dist/js/treeshaking/types/config/security.js +1 -0
- package/dist/js/treeshaking/types/config/source.js +1 -0
- package/dist/js/treeshaking/types/config/tools.js +1 -0
- package/dist/js/treeshaking/types/hooks.js +1 -0
- package/dist/js/treeshaking/types/index.js +0 -1
- package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
- package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
- package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
- package/dist/js/treeshaking/types/legacyConfig/output.js +1 -1
- package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
- package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
- package/dist/js/treeshaking/utils/commands.js +6 -5
- package/dist/js/treeshaking/utils/config.js +295 -117
- package/dist/js/treeshaking/utils/createFileWatcher.js +278 -118
- package/dist/js/treeshaking/utils/createServer.js +252 -67
- package/dist/js/treeshaking/utils/getSpecifiedEntries.js +182 -55
- package/dist/js/treeshaking/utils/language.js +6 -5
- package/dist/js/treeshaking/utils/printInstructions.js +151 -29
- package/dist/js/treeshaking/utils/restart.js +184 -42
- package/dist/js/treeshaking/utils/routes.js +151 -27
- package/dist/js/treeshaking/utils/types.js +1 -0
- package/dist/types/analyze/Builder.d.ts +8 -0
- package/dist/types/analyze/index.d.ts +2 -0
- package/dist/types/analyze/templates.d.ts +3 -1
- package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
- package/dist/types/builder/index.d.ts +3 -3
- package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
- package/dist/types/defineConfig.d.ts +1 -0
- package/dist/types/index.d.ts +6 -1
- package/dist/types/initialize/index.d.ts +2 -0
- package/dist/types/types/config/dev.d.ts +2 -2
- package/dist/types/types/config/index.d.ts +1 -0
- package/dist/types/types/config/output.d.ts +0 -1
- package/dist/types/types/config/source.d.ts +1 -0
- package/dist/types/types/config/tools.d.ts +2 -0
- package/dist/types/types/hooks.d.ts +5 -0
- package/dist/types/types/legacyConfig/dev.d.ts +1 -0
- package/dist/types/types/legacyConfig/output.d.ts +1 -1
- package/dist/types/types/legacyConfig/source.d.ts +1 -0
- package/dist/types/types/legacyConfig/tools.d.ts +1 -0
- package/dist/types/utils/config.d.ts +1 -0
- package/dist/types/utils/createServer.d.ts +1 -0
- package/dist/types/utils/restart.d.ts +1 -1
- package/package.json +23 -22
|
@@ -1,55 +1,103 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 =
|
|
9
|
-
const PAGE_FILE =
|
|
10
|
-
const LOADING_FILE =
|
|
11
|
-
const ERROR_FILE =
|
|
12
|
-
const LOADER_FILE =
|
|
13
|
-
const conventionNames = [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
19
|
-
};
|
|
20
|
-
const replaceDynamicPath = routePath => {
|
|
21
|
-
return routePath.replace(/\[(.*?)\]/g,
|
|
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(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
78
|
+
return __spreadProps(__spreadValues({}, routeInfo), {
|
|
32
79
|
id,
|
|
33
|
-
type:
|
|
80
|
+
type: "nested"
|
|
34
81
|
});
|
|
35
82
|
};
|
|
36
|
-
|
|
37
|
-
|
|
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 = (
|
|
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 ?
|
|
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(
|
|
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 =
|
|
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
|
|
66
|
-
if (
|
|
67
|
-
const childRoute =
|
|
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
|
-
|
|
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 =
|
|
125
|
+
route.loader = yield getLoaderPath(itemPath);
|
|
79
126
|
}
|
|
80
127
|
if (itemWithoutExt === PAGE_FILE) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
${
|
|
60
|
+
${renderFunction2}
|
|
25
61
|
}
|
|
26
62
|
|
|
27
63
|
AppWrapper = render();
|
|
28
64
|
|
|
29
65
|
${exportStatement};
|
|
30
66
|
`;
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
})(${
|
|
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
|
-
|
|
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(
|
|
93
|
+
${partials.top.join("\n")}
|
|
60
94
|
|
|
61
95
|
<script>
|
|
62
96
|
window.__assetPrefix__ = '<%= assetPrefix %>';
|
|
63
|
-
|
|
64
|
-
${partials.head.join(
|
|
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(
|
|
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
|
-
|
|
116
|
+
const routesForServer = ({
|
|
83
117
|
routes,
|
|
84
118
|
internalDirectory,
|
|
85
119
|
entryName
|
|
86
120
|
}) => {
|
|
87
121
|
const loaders = [];
|
|
88
|
-
const loaderIndexFile = path.join(
|
|
89
|
-
|
|
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 (
|
|
92
|
-
|
|
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 ===
|
|
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 =
|
|
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 (
|
|
151
|
+
if ("type" in route) {
|
|
113
152
|
const newRoute = traverseRouteTree(route);
|
|
114
|
-
routesCode += `${JSON.stringify(newRoute, null, 2).replace(
|
|
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 +=
|
|
120
|
-
|
|
161
|
+
routesCode += `
|
|
162
|
+
];`;
|
|
163
|
+
let importLoadersCode = "";
|
|
121
164
|
if (loaders.length > 0) {
|
|
122
165
|
importLoadersCode = `
|
|
123
|
-
import { ${loaders.map(
|
|
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
|
-
|
|
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(
|
|
142
|
-
|
|
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(
|
|
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(
|
|
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 (
|
|
160
|
-
|
|
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 ===
|
|
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 ===
|
|
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 =
|
|
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 (
|
|
269
|
+
if ("type" in route) {
|
|
212
270
|
const newRoute = traverseRouteTree(route);
|
|
213
|
-
routeComponentsCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loadable.*\))"/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 =
|
|
274
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
217
275
|
component
|
|
218
276
|
});
|
|
219
|
-
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g,
|
|
277
|
+
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, "$1").replace(/"(lazy[^"]*)"/g, "$1")},`;
|
|
220
278
|
}
|
|
221
279
|
}
|
|
222
|
-
routeComponentsCode +=
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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(
|
|
293
|
+
import { ${loaders.map(
|
|
294
|
+
(loader, index2) => `loader_${index2}`
|
|
295
|
+
)} } from "${slash(dataLoaderPath)}${slash(loadersIndexFile)}"
|
|
233
296
|
`;
|
|
234
|
-
const loaderEntryCode = loaders.map((loader,
|
|
235
|
-
return `export * from './loader_${
|
|
236
|
-
}).join(
|
|
237
|
-
const loaderEntryFile = path.join(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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
|
-
|
|
248
|
-
|
|
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
|
+
};
|