@modern-js/app-tools 2.0.0-beta.3 → 2.0.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/js/modern/analyze/constants.js +38 -18
- package/dist/js/modern/analyze/generateCode.js +261 -221
- package/dist/js/modern/analyze/getBundleEntry.js +31 -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 +193 -159
- 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 +161 -80
- package/dist/js/modern/analyze/utils.js +87 -66
- package/dist/js/modern/builder/builderPlugins/compatModern.js +121 -109
- package/dist/js/modern/builder/index.js +122 -83
- 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 +22 -20
- 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 +98 -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 +10 -3
- package/dist/js/modern/index.js +140 -89
- 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/constants.js +54 -39
- package/dist/js/node/analyze/generateCode.js +281 -239
- package/dist/js/node/analyze/getBundleEntry.js +55 -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 +240 -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 +183 -89
- package/dist/js/node/analyze/utils.js +114 -81
- package/dist/js/node/builder/builderPlugins/compatModern.js +149 -122
- package/dist/js/node/builder/index.js +150 -92
- 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 +45 -25
- 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 +116 -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 +44 -29
- package/dist/js/node/index.js +190 -130
- 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/constants.js +28 -18
- package/dist/js/treeshaking/analyze/generateCode.js +599 -406
- package/dist/js/treeshaking/analyze/getBundleEntry.js +52 -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 +558 -303
- 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 +281 -200
- package/dist/js/treeshaking/builder/index.js +371 -163
- 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 +41 -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 +332 -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 +26 -25
- package/dist/js/treeshaking/index.js +465 -257
- 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/index.d.ts +2 -0
- package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
- package/dist/types/builder/index.d.ts +2 -2
- package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
- package/dist/types/defineConfig.d.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/initialize/index.d.ts +2 -0
- 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/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 +9 -8
|
@@ -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,81 @@ 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
180
|
internalDirectory
|
|
136
|
-
})
|
|
181
|
+
}) {
|
|
137
182
|
const loadings = [];
|
|
138
183
|
const errors = [];
|
|
139
184
|
const loaders = [];
|
|
140
185
|
const loadersMap = {};
|
|
141
|
-
const loadersIndexFile = path.join(
|
|
142
|
-
|
|
186
|
+
const loadersIndexFile = path.join(
|
|
187
|
+
"@_modern_js_internal",
|
|
188
|
+
entryName,
|
|
189
|
+
TEMP_LOADERS_DIR,
|
|
190
|
+
"index.js"
|
|
191
|
+
);
|
|
192
|
+
const loadersMapFile = path.join(
|
|
193
|
+
internalDirectory,
|
|
194
|
+
entryName,
|
|
195
|
+
TEMP_LOADERS_DIR,
|
|
196
|
+
"map.json"
|
|
197
|
+
);
|
|
143
198
|
const importLazyCode = `
|
|
144
199
|
import { lazy } from "react";
|
|
145
200
|
import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
|
|
146
201
|
`;
|
|
147
202
|
let rootLayoutCode = ``;
|
|
148
|
-
let dataLoaderPath =
|
|
149
|
-
let componentLoaderPath =
|
|
203
|
+
let dataLoaderPath = "";
|
|
204
|
+
let componentLoaderPath = "";
|
|
150
205
|
if (ssrMode) {
|
|
151
|
-
dataLoaderPath = require.resolve(
|
|
206
|
+
dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
|
|
152
207
|
if (nestedRoutesEntry) {
|
|
153
208
|
dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&mapFile=${loadersMapFile}!`;
|
|
154
209
|
}
|
|
155
|
-
componentLoaderPath = `${path.join(
|
|
210
|
+
componentLoaderPath = `${path.join(
|
|
211
|
+
__dirname,
|
|
212
|
+
"../builder/loaders/routerLoader"
|
|
213
|
+
)}!`;
|
|
156
214
|
}
|
|
157
|
-
const traverseRouteTree = route => {
|
|
215
|
+
const traverseRouteTree = (route) => {
|
|
216
|
+
var _a;
|
|
158
217
|
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);
|
|
218
|
+
if ("children" in route && route.children) {
|
|
219
|
+
children = (_a = route == null ? void 0 : route.children) == null ? void 0 : _a.map(traverseRouteTree);
|
|
162
220
|
}
|
|
163
221
|
let loading;
|
|
164
222
|
let error;
|
|
165
223
|
let loader;
|
|
166
|
-
let component =
|
|
167
|
-
if (route.type ===
|
|
224
|
+
let component = "";
|
|
225
|
+
if (route.type === "nested") {
|
|
168
226
|
if (route.loading) {
|
|
169
227
|
loadings.push(route.loading);
|
|
170
228
|
loading = `loading_${loadings.length - 1}`;
|
|
@@ -183,17 +241,16 @@ export const fileSystemRoutes = async ({
|
|
|
183
241
|
if (route.isRoot) {
|
|
184
242
|
rootLayoutCode = `import RootLayout from '${route._component}'`;
|
|
185
243
|
component = `RootLayout`;
|
|
186
|
-
} else if (ssrMode ===
|
|
244
|
+
} else if (ssrMode === "string") {
|
|
187
245
|
component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
188
246
|
} else {
|
|
189
|
-
// csr and streaming
|
|
190
247
|
component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
191
248
|
}
|
|
192
249
|
}
|
|
193
250
|
} else if (route._component) {
|
|
194
251
|
component = `loadable(() => import('${route._component}'))`;
|
|
195
252
|
}
|
|
196
|
-
const finalRoute =
|
|
253
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
197
254
|
loading,
|
|
198
255
|
loader,
|
|
199
256
|
error,
|
|
@@ -208,45 +265,62 @@ export const fileSystemRoutes = async ({
|
|
|
208
265
|
export const routes = [
|
|
209
266
|
`;
|
|
210
267
|
for (const route of routes) {
|
|
211
|
-
if (
|
|
268
|
+
if ("type" in route) {
|
|
212
269
|
const newRoute = traverseRouteTree(route);
|
|
213
|
-
routeComponentsCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loadable.*\))"/g,
|
|
270
|
+
routeComponentsCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loadable.*\))"/g, "$1").replace(/"(loadableLazy.*\))"/g, "$1").replace(/"(lazy.*\))"/g, "$1").replace(/"(loading_[^"])"/g, "$1").replace(/"(loader_[^"])"/g, "$1").replace(/"(RootLayout)"/g, "$1").replace(/"(error_[^"])"/g, "$1").replace(/\\"/g, '"')},`;
|
|
214
271
|
} else {
|
|
215
272
|
const component = `loadable(() => import('${route._component}'))`;
|
|
216
|
-
const finalRoute =
|
|
273
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
217
274
|
component
|
|
218
275
|
});
|
|
219
|
-
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g,
|
|
276
|
+
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, "$1").replace(/"(lazy[^"]*)"/g, "$1")},`;
|
|
220
277
|
}
|
|
221
278
|
}
|
|
222
|
-
routeComponentsCode +=
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
279
|
+
routeComponentsCode += `
|
|
280
|
+
];`;
|
|
281
|
+
const importLoadingCode = loadings.map((loading, index2) => {
|
|
282
|
+
return `import loading_${index2} from '${loading}';
|
|
283
|
+
`;
|
|
284
|
+
}).join("");
|
|
285
|
+
const importErrorComponentsCode = errors.map((error, index2) => {
|
|
286
|
+
return `import error_${index2} from '${error}';
|
|
287
|
+
`;
|
|
288
|
+
}).join("");
|
|
289
|
+
let importLoadersCode = "";
|
|
230
290
|
if (loaders.length > 0) {
|
|
231
291
|
importLoadersCode = `
|
|
232
|
-
import { ${loaders.map(
|
|
292
|
+
import { ${loaders.map(
|
|
293
|
+
(loader, index2) => `loader_${index2}`
|
|
294
|
+
)} } from "${slash(dataLoaderPath)}${slash(loadersIndexFile)}"
|
|
233
295
|
`;
|
|
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
|
-
|
|
296
|
+
const loaderEntryCode = loaders.map((loader, index2) => {
|
|
297
|
+
return `export * from './loader_${index2}.js';`;
|
|
298
|
+
}).join("\n");
|
|
299
|
+
const loaderEntryFile = path.join(
|
|
300
|
+
internalDirectory,
|
|
301
|
+
entryName,
|
|
302
|
+
TEMP_LOADERS_DIR,
|
|
303
|
+
"entry.js"
|
|
304
|
+
);
|
|
305
|
+
yield fs.ensureFile(loaderEntryFile);
|
|
306
|
+
yield fs.writeFile(loaderEntryFile, loaderEntryCode);
|
|
307
|
+
yield fs.writeJSON(loadersMapFile, loadersMap);
|
|
308
|
+
yield Promise.all(
|
|
309
|
+
loaders.map((loader, index2) => __async(void 0, null, function* () {
|
|
310
|
+
const name = `loader_${index2}`;
|
|
311
|
+
const filename = path.join(
|
|
312
|
+
internalDirectory,
|
|
313
|
+
entryName,
|
|
314
|
+
TEMP_LOADERS_DIR,
|
|
315
|
+
`${name}.js`
|
|
316
|
+
);
|
|
317
|
+
const code = `
|
|
318
|
+
export { loader as ${name} } from '${slash(loader)}'
|
|
246
319
|
`;
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
320
|
+
yield fs.ensureFile(filename);
|
|
321
|
+
yield fs.writeFile(filename, code);
|
|
322
|
+
}))
|
|
323
|
+
);
|
|
250
324
|
}
|
|
251
325
|
return `
|
|
252
326
|
${importLazyCode}
|
|
@@ -256,4 +330,11 @@ export const fileSystemRoutes = async ({
|
|
|
256
330
|
${importLoadersCode}
|
|
257
331
|
${routeComponentsCode}
|
|
258
332
|
`;
|
|
259
|
-
};
|
|
333
|
+
});
|
|
334
|
+
export {
|
|
335
|
+
fileSystemRoutes,
|
|
336
|
+
html,
|
|
337
|
+
index,
|
|
338
|
+
renderFunction,
|
|
339
|
+
routesForServer
|
|
340
|
+
};
|