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