@modern-js/app-tools 2.0.0-beta.3 → 2.0.0-beta.6
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 +619 -0
- package/bin/modern.js +3 -0
- package/dist/js/modern/analyze/Builder.js +39 -0
- package/dist/js/modern/analyze/constants.js +48 -18
- package/dist/js/modern/analyze/generateCode.js +264 -225
- package/dist/js/modern/analyze/getBundleEntry.js +34 -32
- package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +99 -52
- 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 +52 -23
- 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 +204 -161
- 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 +118 -65
- package/dist/js/modern/analyze/templates.js +170 -81
- package/dist/js/modern/analyze/utils.js +104 -67
- package/dist/js/modern/builder/builderPlugins/compatModern.js +128 -109
- package/dist/js/modern/builder/index.js +120 -89
- package/dist/js/modern/builder/loaders/routerLoader.js +9 -12
- package/dist/js/modern/builder/loaders/serverModuleLoader.js +4 -1
- package/dist/js/modern/builder/share.js +23 -21
- package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
- package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
- package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +100 -84
- package/dist/js/modern/commands/build.js +67 -42
- package/dist/js/modern/commands/deploy.js +27 -4
- package/dist/js/modern/commands/dev.js +81 -34
- package/dist/js/modern/commands/index.js +1 -1
- package/dist/js/modern/commands/inspect.js +30 -5
- package/dist/js/modern/commands/serve.js +54 -0
- package/dist/js/modern/config/default.js +112 -145
- 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 +10 -13
- package/dist/js/modern/config/initial/createSourceConfig.js +10 -3
- 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 +11 -4
- package/dist/js/modern/defineConfig.js +26 -11
- package/dist/js/modern/exports/server.js +4 -1
- package/dist/js/modern/hooks.js +16 -4
- package/dist/js/modern/index.js +178 -90
- package/dist/js/modern/initialize/index.js +100 -52
- 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 +53 -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 +10 -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/getServerInternalPlugins.js +58 -0
- 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 +64 -0
- package/dist/js/node/analyze/constants.js +86 -39
- package/dist/js/node/analyze/generateCode.js +285 -239
- package/dist/js/node/analyze/getBundleEntry.js +62 -44
- package/dist/js/node/analyze/getClientRoutes/getRoutes.js +138 -77
- package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +130 -74
- package/dist/js/node/analyze/getClientRoutes/index.js +27 -16
- package/dist/js/node/analyze/getClientRoutes/utils.js +51 -21
- package/dist/js/node/analyze/getFileSystemEntry.js +82 -39
- package/dist/js/node/analyze/getHtmlTemplate.js +120 -61
- package/dist/js/node/analyze/getServerRoutes.js +145 -137
- package/dist/js/node/analyze/index.js +233 -174
- package/dist/js/node/analyze/isDefaultExportFunction.js +59 -26
- package/dist/js/node/analyze/makeLegalIdentifier.js +31 -15
- package/dist/js/node/analyze/nestedRoutes.js +150 -79
- package/dist/js/node/analyze/templates.js +198 -90
- package/dist/js/node/analyze/utils.js +136 -81
- package/dist/js/node/builder/builderPlugins/compatModern.js +158 -122
- package/dist/js/node/builder/index.js +142 -98
- package/dist/js/node/builder/loaders/routerLoader.js +29 -18
- package/dist/js/node/builder/loaders/serverModuleLoader.js +24 -7
- package/dist/js/node/builder/share.js +50 -26
- package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +43 -26
- package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +51 -31
- package/dist/js/node/builder/webpackPlugins/routerPlugin.js +120 -90
- package/dist/js/node/commands/build.js +91 -52
- package/dist/js/node/commands/deploy.js +49 -10
- package/dist/js/node/commands/dev.js +105 -48
- package/dist/js/node/commands/index.js +19 -38
- package/dist/js/node/commands/inspect.js +52 -11
- package/dist/js/node/commands/serve.js +83 -0
- package/dist/js/node/config/default.js +131 -149
- package/dist/js/node/config/index.js +31 -28
- package/dist/js/node/config/initial/createHtmlConfig.js +26 -6
- package/dist/js/node/config/initial/createOutputConfig.js +31 -17
- package/dist/js/node/config/initial/createSourceConfig.js +31 -7
- package/dist/js/node/config/initial/createToolsConfig.js +28 -10
- package/dist/js/node/config/initial/index.js +34 -17
- package/dist/js/node/config/initial/inits.js +130 -81
- package/dist/js/node/config/initial/transformNormalizedConfig.js +40 -16
- package/dist/js/node/defineConfig.js +46 -17
- package/dist/js/node/exports/server.js +25 -10
- package/dist/js/node/hooks.js +53 -29
- package/dist/js/node/index.js +213 -129
- package/dist/js/node/initialize/index.js +117 -61
- package/dist/js/node/locale/en.js +40 -25
- package/dist/js/node/locale/index.js +31 -14
- package/dist/js/node/locale/zh.js +41 -26
- package/dist/js/node/schema/Schema.js +27 -10
- package/dist/js/node/schema/index.js +84 -114
- package/dist/js/node/schema/legacy.js +119 -240
- package/dist/js/node/types/config/deploy.js +15 -0
- package/dist/js/node/types/config/dev.js +15 -0
- package/dist/js/node/types/config/experiments.js +15 -0
- package/dist/js/node/types/config/html.js +15 -0
- package/dist/js/node/types/config/index.js +17 -16
- package/dist/js/node/types/config/output.js +15 -0
- package/dist/js/node/types/config/performance.js +15 -0
- package/dist/js/node/types/config/security.js +15 -0
- package/dist/js/node/types/config/source.js +15 -0
- package/dist/js/node/types/config/tools.js +15 -0
- package/dist/js/node/types/hooks.js +15 -0
- package/dist/js/node/types/index.js +19 -38
- package/dist/js/node/types/legacyConfig/deploy.js +15 -0
- package/dist/js/node/types/legacyConfig/dev.js +15 -0
- package/dist/js/node/types/legacyConfig/index.js +15 -0
- package/dist/js/node/types/legacyConfig/output.js +15 -5
- package/dist/js/node/types/legacyConfig/source.js +15 -0
- package/dist/js/node/types/legacyConfig/tools.js +15 -0
- package/dist/js/node/utils/commands.js +31 -6
- package/dist/js/node/utils/config.js +125 -51
- package/dist/js/node/utils/createFileWatcher.js +109 -61
- package/dist/js/node/utils/createServer.js +92 -25
- package/dist/js/node/utils/getServerInternalPlugins.js +79 -0
- package/dist/js/node/utils/getSpecifiedEntries.js +68 -25
- package/dist/js/node/utils/language.js +28 -8
- package/dist/js/node/utils/printInstructions.js +51 -16
- package/dist/js/node/utils/restart.js +65 -21
- package/dist/js/node/utils/routes.js +58 -19
- package/dist/js/node/utils/types.js +15 -0
- package/dist/js/treeshaking/analyze/Builder.js +199 -0
- package/dist/js/treeshaking/analyze/constants.js +37 -18
- package/dist/js/treeshaking/analyze/generateCode.js +597 -407
- package/dist/js/treeshaking/analyze/getBundleEntry.js +55 -63
- package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +217 -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 +97 -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 +575 -305
- 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 +419 -201
- package/dist/js/treeshaking/analyze/templates.js +438 -236
- package/dist/js/treeshaking/analyze/utils.js +367 -153
- package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +285 -199
- package/dist/js/treeshaking/builder/index.js +365 -165
- package/dist/js/treeshaking/builder/loaders/routerLoader.js +11 -12
- package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +3 -2
- package/dist/js/treeshaking/builder/share.js +38 -44
- package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
- package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
- package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +334 -112
- package/dist/js/treeshaking/commands/build.js +286 -88
- package/dist/js/treeshaking/commands/deploy.js +153 -25
- package/dist/js/treeshaking/commands/dev.js +313 -131
- package/dist/js/treeshaking/commands/index.js +1 -1
- package/dist/js/treeshaking/commands/inspect.js +147 -32
- package/dist/js/treeshaking/commands/serve.js +199 -0
- package/dist/js/treeshaking/config/default.js +207 -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 +41 -70
- package/dist/js/treeshaking/config/initial/createSourceConfig.js +41 -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 +31 -34
- package/dist/js/treeshaking/defineConfig.js +60 -13
- package/dist/js/treeshaking/exports/server.js +2 -1
- package/dist/js/treeshaking/hooks.js +31 -25
- package/dist/js/treeshaking/index.js +681 -256
- package/dist/js/treeshaking/initialize/index.js +292 -113
- 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 +171 -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 +10 -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/getServerInternalPlugins.js +210 -0
- 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 +10 -1
- package/dist/types/analyze/index.d.ts +2 -0
- package/dist/types/analyze/templates.d.ts +3 -1
- package/dist/types/analyze/utils.d.ts +2 -1
- package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
- package/dist/types/builder/index.d.ts +3 -3
- package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
- package/dist/types/commands/index.d.ts +1 -1
- package/dist/types/commands/{start.d.ts → serve.d.ts} +0 -0
- package/dist/types/defineConfig.d.ts +1 -0
- package/dist/types/index.d.ts +7 -1
- package/dist/types/initialize/index.d.ts +2 -0
- package/dist/types/locale/en.d.ts +1 -1
- package/dist/types/locale/index.d.ts +2 -2
- package/dist/types/locale/zh.d.ts +1 -1
- package/dist/types/types/config/dev.d.ts +2 -2
- package/dist/types/types/config/index.d.ts +4 -0
- package/dist/types/types/config/output.d.ts +0 -1
- package/dist/types/types/config/source.d.ts +2 -0
- package/dist/types/types/config/tools.d.ts +2 -0
- package/dist/types/types/hooks.d.ts +8 -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/commands.d.ts +2 -1
- package/dist/types/utils/config.d.ts +1 -0
- package/dist/types/utils/createServer.d.ts +1 -0
- package/dist/types/utils/getServerInternalPlugins.d.ts +2 -0
- package/dist/types/utils/restart.d.ts +1 -1
- package/package.json +26 -22
- package/dist/js/modern/commands/start.js +0 -30
- package/dist/js/node/commands/start.js +0 -38
- package/dist/js/treeshaking/commands/start.js +0 -69
|
@@ -1,55 +1,92 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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";
|
|
42
|
+
import { JS_EXTENSIONS, NESTED_ROUTE } from "./constants";
|
|
7
43
|
import { hasLoader, replaceWithAlias } from "./utils";
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const LOADER_FILE = 'loader';
|
|
13
|
-
const conventionNames = [LAYOUT_FILE, PAGE_FILE, LOADING_FILE, ERROR_FILE, LOADER_FILE];
|
|
14
|
-
const getLoaderPath = async filename => {
|
|
15
|
-
if (await hasLoader(filename)) {
|
|
16
|
-
return normalizeToPosixPath(filename);
|
|
44
|
+
const conventionNames = Object.values(NESTED_ROUTE);
|
|
45
|
+
const getLoaderPath = (filename) => __async(void 0, null, function* () {
|
|
46
|
+
if (yield hasLoader(filename)) {
|
|
47
|
+
return filename;
|
|
17
48
|
}
|
|
18
|
-
return
|
|
19
|
-
};
|
|
20
|
-
const replaceDynamicPath = routePath => {
|
|
21
|
-
return routePath.replace(/\[(.*?)\]/g,
|
|
49
|
+
return void 0;
|
|
50
|
+
});
|
|
51
|
+
const replaceDynamicPath = (routePath) => {
|
|
52
|
+
return routePath.replace(/\[(.*?)\]/g, ":$1");
|
|
22
53
|
};
|
|
23
54
|
const createIndexRoute = (routeInfo, rootDir, filename, entryName) => {
|
|
24
|
-
return createRoute(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
55
|
+
return createRoute(
|
|
56
|
+
__spreadProps(__spreadValues({}, routeInfo), {
|
|
57
|
+
index: true,
|
|
58
|
+
children: void 0
|
|
59
|
+
}),
|
|
60
|
+
rootDir,
|
|
61
|
+
filename,
|
|
62
|
+
entryName
|
|
63
|
+
);
|
|
28
64
|
};
|
|
29
65
|
const createRoute = (routeInfo, rootDir, filename, entryName) => {
|
|
30
66
|
const id = getRouteId(filename, rootDir, entryName);
|
|
31
|
-
return
|
|
67
|
+
return __spreadProps(__spreadValues({}, routeInfo), {
|
|
32
68
|
id,
|
|
33
|
-
type:
|
|
69
|
+
type: "nested"
|
|
34
70
|
});
|
|
35
71
|
};
|
|
36
|
-
|
|
37
|
-
|
|
72
|
+
const walk = (dirname, rootDir, alias, entryName) => __async(void 0, null, function* () {
|
|
73
|
+
var _a, _b;
|
|
74
|
+
if (!(yield fs.pathExists(dirname))) {
|
|
38
75
|
return null;
|
|
39
76
|
}
|
|
40
|
-
const isDirectory = (
|
|
77
|
+
const isDirectory = (yield fs.stat(dirname)).isDirectory();
|
|
41
78
|
if (!isDirectory) {
|
|
42
79
|
return null;
|
|
43
80
|
}
|
|
44
81
|
const relativeDir = path.relative(rootDir, dirname);
|
|
45
82
|
const pathSegments = relativeDir.split(path.sep);
|
|
46
83
|
const lastSegment = pathSegments[pathSegments.length - 1];
|
|
47
|
-
const isRoot = lastSegment ===
|
|
48
|
-
const isPathlessLayout = lastSegment.startsWith(
|
|
49
|
-
const isWithoutLayoutPath = lastSegment.includes(
|
|
50
|
-
let routePath = isRoot || isPathlessLayout ?
|
|
84
|
+
const isRoot = lastSegment === "";
|
|
85
|
+
const isPathlessLayout = lastSegment.startsWith("__");
|
|
86
|
+
const isWithoutLayoutPath = lastSegment.includes(".");
|
|
87
|
+
let routePath = isRoot || isPathlessLayout ? "/" : `${lastSegment}`;
|
|
51
88
|
if (isWithoutLayoutPath) {
|
|
52
|
-
routePath = lastSegment.split(
|
|
89
|
+
routePath = lastSegment.split(".").join("/");
|
|
53
90
|
}
|
|
54
91
|
routePath = replaceDynamicPath(routePath);
|
|
55
92
|
const route = {
|
|
@@ -57,57 +94,73 @@ export const walk = async (dirname, rootDir, alias, entryName) => {
|
|
|
57
94
|
children: [],
|
|
58
95
|
isRoot
|
|
59
96
|
};
|
|
60
|
-
|
|
97
|
+
let pageLoaderFile = "";
|
|
98
|
+
let pageRoute = null;
|
|
99
|
+
const items = yield fs.readdir(dirname);
|
|
61
100
|
for (const item of items) {
|
|
62
101
|
const itemPath = path.join(dirname, item);
|
|
63
102
|
const extname = path.extname(item);
|
|
64
103
|
const itemWithoutExt = item.slice(0, -extname.length);
|
|
65
|
-
const
|
|
66
|
-
if (
|
|
67
|
-
const childRoute =
|
|
104
|
+
const isDirectory2 = (yield fs.stat(itemPath)).isDirectory();
|
|
105
|
+
if (isDirectory2) {
|
|
106
|
+
const childRoute = yield walk(itemPath, rootDir, alias, entryName);
|
|
68
107
|
if (childRoute) {
|
|
69
|
-
|
|
70
|
-
(_route$children = route.children) === null || _route$children === void 0 ? void 0 : _route$children.push(childRoute);
|
|
108
|
+
(_a = route.children) == null ? void 0 : _a.push(childRoute);
|
|
71
109
|
}
|
|
72
110
|
}
|
|
73
111
|
if (extname && (!JS_EXTENSIONS.includes(extname) || !conventionNames.includes(itemWithoutExt))) {
|
|
74
112
|
continue;
|
|
75
113
|
}
|
|
76
|
-
if (itemWithoutExt ===
|
|
114
|
+
if (itemWithoutExt === NESTED_ROUTE.LAYOUT_LOADER_FILE) {
|
|
115
|
+
if (!route.loader) {
|
|
116
|
+
route.loader = itemPath;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (itemWithoutExt === NESTED_ROUTE.LAYOUT_FILE) {
|
|
77
120
|
route._component = replaceWithAlias(alias.basename, itemPath, alias.name);
|
|
78
|
-
|
|
121
|
+
const loaderPath = yield getLoaderPath(itemPath);
|
|
122
|
+
if (loaderPath) {
|
|
123
|
+
route.loader = loaderPath;
|
|
124
|
+
}
|
|
79
125
|
}
|
|
80
|
-
if (itemWithoutExt ===
|
|
81
|
-
|
|
82
|
-
const childRoute = createIndexRoute({
|
|
83
|
-
_component: replaceWithAlias(alias.basename, itemPath, alias.name)
|
|
84
|
-
}, rootDir, itemPath, entryName);
|
|
85
|
-
childRoute.loader = await getLoaderPath(itemPath);
|
|
86
|
-
(_route$children2 = route.children) === null || _route$children2 === void 0 ? void 0 : _route$children2.push(childRoute);
|
|
126
|
+
if (itemWithoutExt === NESTED_ROUTE.PAGE_LOADER_FILE) {
|
|
127
|
+
pageLoaderFile = itemPath;
|
|
87
128
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
129
|
+
if (itemWithoutExt === NESTED_ROUTE.PAGE_FILE) {
|
|
130
|
+
pageRoute = createIndexRoute(
|
|
131
|
+
{
|
|
132
|
+
_component: replaceWithAlias(alias.basename, itemPath, alias.name)
|
|
133
|
+
},
|
|
134
|
+
rootDir,
|
|
135
|
+
itemPath,
|
|
136
|
+
entryName
|
|
137
|
+
);
|
|
138
|
+
const loaderPath = yield getLoaderPath(itemPath);
|
|
139
|
+
if (loaderPath) {
|
|
140
|
+
pageRoute.loader = loaderPath;
|
|
141
|
+
} else if (pageLoaderFile) {
|
|
142
|
+
pageRoute.loader = pageLoaderFile;
|
|
143
|
+
}
|
|
144
|
+
(_b = route.children) == null ? void 0 : _b.push(pageRoute);
|
|
145
|
+
}
|
|
146
|
+
if (itemWithoutExt === NESTED_ROUTE.LOADING_FILE) {
|
|
94
147
|
route.loading = replaceWithAlias(alias.basename, itemPath, alias.name);
|
|
95
148
|
}
|
|
96
|
-
if (itemWithoutExt === ERROR_FILE) {
|
|
149
|
+
if (itemWithoutExt === NESTED_ROUTE.ERROR_FILE) {
|
|
97
150
|
route.error = replaceWithAlias(alias.basename, itemPath, alias.name);
|
|
98
151
|
}
|
|
99
152
|
}
|
|
100
|
-
const finalRoute = createRoute(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
* - layout.tsx
|
|
107
|
-
* - layout.tsx
|
|
108
|
-
*/
|
|
153
|
+
const finalRoute = createRoute(
|
|
154
|
+
route,
|
|
155
|
+
rootDir,
|
|
156
|
+
path.join(dirname, `${NESTED_ROUTE.LAYOUT_FILE}.ts`),
|
|
157
|
+
entryName
|
|
158
|
+
);
|
|
109
159
|
if (isPathlessLayout) {
|
|
110
160
|
delete finalRoute.path;
|
|
111
161
|
}
|
|
112
162
|
return finalRoute;
|
|
113
|
-
};
|
|
163
|
+
});
|
|
164
|
+
export {
|
|
165
|
+
walk
|
|
166
|
+
};
|
|
@@ -1,13 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __async = (__this, __arguments, generator) => {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
var fulfilled = (value) => {
|
|
23
|
+
try {
|
|
24
|
+
step(generator.next(value));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var rejected = (value) => {
|
|
30
|
+
try {
|
|
31
|
+
step(generator.throw(value));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
reject(e);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
import path from "path";
|
|
41
|
+
import { fs, slash } from "@modern-js/utils";
|
|
6
42
|
import { TEMP_LOADERS_DIR } from "./constants";
|
|
7
|
-
|
|
43
|
+
const index = ({
|
|
8
44
|
mountId,
|
|
9
45
|
imports,
|
|
10
|
-
renderFunction,
|
|
46
|
+
renderFunction: renderFunction2,
|
|
11
47
|
exportStatement
|
|
12
48
|
}) => `
|
|
13
49
|
const IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';
|
|
@@ -21,27 +57,25 @@ let AppWrapper = null;
|
|
|
21
57
|
let root = null;
|
|
22
58
|
|
|
23
59
|
function render() {
|
|
24
|
-
${
|
|
60
|
+
${renderFunction2}
|
|
25
61
|
}
|
|
26
62
|
|
|
27
63
|
AppWrapper = render();
|
|
28
64
|
|
|
29
65
|
${exportStatement};
|
|
30
66
|
`;
|
|
31
|
-
|
|
67
|
+
const renderFunction = ({
|
|
32
68
|
plugins,
|
|
33
69
|
customBootstrap,
|
|
34
|
-
fileSystemRoutes
|
|
70
|
+
fileSystemRoutes: fileSystemRoutes2
|
|
35
71
|
}) => `
|
|
36
72
|
AppWrapper = createApp({
|
|
37
73
|
plugins: [
|
|
38
|
-
${plugins.map(
|
|
39
|
-
name,
|
|
40
|
-
|
|
41
|
-
args
|
|
42
|
-
}) => `${name}({...${options}, ...App?.config?.${args || name}}),`).join('\n')}
|
|
74
|
+
${plugins.map(
|
|
75
|
+
({ name, options, args }) => `${name}({...${options}, ...App?.config?.${args || name}}),`
|
|
76
|
+
).join("\n")}
|
|
43
77
|
]
|
|
44
|
-
})(${
|
|
78
|
+
})(${fileSystemRoutes2 ? "" : `App`})
|
|
45
79
|
|
|
46
80
|
if (IS_BROWSER) {
|
|
47
81
|
${customBootstrap ? `customBootstrap(AppWrapper);` : `bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM);`}
|
|
@@ -49,19 +83,19 @@ export const renderFunction = ({
|
|
|
49
83
|
|
|
50
84
|
return AppWrapper
|
|
51
85
|
`;
|
|
52
|
-
|
|
86
|
+
const html = (partials) => `
|
|
53
87
|
<!DOCTYPE html>
|
|
54
88
|
<html>
|
|
55
89
|
<head>
|
|
56
90
|
<%= meta %>
|
|
57
91
|
<title><%= title %></title>
|
|
58
92
|
|
|
59
|
-
${partials.top.join(
|
|
93
|
+
${partials.top.join("\n")}
|
|
60
94
|
|
|
61
95
|
<script>
|
|
62
96
|
window.__assetPrefix__ = '<%= assetPrefix %>';
|
|
63
|
-
|
|
64
|
-
${partials.head.join(
|
|
97
|
+
<\/script>
|
|
98
|
+
${partials.head.join("\n")}
|
|
65
99
|
|
|
66
100
|
<!--<?- chunksMap.css ?>-->
|
|
67
101
|
</head>
|
|
@@ -71,7 +105,7 @@ export const html = partials => `
|
|
|
71
105
|
We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue.
|
|
72
106
|
</noscript>
|
|
73
107
|
<div id="<%= mountId %>"><!--<?- html ?>--></div>
|
|
74
|
-
${partials.body.join(
|
|
108
|
+
${partials.body.join("\n")}
|
|
75
109
|
<!--<?- chunksMap.js ?>-->
|
|
76
110
|
<!--<?- SSRDataScript ?>-->
|
|
77
111
|
<!--<?- bottomTemplate ?>-->
|
|
@@ -79,27 +113,32 @@ export const html = partials => `
|
|
|
79
113
|
|
|
80
114
|
</html>
|
|
81
115
|
`;
|
|
82
|
-
|
|
116
|
+
const routesForServer = ({
|
|
83
117
|
routes,
|
|
84
118
|
internalDirectory,
|
|
85
119
|
entryName
|
|
86
120
|
}) => {
|
|
87
121
|
const loaders = [];
|
|
88
|
-
const loaderIndexFile = path.join(
|
|
89
|
-
|
|
122
|
+
const loaderIndexFile = path.join(
|
|
123
|
+
internalDirectory,
|
|
124
|
+
entryName,
|
|
125
|
+
TEMP_LOADERS_DIR,
|
|
126
|
+
"index.js"
|
|
127
|
+
);
|
|
128
|
+
const traverseRouteTree = (route) => {
|
|
129
|
+
var _a;
|
|
90
130
|
let children;
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
children = route === null || route === void 0 ? void 0 : (_route$children = route.children) === null || _route$children === void 0 ? void 0 : _route$children.map(traverseRouteTree);
|
|
131
|
+
if ("children" in route && route.children) {
|
|
132
|
+
children = (_a = route == null ? void 0 : route.children) == null ? void 0 : _a.map(traverseRouteTree);
|
|
94
133
|
}
|
|
95
134
|
let loader;
|
|
96
|
-
if (route.type ===
|
|
135
|
+
if (route.type === "nested") {
|
|
97
136
|
if (route.loader) {
|
|
98
137
|
loaders.push(route.loader);
|
|
99
138
|
loader = `loader_${loaders.length - 1}`;
|
|
100
139
|
}
|
|
101
140
|
}
|
|
102
|
-
const finalRoute =
|
|
141
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
103
142
|
loader,
|
|
104
143
|
children
|
|
105
144
|
});
|
|
@@ -109,62 +148,82 @@ export const routesForServer = ({
|
|
|
109
148
|
export const routes = [
|
|
110
149
|
`;
|
|
111
150
|
for (const route of routes) {
|
|
112
|
-
if (
|
|
151
|
+
if ("type" in route) {
|
|
113
152
|
const newRoute = traverseRouteTree(route);
|
|
114
|
-
routesCode += `${JSON.stringify(newRoute, null, 2).replace(
|
|
153
|
+
routesCode += `${JSON.stringify(newRoute, null, 2).replace(
|
|
154
|
+
/"(loader_[^"])"/g,
|
|
155
|
+
"$1"
|
|
156
|
+
)},`;
|
|
115
157
|
} else {
|
|
116
158
|
routesCode += `${JSON.stringify(route, null, 2)}`;
|
|
117
159
|
}
|
|
118
160
|
}
|
|
119
|
-
routesCode +=
|
|
120
|
-
|
|
161
|
+
routesCode += `
|
|
162
|
+
];`;
|
|
163
|
+
let importLoadersCode = "";
|
|
121
164
|
if (loaders.length > 0) {
|
|
122
165
|
importLoadersCode = `
|
|
123
|
-
import { ${loaders.map(
|
|
166
|
+
import { ${loaders.map(
|
|
167
|
+
(loader, index2) => `loader_${index2}`
|
|
168
|
+
)} } from "${slash(loaderIndexFile)}"`;
|
|
124
169
|
}
|
|
125
170
|
return `
|
|
126
171
|
${importLoadersCode}
|
|
127
172
|
${routesCode}
|
|
128
173
|
`;
|
|
129
174
|
};
|
|
130
|
-
|
|
175
|
+
const fileSystemRoutes = (_0) => __async(void 0, [_0], function* ({
|
|
131
176
|
routes,
|
|
132
177
|
ssrMode,
|
|
133
178
|
nestedRoutesEntry,
|
|
134
179
|
entryName,
|
|
135
|
-
internalDirectory
|
|
136
|
-
|
|
180
|
+
internalDirectory,
|
|
181
|
+
internalDirAlias
|
|
182
|
+
}) {
|
|
137
183
|
const loadings = [];
|
|
138
184
|
const errors = [];
|
|
139
185
|
const loaders = [];
|
|
140
186
|
const loadersMap = {};
|
|
141
|
-
const loadersIndexFile = path.join(
|
|
142
|
-
|
|
187
|
+
const loadersIndexFile = path.join(
|
|
188
|
+
internalDirAlias,
|
|
189
|
+
entryName,
|
|
190
|
+
TEMP_LOADERS_DIR,
|
|
191
|
+
"index.js"
|
|
192
|
+
);
|
|
193
|
+
const loadersMapFile = path.join(
|
|
194
|
+
internalDirectory,
|
|
195
|
+
entryName,
|
|
196
|
+
TEMP_LOADERS_DIR,
|
|
197
|
+
"map.json"
|
|
198
|
+
);
|
|
143
199
|
const importLazyCode = `
|
|
144
200
|
import { lazy } from "react";
|
|
145
201
|
import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
|
|
146
202
|
`;
|
|
147
203
|
let rootLayoutCode = ``;
|
|
148
|
-
let dataLoaderPath =
|
|
149
|
-
let componentLoaderPath =
|
|
204
|
+
let dataLoaderPath = "";
|
|
205
|
+
let componentLoaderPath = "";
|
|
150
206
|
if (ssrMode) {
|
|
151
|
-
dataLoaderPath = require.resolve(
|
|
207
|
+
dataLoaderPath = require.resolve("@modern-js/plugin-data-loader/loader");
|
|
152
208
|
if (nestedRoutesEntry) {
|
|
153
209
|
dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&mapFile=${loadersMapFile}!`;
|
|
154
210
|
}
|
|
155
|
-
componentLoaderPath = `${path.join(
|
|
211
|
+
componentLoaderPath = `${path.join(
|
|
212
|
+
__dirname,
|
|
213
|
+
"../builder/loaders/routerLoader"
|
|
214
|
+
)}!`;
|
|
156
215
|
}
|
|
157
|
-
const traverseRouteTree = route => {
|
|
216
|
+
const traverseRouteTree = (route) => {
|
|
217
|
+
var _a;
|
|
158
218
|
let children;
|
|
159
|
-
if (
|
|
160
|
-
|
|
161
|
-
children = route === null || route === void 0 ? void 0 : (_route$children2 = route.children) === null || _route$children2 === void 0 ? void 0 : _route$children2.map(traverseRouteTree);
|
|
219
|
+
if ("children" in route && route.children) {
|
|
220
|
+
children = (_a = route == null ? void 0 : route.children) == null ? void 0 : _a.map(traverseRouteTree);
|
|
162
221
|
}
|
|
163
222
|
let loading;
|
|
164
223
|
let error;
|
|
165
224
|
let loader;
|
|
166
|
-
let component =
|
|
167
|
-
if (route.type ===
|
|
225
|
+
let component = "";
|
|
226
|
+
if (route.type === "nested") {
|
|
168
227
|
if (route.loading) {
|
|
169
228
|
loadings.push(route.loading);
|
|
170
229
|
loading = `loading_${loadings.length - 1}`;
|
|
@@ -183,17 +242,16 @@ export const fileSystemRoutes = async ({
|
|
|
183
242
|
if (route.isRoot) {
|
|
184
243
|
rootLayoutCode = `import RootLayout from '${route._component}'`;
|
|
185
244
|
component = `RootLayout`;
|
|
186
|
-
} else if (ssrMode ===
|
|
245
|
+
} else if (ssrMode === "string") {
|
|
187
246
|
component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
188
247
|
} else {
|
|
189
|
-
// csr and streaming
|
|
190
248
|
component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
191
249
|
}
|
|
192
250
|
}
|
|
193
251
|
} else if (route._component) {
|
|
194
252
|
component = `loadable(() => import('${route._component}'))`;
|
|
195
253
|
}
|
|
196
|
-
const finalRoute =
|
|
254
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
197
255
|
loading,
|
|
198
256
|
loader,
|
|
199
257
|
error,
|
|
@@ -208,45 +266,69 @@ export const fileSystemRoutes = async ({
|
|
|
208
266
|
export const routes = [
|
|
209
267
|
`;
|
|
210
268
|
for (const route of routes) {
|
|
211
|
-
if (
|
|
269
|
+
if ("type" in route) {
|
|
212
270
|
const newRoute = traverseRouteTree(route);
|
|
213
|
-
routeComponentsCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loadable.*\))"/g,
|
|
271
|
+
routeComponentsCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loadable.*\))"/g, "$1").replace(/"(loadableLazy.*\))"/g, "$1").replace(/"(lazy.*\))"/g, "$1").replace(/"(loading_[^"])"/g, "$1").replace(/"(loader_[^"])"/g, "$1").replace(/"(RootLayout)"/g, "$1").replace(/"(error_[^"])"/g, "$1").replace(/\\"/g, '"')},`;
|
|
214
272
|
} else {
|
|
215
273
|
const component = `loadable(() => import('${route._component}'))`;
|
|
216
|
-
const finalRoute =
|
|
274
|
+
const finalRoute = __spreadProps(__spreadValues({}, route), {
|
|
217
275
|
component
|
|
218
276
|
});
|
|
219
|
-
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g,
|
|
277
|
+
routeComponentsCode += `${JSON.stringify(finalRoute, null, 2).replace(/"(loadable[^"]*)"/g, "$1").replace(/"(lazy[^"]*)"/g, "$1")},`;
|
|
220
278
|
}
|
|
221
279
|
}
|
|
222
|
-
routeComponentsCode +=
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
280
|
+
routeComponentsCode += `
|
|
281
|
+
];`;
|
|
282
|
+
const importLoadingCode = loadings.map((loading, index2) => {
|
|
283
|
+
return `import loading_${index2} from '${loading}';
|
|
284
|
+
`;
|
|
285
|
+
}).join("");
|
|
286
|
+
const importErrorComponentsCode = errors.map((error, index2) => {
|
|
287
|
+
return `import error_${index2} from '${error}';
|
|
288
|
+
`;
|
|
289
|
+
}).join("");
|
|
290
|
+
let importLoadersCode = "";
|
|
230
291
|
if (loaders.length > 0) {
|
|
231
292
|
importLoadersCode = `
|
|
232
|
-
import { ${loaders.map(
|
|
293
|
+
import { ${loaders.map(
|
|
294
|
+
(loader, index2) => `loader_${index2}`
|
|
295
|
+
)} } from "${slash(dataLoaderPath)}${slash(loadersIndexFile)}"
|
|
233
296
|
`;
|
|
234
|
-
const loaderEntryCode = loaders.map((loader,
|
|
235
|
-
return `export * from './loader_${
|
|
236
|
-
}).join(
|
|
237
|
-
const loaderEntryFile = path.join(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
297
|
+
const loaderEntryCode = loaders.map((loader, index2) => {
|
|
298
|
+
return `export * from './loader_${index2}.js';`;
|
|
299
|
+
}).join("\n");
|
|
300
|
+
const loaderEntryFile = path.join(
|
|
301
|
+
internalDirectory,
|
|
302
|
+
entryName,
|
|
303
|
+
TEMP_LOADERS_DIR,
|
|
304
|
+
"entry.js"
|
|
305
|
+
);
|
|
306
|
+
yield fs.ensureFile(loaderEntryFile);
|
|
307
|
+
yield fs.writeFile(loaderEntryFile, loaderEntryCode);
|
|
308
|
+
yield fs.writeJSON(loadersMapFile, loadersMap);
|
|
309
|
+
yield Promise.all(
|
|
310
|
+
loaders.map((loader, index2) => __async(void 0, null, function* () {
|
|
311
|
+
const name = `loader_${index2}`;
|
|
312
|
+
const filename = path.join(
|
|
313
|
+
internalDirectory,
|
|
314
|
+
entryName,
|
|
315
|
+
TEMP_LOADERS_DIR,
|
|
316
|
+
`${name}.js`
|
|
317
|
+
);
|
|
318
|
+
let code = "";
|
|
319
|
+
if (loader.includes(".loader.")) {
|
|
320
|
+
code = `
|
|
321
|
+
export { default as ${name} } from '${slash(loader)}'
|
|
322
|
+
`;
|
|
323
|
+
} else {
|
|
324
|
+
code = `
|
|
325
|
+
export { loader as ${name} } from '${slash(loader)}'
|
|
246
326
|
`;
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
327
|
+
}
|
|
328
|
+
yield fs.ensureFile(filename);
|
|
329
|
+
yield fs.writeFile(filename, code);
|
|
330
|
+
}))
|
|
331
|
+
);
|
|
250
332
|
}
|
|
251
333
|
return `
|
|
252
334
|
${importLazyCode}
|
|
@@ -256,4 +338,11 @@ export const fileSystemRoutes = async ({
|
|
|
256
338
|
${importLoadersCode}
|
|
257
339
|
${routeComponentsCode}
|
|
258
340
|
`;
|
|
259
|
-
};
|
|
341
|
+
});
|
|
342
|
+
export {
|
|
343
|
+
fileSystemRoutes,
|
|
344
|
+
html,
|
|
345
|
+
index,
|
|
346
|
+
renderFunction,
|
|
347
|
+
routesForServer
|
|
348
|
+
};
|