@modern-js/app-tools 2.0.0-beta.1 → 2.0.0-beta.3
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 +445 -0
- package/bin/modern.js +10 -1
- package/dist/js/modern/analyze/constants.js +2 -0
- package/dist/js/modern/analyze/generateCode.js +39 -19
- package/dist/js/modern/analyze/getBundleEntry.js +1 -1
- package/dist/js/modern/analyze/getFileSystemEntry.js +1 -1
- package/dist/js/modern/analyze/getHtmlTemplate.js +1 -1
- package/dist/js/modern/analyze/getServerRoutes.js +8 -4
- package/dist/js/modern/analyze/index.js +12 -27
- package/dist/js/modern/analyze/nestedRoutes.js +17 -6
- package/dist/js/modern/analyze/templates.js +59 -27
- package/dist/js/modern/analyze/utils.js +30 -4
- package/dist/js/modern/builder/builderPlugins/compatModern.js +18 -12
- package/dist/js/modern/builder/index.js +31 -16
- package/dist/js/modern/builder/loaders/routerLoader.js +20 -0
- package/dist/js/modern/builder/loaders/serverModuleLoader.js +4 -0
- package/dist/js/modern/builder/share.js +1 -1
- package/dist/js/modern/commands/build.js +8 -2
- package/dist/js/modern/commands/dev.js +37 -32
- package/dist/js/modern/commands/inspect.js +4 -2
- package/dist/js/modern/config/default.js +206 -0
- package/dist/js/modern/config/index.js +2 -0
- package/dist/js/modern/config/initial/createHtmlConfig.js +32 -0
- package/dist/js/modern/{builder → config/initial}/createOutputConfig.js +16 -15
- package/dist/js/modern/config/initial/createSourceConfig.js +32 -0
- package/dist/js/modern/config/initial/createToolsConfig.js +41 -0
- package/dist/js/modern/config/initial/index.js +11 -0
- package/dist/js/modern/config/initial/inits.js +117 -0
- package/dist/js/modern/config/initial/transformNormalizedConfig.js +40 -0
- package/dist/js/modern/defineConfig.js +12 -0
- package/dist/js/modern/hooks.js +23 -19
- package/dist/js/modern/index.js +7 -5
- package/dist/js/modern/initialize/index.js +72 -0
- package/dist/js/modern/schema/Schema.js +39 -0
- package/dist/js/modern/schema/index.js +139 -0
- package/dist/js/modern/schema/legacy.js +284 -0
- package/dist/js/modern/types/config/deploy.js +0 -0
- package/dist/js/modern/types/config/dev.js +0 -0
- package/dist/js/modern/types/config/experiments.js +0 -0
- package/dist/js/modern/types/config/html.js +0 -0
- package/dist/js/modern/types/config/index.js +2 -0
- package/dist/js/modern/types/config/output.js +0 -0
- package/dist/js/modern/types/config/performance.js +0 -0
- package/dist/js/modern/types/config/security.js +0 -0
- package/dist/js/modern/types/config/source.js +0 -0
- package/dist/js/modern/types/config/tools.js +0 -0
- package/dist/js/modern/types/hooks.js +0 -0
- package/dist/js/modern/types/index.js +4 -0
- package/dist/js/modern/types/legacyConfig/deploy.js +0 -0
- package/dist/js/modern/types/legacyConfig/dev.js +0 -0
- package/dist/js/modern/types/legacyConfig/index.js +0 -0
- package/dist/js/modern/types/legacyConfig/output.js +1 -0
- package/dist/js/modern/types/legacyConfig/source.js +0 -0
- package/dist/js/modern/types/legacyConfig/tools.js +0 -0
- package/dist/js/modern/utils/config.js +1 -1
- package/dist/js/modern/utils/createFileWatcher.js +82 -0
- package/dist/js/modern/utils/restart.js +17 -0
- package/dist/js/node/analyze/constants.js +5 -1
- package/dist/js/node/analyze/generateCode.js +37 -17
- package/dist/js/node/analyze/getBundleEntry.js +1 -1
- package/dist/js/node/analyze/getFileSystemEntry.js +1 -1
- package/dist/js/node/analyze/getHtmlTemplate.js +1 -1
- package/dist/js/node/analyze/getServerRoutes.js +8 -4
- package/dist/js/node/analyze/index.js +13 -39
- package/dist/js/node/analyze/nestedRoutes.js +15 -4
- package/dist/js/node/analyze/templates.js +60 -27
- package/dist/js/node/analyze/utils.js +31 -3
- package/dist/js/node/builder/builderPlugins/compatModern.js +18 -12
- package/dist/js/node/builder/index.js +32 -16
- package/dist/js/node/builder/loaders/routerLoader.js +27 -0
- package/dist/js/node/builder/loaders/serverModuleLoader.js +11 -0
- package/dist/js/node/builder/share.js +1 -1
- package/dist/js/node/commands/build.js +8 -2
- package/dist/js/node/commands/dev.js +37 -32
- package/dist/js/node/commands/inspect.js +4 -2
- package/dist/js/node/config/default.js +213 -0
- package/dist/js/node/config/index.js +31 -0
- package/dist/js/node/config/initial/createHtmlConfig.js +38 -0
- package/dist/js/node/{builder → config/initial}/createOutputConfig.js +16 -15
- package/dist/js/node/config/initial/createSourceConfig.js +38 -0
- package/dist/js/node/config/initial/createToolsConfig.js +47 -0
- package/dist/js/node/config/initial/index.js +24 -0
- package/dist/js/node/config/initial/inits.js +127 -0
- package/dist/js/node/config/initial/transformNormalizedConfig.js +46 -0
- package/dist/js/node/defineConfig.js +20 -0
- package/dist/js/node/hooks.js +23 -28
- package/dist/js/node/index.js +30 -16
- package/dist/js/node/initialize/index.js +79 -0
- package/dist/js/node/schema/Schema.js +46 -0
- package/dist/js/node/schema/index.js +152 -0
- package/dist/js/node/schema/legacy.js +291 -0
- package/dist/js/node/types/config/deploy.js +0 -0
- package/dist/js/node/types/config/dev.js +0 -0
- package/dist/js/node/types/config/experiments.js +0 -0
- package/dist/js/node/types/config/html.js +0 -0
- package/dist/js/node/types/config/index.js +16 -0
- package/dist/js/node/types/config/output.js +0 -0
- package/dist/js/node/types/config/performance.js +0 -0
- package/dist/js/node/types/config/security.js +0 -0
- package/dist/js/node/types/config/source.js +0 -0
- package/dist/js/node/types/config/tools.js +0 -0
- package/dist/js/node/types/hooks.js +0 -0
- package/dist/js/node/types/index.js +38 -0
- package/dist/js/node/types/legacyConfig/deploy.js +0 -0
- package/dist/js/node/types/legacyConfig/dev.js +0 -0
- package/dist/js/node/types/legacyConfig/index.js +0 -0
- package/dist/js/node/types/legacyConfig/output.js +5 -0
- package/dist/js/node/types/legacyConfig/source.js +0 -0
- package/dist/js/node/types/legacyConfig/tools.js +0 -0
- package/dist/js/node/utils/config.js +1 -1
- package/dist/js/node/utils/createFileWatcher.js +91 -0
- package/dist/js/node/utils/restart.js +23 -0
- package/dist/js/treeshaking/analyze/constants.js +2 -0
- package/dist/js/treeshaking/analyze/generateCode.js +138 -82
- package/dist/js/treeshaking/analyze/getBundleEntry.js +1 -1
- package/dist/js/treeshaking/analyze/getFileSystemEntry.js +1 -1
- package/dist/js/treeshaking/analyze/getHtmlTemplate.js +1 -1
- package/dist/js/treeshaking/analyze/getServerRoutes.js +7 -5
- package/dist/js/treeshaking/analyze/index.js +10 -26
- package/dist/js/treeshaking/analyze/nestedRoutes.js +98 -55
- package/dist/js/treeshaking/analyze/templates.js +175 -101
- package/dist/js/treeshaking/analyze/utils.js +80 -4
- package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +18 -12
- package/dist/js/treeshaking/builder/index.js +29 -16
- package/dist/js/treeshaking/builder/loaders/routerLoader.js +14 -0
- package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +4 -0
- package/dist/js/treeshaking/builder/share.js +1 -1
- package/dist/js/treeshaking/commands/build.js +33 -23
- package/dist/js/treeshaking/commands/dev.js +56 -43
- package/dist/js/treeshaking/commands/inspect.js +8 -3
- package/dist/js/treeshaking/config/default.js +199 -0
- package/dist/js/treeshaking/config/index.js +2 -0
- package/dist/js/treeshaking/config/initial/createHtmlConfig.js +31 -0
- package/dist/js/treeshaking/config/initial/createOutputConfig.js +70 -0
- package/dist/js/treeshaking/config/initial/createSourceConfig.js +41 -0
- package/dist/js/treeshaking/config/initial/createToolsConfig.js +38 -0
- package/dist/js/treeshaking/config/initial/index.js +11 -0
- package/dist/js/treeshaking/config/initial/inits.js +114 -0
- package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +38 -0
- package/dist/js/treeshaking/defineConfig.js +14 -0
- package/dist/js/treeshaking/hooks.js +23 -19
- package/dist/js/treeshaking/index.js +7 -5
- package/dist/js/treeshaking/initialize/index.js +121 -0
- package/dist/js/treeshaking/schema/Schema.js +75 -0
- package/dist/js/treeshaking/schema/index.js +138 -0
- package/dist/js/treeshaking/schema/legacy.js +273 -0
- package/dist/js/treeshaking/types/config/deploy.js +0 -0
- package/dist/js/treeshaking/types/config/dev.js +0 -0
- package/dist/js/treeshaking/types/config/experiments.js +0 -0
- package/dist/js/treeshaking/types/config/html.js +0 -0
- package/dist/js/treeshaking/types/config/index.js +2 -0
- package/dist/js/treeshaking/types/config/output.js +0 -0
- package/dist/js/treeshaking/types/config/performance.js +0 -0
- package/dist/js/treeshaking/types/config/security.js +0 -0
- package/dist/js/treeshaking/types/config/source.js +0 -0
- package/dist/js/treeshaking/types/config/tools.js +0 -0
- package/dist/js/treeshaking/types/hooks.js +0 -0
- package/dist/js/treeshaking/types/index.js +4 -0
- package/dist/js/treeshaking/types/legacyConfig/deploy.js +0 -0
- package/dist/js/treeshaking/types/legacyConfig/dev.js +0 -0
- package/dist/js/treeshaking/types/legacyConfig/index.js +0 -0
- package/dist/js/treeshaking/types/legacyConfig/output.js +1 -0
- package/dist/js/treeshaking/types/legacyConfig/source.js +0 -0
- package/dist/js/treeshaking/types/legacyConfig/tools.js +0 -0
- package/dist/js/treeshaking/utils/config.js +1 -1
- package/dist/js/treeshaking/utils/createFileWatcher.js +123 -0
- package/dist/js/treeshaking/utils/restart.js +45 -0
- package/dist/types/analyze/constants.d.ts +2 -0
- package/dist/types/analyze/generateCode.d.ts +3 -2
- package/dist/types/analyze/getBundleEntry.d.ts +2 -2
- package/dist/types/analyze/getFileSystemEntry.d.ts +2 -2
- package/dist/types/analyze/getHtmlTemplate.d.ts +3 -3
- package/dist/types/analyze/getServerRoutes.d.ts +3 -2
- package/dist/types/analyze/index.d.ts +3 -41
- package/dist/types/analyze/templates.d.ts +9 -8
- package/dist/types/analyze/utils.d.ts +10 -2
- package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -2
- package/dist/types/builder/index.d.ts +5 -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/share.d.ts +2 -2
- package/dist/types/commands/build.d.ts +2 -2
- package/dist/types/commands/deploy.d.ts +2 -2
- package/dist/types/commands/dev.d.ts +2 -2
- package/dist/types/commands/inspect.d.ts +9 -1
- package/dist/types/commands/start.d.ts +2 -2
- package/dist/types/config/default.d.ts +3 -0
- package/dist/types/config/index.d.ts +2 -0
- package/dist/types/config/initial/createHtmlConfig.d.ts +2 -0
- package/dist/types/config/initial/createOutputConfig.d.ts +2 -0
- package/dist/types/config/initial/createSourceConfig.d.ts +2 -0
- package/dist/types/config/initial/createToolsConfig.d.ts +2 -0
- package/dist/types/config/initial/index.d.ts +4 -0
- package/dist/types/config/initial/inits.d.ts +4 -0
- package/dist/types/config/initial/transformNormalizedConfig.d.ts +2 -0
- package/dist/types/defineConfig.d.ts +7 -0
- package/dist/types/hooks.d.ts +2 -42
- package/dist/types/index.d.ts +5 -5
- package/dist/types/initialize/index.d.ts +3 -0
- package/dist/types/schema/Schema.d.ts +14 -0
- package/dist/types/schema/index.d.ts +4 -0
- package/dist/types/schema/legacy.d.ts +3 -0
- package/dist/types/types/config/deploy.d.ts +9 -0
- package/dist/types/types/config/dev.d.ts +13 -0
- package/dist/types/types/config/experiments.d.ts +4 -0
- package/dist/types/types/config/html.d.ts +4 -0
- package/dist/types/types/config/index.d.ts +62 -0
- package/dist/types/types/config/output.d.ts +23 -0
- package/dist/types/types/config/performance.d.ts +4 -0
- package/dist/types/types/config/security.d.ts +4 -0
- package/dist/types/types/config/source.d.ts +22 -0
- package/dist/types/types/config/tools.d.ts +22 -0
- package/dist/types/types/hooks.d.ts +81 -0
- package/dist/types/types/index.d.ts +23 -0
- package/dist/types/types/legacyConfig/deploy.d.ts +8 -0
- package/dist/types/types/legacyConfig/dev.d.ts +12 -0
- package/dist/types/types/legacyConfig/index.d.ts +33 -0
- package/dist/types/types/legacyConfig/output.d.ts +51 -0
- package/dist/types/types/legacyConfig/source.d.ts +25 -0
- package/dist/types/types/legacyConfig/tools.d.ts +16 -0
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/createFileWatcher.d.ts +4 -0
- package/dist/types/utils/printInstructions.d.ts +3 -3
- package/dist/types/utils/restart.d.ts +3 -0
- package/lib/types.d.ts +1 -1
- package/package.json +28 -25
- package/dist/js/modern/builder/createHtmlConfig.js +0 -58
- package/dist/js/modern/builder/createSourceConfig.js +0 -74
- package/dist/js/modern/builder/createToolsConfig.js +0 -87
- package/dist/js/node/builder/createHtmlConfig.js +0 -68
- package/dist/js/node/builder/createSourceConfig.js +0 -82
- package/dist/js/node/builder/createToolsConfig.js +0 -94
- package/dist/js/treeshaking/builder/createHtmlConfig.js +0 -59
- package/dist/js/treeshaking/builder/createOutputConfig.js +0 -70
- package/dist/js/treeshaking/builder/createSourceConfig.js +0 -88
- package/dist/js/treeshaking/builder/createToolsConfig.js +0 -85
- package/dist/types/builder/createHtmlConfig.d.ts +0 -6
- package/dist/types/builder/createOutputConfig.d.ts +0 -3
- package/dist/types/builder/createSourceConfig.d.ts +0 -5
- package/dist/types/builder/createToolsConfig.d.ts +0 -13
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.PAGES_DIR_NAME = exports.NESTED_ROUTES_DIR = exports.JS_EXTENSIONS = exports.INDEX_FILE_NAME = exports.HTML_PARTIALS_FOLDER = exports.HTML_PARTIALS_EXTENSIONS = exports.FILE_SYSTEM_ROUTES_LAYOUT = exports.FILE_SYSTEM_ROUTES_INDEX = exports.FILE_SYSTEM_ROUTES_IGNORED_REGEX = exports.FILE_SYSTEM_ROUTES_GLOBAL_LAYOUT = exports.FILE_SYSTEM_ROUTES_FILE_NAME = exports.FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP = exports.FILE_SYSTEM_ROUTES_COMPONENTS_DIR = exports.ENTRY_POINT_FILE_NAME = exports.ENTRY_BOOTSTRAP_FILE_NAME = exports.APP_FILE_NAME = void 0;
|
|
6
|
+
exports.TEMP_LOADERS_DIR = exports.PAGES_DIR_NAME = exports.NESTED_ROUTES_DIR = exports.LOADER_EXPORT_NAME = exports.JS_EXTENSIONS = exports.INDEX_FILE_NAME = exports.HTML_PARTIALS_FOLDER = exports.HTML_PARTIALS_EXTENSIONS = exports.FILE_SYSTEM_ROUTES_LAYOUT = exports.FILE_SYSTEM_ROUTES_INDEX = exports.FILE_SYSTEM_ROUTES_IGNORED_REGEX = exports.FILE_SYSTEM_ROUTES_GLOBAL_LAYOUT = exports.FILE_SYSTEM_ROUTES_FILE_NAME = exports.FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP = exports.FILE_SYSTEM_ROUTES_COMPONENTS_DIR = exports.ENTRY_POINT_FILE_NAME = exports.ENTRY_BOOTSTRAP_FILE_NAME = exports.APP_FILE_NAME = void 0;
|
|
7
7
|
const JS_EXTENSIONS = ['.js', '.ts', '.jsx', '.tsx'];
|
|
8
8
|
exports.JS_EXTENSIONS = JS_EXTENSIONS;
|
|
9
9
|
const INDEX_FILE_NAME = 'index';
|
|
@@ -16,6 +16,10 @@ const NESTED_ROUTES_DIR = 'routes';
|
|
|
16
16
|
exports.NESTED_ROUTES_DIR = NESTED_ROUTES_DIR;
|
|
17
17
|
const FILE_SYSTEM_ROUTES_FILE_NAME = 'routes.js';
|
|
18
18
|
exports.FILE_SYSTEM_ROUTES_FILE_NAME = FILE_SYSTEM_ROUTES_FILE_NAME;
|
|
19
|
+
const LOADER_EXPORT_NAME = 'loader';
|
|
20
|
+
exports.LOADER_EXPORT_NAME = LOADER_EXPORT_NAME;
|
|
21
|
+
const TEMP_LOADERS_DIR = '__loaders__';
|
|
22
|
+
exports.TEMP_LOADERS_DIR = TEMP_LOADERS_DIR;
|
|
19
23
|
const ENTRY_POINT_FILE_NAME = 'index.js';
|
|
20
24
|
exports.ENTRY_POINT_FILE_NAME = ENTRY_POINT_FILE_NAME;
|
|
21
25
|
const ENTRY_BOOTSTRAP_FILE_NAME = 'bootstrap.js';
|
|
@@ -17,6 +17,11 @@ var _nestedRoutes = require("./nestedRoutes");
|
|
|
17
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
+
const loader = {
|
|
21
|
+
'.js': 'jsx',
|
|
22
|
+
'.ts': 'tsx'
|
|
23
|
+
};
|
|
24
|
+
const EXTERNAL_REGEXP = /^[^./]|^\.[^./]|^\.\.[^/]/;
|
|
20
25
|
const createImportSpecifier = specifiers => {
|
|
21
26
|
let defaults = '';
|
|
22
27
|
const named = [];
|
|
@@ -73,15 +78,10 @@ const createImportStatements = statements => {
|
|
|
73
78
|
};
|
|
74
79
|
exports.createImportStatements = createImportStatements;
|
|
75
80
|
const buildLoader = async (entry, outfile) => {
|
|
76
|
-
const loader = {
|
|
77
|
-
'.js': 'jsx',
|
|
78
|
-
'.ts': 'tsx'
|
|
79
|
-
};
|
|
80
|
-
const EXTERNAL_REGEXP = /^[^./]|^\.[^./]|^\.\.[^/]/;
|
|
81
81
|
const command = (0, _commands.getCommand)();
|
|
82
82
|
await _esbuild.default.build({
|
|
83
|
-
format: '
|
|
84
|
-
platform: '
|
|
83
|
+
format: 'esm',
|
|
84
|
+
platform: 'browser',
|
|
85
85
|
target: 'esnext',
|
|
86
86
|
loader,
|
|
87
87
|
watch: command === 'dev' && {},
|
|
@@ -110,6 +110,20 @@ const buildLoader = async (entry, outfile) => {
|
|
|
110
110
|
}]
|
|
111
111
|
});
|
|
112
112
|
};
|
|
113
|
+
const buildServerLoader = async (entry, outfile) => {
|
|
114
|
+
const command = (0, _commands.getCommand)();
|
|
115
|
+
await _esbuild.default.build({
|
|
116
|
+
format: 'cjs',
|
|
117
|
+
platform: 'node',
|
|
118
|
+
target: 'esnext',
|
|
119
|
+
loader,
|
|
120
|
+
watch: command === 'dev' && {},
|
|
121
|
+
bundle: true,
|
|
122
|
+
logLevel: 'error',
|
|
123
|
+
entryPoints: [entry],
|
|
124
|
+
outfile
|
|
125
|
+
});
|
|
126
|
+
};
|
|
113
127
|
const generateCode = async (appContext, config, entrypoints, api) => {
|
|
114
128
|
var _config$runtime, _config$runtime$route;
|
|
115
129
|
const {
|
|
@@ -123,7 +137,7 @@ const generateCode = async (appContext, config, entrypoints, api) => {
|
|
|
123
137
|
const islegacy = Boolean(config === null || config === void 0 ? void 0 : (_config$runtime = config.runtime) === null || _config$runtime === void 0 ? void 0 : (_config$runtime$route = _config$runtime.router) === null || _config$runtime$route === void 0 ? void 0 : _config$runtime$route.legacy);
|
|
124
138
|
const {
|
|
125
139
|
mountId
|
|
126
|
-
} = config.
|
|
140
|
+
} = config.html;
|
|
127
141
|
const getRoutes = islegacy ? _getClientRoutes.getClientRoutesLegacy : _getClientRoutes.getClientRoutes;
|
|
128
142
|
await Promise.all(entrypoints.map(generateEntryCode));
|
|
129
143
|
async function generateEntryCode(entrypoint) {
|
|
@@ -188,28 +202,34 @@ const generateCode = async (appContext, config, entrypoints, api) => {
|
|
|
188
202
|
code
|
|
189
203
|
} = await hookRunners.beforeGenerateRoutes({
|
|
190
204
|
entrypoint,
|
|
191
|
-
code: templates.fileSystemRoutes({
|
|
205
|
+
code: await templates.fileSystemRoutes({
|
|
192
206
|
routes,
|
|
193
207
|
ssrMode: mode,
|
|
194
208
|
nestedRoutesEntry: entrypoint.nestedRoutesEntry,
|
|
195
|
-
entryName: entrypoint.entryName
|
|
209
|
+
entryName: entrypoint.entryName,
|
|
210
|
+
internalDirectory
|
|
196
211
|
})
|
|
197
212
|
});
|
|
198
213
|
|
|
199
214
|
// extract nested router loaders
|
|
200
215
|
if (entrypoint.nestedRoutesEntry) {
|
|
201
|
-
const routesServerFile = _path.default.join(internalDirectory, entryName, '
|
|
202
|
-
const outputRoutesServerFile = _path.default.join(distDirectory,
|
|
216
|
+
const routesServerFile = _path.default.join(internalDirectory, entryName, 'route-server-loaders.js');
|
|
217
|
+
const outputRoutesServerFile = _path.default.join(distDirectory, _utils.LOADER_ROUTES_DIR, entryName, 'index.js');
|
|
203
218
|
const code = templates.routesForServer({
|
|
204
219
|
routes: routes,
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
basename: srcDirectory
|
|
208
|
-
}
|
|
220
|
+
internalDirectory,
|
|
221
|
+
entryName
|
|
209
222
|
});
|
|
210
223
|
await _utils.fs.ensureFile(routesServerFile);
|
|
211
224
|
await _utils.fs.writeFile(routesServerFile, code);
|
|
212
|
-
|
|
225
|
+
const loaderEntryFile = _path.default.join(internalDirectory, entryName, _constants.TEMP_LOADERS_DIR, 'entry.js');
|
|
226
|
+
const loaderIndexFile = _path.default.join(internalDirectory, entryName, _constants.TEMP_LOADERS_DIR, 'index.js');
|
|
227
|
+
if (await _utils.fs.pathExists(loaderEntryFile)) {
|
|
228
|
+
await buildLoader(loaderEntryFile, loaderIndexFile);
|
|
229
|
+
}
|
|
230
|
+
if (await _utils.fs.pathExists(routesServerFile)) {
|
|
231
|
+
await buildServerLoader(routesServerFile, outputRoutesServerFile);
|
|
232
|
+
}
|
|
213
233
|
}
|
|
214
234
|
_utils.fs.outputFileSync(_path.default.resolve(internalDirectory, `./${entryName}/${_constants.FILE_SYSTEM_ROUTES_FILE_NAME}`), code, 'utf8');
|
|
215
235
|
}
|
|
@@ -63,7 +63,7 @@ const getBundleEntry = (appContext, config) => {
|
|
|
63
63
|
}
|
|
64
64
|
if (!disableDefaultEntries) {
|
|
65
65
|
// find main entry point which server route is '/'.
|
|
66
|
-
const entriesDirAbs = (0, _utils.ensureAbsolutePath)(appDirectory, entriesDir);
|
|
66
|
+
const entriesDirAbs = (0, _utils.ensureAbsolutePath)(appDirectory, entriesDir || '');
|
|
67
67
|
const found = defaults.find(({
|
|
68
68
|
entryName,
|
|
69
69
|
entry,
|
|
@@ -74,7 +74,7 @@ const getFileSystemEntry = (appContext, config) => {
|
|
|
74
74
|
entriesDir
|
|
75
75
|
}
|
|
76
76
|
} = config;
|
|
77
|
-
const src = (0, _utils.ensureAbsolutePath)(appDirectory, entriesDir);
|
|
77
|
+
const src = (0, _utils.ensureAbsolutePath)(appDirectory, entriesDir || '');
|
|
78
78
|
if (_fs.default.existsSync(src)) {
|
|
79
79
|
if (_fs.default.statSync(src).isDirectory()) {
|
|
80
80
|
return scanDir(isBundleEntry(src) ? [src] : _fs.default.readdirSync(src).map(file => _path.default.join(src, file)).filter(file => _fs.default.statSync(file).isDirectory() && isBundleEntry(file)));
|
|
@@ -45,7 +45,7 @@ const getHtmlTemplate = async (entrypoints, api, {
|
|
|
45
45
|
configDir
|
|
46
46
|
}
|
|
47
47
|
} = config;
|
|
48
|
-
const htmlDir = _path.default.resolve(appDirectory, configDir, _constants.HTML_PARTIALS_FOLDER);
|
|
48
|
+
const htmlDir = _path.default.resolve(appDirectory, configDir || '', _constants.HTML_PARTIALS_FOLDER);
|
|
49
49
|
const htmlTemplates = {};
|
|
50
50
|
for (const entrypoint of entrypoints) {
|
|
51
51
|
const {
|
|
@@ -100,9 +100,13 @@ const applyRouteOptions = (original, routeOptions) => {
|
|
|
100
100
|
*/
|
|
101
101
|
const collectHtmlRoutes = (entrypoints, appContext, config) => {
|
|
102
102
|
const {
|
|
103
|
+
html: {
|
|
104
|
+
disableHtmlFolder
|
|
105
|
+
},
|
|
103
106
|
output: {
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
distPath: {
|
|
108
|
+
html: htmlPath
|
|
109
|
+
} = {},
|
|
106
110
|
enableModernMode
|
|
107
111
|
},
|
|
108
112
|
server: {
|
|
@@ -163,14 +167,14 @@ const collectStaticRoutes = (appContext, config) => {
|
|
|
163
167
|
publicRoutes = {}
|
|
164
168
|
}
|
|
165
169
|
} = config;
|
|
166
|
-
const publicFolder = _path.default.resolve(appDirectory, configDir, 'public');
|
|
170
|
+
const publicFolder = _path.default.resolve(appDirectory, configDir || '', 'public');
|
|
167
171
|
return _fs.default.existsSync(publicFolder) ? (0, _utils2.walkDirectory)(publicFolder).map(filePath => {
|
|
168
172
|
const urlPath = `${(0, _utils.urlJoin)(toPosix(filePath).slice(toPosix(publicFolder).length))}`;
|
|
169
173
|
return {
|
|
170
174
|
urlPath: publicRoutes[(0, _utils.removeLeadingSlash)(urlPath)] || urlPath,
|
|
171
175
|
isSPA: true,
|
|
172
176
|
isSSR: false,
|
|
173
|
-
entryPath: toPosix(_path.default.relative(_path.default.resolve(appDirectory, configDir), filePath))
|
|
177
|
+
entryPath: toPosix(_path.default.relative(_path.default.resolve(appDirectory, configDir || ''), filePath))
|
|
174
178
|
};
|
|
175
179
|
}) : [];
|
|
176
180
|
};
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
var path = _interopRequireWildcard(require("path"));
|
|
8
|
-
var _plugin = require("@modern-js/plugin");
|
|
9
8
|
var _utils = require("@modern-js/utils");
|
|
10
9
|
var _lodash = require("@modern-js/utils/lodash");
|
|
11
10
|
var _builder = require("../builder");
|
|
@@ -13,6 +12,7 @@ var _printInstructions = require("../utils/printInstructions");
|
|
|
13
12
|
var _routes = require("../utils/routes");
|
|
14
13
|
var _config = require("../utils/config");
|
|
15
14
|
var _commands = require("../utils/commands");
|
|
15
|
+
var _config2 = require("../config");
|
|
16
16
|
var _utils2 = require("./utils");
|
|
17
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -20,43 +20,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
20
20
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
21
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
22
|
const debug = (0, _utils.createDebugger)('plugin-analyze');
|
|
23
|
-
const modifyEntryImports = (0, _plugin.createAsyncWaterfall)();
|
|
24
|
-
exports.modifyEntryImports = modifyEntryImports;
|
|
25
|
-
const modifyEntryExport = (0, _plugin.createAsyncWaterfall)();
|
|
26
|
-
exports.modifyEntryExport = modifyEntryExport;
|
|
27
|
-
const addRuntimeExports = (0, _plugin.createAsyncWaterfall)();
|
|
28
|
-
exports.addRuntimeExports = addRuntimeExports;
|
|
29
|
-
const modifyEntryRuntimePlugins = (0, _plugin.createAsyncWaterfall)();
|
|
30
|
-
exports.modifyEntryRuntimePlugins = modifyEntryRuntimePlugins;
|
|
31
|
-
const modifyEntryRenderFunction = (0, _plugin.createAsyncWaterfall)();
|
|
32
|
-
exports.modifyEntryRenderFunction = modifyEntryRenderFunction;
|
|
33
|
-
const modifyAsyncEntry = (0, _plugin.createAsyncWaterfall)();
|
|
34
|
-
exports.modifyAsyncEntry = modifyAsyncEntry;
|
|
35
|
-
const modifyFileSystemRoutes = (0, _plugin.createAsyncWaterfall)();
|
|
36
|
-
exports.modifyFileSystemRoutes = modifyFileSystemRoutes;
|
|
37
|
-
const modifyServerRoutes = (0, _plugin.createAsyncWaterfall)();
|
|
38
|
-
exports.modifyServerRoutes = modifyServerRoutes;
|
|
39
|
-
const htmlPartials = (0, _plugin.createAsyncWaterfall)();
|
|
40
|
-
exports.htmlPartials = htmlPartials;
|
|
41
|
-
const beforeGenerateRoutes = (0, _plugin.createAsyncWaterfall)();
|
|
42
|
-
exports.beforeGenerateRoutes = beforeGenerateRoutes;
|
|
43
|
-
const addDefineTypes = (0, _plugin.createAsyncWaterfall)();
|
|
44
|
-
exports.addDefineTypes = addDefineTypes;
|
|
45
23
|
var _default = () => ({
|
|
46
24
|
name: '@modern-js/plugin-analyze',
|
|
47
|
-
registerHook: {
|
|
48
|
-
modifyAsyncEntry,
|
|
49
|
-
modifyEntryImports,
|
|
50
|
-
modifyEntryExport,
|
|
51
|
-
modifyEntryRuntimePlugins,
|
|
52
|
-
modifyEntryRenderFunction,
|
|
53
|
-
modifyFileSystemRoutes,
|
|
54
|
-
modifyServerRoutes,
|
|
55
|
-
htmlPartials,
|
|
56
|
-
addRuntimeExports,
|
|
57
|
-
beforeGenerateRoutes,
|
|
58
|
-
addDefineTypes
|
|
59
|
-
},
|
|
60
25
|
setup: api => {
|
|
61
26
|
let pagesDir = [];
|
|
62
27
|
let originEntrypoints = [];
|
|
@@ -71,7 +36,7 @@ var _default = () => ({
|
|
|
71
36
|
} catch (_unused) {
|
|
72
37
|
// FIXME:
|
|
73
38
|
}
|
|
74
|
-
const apiOnly = await (0, _utils.isApiOnly)(appContext.appDirectory,
|
|
39
|
+
const apiOnly = await (0, _utils.isApiOnly)(appContext.appDirectory, (_resolvedConfig$sourc = resolvedConfig.source) === null || _resolvedConfig$sourc === void 0 ? void 0 : _resolvedConfig$sourc.entriesDir);
|
|
75
40
|
await hookRunners.addRuntimeExports();
|
|
76
41
|
if (apiOnly) {
|
|
77
42
|
const {
|
|
@@ -138,7 +103,7 @@ var _default = () => ({
|
|
|
138
103
|
if (buildCommands.includes(command)) {
|
|
139
104
|
const normalizedConfig = api.useResolvedConfigContext();
|
|
140
105
|
const builder = await (0, _builder.createBuilderForEdenX)({
|
|
141
|
-
normalizedConfig,
|
|
106
|
+
normalizedConfig: normalizedConfig,
|
|
142
107
|
appContext,
|
|
143
108
|
compatPluginConfig: {
|
|
144
109
|
async onBeforeBuild({
|
|
@@ -199,6 +164,15 @@ var _default = () => ({
|
|
|
199
164
|
watchFiles() {
|
|
200
165
|
return pagesDir;
|
|
201
166
|
},
|
|
167
|
+
resolvedConfig({
|
|
168
|
+
resolved
|
|
169
|
+
}) {
|
|
170
|
+
const appContext = api.useAppContext();
|
|
171
|
+
const config = (0, _config2.initialNormalizedConfig)(resolved, appContext);
|
|
172
|
+
return {
|
|
173
|
+
resolved: config
|
|
174
|
+
};
|
|
175
|
+
},
|
|
202
176
|
async fileChange(e) {
|
|
203
177
|
const appContext = api.useAppContext();
|
|
204
178
|
const {
|
|
@@ -19,6 +19,12 @@ const LOADING_FILE = 'loading';
|
|
|
19
19
|
const ERROR_FILE = 'error';
|
|
20
20
|
const LOADER_FILE = 'loader';
|
|
21
21
|
const conventionNames = [LAYOUT_FILE, PAGE_FILE, LOADING_FILE, ERROR_FILE, LOADER_FILE];
|
|
22
|
+
const getLoaderPath = async filename => {
|
|
23
|
+
if (await (0, _utils2.hasLoader)(filename)) {
|
|
24
|
+
return (0, _utils.normalizeToPosixPath)(filename);
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
};
|
|
22
28
|
const replaceDynamicPath = routePath => {
|
|
23
29
|
return routePath.replace(/\[(.*?)\]/g, ':$1');
|
|
24
30
|
};
|
|
@@ -56,7 +62,8 @@ const walk = async (dirname, rootDir, alias, entryName) => {
|
|
|
56
62
|
routePath = replaceDynamicPath(routePath);
|
|
57
63
|
const route = {
|
|
58
64
|
path: routePath,
|
|
59
|
-
children: []
|
|
65
|
+
children: [],
|
|
66
|
+
isRoot
|
|
60
67
|
};
|
|
61
68
|
const items = await _utils.fs.readdir(dirname);
|
|
62
69
|
for (const item of items) {
|
|
@@ -76,17 +83,21 @@ const walk = async (dirname, rootDir, alias, entryName) => {
|
|
|
76
83
|
}
|
|
77
84
|
if (itemWithoutExt === LAYOUT_FILE) {
|
|
78
85
|
route._component = (0, _utils2.replaceWithAlias)(alias.basename, itemPath, alias.name);
|
|
86
|
+
route.loader = await getLoaderPath(itemPath);
|
|
79
87
|
}
|
|
80
88
|
if (itemWithoutExt === PAGE_FILE) {
|
|
81
89
|
var _route$children2;
|
|
82
90
|
const childRoute = createIndexRoute({
|
|
83
91
|
_component: (0, _utils2.replaceWithAlias)(alias.basename, itemPath, alias.name)
|
|
84
92
|
}, rootDir, itemPath, entryName);
|
|
93
|
+
childRoute.loader = await getLoaderPath(itemPath);
|
|
85
94
|
(_route$children2 = route.children) === null || _route$children2 === void 0 ? void 0 : _route$children2.push(childRoute);
|
|
86
95
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
96
|
+
|
|
97
|
+
// if (itemWithoutExt === LOADER_FILE) {
|
|
98
|
+
// route.loader = replaceWithAlias(alias.basename, itemPath, alias.name);
|
|
99
|
+
// }
|
|
100
|
+
|
|
90
101
|
if (itemWithoutExt === LOADING_FILE) {
|
|
91
102
|
route.loading = (0, _utils2.replaceWithAlias)(alias.basename, itemPath, alias.name);
|
|
92
103
|
}
|
|
@@ -4,6 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.routesForServer = exports.renderFunction = exports.index = exports.html = exports.fileSystemRoutes = void 0;
|
|
7
|
+
var _path = _interopRequireDefault(require("path"));
|
|
8
|
+
var _utils = require("@modern-js/utils");
|
|
9
|
+
var _constants = require("./constants");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
7
11
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
12
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
13
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -87,13 +91,11 @@ const html = partials => `
|
|
|
87
91
|
exports.html = html;
|
|
88
92
|
const routesForServer = ({
|
|
89
93
|
routes,
|
|
90
|
-
|
|
94
|
+
internalDirectory,
|
|
95
|
+
entryName
|
|
91
96
|
}) => {
|
|
92
|
-
const {
|
|
93
|
-
name,
|
|
94
|
-
basename
|
|
95
|
-
} = alias;
|
|
96
97
|
const loaders = [];
|
|
98
|
+
const loaderIndexFile = _path.default.join(internalDirectory, entryName, _constants.TEMP_LOADERS_DIR, 'index.js');
|
|
97
99
|
const traverseRouteTree = route => {
|
|
98
100
|
let children;
|
|
99
101
|
if ('children' in route && route.children) {
|
|
@@ -125,39 +127,44 @@ const routesForServer = ({
|
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
routesCode += `\n];`;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
let importLoadersCode = '';
|
|
131
|
+
if (loaders.length > 0) {
|
|
132
|
+
importLoadersCode = `
|
|
133
|
+
import { ${loaders.map((loader, index) => `loader_${index}`)} } from "${loaderIndexFile}"`;
|
|
134
|
+
}
|
|
132
135
|
return `
|
|
133
136
|
${importLoadersCode}
|
|
134
137
|
${routesCode}
|
|
135
138
|
`;
|
|
136
139
|
};
|
|
137
140
|
exports.routesForServer = routesForServer;
|
|
138
|
-
const fileSystemRoutes = ({
|
|
141
|
+
const fileSystemRoutes = async ({
|
|
139
142
|
routes,
|
|
140
143
|
ssrMode,
|
|
141
144
|
nestedRoutesEntry,
|
|
142
|
-
entryName
|
|
145
|
+
entryName,
|
|
146
|
+
internalDirectory
|
|
143
147
|
}) => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
148
|
+
const loadings = [];
|
|
149
|
+
const errors = [];
|
|
150
|
+
const loaders = [];
|
|
151
|
+
const loadersMap = {};
|
|
152
|
+
const loadersIndexFile = _path.default.join('@_modern_js_internal', entryName, _constants.TEMP_LOADERS_DIR, 'index.js');
|
|
153
|
+
const loadersMapFile = _path.default.join(internalDirectory, entryName, _constants.TEMP_LOADERS_DIR, 'map.json');
|
|
147
154
|
const importLazyCode = `
|
|
148
155
|
import { lazy } from "react";
|
|
149
156
|
import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
|
|
150
157
|
`;
|
|
158
|
+
let rootLayoutCode = ``;
|
|
151
159
|
let dataLoaderPath = '';
|
|
160
|
+
let componentLoaderPath = '';
|
|
152
161
|
if (ssrMode) {
|
|
153
162
|
dataLoaderPath = require.resolve(`@modern-js/plugin-data-loader/loader`);
|
|
154
163
|
if (nestedRoutesEntry) {
|
|
155
|
-
dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&
|
|
164
|
+
dataLoaderPath = `${dataLoaderPath}?routesDir=${nestedRoutesEntry}&mapFile=${loadersMapFile}!`;
|
|
156
165
|
}
|
|
166
|
+
componentLoaderPath = `${_path.default.join(__dirname, '../builder/loaders/routerLoader')}!`;
|
|
157
167
|
}
|
|
158
|
-
const loadings = [];
|
|
159
|
-
const errors = [];
|
|
160
|
-
const loaders = [];
|
|
161
168
|
const traverseRouteTree = route => {
|
|
162
169
|
let children;
|
|
163
170
|
if ('children' in route && route.children) {
|
|
@@ -179,13 +186,19 @@ const fileSystemRoutes = ({
|
|
|
179
186
|
}
|
|
180
187
|
if (route.loader) {
|
|
181
188
|
loaders.push(route.loader);
|
|
182
|
-
|
|
189
|
+
const loaderId = loaders.length - 1;
|
|
190
|
+
loader = `loader_${loaderId}`;
|
|
191
|
+
loadersMap[loader] = route.id;
|
|
183
192
|
}
|
|
184
193
|
if (route._component) {
|
|
185
|
-
if (
|
|
186
|
-
|
|
194
|
+
if (route.isRoot) {
|
|
195
|
+
rootLayoutCode = `import RootLayout from '${route._component}'`;
|
|
196
|
+
component = `RootLayout`;
|
|
197
|
+
} else if (ssrMode === 'string') {
|
|
198
|
+
component = `loadable(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
187
199
|
} else {
|
|
188
|
-
|
|
200
|
+
// csr and streaming
|
|
201
|
+
component = `lazy(() => import(/* webpackChunkName: "${route.id}" */ '${componentLoaderPath}${route._component}'))`;
|
|
189
202
|
}
|
|
190
203
|
}
|
|
191
204
|
} else if (route._component) {
|
|
@@ -208,7 +221,7 @@ const fileSystemRoutes = ({
|
|
|
208
221
|
for (const route of routes) {
|
|
209
222
|
if ('type' in route) {
|
|
210
223
|
const newRoute = traverseRouteTree(route);
|
|
211
|
-
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(/"(error_[^"])"/g, '$1').replace(/\\"/g, '"')},`;
|
|
224
|
+
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, '"')},`;
|
|
212
225
|
} else {
|
|
213
226
|
const component = `loadable(() => import('${route._component}'))`;
|
|
214
227
|
const finalRoute = _objectSpread(_objectSpread({}, route), {}, {
|
|
@@ -224,14 +237,34 @@ const fileSystemRoutes = ({
|
|
|
224
237
|
const importErrorComponentsCode = errors.map((error, index) => {
|
|
225
238
|
return `import error_${index} from '${error}';\n`;
|
|
226
239
|
}).join('');
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
240
|
+
let importLoadersCode = '';
|
|
241
|
+
if (loaders.length > 0) {
|
|
242
|
+
importLoadersCode = `
|
|
243
|
+
import { ${loaders.map((loader, index) => `loader_${index}`)} } from "${dataLoaderPath}${loadersIndexFile}"
|
|
244
|
+
`;
|
|
245
|
+
const loaderEntryCode = loaders.map((loader, index) => {
|
|
246
|
+
return `export * from './loader_${index}.js';`;
|
|
247
|
+
}).join('\n');
|
|
248
|
+
const loaderEntryFile = _path.default.join(internalDirectory, entryName, _constants.TEMP_LOADERS_DIR, 'entry.js');
|
|
249
|
+
await _utils.fs.ensureFile(loaderEntryFile);
|
|
250
|
+
await _utils.fs.writeFile(loaderEntryFile, loaderEntryCode);
|
|
251
|
+
await _utils.fs.writeJSON(loadersMapFile, loadersMap);
|
|
252
|
+
await Promise.all(loaders.map(async (loader, index) => {
|
|
253
|
+
const name = `loader_${index}`;
|
|
254
|
+
const filename = _path.default.join(internalDirectory, entryName, _constants.TEMP_LOADERS_DIR, `${name}.js`);
|
|
255
|
+
const code = `
|
|
256
|
+
export { loader as ${name} } from '${loader}'
|
|
257
|
+
`;
|
|
258
|
+
await _utils.fs.ensureFile(filename);
|
|
259
|
+
await _utils.fs.writeFile(filename, code);
|
|
260
|
+
}));
|
|
261
|
+
}
|
|
230
262
|
return `
|
|
231
263
|
${importLazyCode}
|
|
264
|
+
${rootLayoutCode}
|
|
232
265
|
${importLoadingCode}
|
|
233
266
|
${importErrorComponentsCode}
|
|
234
|
-
${
|
|
267
|
+
${importLoadersCode}
|
|
235
268
|
${routeComponentsCode}
|
|
236
269
|
`;
|
|
237
270
|
};
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.walkDirectory = exports.replaceWithAlias = exports.isRouteComponentFile = exports.getDefaultImports = void 0;
|
|
6
|
+
exports.walkDirectory = exports.replaceWithAlias = exports.parseModule = exports.isRouteComponentFile = exports.hasLoader = exports.getDefaultImports = void 0;
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
var _utils = require("@modern-js/utils");
|
|
10
|
+
var _esbuild = require("esbuild");
|
|
11
|
+
var _esModuleLexer = require("es-module-lexer");
|
|
10
12
|
var _constants = require("./constants");
|
|
11
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
14
|
const walkDirectory = dir => _fs.default.readdirSync(dir).reduce((previous, filename) => {
|
|
@@ -59,7 +61,7 @@ const getDefaultImports = ({
|
|
|
59
61
|
specifiers: [{
|
|
60
62
|
imported: 'routes'
|
|
61
63
|
}],
|
|
62
|
-
value: (0, _utils.normalizeToPosixPath)(`${internalDirAlias}/${entryName}/${_constants.FILE_SYSTEM_ROUTES_FILE_NAME}`)
|
|
64
|
+
value: (0, _utils.normalizeToPosixPath)(`${internalDirAlias}/${entryName}/${_constants.FILE_SYSTEM_ROUTES_FILE_NAME.replace('.js', '')}`)
|
|
63
65
|
};
|
|
64
66
|
if (fileSystemRoutes.globalApp) {
|
|
65
67
|
imports.push({
|
|
@@ -94,4 +96,30 @@ const isRouteComponentFile = filePath => {
|
|
|
94
96
|
};
|
|
95
97
|
exports.isRouteComponentFile = isRouteComponentFile;
|
|
96
98
|
const replaceWithAlias = (base, filePath, alias) => (0, _utils.normalizeToPosixPath)(_path.default.join(alias, _path.default.relative(base, filePath)));
|
|
97
|
-
exports.replaceWithAlias = replaceWithAlias;
|
|
99
|
+
exports.replaceWithAlias = replaceWithAlias;
|
|
100
|
+
const parseModule = async ({
|
|
101
|
+
source,
|
|
102
|
+
filename
|
|
103
|
+
}) => {
|
|
104
|
+
let content = source;
|
|
105
|
+
if (filename.endsWith('.tsx') || filename.endsWith('.jsx')) {
|
|
106
|
+
const result = await (0, _esbuild.transform)(content, {
|
|
107
|
+
loader: _path.default.extname(filename).slice(1),
|
|
108
|
+
format: 'esm'
|
|
109
|
+
});
|
|
110
|
+
content = result.code;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/await-thenable
|
|
114
|
+
return await (0, _esModuleLexer.parse)(content);
|
|
115
|
+
};
|
|
116
|
+
exports.parseModule = parseModule;
|
|
117
|
+
const hasLoader = async filename => {
|
|
118
|
+
const source = await _utils.fs.readFile(filename);
|
|
119
|
+
const [, moduleExports] = await parseModule({
|
|
120
|
+
source: source.toString(),
|
|
121
|
+
filename
|
|
122
|
+
});
|
|
123
|
+
return moduleExports.some(e => e.n === _constants.LOADER_EXPORT_NAME);
|
|
124
|
+
};
|
|
125
|
+
exports.hasLoader = hasLoader;
|
|
@@ -69,14 +69,15 @@ const PluginCompatModern = (appContext, modernConfig, options) => ({
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
// apply copy plugin
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
|
|
73
|
+
const defaultCopyPattern = (0, _share.createCopyPattern)(appContext, modernConfig, 'public', chain);
|
|
74
|
+
chain.plugin(CHAIN_ID.PLUGIN.COPY).tap(args => {
|
|
75
|
+
var _args$;
|
|
76
|
+
return [{
|
|
77
|
+
patterns: [...(((_args$ = args[0]) === null || _args$ === void 0 ? void 0 : _args$.patterns) || []), defaultCopyPattern]
|
|
78
|
+
}];
|
|
79
|
+
});
|
|
80
|
+
}
|
|
80
81
|
const {
|
|
81
82
|
entrypoints
|
|
82
83
|
} = appContext;
|
|
@@ -84,6 +85,11 @@ const PluginCompatModern = (appContext, modernConfig, options) => ({
|
|
|
84
85
|
chain.plugin('route-plugin').use(_routerPlugin.default, [{
|
|
85
86
|
existNestedRoutes
|
|
86
87
|
}]);
|
|
88
|
+
if (target !== 'node') {
|
|
89
|
+
const bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
|
|
90
|
+
chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
|
|
91
|
+
chain.module.rule('bare-server-module').test(bareServerModuleReg).use('server-module-loader').loader(require.resolve("../loaders/serverModuleLoader"));
|
|
92
|
+
}
|
|
87
93
|
function isHtmlEnabled(config, target) {
|
|
88
94
|
var _config$tools;
|
|
89
95
|
return ((_config$tools = config.tools) === null || _config$tools === void 0 ? void 0 : _config$tools.htmlPlugin) !== false && target !== 'node' && target !== 'web-worker';
|
|
@@ -115,7 +121,7 @@ function applyCallbacks(api, options) {
|
|
|
115
121
|
*/
|
|
116
122
|
function applyNodeCompat(chain, modernConfig, isProd) {
|
|
117
123
|
// apply node resolve extensions
|
|
118
|
-
for (const ext of ['.node.js', '.node.jsx', '.node.ts', '.node.tsx']) {
|
|
124
|
+
for (const ext of ['.node.js', '.node.jsx', '.node.ts', '.node.tsx', '.server.js', '.server.ts', '.server.ts', '.server.tsx']) {
|
|
119
125
|
chain.resolve.extensions.prepend(ext);
|
|
120
126
|
}
|
|
121
127
|
|
|
@@ -175,9 +181,9 @@ function applyBottomHtmlWebpackPlugin({
|
|
|
175
181
|
// FIXME: the only need necessary
|
|
176
182
|
const baseTemplateParams = _objectSpread({
|
|
177
183
|
entryName,
|
|
178
|
-
title: (0, _utils.getEntryOptions)(entryName, modernConfig.
|
|
179
|
-
mountId: modernConfig.
|
|
180
|
-
}, (0, _utils.getEntryOptions)(entryName, modernConfig.
|
|
184
|
+
title: (0, _utils.getEntryOptions)(entryName, modernConfig.html.title, modernConfig.html.titleByEntries, appContext.packageName),
|
|
185
|
+
mountId: modernConfig.html.mountId
|
|
186
|
+
}, (0, _utils.getEntryOptions)(entryName, modernConfig.html.templateParameters, modernConfig.html.templateParametersByEntries, appContext.packageName));
|
|
181
187
|
chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap(args => [_objectSpread(_objectSpread({}, args[0] || {}), {}, {
|
|
182
188
|
__internal__: true,
|
|
183
189
|
bottomTemplate: appContext.htmlTemplates[`__${entryName}-bottom__`] && (0, _lodash.template)(appContext.htmlTemplates[`__${entryName}-bottom__`])(baseTemplateParams)
|