@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,60 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
getBundleEntry: () => getBundleEntry
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return (0, _utils.findExists)(_constants.JS_EXTENSIONS.map(ext => `${file}${ext}`)) || file;
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_path = __toESM(require("path"));
|
|
30
|
+
var import_utils = require("@modern-js/utils");
|
|
31
|
+
var import_getFileSystemEntry = require("./getFileSystemEntry");
|
|
32
|
+
var import_constants = require("./constants");
|
|
33
|
+
const ensureExtensions = (file) => {
|
|
34
|
+
if (!import_path.default.extname(file)) {
|
|
35
|
+
return (0, import_utils.findExists)(import_constants.JS_EXTENSIONS.map((ext) => `${file}${ext}`)) || file;
|
|
15
36
|
}
|
|
16
37
|
return file;
|
|
17
38
|
};
|
|
18
|
-
const ifAlreadyExists = (entrypoints, checked) => entrypoints.some(entrypoint => {
|
|
39
|
+
const ifAlreadyExists = (entrypoints, checked) => entrypoints.some((entrypoint) => {
|
|
19
40
|
if (ensureExtensions(entrypoint.entry) === ensureExtensions(checked.entry)) {
|
|
20
|
-
// reset entryName
|
|
21
41
|
checked.entryName = entrypoint.entryName;
|
|
22
42
|
return true;
|
|
23
43
|
}
|
|
24
|
-
// filesystem routes entrypoint conflict with normal entrypoint.
|
|
25
44
|
if (entrypoint.entry.startsWith(checked.entry) || checked.entry.startsWith(entrypoint.entry)) {
|
|
26
|
-
throw new Error(
|
|
45
|
+
throw new Error(
|
|
46
|
+
`Entry configuration conflicts
|
|
47
|
+
Your configuration: ${checked.entry}.
|
|
48
|
+
Default entrypoint: ${entrypoint.entry}
|
|
49
|
+
Please reset source.entries or set source.disableDefaultEntries to disable the default entry rules.`
|
|
50
|
+
);
|
|
27
51
|
}
|
|
28
52
|
return false;
|
|
29
53
|
});
|
|
30
54
|
const getBundleEntry = (appContext, config) => {
|
|
55
|
+
const { appDirectory, packageName } = appContext;
|
|
31
56
|
const {
|
|
32
|
-
|
|
33
|
-
packageName
|
|
34
|
-
} = appContext;
|
|
35
|
-
const {
|
|
36
|
-
source: {
|
|
37
|
-
disableDefaultEntries,
|
|
38
|
-
entries,
|
|
39
|
-
entriesDir
|
|
40
|
-
}
|
|
57
|
+
source: { disableDefaultEntries, entries, entriesDir }
|
|
41
58
|
} = config;
|
|
42
|
-
const defaults = disableDefaultEntries ? [] : (0,
|
|
43
|
-
|
|
44
|
-
// merge entrypoints from user config with directory convention.
|
|
59
|
+
const defaults = disableDefaultEntries ? [] : (0, import_getFileSystemEntry.getFileSystemEntry)(appContext, config);
|
|
45
60
|
if (entries) {
|
|
46
|
-
Object.keys(entries).forEach(name => {
|
|
61
|
+
Object.keys(entries).forEach((name) => {
|
|
47
62
|
const value = entries[name];
|
|
48
|
-
const entrypoint = typeof value ===
|
|
63
|
+
const entrypoint = typeof value === "string" ? {
|
|
49
64
|
entryName: name,
|
|
50
|
-
entry: (0,
|
|
65
|
+
entry: (0, import_utils.ensureAbsolutePath)(appDirectory, value),
|
|
51
66
|
isAutoMount: true,
|
|
52
|
-
fileSystemRoutes:
|
|
67
|
+
fileSystemRoutes: import_utils.fs.statSync((0, import_utils.ensureAbsolutePath)(appDirectory, value)).isDirectory() ? {} : void 0
|
|
53
68
|
} : {
|
|
54
69
|
entryName: name,
|
|
55
|
-
entry: (0,
|
|
70
|
+
entry: (0, import_utils.ensureAbsolutePath)(appDirectory, value.entry),
|
|
56
71
|
isAutoMount: !value.disableMount,
|
|
57
|
-
fileSystemRoutes: value.enableFileSystemRoutes ? {} :
|
|
72
|
+
fileSystemRoutes: value.enableFileSystemRoutes ? {} : void 0
|
|
58
73
|
};
|
|
59
74
|
if (!ifAlreadyExists(defaults, entrypoint)) {
|
|
60
75
|
defaults.push(entrypoint);
|
|
@@ -62,15 +77,11 @@ const getBundleEntry = (appContext, config) => {
|
|
|
62
77
|
});
|
|
63
78
|
}
|
|
64
79
|
if (!disableDefaultEntries) {
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
nestedRoutesEntry: _nestedRoutesEntry = ''
|
|
71
|
-
}) => entryName === packageName || _path.default.dirname(entry) === entriesDirAbs || _path.default.dirname(_nestedRoutesEntry) === entriesDirAbs);
|
|
72
|
-
found && (found.entryName = _utils.MAIN_ENTRY_NAME);
|
|
80
|
+
const entriesDirAbs = (0, import_utils.ensureAbsolutePath)(appDirectory, entriesDir || "");
|
|
81
|
+
const found = defaults.find(
|
|
82
|
+
({ entryName, entry, nestedRoutesEntry = "" }) => entryName === packageName || import_path.default.dirname(entry) === entriesDirAbs || import_path.default.dirname(nestedRoutesEntry) === entriesDirAbs
|
|
83
|
+
);
|
|
84
|
+
found && (found.entryName = import_utils.MAIN_ENTRY_NAME);
|
|
73
85
|
}
|
|
74
86
|
return defaults;
|
|
75
87
|
};
|
|
76
|
-
exports.getBundleEntry = getBundleEntry;
|
|
@@ -1,55 +1,92 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
getClientRoutes: () => getClientRoutes
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_path = __toESM(require("path"));
|
|
30
|
+
var import_utils = require("@modern-js/utils");
|
|
31
|
+
var import_makeLegalIdentifier = require("../makeLegalIdentifier");
|
|
32
|
+
var import_constants = require("../constants");
|
|
33
|
+
var import_utils2 = require("../utils");
|
|
34
|
+
var import_utils3 = require("./utils");
|
|
35
|
+
var __defProp2 = Object.defineProperty;
|
|
36
|
+
var __defProps = Object.defineProperties;
|
|
37
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
38
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
39
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
40
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
41
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
42
|
+
var __spreadValues = (a, b) => {
|
|
43
|
+
for (var prop in b || (b = {}))
|
|
44
|
+
if (__hasOwnProp2.call(b, prop))
|
|
45
|
+
__defNormalProp(a, prop, b[prop]);
|
|
46
|
+
if (__getOwnPropSymbols)
|
|
47
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
48
|
+
if (__propIsEnum.call(b, prop))
|
|
49
|
+
__defNormalProp(a, prop, b[prop]);
|
|
50
|
+
}
|
|
51
|
+
return a;
|
|
52
|
+
};
|
|
53
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
17
54
|
const compName = (srcDirectory, filePath) => {
|
|
18
|
-
const legalCompName = (0,
|
|
55
|
+
const legalCompName = (0, import_makeLegalIdentifier.makeLegalIdentifier)(
|
|
56
|
+
import_path.default.relative(srcDirectory, filePath)
|
|
57
|
+
);
|
|
19
58
|
return `Comp_${legalCompName}`;
|
|
20
59
|
};
|
|
21
|
-
const layoutNameAbbr = filePath => {
|
|
22
|
-
const prefix =
|
|
23
|
-
const dirName =
|
|
24
|
-
return `${prefix}${(0,
|
|
60
|
+
const layoutNameAbbr = (filePath) => {
|
|
61
|
+
const prefix = "L_";
|
|
62
|
+
const dirName = import_path.default.dirname(filePath).split("/").pop() || "";
|
|
63
|
+
return `${prefix}${(0, import_makeLegalIdentifier.makeLegalIdentifier)(dirName)}`;
|
|
25
64
|
};
|
|
26
65
|
const parents = [];
|
|
27
|
-
|
|
28
|
-
/* eslint-disable no-param-reassign */
|
|
29
66
|
const recursiveReadDir = ({
|
|
30
67
|
dir,
|
|
31
68
|
routes,
|
|
32
|
-
basePath
|
|
69
|
+
basePath = "/",
|
|
33
70
|
srcDirectory,
|
|
34
71
|
srcAlias
|
|
35
72
|
}) => {
|
|
36
73
|
let hasDynamicRoute = false;
|
|
37
74
|
let resetParent = false;
|
|
38
75
|
let parent = parents[parents.length - 1];
|
|
39
|
-
const layout = (0,
|
|
76
|
+
const layout = (0, import_utils3.findLayout)(dir);
|
|
40
77
|
if (layout) {
|
|
41
|
-
if (
|
|
78
|
+
if (basePath === "/") {
|
|
42
79
|
throw new Error(`should use _app instead of _layout in ${dir}`);
|
|
43
80
|
} else {
|
|
44
|
-
const alias = (0,
|
|
81
|
+
const alias = (0, import_utils2.replaceWithAlias)(srcDirectory, layout, srcAlias);
|
|
45
82
|
const componentName = compName(srcDirectory, layout);
|
|
46
83
|
const route = {
|
|
47
|
-
path: `${
|
|
84
|
+
path: `${basePath.substring(0, basePath.length - 1)}`,
|
|
48
85
|
children: [],
|
|
49
86
|
_component: alias,
|
|
50
87
|
component: componentName,
|
|
51
88
|
parent,
|
|
52
|
-
type:
|
|
89
|
+
type: "page"
|
|
53
90
|
};
|
|
54
91
|
parent = route;
|
|
55
92
|
resetParent = true;
|
|
@@ -58,28 +95,30 @@ const recursiveReadDir = ({
|
|
|
58
95
|
routes = route.children;
|
|
59
96
|
}
|
|
60
97
|
}
|
|
61
|
-
for (const relative of
|
|
62
|
-
const filePath =
|
|
63
|
-
if (!(0,
|
|
64
|
-
const filename =
|
|
65
|
-
const alias = (0,
|
|
98
|
+
for (const relative of import_utils.fs.readdirSync(dir)) {
|
|
99
|
+
const filePath = import_path.default.join(dir, relative);
|
|
100
|
+
if (!(0, import_utils3.shouldSkip)(filePath)) {
|
|
101
|
+
const filename = import_path.default.basename(filePath, import_path.default.extname(filePath));
|
|
102
|
+
const alias = (0, import_utils2.replaceWithAlias)(srcDirectory, filePath, srcAlias);
|
|
66
103
|
const componentName = compName(srcDirectory, filePath);
|
|
67
|
-
const dynamicRouteMatched =
|
|
104
|
+
const dynamicRouteMatched = import_constants.FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP.exec(filename);
|
|
68
105
|
if (dynamicRouteMatched) {
|
|
69
106
|
if (hasDynamicRoute) {
|
|
70
|
-
throw new Error(
|
|
107
|
+
throw new Error(
|
|
108
|
+
`Can't set two dynamic route in one directory: ${dir}`
|
|
109
|
+
);
|
|
71
110
|
} else {
|
|
72
111
|
hasDynamicRoute = true;
|
|
73
112
|
}
|
|
74
113
|
}
|
|
75
114
|
const route = {
|
|
76
|
-
path: `${
|
|
115
|
+
path: `${basePath}${dynamicRouteMatched ? `:${dynamicRouteMatched[1]}${dynamicRouteMatched[2]}` : filename}`,
|
|
77
116
|
_component: alias,
|
|
78
117
|
component: componentName,
|
|
79
118
|
parent,
|
|
80
|
-
type:
|
|
119
|
+
type: "page"
|
|
81
120
|
};
|
|
82
|
-
if (
|
|
121
|
+
if (import_utils.fs.statSync(filePath).isDirectory()) {
|
|
83
122
|
recursiveReadDir({
|
|
84
123
|
dir: filePath,
|
|
85
124
|
routes,
|
|
@@ -89,14 +128,14 @@ const recursiveReadDir = ({
|
|
|
89
128
|
});
|
|
90
129
|
continue;
|
|
91
130
|
}
|
|
92
|
-
if (filename ===
|
|
131
|
+
if (filename === import_constants.FILE_SYSTEM_ROUTES_LAYOUT) {
|
|
93
132
|
continue;
|
|
94
133
|
}
|
|
95
|
-
if (filename ===
|
|
96
|
-
route.path =
|
|
134
|
+
if (filename === import_constants.FILE_SYSTEM_ROUTES_INDEX) {
|
|
135
|
+
route.path = basePath === "/" ? basePath : `${basePath.substring(0, basePath.length - 1)}`;
|
|
97
136
|
}
|
|
98
|
-
if (filename ===
|
|
99
|
-
route.path =
|
|
137
|
+
if (filename === "404" && basePath === "/") {
|
|
138
|
+
route.path = "*";
|
|
100
139
|
}
|
|
101
140
|
routes.push(route);
|
|
102
141
|
}
|
|
@@ -105,36 +144,47 @@ const recursiveReadDir = ({
|
|
|
105
144
|
parents.pop();
|
|
106
145
|
}
|
|
107
146
|
};
|
|
108
|
-
/* eslint-enable no-param-reassign */
|
|
109
|
-
|
|
110
147
|
const normalizeNestedRoutes = (nested, internalComponentsDir, internalDirectory, internalDirAlias) => {
|
|
111
|
-
const flat = routes => routes.reduce(
|
|
112
|
-
|
|
148
|
+
const flat = (routes) => routes.reduce(
|
|
149
|
+
(memo, route) => memo.concat(
|
|
150
|
+
Array.isArray(route.children) ? flat(route.children) : [route]
|
|
151
|
+
),
|
|
152
|
+
[]
|
|
153
|
+
);
|
|
154
|
+
const generate = (route) => {
|
|
113
155
|
const codes = [];
|
|
114
156
|
let lastComponent = route.component;
|
|
115
|
-
const imports = [
|
|
116
|
-
|
|
117
|
-
|
|
157
|
+
const imports = [
|
|
158
|
+
`import React from 'react';`,
|
|
159
|
+
`import ${lastComponent} from '${route._component}'`
|
|
160
|
+
];
|
|
118
161
|
while (route = route.parent) {
|
|
119
162
|
const layoutComponent = route.component;
|
|
120
163
|
const layoutComponentAbbr = layoutNameAbbr(route._component);
|
|
121
164
|
imports.push(`import ${layoutComponent} from '${route._component}';`);
|
|
122
165
|
const currentComponent = `${layoutComponentAbbr}_${lastComponent}`;
|
|
123
|
-
codes.push(
|
|
166
|
+
codes.push(
|
|
167
|
+
`const ${currentComponent} = props => <${layoutComponent} Component={${lastComponent}} {...props} />;`
|
|
168
|
+
);
|
|
124
169
|
lastComponent = currentComponent;
|
|
125
170
|
}
|
|
126
|
-
const file =
|
|
127
|
-
|
|
171
|
+
const file = import_path.default.resolve(internalComponentsDir, `${lastComponent}.jsx`);
|
|
172
|
+
import_utils.fs.outputFileSync(
|
|
173
|
+
file,
|
|
174
|
+
`${imports.join("\n")}
|
|
175
|
+
${codes.join(
|
|
176
|
+
"\n"
|
|
177
|
+
)}
|
|
178
|
+
export default ${lastComponent}`
|
|
179
|
+
);
|
|
128
180
|
return {
|
|
129
181
|
component: lastComponent,
|
|
130
|
-
_component: (0,
|
|
182
|
+
_component: (0, import_utils2.replaceWithAlias)(internalDirectory, file, internalDirAlias)
|
|
131
183
|
};
|
|
132
184
|
};
|
|
133
|
-
const normalized = flat(nested).map(
|
|
134
|
-
parent:
|
|
135
|
-
|
|
136
|
-
parent: undefined
|
|
137
|
-
}));
|
|
185
|
+
const normalized = flat(nested).map(
|
|
186
|
+
(route) => route.parent ? __spreadProps(__spreadValues(__spreadValues({}, route), generate(route)), { parent: void 0 }) : __spreadProps(__spreadValues({}, route), { parent: void 0 })
|
|
187
|
+
);
|
|
138
188
|
return normalized;
|
|
139
189
|
};
|
|
140
190
|
const getClientRoutes = ({
|
|
@@ -144,38 +194,44 @@ const getClientRoutes = ({
|
|
|
144
194
|
internalDirectory,
|
|
145
195
|
internalDirAlias
|
|
146
196
|
}) => {
|
|
147
|
-
const {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
throw new Error(`generate file system routes error, ${entry} directory not found.`);
|
|
197
|
+
const { entry, entryName } = entrypoint;
|
|
198
|
+
if (!import_utils.fs.existsSync(entry)) {
|
|
199
|
+
throw new Error(
|
|
200
|
+
`generate file system routes error, ${entry} directory not found.`
|
|
201
|
+
);
|
|
153
202
|
}
|
|
154
|
-
if (!(
|
|
155
|
-
throw new Error(
|
|
203
|
+
if (!(import_utils.fs.existsSync(entry) && import_utils.fs.statSync(entry).isDirectory())) {
|
|
204
|
+
throw new Error(
|
|
205
|
+
`generate file system routes error, ${entry} should be directory.`
|
|
206
|
+
);
|
|
156
207
|
}
|
|
157
208
|
let routes = [];
|
|
158
209
|
recursiveReadDir({
|
|
159
210
|
dir: entry,
|
|
160
211
|
routes,
|
|
161
|
-
basePath:
|
|
212
|
+
basePath: "/",
|
|
162
213
|
srcDirectory,
|
|
163
214
|
srcAlias
|
|
164
215
|
});
|
|
165
|
-
const internalComponentsDir =
|
|
166
|
-
|
|
167
|
-
|
|
216
|
+
const internalComponentsDir = import_path.default.resolve(
|
|
217
|
+
internalDirectory,
|
|
218
|
+
`${entryName}/${import_constants.FILE_SYSTEM_ROUTES_COMPONENTS_DIR}`
|
|
219
|
+
);
|
|
220
|
+
import_utils.fs.emptyDirSync(internalComponentsDir);
|
|
221
|
+
routes = normalizeNestedRoutes(
|
|
222
|
+
routes,
|
|
223
|
+
internalComponentsDir,
|
|
224
|
+
internalDirectory,
|
|
225
|
+
internalDirAlias
|
|
226
|
+
);
|
|
168
227
|
parents.length = 0;
|
|
169
|
-
|
|
170
|
-
// FIXME: support more situations
|
|
171
228
|
routes.sort((a, b) => {
|
|
172
|
-
const delta = (0,
|
|
229
|
+
const delta = (0, import_utils3.getRouteWeight)(a.path) - (0, import_utils3.getRouteWeight)(b.path);
|
|
173
230
|
if (delta === 0) {
|
|
174
231
|
return a.path.length - b.path.length;
|
|
175
232
|
}
|
|
176
233
|
return delta;
|
|
177
234
|
});
|
|
178
|
-
(0,
|
|
235
|
+
(0, import_utils3.debug)(`fileSystem routes: %o`, routes);
|
|
179
236
|
return routes;
|
|
180
237
|
};
|
|
181
|
-
exports.getClientRoutes = getClientRoutes;
|