@modern-js/app-tools 2.0.0-beta.2 → 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/CHANGELOG.md +251 -0
- package/bin/modern.js +10 -1
- package/dist/js/modern/analyze/constants.js +38 -16
- package/dist/js/modern/analyze/generateCode.js +271 -211
- 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 +110 -53
- package/dist/js/modern/analyze/templates.js +190 -77
- package/dist/js/modern/analyze/utils.js +98 -51
- package/dist/js/modern/builder/builderPlugins/compatModern.js +124 -107
- package/dist/js/modern/builder/index.js +123 -86
- 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 +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 +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 +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 -35
- package/dist/js/node/analyze/generateCode.js +290 -228
- 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 +140 -67
- package/dist/js/node/analyze/templates.js +211 -84
- package/dist/js/node/analyze/utils.js +123 -62
- package/dist/js/node/builder/builderPlugins/compatModern.js +152 -120
- package/dist/js/node/builder/index.js +151 -95
- 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 +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 +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 +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 -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/constants.js +28 -16
- package/dist/js/treeshaking/analyze/generateCode.js +604 -355
- 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 -146
- 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 +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 +281 -195
- package/dist/js/treeshaking/builder/index.js +371 -165
- 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 +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 -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 +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/constants.d.ts +2 -0
- package/dist/types/analyze/index.d.ts +2 -0
- package/dist/types/analyze/templates.d.ts +8 -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 +2 -2
- 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 +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 +10 -1
- package/dist/types/types/hooks.d.ts +2 -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 +27 -23
|
@@ -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,81 @@ 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
|
+
}) {
|
|
182
|
+
const loadings = [];
|
|
183
|
+
const errors = [];
|
|
184
|
+
const loaders = [];
|
|
185
|
+
const loadersMap = {};
|
|
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
|
+
);
|
|
137
198
|
const importLazyCode = `
|
|
138
199
|
import { lazy } from "react";
|
|
139
200
|
import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
|
|
140
201
|
`;
|
|
141
|
-
let
|
|
202
|
+
let rootLayoutCode = ``;
|
|
203
|
+
let dataLoaderPath = "";
|
|
204
|
+
let componentLoaderPath = "";
|
|
142
205
|
if (ssrMode) {
|
|
143
|
-
dataLoaderPath = require.resolve(
|
|
206
|
+
dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
|
|
144
207
|
if (nestedRoutesEntry) {
|
|
145
|
-
dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&
|
|
208
|
+
dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&mapFile=${loadersMapFile}!`;
|
|
146
209
|
}
|
|
210
|
+
componentLoaderPath = `${path.join(
|
|
211
|
+
__dirname,
|
|
212
|
+
"../builder/loaders/routerLoader"
|
|
213
|
+
)}!`;
|
|
147
214
|
}
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
const loaders = [];
|
|
151
|
-
const traverseRouteTree = route => {
|
|
215
|
+
const traverseRouteTree = (route) => {
|
|
216
|
+
var _a;
|
|
152
217
|
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);
|
|
218
|
+
if ("children" in route && route.children) {
|
|
219
|
+
children = (_a = route == null ? void 0 : route.children) == null ? void 0 : _a.map(traverseRouteTree);
|
|
156
220
|
}
|
|
157
221
|
let loading;
|
|
158
222
|
let error;
|
|
159
223
|
let loader;
|
|
160
|
-
let component =
|
|
161
|
-
if (route.type ===
|
|
224
|
+
let component = "";
|
|
225
|
+
if (route.type === "nested") {
|
|
162
226
|
if (route.loading) {
|
|
163
227
|
loadings.push(route.loading);
|
|
164
228
|
loading = `loading_${loadings.length - 1}`;
|
|
@@ -169,19 +233,24 @@ export const fileSystemRoutes = ({
|
|
|
169
233
|
}
|
|
170
234
|
if (route.loader) {
|
|
171
235
|
loaders.push(route.loader);
|
|
172
|
-
|
|
236
|
+
const loaderId = loaders.length - 1;
|
|
237
|
+
loader = `loader_${loaderId}`;
|
|
238
|
+
loadersMap[loader] = route.id;
|
|
173
239
|
}
|
|
174
240
|
if (route._component) {
|
|
175
|
-
if (
|
|
176
|
-
|
|
241
|
+
if (route.isRoot) {
|
|
242
|
+
rootLayoutCode = `import RootLayout from '${route._component}'`;
|
|
243
|
+
component = `RootLayout`;
|
|
244
|
+
} else if (ssrMode === "string") {
|
|
245
|
+
component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
177
246
|
} else {
|
|
178
|
-
component = `
|
|
247
|
+
component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
179
248
|
}
|
|
180
249
|
}
|
|
181
250
|
} else if (route._component) {
|
|
182
251
|
component = `loadable(() => import('${route._component}'))`;
|
|
183
252
|
}
|
|
184
|
-
const finalRoute =
|
|
253
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
185
254
|
loading,
|
|
186
255
|
loader,
|
|
187
256
|
error,
|
|
@@ -196,32 +265,76 @@ export const fileSystemRoutes = ({
|
|
|
196
265
|
export const routes = [
|
|
197
266
|
`;
|
|
198
267
|
for (const route of routes) {
|
|
199
|
-
if (
|
|
268
|
+
if ("type" in route) {
|
|
200
269
|
const newRoute = traverseRouteTree(route);
|
|
201
|
-
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, '"')},`;
|
|
202
271
|
} else {
|
|
203
272
|
const component = `loadable(() => import('${route._component}'))`;
|
|
204
|
-
const finalRoute =
|
|
273
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
205
274
|
component
|
|
206
275
|
});
|
|
207
|
-
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g,
|
|
276
|
+
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, "$1").replace(/"(lazy[^"]*)"/g, "$1")},`;
|
|
208
277
|
}
|
|
209
278
|
}
|
|
210
|
-
routeComponentsCode +=
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}).join(
|
|
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 = "";
|
|
290
|
+
if (loaders.length > 0) {
|
|
291
|
+
importLoadersCode = `
|
|
292
|
+
import { ${loaders.map(
|
|
293
|
+
(loader, index2) => `loader_${index2}`
|
|
294
|
+
)} } from "${slash(dataLoaderPath)}${slash(loadersIndexFile)}"
|
|
295
|
+
`;
|
|
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)}'
|
|
319
|
+
`;
|
|
320
|
+
yield fs.ensureFile(filename);
|
|
321
|
+
yield fs.writeFile(filename, code);
|
|
322
|
+
}))
|
|
323
|
+
);
|
|
324
|
+
}
|
|
220
325
|
return `
|
|
221
326
|
${importLazyCode}
|
|
327
|
+
${rootLayoutCode}
|
|
222
328
|
${importLoadingCode}
|
|
223
329
|
${importErrorComponentsCode}
|
|
224
|
-
${
|
|
330
|
+
${importLoadersCode}
|
|
225
331
|
${routeComponentsCode}
|
|
226
332
|
`;
|
|
227
|
-
};
|
|
333
|
+
});
|
|
334
|
+
export {
|
|
335
|
+
fileSystemRoutes,
|
|
336
|
+
html,
|
|
337
|
+
index,
|
|
338
|
+
renderFunction,
|
|
339
|
+
routesForServer
|
|
340
|
+
};
|