@modern-js/utils 2.27.0 → 2.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/cjs/cli/alias.js +3 -3
- package/dist/cjs/cli/constants/chainId.js +4 -0
- package/dist/cjs/cli/constants/index.js +0 -1
- package/dist/cjs/cli/is/config.js +11 -8
- package/dist/cjs/cli/prettyInstructions.js +3 -2
- package/dist/cjs/cli/require.js +2 -1
- package/dist/cjs/runtime/nestedRoutes.js +9 -5
- package/dist/cjs/runtime-browser/parsed.js +2 -1
- package/dist/cjs/universal/formatWebpack.js +55 -8
- package/dist/esm/cli/alias.js +3 -3
- package/dist/esm/cli/constants/chainId.js +4 -0
- package/dist/esm/cli/constants/index.js +0 -1
- package/dist/esm/cli/get/data.js +12 -3
- package/dist/esm/cli/is/config.js +11 -8
- package/dist/esm/cli/prettyInstructions.js +3 -2
- package/dist/esm/cli/require.js +2 -1
- package/dist/esm/runtime/nestedRoutes.js +9 -5
- package/dist/esm/runtime-browser/parsed.js +2 -1
- package/dist/esm/universal/formatWebpack.js +36 -4
- package/dist/esm-node/cli/alias.js +3 -3
- package/dist/esm-node/cli/constants/chainId.js +4 -0
- package/dist/esm-node/cli/constants/index.js +0 -1
- package/dist/esm-node/cli/is/config.js +11 -8
- package/dist/esm-node/cli/prettyInstructions.js +3 -2
- package/dist/esm-node/cli/require.js +2 -1
- package/dist/esm-node/runtime/nestedRoutes.js +9 -5
- package/dist/esm-node/runtime-browser/parsed.js +2 -1
- package/dist/esm-node/universal/formatWebpack.js +43 -5
- package/dist/types/cli/constants/chainId.d.ts +4 -0
- package/dist/types/universal/formatWebpack.d.ts +14 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
package/dist/cjs/cli/alias.js
CHANGED
@@ -46,7 +46,7 @@ const validAlias = (modernConfig, { tsconfigPath }) => {
|
|
46
46
|
};
|
47
47
|
const mergeAlias = (alias) => (0, _applyOptionsChain.applyOptionsChain)({}, alias);
|
48
48
|
const getAliasConfig = (aliasOption, option) => {
|
49
|
-
var _tsconfig_compilerOptions, _tsconfig_compilerOptions1;
|
49
|
+
var _tsconfig_compilerOptions, _tsconfig, _tsconfig_compilerOptions1, _tsconfig1;
|
50
50
|
const isTsProject = _fs.default.existsSync(option.tsconfigPath);
|
51
51
|
const alias = mergeAlias(aliasOption);
|
52
52
|
if (!isTsProject) {
|
@@ -58,12 +58,12 @@ const getAliasConfig = (aliasOption, option) => {
|
|
58
58
|
};
|
59
59
|
}
|
60
60
|
const tsconfig = (0, _get.readTsConfigByFile)(option.tsconfigPath);
|
61
|
-
const baseUrl = tsconfig === null ||
|
61
|
+
const baseUrl = (_tsconfig = tsconfig) === null || _tsconfig === void 0 ? void 0 : (_tsconfig_compilerOptions = _tsconfig.compilerOptions) === null || _tsconfig_compilerOptions === void 0 ? void 0 : _tsconfig_compilerOptions.baseUrl;
|
62
62
|
return {
|
63
63
|
absoluteBaseUrl: baseUrl ? _path.default.join(option.appDirectory, baseUrl) : option.appDirectory,
|
64
64
|
paths: {
|
65
65
|
...alias,
|
66
|
-
...tsconfig === null ||
|
66
|
+
...(_tsconfig1 = tsconfig) === null || _tsconfig1 === void 0 ? void 0 : (_tsconfig_compilerOptions1 = _tsconfig1.compilerOptions) === null || _tsconfig_compilerOptions1 === void 0 ? void 0 : _tsconfig_compilerOptions1.paths
|
67
67
|
},
|
68
68
|
isTsPath: true,
|
69
69
|
isTsProject
|
@@ -47,6 +47,8 @@ const CHAIN_ID = {
|
|
47
47
|
YAML: "yaml",
|
48
48
|
/** Rule for wasm */
|
49
49
|
WASM: "wasm",
|
50
|
+
/** Rule for node */
|
51
|
+
NODE: "node",
|
50
52
|
/** Rule for bff */
|
51
53
|
JS_BFF_API: "js-bff-api"
|
52
54
|
},
|
@@ -85,6 +87,8 @@ const CHAIN_ID = {
|
|
85
87
|
TOML: "toml",
|
86
88
|
/** html-loader */
|
87
89
|
HTML: "html",
|
90
|
+
/** node-loader */
|
91
|
+
NODE: "html",
|
88
92
|
/** babel-loader */
|
89
93
|
BABEL: "babel",
|
90
94
|
/** esbuild-loader */
|
@@ -149,7 +149,6 @@ const INTERNAL_APP_TOOLS_RUNTIME_PLUGINS = {
|
|
149
149
|
};
|
150
150
|
const INTERNAL_MODULE_TOOLS_PLUGINS = {
|
151
151
|
"@modern-js/module-tools": "@modern-js/module-tools",
|
152
|
-
"@modern-js/doc-tools": "@modern-js/doc-tools",
|
153
152
|
"@modern-js/runtime": "@modern-js/runtime/cli",
|
154
153
|
"@modern-js/plugin-testing": "@modern-js/plugin-testing/cli",
|
155
154
|
"@modern-js/plugin-storybook": "@modern-js/plugin-storybook/cli",
|
@@ -31,11 +31,12 @@ _export(exports, {
|
|
31
31
|
});
|
32
32
|
const _type = require("./type");
|
33
33
|
const isSSR = (config) => {
|
34
|
+
var _server, _server1;
|
34
35
|
const { server } = config;
|
35
|
-
if (server === null ||
|
36
|
+
if ((_server = server) === null || _server === void 0 ? void 0 : _server.ssr) {
|
36
37
|
return true;
|
37
38
|
}
|
38
|
-
if ((server === null ||
|
39
|
+
if (((_server1 = server) === null || _server1 === void 0 ? void 0 : _server1.ssrByEntries) && !(0, _type.isEmpty)(server.ssrByEntries)) {
|
39
40
|
for (const name of Object.keys(server.ssrByEntries)) {
|
40
41
|
if (server.ssrByEntries[name]) {
|
41
42
|
return true;
|
@@ -45,27 +46,29 @@ const isSSR = (config) => {
|
|
45
46
|
return false;
|
46
47
|
};
|
47
48
|
const isUseSSRBundle = (config) => {
|
49
|
+
var _output;
|
48
50
|
const { output } = config;
|
49
|
-
if (output === null ||
|
51
|
+
if ((_output = output) === null || _output === void 0 ? void 0 : _output.ssg) {
|
50
52
|
return true;
|
51
53
|
}
|
52
54
|
return isSSR(config);
|
53
55
|
};
|
54
56
|
const isServiceWorker = (config) => {
|
55
|
-
var _deploy_worker;
|
57
|
+
var _deploy_worker, _deploy, _output;
|
56
58
|
const { output, deploy } = config;
|
57
|
-
if ((deploy === null ||
|
59
|
+
if (((_deploy = deploy) === null || _deploy === void 0 ? void 0 : (_deploy_worker = _deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr) && (((_output = output) === null || _output === void 0 ? void 0 : _output.ssg) || isSSR(config))) {
|
58
60
|
return true;
|
59
61
|
}
|
60
62
|
return false;
|
61
63
|
};
|
62
64
|
const isRouterV5 = (config) => {
|
63
|
-
var _config_runtime, _config_runtime1,
|
64
|
-
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && (config === null ||
|
65
|
+
var _config_runtime, _config_runtime_router, _config_runtime1, _config;
|
66
|
+
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && ((_config = config) === null || _config === void 0 ? void 0 : (_config_runtime1 = _config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
|
65
67
|
};
|
66
68
|
const isSSGEntry = (config, entryName, entrypoints) => {
|
69
|
+
var _ssgConfig, _ssgConfig1;
|
67
70
|
const ssgConfig = config.output.ssg;
|
68
|
-
const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof (ssgConfig === null ||
|
71
|
+
const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
69
72
|
return useSSG;
|
70
73
|
};
|
71
74
|
const isSingleEntry = (entrypoints) => entrypoints.length === 1 && entrypoints[0].entryName === "main";
|
@@ -40,7 +40,8 @@ const getAddressUrls = (protocol = "http", port, host) => {
|
|
40
40
|
const LOCAL_LABEL = "Local: ";
|
41
41
|
const NETWORK_LABEL = "Network: ";
|
42
42
|
const isLocalhost = (url) => {
|
43
|
-
|
43
|
+
var _url;
|
44
|
+
return (_url = url) === null || _url === void 0 ? void 0 : _url.includes("localhost");
|
44
45
|
};
|
45
46
|
if (host && host !== _constants.DEFAULT_DEV_HOST) {
|
46
47
|
return [
|
@@ -69,7 +70,7 @@ const getAddressUrls = (protocol = "http", port, host) => {
|
|
69
70
|
const prettyInstructions = (appContext, config) => {
|
70
71
|
var _appContext_builder_context_devServer, _appContext_builder, _config_dev;
|
71
72
|
const { entrypoints, serverRoutes, port, apiOnly, checkedEntries } = appContext;
|
72
|
-
const isHttps = (0, _is.isDev)() && ((
|
73
|
+
const isHttps = (0, _is.isDev)() && ((_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : (_appContext_builder_context_devServer = _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
|
73
74
|
const urls = getAddressUrls(isHttps ? "https" : "http", port, (_config_dev = config.dev) === null || _config_dev === void 0 ? void 0 : _config_dev.host);
|
74
75
|
const routes = !apiOnly ? serverRoutes.filter((route) => route.entryName) : serverRoutes;
|
75
76
|
let message = "App running at:\n\n";
|
package/dist/cjs/cli/require.js
CHANGED
@@ -31,8 +31,9 @@ _export(exports, {
|
|
31
31
|
});
|
32
32
|
const _fs = require("./fs");
|
33
33
|
const compatRequire = (filePath, interop = true) => {
|
34
|
+
var _mod;
|
34
35
|
const mod = require(filePath);
|
35
|
-
const rtnESMDefault = interop && (mod === null ||
|
36
|
+
const rtnESMDefault = interop && ((_mod = mod) === null || _mod === void 0 ? void 0 : _mod.__esModule);
|
36
37
|
return rtnESMDefault ? mod.default : mod;
|
37
38
|
};
|
38
39
|
const dynamicImport = new Function("modulePath", "return import(modulePath)");
|
@@ -30,6 +30,7 @@ const transformNestedRoutes = (routes) => {
|
|
30
30
|
return (0, _reactrouterdom.createRoutesFromElements)(routeElements);
|
31
31
|
};
|
32
32
|
const renderNestedRoute = (nestedRoute, options = {}) => {
|
33
|
+
var _config, _children;
|
33
34
|
const { children, index, id, component, isRoot, lazyImport, config, handle } = nestedRoute;
|
34
35
|
const Component = component;
|
35
36
|
const { parent, DeferredDataComponent, props = {} } = options;
|
@@ -43,7 +44,7 @@ const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
43
44
|
shouldRevalidate: nestedRoute.shouldRevalidate,
|
44
45
|
handle: {
|
45
46
|
...handle,
|
46
|
-
...typeof config === "object" ? config === null ||
|
47
|
+
...typeof config === "object" ? (_config = config) === null || _config === void 0 ? void 0 : _config.handle : {}
|
47
48
|
},
|
48
49
|
index: nestedRoute.index,
|
49
50
|
element: nestedRoute.element,
|
@@ -55,7 +56,8 @@ const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
55
56
|
}
|
56
57
|
let element;
|
57
58
|
if (Component) {
|
58
|
-
|
59
|
+
var _parent;
|
60
|
+
if (((_parent = parent) === null || _parent === void 0 ? void 0 : _parent.loading) && lazyImport) {
|
59
61
|
const Loading = parent.loading;
|
60
62
|
if (isLoadableComponent(Component)) {
|
61
63
|
element = /* @__PURE__ */ (0, _jsxruntime.jsx)(Component, {
|
@@ -70,13 +72,14 @@ const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
70
72
|
} else if (isLoadableComponent(Component) && lazyImport) {
|
71
73
|
element = /* @__PURE__ */ (0, _jsxruntime.jsx)(Component, {});
|
72
74
|
} else if (isRoot) {
|
75
|
+
var _props;
|
73
76
|
element = /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
|
74
77
|
children: [
|
75
78
|
/* @__PURE__ */ (0, _jsxruntime.jsx)(Component, {
|
76
79
|
...props
|
77
80
|
}),
|
78
81
|
typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ (0, _jsxruntime.jsx)(DeferredDataComponent, {
|
79
|
-
nonce: props === null ||
|
82
|
+
nonce: (_props = props) === null || _props === void 0 ? void 0 : _props.nonce
|
80
83
|
})
|
81
84
|
]
|
82
85
|
});
|
@@ -89,12 +92,13 @@ const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
89
92
|
element = /* @__PURE__ */ (0, _jsxruntime.jsx)(Component, {});
|
90
93
|
}
|
91
94
|
} else {
|
92
|
-
|
95
|
+
var _parent1;
|
96
|
+
nestedRoute.loading = (_parent1 = parent) === null || _parent1 === void 0 ? void 0 : _parent1.loading;
|
93
97
|
}
|
94
98
|
if (element) {
|
95
99
|
routeProps.element = element;
|
96
100
|
}
|
97
|
-
const childElements = children === null ||
|
101
|
+
const childElements = (_children = children) === null || _children === void 0 ? void 0 : _children.map((childRoute) => {
|
98
102
|
return renderNestedRoute(childRoute, {
|
99
103
|
parent: nestedRoute
|
100
104
|
});
|
@@ -16,7 +16,8 @@ const parsedJSONFromElement = (id) => {
|
|
16
16
|
const element = elements[elements.length - 1];
|
17
17
|
if (element) {
|
18
18
|
try {
|
19
|
-
|
19
|
+
var _element;
|
20
|
+
const parsed = JSON.parse(((_element = element) === null || _element === void 0 ? void 0 : _element.textContent) || "");
|
20
21
|
return parsed;
|
21
22
|
} catch (e) {
|
22
23
|
console.error(`parse ${id} error`, e);
|
@@ -2,9 +2,18 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
3
3
|
value: true
|
4
4
|
});
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
function _export(target, all) {
|
6
|
+
for (var name in all)
|
7
|
+
Object.defineProperty(target, name, {
|
8
|
+
enumerable: true,
|
9
|
+
get: all[name]
|
10
|
+
});
|
11
|
+
}
|
12
|
+
_export(exports, {
|
13
|
+
addErrorTips: function() {
|
14
|
+
return addErrorTips;
|
15
|
+
},
|
16
|
+
formatWebpackMessages: function() {
|
8
17
|
return formatWebpackMessages;
|
9
18
|
}
|
10
19
|
});
|
@@ -52,13 +61,50 @@ ${stats.stack}` : "";
|
|
52
61
|
message = lines.join("\n");
|
53
62
|
return message.trim();
|
54
63
|
}
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
64
|
+
const noop = (message) => message;
|
65
|
+
const defaultColor = {
|
66
|
+
gray: noop,
|
67
|
+
cyan: noop,
|
68
|
+
green: noop,
|
69
|
+
yellow: noop,
|
70
|
+
underline: noop
|
71
|
+
};
|
72
|
+
function addErrorTips(errors, color = defaultColor) {
|
73
|
+
const errorHelpers = [
|
74
|
+
{
|
75
|
+
validator(message) {
|
76
|
+
return (message.includes("You may need an appropriate loader") || message.includes("You may need an additional loader")) && message.includes(".ts");
|
77
|
+
},
|
78
|
+
formatter(message) {
|
79
|
+
return `${message}
|
80
|
+
|
81
|
+
${color.yellow(`If it is a TypeScript file, you can use "source.include" config to compile it. see ${color.underline("https://modernjs.dev/builder/en/api/config-source.html#sourceinclude")}`)}
|
82
|
+
|
83
|
+
${color.green(`${color.gray("// config file")}
|
84
|
+
export default {
|
85
|
+
source: {
|
86
|
+
include: [
|
87
|
+
${color.gray("// add some include rules")}
|
88
|
+
]
|
89
|
+
}
|
90
|
+
}`)}
|
91
|
+
`;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
];
|
95
|
+
return errors.map((error) => {
|
96
|
+
const helper = errorHelpers.find((item) => item.validator(error));
|
97
|
+
return helper ? helper.formatter(error) : error;
|
98
|
+
});
|
99
|
+
}
|
100
|
+
function formatWebpackMessages(json, color = defaultColor) {
|
101
|
+
var _json_errors, _json, _json_warnings, _json1, _result_errors;
|
102
|
+
const formattedErrors = (_json = json) === null || _json === void 0 ? void 0 : (_json_errors = _json.errors) === null || _json_errors === void 0 ? void 0 : _json_errors.map(formatMessage);
|
103
|
+
const formattedWarnings = (_json1 = json) === null || _json1 === void 0 ? void 0 : (_json_warnings = _json1.warnings) === null || _json_warnings === void 0 ? void 0 : _json_warnings.map(formatMessage);
|
59
104
|
const result = {
|
60
105
|
errors: formattedErrors || [],
|
61
|
-
warnings: formattedWarnings || []
|
106
|
+
warnings: formattedWarnings || [],
|
107
|
+
errorTips: []
|
62
108
|
};
|
63
109
|
if ((_result_errors = result.errors) === null || _result_errors === void 0 ? void 0 : _result_errors.some(isLikelyASyntaxError)) {
|
64
110
|
result.errors = result.errors.filter(isLikelyASyntaxError);
|
@@ -66,5 +112,6 @@ function formatWebpackMessages(json) {
|
|
66
112
|
if (result.errors.length > 1) {
|
67
113
|
result.errors.length = 1;
|
68
114
|
}
|
115
|
+
result.errors = addErrorTips(result.errors, color);
|
69
116
|
return result;
|
70
117
|
}
|
package/dist/esm/cli/alias.js
CHANGED
@@ -24,7 +24,7 @@ export var mergeAlias = function(alias) {
|
|
24
24
|
return applyOptionsChain({}, alias);
|
25
25
|
};
|
26
26
|
export var getAliasConfig = function(aliasOption, option) {
|
27
|
-
var _tsconfig_compilerOptions, _tsconfig_compilerOptions1;
|
27
|
+
var _tsconfig_compilerOptions, _tsconfig, _tsconfig_compilerOptions1, _tsconfig1;
|
28
28
|
var isTsProject = fs.existsSync(option.tsconfigPath);
|
29
29
|
var alias = mergeAlias(aliasOption);
|
30
30
|
if (!isTsProject) {
|
@@ -36,10 +36,10 @@ export var getAliasConfig = function(aliasOption, option) {
|
|
36
36
|
};
|
37
37
|
}
|
38
38
|
var tsconfig = readTsConfigByFile(option.tsconfigPath);
|
39
|
-
var baseUrl = tsconfig === null ||
|
39
|
+
var baseUrl = (_tsconfig = tsconfig) === null || _tsconfig === void 0 ? void 0 : (_tsconfig_compilerOptions = _tsconfig.compilerOptions) === null || _tsconfig_compilerOptions === void 0 ? void 0 : _tsconfig_compilerOptions.baseUrl;
|
40
40
|
return {
|
41
41
|
absoluteBaseUrl: baseUrl ? path.join(option.appDirectory, baseUrl) : option.appDirectory,
|
42
|
-
paths: _object_spread({}, alias, tsconfig === null ||
|
42
|
+
paths: _object_spread({}, alias, (_tsconfig1 = tsconfig) === null || _tsconfig1 === void 0 ? void 0 : (_tsconfig_compilerOptions1 = _tsconfig1.compilerOptions) === null || _tsconfig_compilerOptions1 === void 0 ? void 0 : _tsconfig_compilerOptions1.paths),
|
43
43
|
isTsPath: true,
|
44
44
|
isTsProject: isTsProject
|
45
45
|
};
|
@@ -37,6 +37,8 @@ export var CHAIN_ID = {
|
|
37
37
|
YAML: "yaml",
|
38
38
|
/** Rule for wasm */
|
39
39
|
WASM: "wasm",
|
40
|
+
/** Rule for node */
|
41
|
+
NODE: "node",
|
40
42
|
/** Rule for bff */
|
41
43
|
JS_BFF_API: "js-bff-api"
|
42
44
|
},
|
@@ -75,6 +77,8 @@ export var CHAIN_ID = {
|
|
75
77
|
TOML: "toml",
|
76
78
|
/** html-loader */
|
77
79
|
HTML: "html",
|
80
|
+
/** node-loader */
|
81
|
+
NODE: "html",
|
78
82
|
/** babel-loader */
|
79
83
|
BABEL: "babel",
|
80
84
|
/** esbuild-loader */
|
@@ -42,7 +42,6 @@ export var INTERNAL_APP_TOOLS_RUNTIME_PLUGINS = {
|
|
42
42
|
};
|
43
43
|
export var INTERNAL_MODULE_TOOLS_PLUGINS = {
|
44
44
|
"@modern-js/module-tools": "@modern-js/module-tools",
|
45
|
-
"@modern-js/doc-tools": "@modern-js/doc-tools",
|
46
45
|
"@modern-js/runtime": "@modern-js/runtime/cli",
|
47
46
|
"@modern-js/plugin-testing": "@modern-js/plugin-testing/cli",
|
48
47
|
"@modern-js/plugin-storybook": "@modern-js/plugin-storybook/cli",
|
package/dist/esm/cli/get/data.js
CHANGED
@@ -25,13 +25,22 @@ function _getPackageManager() {
|
|
25
25
|
while (os.homedir() !== appDirectory && times < MAX_TIMES) {
|
26
26
|
times++;
|
27
27
|
if (fs.existsSync(path.resolve(appDirectory, "pnpm-lock.yaml"))) {
|
28
|
-
return
|
28
|
+
return [
|
29
|
+
2,
|
30
|
+
"pnpm"
|
31
|
+
];
|
29
32
|
}
|
30
33
|
if (fs.existsSync(path.resolve(appDirectory, "yarn.lock"))) {
|
31
|
-
return
|
34
|
+
return [
|
35
|
+
2,
|
36
|
+
"yarn"
|
37
|
+
];
|
32
38
|
}
|
33
39
|
if (fs.existsSync(path.resolve(appDirectory, "package-lock.json"))) {
|
34
|
-
return
|
40
|
+
return [
|
41
|
+
2,
|
42
|
+
"npm"
|
43
|
+
];
|
35
44
|
}
|
36
45
|
appDirectory = path.join(appDirectory, "..");
|
37
46
|
}
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import { isEmpty } from "./type";
|
2
2
|
export var isSSR = function(config) {
|
3
|
+
var _server, _server1;
|
3
4
|
var server = config.server;
|
4
|
-
if (server === null ||
|
5
|
+
if ((_server = server) === null || _server === void 0 ? void 0 : _server.ssr) {
|
5
6
|
return true;
|
6
7
|
}
|
7
|
-
if ((server === null ||
|
8
|
+
if (((_server1 = server) === null || _server1 === void 0 ? void 0 : _server1.ssrByEntries) && !isEmpty(server.ssrByEntries)) {
|
8
9
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
9
10
|
try {
|
10
11
|
for (var _iterator = Object.keys(server.ssrByEntries)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
@@ -31,27 +32,29 @@ export var isSSR = function(config) {
|
|
31
32
|
return false;
|
32
33
|
};
|
33
34
|
export var isUseSSRBundle = function(config) {
|
35
|
+
var _output;
|
34
36
|
var output = config.output;
|
35
|
-
if (output === null ||
|
37
|
+
if ((_output = output) === null || _output === void 0 ? void 0 : _output.ssg) {
|
36
38
|
return true;
|
37
39
|
}
|
38
40
|
return isSSR(config);
|
39
41
|
};
|
40
42
|
export var isServiceWorker = function(config) {
|
41
|
-
var _deploy_worker;
|
43
|
+
var _deploy_worker, _deploy, _output;
|
42
44
|
var output = config.output, deploy = config.deploy;
|
43
|
-
if ((deploy === null ||
|
45
|
+
if (((_deploy = deploy) === null || _deploy === void 0 ? void 0 : (_deploy_worker = _deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr) && (((_output = output) === null || _output === void 0 ? void 0 : _output.ssg) || isSSR(config))) {
|
44
46
|
return true;
|
45
47
|
}
|
46
48
|
return false;
|
47
49
|
};
|
48
50
|
export var isRouterV5 = function(config) {
|
49
|
-
var _config_runtime, _config_runtime1,
|
50
|
-
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && (config === null ||
|
51
|
+
var _config_runtime, _config_runtime_router, _config_runtime1, _config;
|
52
|
+
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && ((_config = config) === null || _config === void 0 ? void 0 : (_config_runtime1 = _config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
|
51
53
|
};
|
52
54
|
export var isSSGEntry = function(config, entryName, entrypoints) {
|
55
|
+
var _ssgConfig, _ssgConfig1;
|
53
56
|
var ssgConfig = config.output.ssg;
|
54
|
-
var useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof (ssgConfig === null ||
|
57
|
+
var useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
55
58
|
return useSSG;
|
56
59
|
};
|
57
60
|
export var isSingleEntry = function(entrypoints) {
|
@@ -24,7 +24,8 @@ export var getAddressUrls = function() {
|
|
24
24
|
var LOCAL_LABEL = "Local: ";
|
25
25
|
var NETWORK_LABEL = "Network: ";
|
26
26
|
var isLocalhost = function(url) {
|
27
|
-
|
27
|
+
var _url;
|
28
|
+
return (_url = url) === null || _url === void 0 ? void 0 : _url.includes("localhost");
|
28
29
|
};
|
29
30
|
if (host && host !== DEFAULT_DEV_HOST) {
|
30
31
|
return [
|
@@ -53,7 +54,7 @@ export var getAddressUrls = function() {
|
|
53
54
|
export var prettyInstructions = function(appContext, config) {
|
54
55
|
var _appContext_builder_context_devServer, _appContext_builder, _config_dev;
|
55
56
|
var entrypoints = appContext.entrypoints, serverRoutes = appContext.serverRoutes, port = appContext.port, apiOnly = appContext.apiOnly, checkedEntries = appContext.checkedEntries;
|
56
|
-
var isHttps = isDev() && ((
|
57
|
+
var isHttps = isDev() && ((_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : (_appContext_builder_context_devServer = _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
|
57
58
|
var urls = getAddressUrls(isHttps ? "https" : "http", port, (_config_dev = config.dev) === null || _config_dev === void 0 ? void 0 : _config_dev.host);
|
58
59
|
var routes = !apiOnly ? serverRoutes.filter(function(route) {
|
59
60
|
return route.entryName;
|
package/dist/esm/cli/require.js
CHANGED
@@ -2,8 +2,9 @@ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
2
2
|
import { findExists } from "./fs";
|
3
3
|
export var compatRequire = function(filePath) {
|
4
4
|
var interop = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
|
5
|
+
var _mod;
|
5
6
|
var mod = require(filePath);
|
6
|
-
var rtnESMDefault = interop && (mod === null ||
|
7
|
+
var rtnESMDefault = interop && ((_mod = mod) === null || _mod === void 0 ? void 0 : _mod.__esModule);
|
7
8
|
return rtnESMDefault ? mod.default : mod;
|
8
9
|
};
|
9
10
|
export var dynamicImport = new Function("modulePath", "return import(modulePath)");
|
@@ -30,6 +30,7 @@ export var transformNestedRoutes = function(routes) {
|
|
30
30
|
};
|
31
31
|
export var renderNestedRoute = function(nestedRoute) {
|
32
32
|
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
33
|
+
var _config, _children;
|
33
34
|
var children = nestedRoute.children, index = nestedRoute.index, id = nestedRoute.id, component = nestedRoute.component, isRoot = nestedRoute.isRoot, lazyImport = nestedRoute.lazyImport, config = nestedRoute.config, handle = nestedRoute.handle;
|
34
35
|
var Component = component;
|
35
36
|
var parent = options.parent, DeferredDataComponent = options.DeferredDataComponent, _options_props = options.props, props = _options_props === void 0 ? {} : _options_props;
|
@@ -41,7 +42,7 @@ export var renderNestedRoute = function(nestedRoute) {
|
|
41
42
|
action: nestedRoute.action,
|
42
43
|
hasErrorBoundary: nestedRoute.hasErrorBoundary,
|
43
44
|
shouldRevalidate: nestedRoute.shouldRevalidate,
|
44
|
-
handle: _object_spread({}, handle, typeof config === "object" ? config === null ||
|
45
|
+
handle: _object_spread({}, handle, typeof config === "object" ? (_config = config) === null || _config === void 0 ? void 0 : _config.handle : {}),
|
45
46
|
index: nestedRoute.index,
|
46
47
|
element: nestedRoute.element,
|
47
48
|
errorElement: nestedRoute.errorElement
|
@@ -52,7 +53,8 @@ export var renderNestedRoute = function(nestedRoute) {
|
|
52
53
|
}
|
53
54
|
var element;
|
54
55
|
if (Component) {
|
55
|
-
|
56
|
+
var _parent;
|
57
|
+
if (((_parent = parent) === null || _parent === void 0 ? void 0 : _parent.loading) && lazyImport) {
|
56
58
|
var Loading = parent.loading;
|
57
59
|
if (isLoadableComponent(Component)) {
|
58
60
|
element = /* @__PURE__ */ _jsx(Component, {
|
@@ -67,11 +69,12 @@ export var renderNestedRoute = function(nestedRoute) {
|
|
67
69
|
} else if (isLoadableComponent(Component) && lazyImport) {
|
68
70
|
element = /* @__PURE__ */ _jsx(Component, {});
|
69
71
|
} else if (isRoot) {
|
72
|
+
var _props;
|
70
73
|
element = /* @__PURE__ */ _jsxs(_Fragment, {
|
71
74
|
children: [
|
72
75
|
/* @__PURE__ */ _jsx(Component, _object_spread({}, props)),
|
73
76
|
typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ _jsx(DeferredDataComponent, {
|
74
|
-
nonce: props === null ||
|
77
|
+
nonce: (_props = props) === null || _props === void 0 ? void 0 : _props.nonce
|
75
78
|
})
|
76
79
|
]
|
77
80
|
});
|
@@ -84,12 +87,13 @@ export var renderNestedRoute = function(nestedRoute) {
|
|
84
87
|
element = /* @__PURE__ */ _jsx(Component, {});
|
85
88
|
}
|
86
89
|
} else {
|
87
|
-
|
90
|
+
var _parent1;
|
91
|
+
nestedRoute.loading = (_parent1 = parent) === null || _parent1 === void 0 ? void 0 : _parent1.loading;
|
88
92
|
}
|
89
93
|
if (element) {
|
90
94
|
routeProps.element = element;
|
91
95
|
}
|
92
|
-
var childElements = children === null ||
|
96
|
+
var childElements = (_children = children) === null || _children === void 0 ? void 0 : _children.map(function(childRoute) {
|
93
97
|
return renderNestedRoute(childRoute, {
|
94
98
|
parent: nestedRoute
|
95
99
|
});
|
@@ -6,7 +6,8 @@ export var parsedJSONFromElement = function(id) {
|
|
6
6
|
var element = elements[elements.length - 1];
|
7
7
|
if (element) {
|
8
8
|
try {
|
9
|
-
var
|
9
|
+
var _element;
|
10
|
+
var parsed = JSON.parse(((_element = element) === null || _element === void 0 ? void 0 : _element.textContent) || "");
|
10
11
|
return parsed;
|
11
12
|
} catch (e) {
|
12
13
|
console.error("parse ".concat(id, " error"), e);
|
@@ -40,13 +40,44 @@ function formatMessage(stats) {
|
|
40
40
|
message = lines.join("\n");
|
41
41
|
return message.trim();
|
42
42
|
}
|
43
|
+
var noop = function(message) {
|
44
|
+
return message;
|
45
|
+
};
|
46
|
+
var defaultColor = {
|
47
|
+
gray: noop,
|
48
|
+
cyan: noop,
|
49
|
+
green: noop,
|
50
|
+
yellow: noop,
|
51
|
+
underline: noop
|
52
|
+
};
|
53
|
+
export function addErrorTips(errors) {
|
54
|
+
var color = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultColor;
|
55
|
+
var errorHelpers = [
|
56
|
+
{
|
57
|
+
validator: function validator(message) {
|
58
|
+
return (message.includes("You may need an appropriate loader") || message.includes("You may need an additional loader")) && message.includes(".ts");
|
59
|
+
},
|
60
|
+
formatter: function formatter(message) {
|
61
|
+
return "".concat(message, "\n\n").concat(color.yellow('If it is a TypeScript file, you can use "source.include" config to compile it. see '.concat(color.underline("https://modernjs.dev/builder/en/api/config-source.html#sourceinclude"))), "\n\n").concat(color.green("".concat(color.gray("// config file"), "\nexport default {\n source: {\n include: [\n ").concat(color.gray("// add some include rules"), "\n ]\n }\n}")), "\n ");
|
62
|
+
}
|
63
|
+
}
|
64
|
+
];
|
65
|
+
return errors.map(function(error) {
|
66
|
+
var helper = errorHelpers.find(function(item) {
|
67
|
+
return item.validator(error);
|
68
|
+
});
|
69
|
+
return helper ? helper.formatter(error) : error;
|
70
|
+
});
|
71
|
+
}
|
43
72
|
function formatWebpackMessages(json) {
|
44
|
-
var
|
45
|
-
var
|
46
|
-
var
|
73
|
+
var color = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultColor;
|
74
|
+
var _json_errors, _json, _json_warnings, _json1, _result_errors;
|
75
|
+
var formattedErrors = (_json = json) === null || _json === void 0 ? void 0 : (_json_errors = _json.errors) === null || _json_errors === void 0 ? void 0 : _json_errors.map(formatMessage);
|
76
|
+
var formattedWarnings = (_json1 = json) === null || _json1 === void 0 ? void 0 : (_json_warnings = _json1.warnings) === null || _json_warnings === void 0 ? void 0 : _json_warnings.map(formatMessage);
|
47
77
|
var result = {
|
48
78
|
errors: formattedErrors || [],
|
49
|
-
warnings: formattedWarnings || []
|
79
|
+
warnings: formattedWarnings || [],
|
80
|
+
errorTips: []
|
50
81
|
};
|
51
82
|
if ((_result_errors = result.errors) === null || _result_errors === void 0 ? void 0 : _result_errors.some(isLikelyASyntaxError)) {
|
52
83
|
result.errors = result.errors.filter(isLikelyASyntaxError);
|
@@ -54,6 +85,7 @@ function formatWebpackMessages(json) {
|
|
54
85
|
if (result.errors.length > 1) {
|
55
86
|
result.errors.length = 1;
|
56
87
|
}
|
88
|
+
result.errors = addErrorTips(result.errors, color);
|
57
89
|
return result;
|
58
90
|
}
|
59
91
|
export { formatWebpackMessages };
|
@@ -20,7 +20,7 @@ export const validAlias = (modernConfig, { tsconfigPath }) => {
|
|
20
20
|
};
|
21
21
|
export const mergeAlias = (alias) => applyOptionsChain({}, alias);
|
22
22
|
export const getAliasConfig = (aliasOption, option) => {
|
23
|
-
var _tsconfig_compilerOptions, _tsconfig_compilerOptions1;
|
23
|
+
var _tsconfig_compilerOptions, _tsconfig, _tsconfig_compilerOptions1, _tsconfig1;
|
24
24
|
const isTsProject = fs.existsSync(option.tsconfigPath);
|
25
25
|
const alias = mergeAlias(aliasOption);
|
26
26
|
if (!isTsProject) {
|
@@ -32,12 +32,12 @@ export const getAliasConfig = (aliasOption, option) => {
|
|
32
32
|
};
|
33
33
|
}
|
34
34
|
const tsconfig = readTsConfigByFile(option.tsconfigPath);
|
35
|
-
const baseUrl = tsconfig === null ||
|
35
|
+
const baseUrl = (_tsconfig = tsconfig) === null || _tsconfig === void 0 ? void 0 : (_tsconfig_compilerOptions = _tsconfig.compilerOptions) === null || _tsconfig_compilerOptions === void 0 ? void 0 : _tsconfig_compilerOptions.baseUrl;
|
36
36
|
return {
|
37
37
|
absoluteBaseUrl: baseUrl ? path.join(option.appDirectory, baseUrl) : option.appDirectory,
|
38
38
|
paths: {
|
39
39
|
...alias,
|
40
|
-
...tsconfig === null ||
|
40
|
+
...(_tsconfig1 = tsconfig) === null || _tsconfig1 === void 0 ? void 0 : (_tsconfig_compilerOptions1 = _tsconfig1.compilerOptions) === null || _tsconfig_compilerOptions1 === void 0 ? void 0 : _tsconfig_compilerOptions1.paths
|
41
41
|
},
|
42
42
|
isTsPath: true,
|
43
43
|
isTsProject
|
@@ -37,6 +37,8 @@ export const CHAIN_ID = {
|
|
37
37
|
YAML: "yaml",
|
38
38
|
/** Rule for wasm */
|
39
39
|
WASM: "wasm",
|
40
|
+
/** Rule for node */
|
41
|
+
NODE: "node",
|
40
42
|
/** Rule for bff */
|
41
43
|
JS_BFF_API: "js-bff-api"
|
42
44
|
},
|
@@ -75,6 +77,8 @@ export const CHAIN_ID = {
|
|
75
77
|
TOML: "toml",
|
76
78
|
/** html-loader */
|
77
79
|
HTML: "html",
|
80
|
+
/** node-loader */
|
81
|
+
NODE: "html",
|
78
82
|
/** babel-loader */
|
79
83
|
BABEL: "babel",
|
80
84
|
/** esbuild-loader */
|
@@ -41,7 +41,6 @@ export const INTERNAL_APP_TOOLS_RUNTIME_PLUGINS = {
|
|
41
41
|
};
|
42
42
|
export const INTERNAL_MODULE_TOOLS_PLUGINS = {
|
43
43
|
"@modern-js/module-tools": "@modern-js/module-tools",
|
44
|
-
"@modern-js/doc-tools": "@modern-js/doc-tools",
|
45
44
|
"@modern-js/runtime": "@modern-js/runtime/cli",
|
46
45
|
"@modern-js/plugin-testing": "@modern-js/plugin-testing/cli",
|
47
46
|
"@modern-js/plugin-storybook": "@modern-js/plugin-storybook/cli",
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import { isEmpty } from "./type";
|
2
2
|
export const isSSR = (config) => {
|
3
|
+
var _server, _server1;
|
3
4
|
const { server } = config;
|
4
|
-
if (server === null ||
|
5
|
+
if ((_server = server) === null || _server === void 0 ? void 0 : _server.ssr) {
|
5
6
|
return true;
|
6
7
|
}
|
7
|
-
if ((server === null ||
|
8
|
+
if (((_server1 = server) === null || _server1 === void 0 ? void 0 : _server1.ssrByEntries) && !isEmpty(server.ssrByEntries)) {
|
8
9
|
for (const name of Object.keys(server.ssrByEntries)) {
|
9
10
|
if (server.ssrByEntries[name]) {
|
10
11
|
return true;
|
@@ -14,27 +15,29 @@ export const isSSR = (config) => {
|
|
14
15
|
return false;
|
15
16
|
};
|
16
17
|
export const isUseSSRBundle = (config) => {
|
18
|
+
var _output;
|
17
19
|
const { output } = config;
|
18
|
-
if (output === null ||
|
20
|
+
if ((_output = output) === null || _output === void 0 ? void 0 : _output.ssg) {
|
19
21
|
return true;
|
20
22
|
}
|
21
23
|
return isSSR(config);
|
22
24
|
};
|
23
25
|
export const isServiceWorker = (config) => {
|
24
|
-
var _deploy_worker;
|
26
|
+
var _deploy_worker, _deploy, _output;
|
25
27
|
const { output, deploy } = config;
|
26
|
-
if ((deploy === null ||
|
28
|
+
if (((_deploy = deploy) === null || _deploy === void 0 ? void 0 : (_deploy_worker = _deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr) && (((_output = output) === null || _output === void 0 ? void 0 : _output.ssg) || isSSR(config))) {
|
27
29
|
return true;
|
28
30
|
}
|
29
31
|
return false;
|
30
32
|
};
|
31
33
|
export const isRouterV5 = (config) => {
|
32
|
-
var _config_runtime, _config_runtime1,
|
33
|
-
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && (config === null ||
|
34
|
+
var _config_runtime, _config_runtime_router, _config_runtime1, _config;
|
35
|
+
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && ((_config = config) === null || _config === void 0 ? void 0 : (_config_runtime1 = _config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
|
34
36
|
};
|
35
37
|
export const isSSGEntry = (config, entryName, entrypoints) => {
|
38
|
+
var _ssgConfig, _ssgConfig1;
|
36
39
|
const ssgConfig = config.output.ssg;
|
37
|
-
const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof (ssgConfig === null ||
|
40
|
+
const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
38
41
|
return useSSG;
|
39
42
|
};
|
40
43
|
export const isSingleEntry = (entrypoints) => entrypoints.length === 1 && entrypoints[0].entryName === "main";
|
@@ -20,7 +20,8 @@ export const getAddressUrls = (protocol = "http", port, host) => {
|
|
20
20
|
const LOCAL_LABEL = "Local: ";
|
21
21
|
const NETWORK_LABEL = "Network: ";
|
22
22
|
const isLocalhost = (url) => {
|
23
|
-
|
23
|
+
var _url;
|
24
|
+
return (_url = url) === null || _url === void 0 ? void 0 : _url.includes("localhost");
|
24
25
|
};
|
25
26
|
if (host && host !== DEFAULT_DEV_HOST) {
|
26
27
|
return [
|
@@ -49,7 +50,7 @@ export const getAddressUrls = (protocol = "http", port, host) => {
|
|
49
50
|
export const prettyInstructions = (appContext, config) => {
|
50
51
|
var _appContext_builder_context_devServer, _appContext_builder, _config_dev;
|
51
52
|
const { entrypoints, serverRoutes, port, apiOnly, checkedEntries } = appContext;
|
52
|
-
const isHttps = isDev() && ((
|
53
|
+
const isHttps = isDev() && ((_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : (_appContext_builder_context_devServer = _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
|
53
54
|
const urls = getAddressUrls(isHttps ? "https" : "http", port, (_config_dev = config.dev) === null || _config_dev === void 0 ? void 0 : _config_dev.host);
|
54
55
|
const routes = !apiOnly ? serverRoutes.filter((route) => route.entryName) : serverRoutes;
|
55
56
|
let message = "App running at:\n\n";
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { findExists } from "./fs";
|
2
2
|
export const compatRequire = (filePath, interop = true) => {
|
3
|
+
var _mod;
|
3
4
|
const mod = require(filePath);
|
4
|
-
const rtnESMDefault = interop && (mod === null ||
|
5
|
+
const rtnESMDefault = interop && ((_mod = mod) === null || _mod === void 0 ? void 0 : _mod.__esModule);
|
5
6
|
return rtnESMDefault ? mod.default : mod;
|
6
7
|
};
|
7
8
|
export const dynamicImport = new Function("modulePath", "return import(modulePath)");
|
@@ -10,6 +10,7 @@ export const transformNestedRoutes = (routes) => {
|
|
10
10
|
return createRoutesFromElements(routeElements);
|
11
11
|
};
|
12
12
|
export const renderNestedRoute = (nestedRoute, options = {}) => {
|
13
|
+
var _config, _children;
|
13
14
|
const { children, index, id, component, isRoot, lazyImport, config, handle } = nestedRoute;
|
14
15
|
const Component = component;
|
15
16
|
const { parent, DeferredDataComponent, props = {} } = options;
|
@@ -23,7 +24,7 @@ export const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
23
24
|
shouldRevalidate: nestedRoute.shouldRevalidate,
|
24
25
|
handle: {
|
25
26
|
...handle,
|
26
|
-
...typeof config === "object" ? config === null ||
|
27
|
+
...typeof config === "object" ? (_config = config) === null || _config === void 0 ? void 0 : _config.handle : {}
|
27
28
|
},
|
28
29
|
index: nestedRoute.index,
|
29
30
|
element: nestedRoute.element,
|
@@ -35,7 +36,8 @@ export const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
35
36
|
}
|
36
37
|
let element;
|
37
38
|
if (Component) {
|
38
|
-
|
39
|
+
var _parent;
|
40
|
+
if (((_parent = parent) === null || _parent === void 0 ? void 0 : _parent.loading) && lazyImport) {
|
39
41
|
const Loading = parent.loading;
|
40
42
|
if (isLoadableComponent(Component)) {
|
41
43
|
element = /* @__PURE__ */ _jsx(Component, {
|
@@ -50,13 +52,14 @@ export const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
50
52
|
} else if (isLoadableComponent(Component) && lazyImport) {
|
51
53
|
element = /* @__PURE__ */ _jsx(Component, {});
|
52
54
|
} else if (isRoot) {
|
55
|
+
var _props;
|
53
56
|
element = /* @__PURE__ */ _jsxs(_Fragment, {
|
54
57
|
children: [
|
55
58
|
/* @__PURE__ */ _jsx(Component, {
|
56
59
|
...props
|
57
60
|
}),
|
58
61
|
typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ _jsx(DeferredDataComponent, {
|
59
|
-
nonce: props === null ||
|
62
|
+
nonce: (_props = props) === null || _props === void 0 ? void 0 : _props.nonce
|
60
63
|
})
|
61
64
|
]
|
62
65
|
});
|
@@ -69,12 +72,13 @@ export const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
69
72
|
element = /* @__PURE__ */ _jsx(Component, {});
|
70
73
|
}
|
71
74
|
} else {
|
72
|
-
|
75
|
+
var _parent1;
|
76
|
+
nestedRoute.loading = (_parent1 = parent) === null || _parent1 === void 0 ? void 0 : _parent1.loading;
|
73
77
|
}
|
74
78
|
if (element) {
|
75
79
|
routeProps.element = element;
|
76
80
|
}
|
77
|
-
const childElements = children === null ||
|
81
|
+
const childElements = (_children = children) === null || _children === void 0 ? void 0 : _children.map((childRoute) => {
|
78
82
|
return renderNestedRoute(childRoute, {
|
79
83
|
parent: nestedRoute
|
80
84
|
});
|
@@ -6,7 +6,8 @@ export const parsedJSONFromElement = (id) => {
|
|
6
6
|
const element = elements[elements.length - 1];
|
7
7
|
if (element) {
|
8
8
|
try {
|
9
|
-
|
9
|
+
var _element;
|
10
|
+
const parsed = JSON.parse(((_element = element) === null || _element === void 0 ? void 0 : _element.textContent) || "");
|
10
11
|
return parsed;
|
11
12
|
} catch (e) {
|
12
13
|
console.error(`parse ${id} error`, e);
|
@@ -42,13 +42,50 @@ ${stats.stack}` : "";
|
|
42
42
|
message = lines.join("\n");
|
43
43
|
return message.trim();
|
44
44
|
}
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
45
|
+
const noop = (message) => message;
|
46
|
+
const defaultColor = {
|
47
|
+
gray: noop,
|
48
|
+
cyan: noop,
|
49
|
+
green: noop,
|
50
|
+
yellow: noop,
|
51
|
+
underline: noop
|
52
|
+
};
|
53
|
+
export function addErrorTips(errors, color = defaultColor) {
|
54
|
+
const errorHelpers = [
|
55
|
+
{
|
56
|
+
validator(message) {
|
57
|
+
return (message.includes("You may need an appropriate loader") || message.includes("You may need an additional loader")) && message.includes(".ts");
|
58
|
+
},
|
59
|
+
formatter(message) {
|
60
|
+
return `${message}
|
61
|
+
|
62
|
+
${color.yellow(`If it is a TypeScript file, you can use "source.include" config to compile it. see ${color.underline("https://modernjs.dev/builder/en/api/config-source.html#sourceinclude")}`)}
|
63
|
+
|
64
|
+
${color.green(`${color.gray("// config file")}
|
65
|
+
export default {
|
66
|
+
source: {
|
67
|
+
include: [
|
68
|
+
${color.gray("// add some include rules")}
|
69
|
+
]
|
70
|
+
}
|
71
|
+
}`)}
|
72
|
+
`;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
];
|
76
|
+
return errors.map((error) => {
|
77
|
+
const helper = errorHelpers.find((item) => item.validator(error));
|
78
|
+
return helper ? helper.formatter(error) : error;
|
79
|
+
});
|
80
|
+
}
|
81
|
+
function formatWebpackMessages(json, color = defaultColor) {
|
82
|
+
var _json_errors, _json, _json_warnings, _json1, _result_errors;
|
83
|
+
const formattedErrors = (_json = json) === null || _json === void 0 ? void 0 : (_json_errors = _json.errors) === null || _json_errors === void 0 ? void 0 : _json_errors.map(formatMessage);
|
84
|
+
const formattedWarnings = (_json1 = json) === null || _json1 === void 0 ? void 0 : (_json_warnings = _json1.warnings) === null || _json_warnings === void 0 ? void 0 : _json_warnings.map(formatMessage);
|
49
85
|
const result = {
|
50
86
|
errors: formattedErrors || [],
|
51
|
-
warnings: formattedWarnings || []
|
87
|
+
warnings: formattedWarnings || [],
|
88
|
+
errorTips: []
|
52
89
|
};
|
53
90
|
if ((_result_errors = result.errors) === null || _result_errors === void 0 ? void 0 : _result_errors.some(isLikelyASyntaxError)) {
|
54
91
|
result.errors = result.errors.filter(isLikelyASyntaxError);
|
@@ -56,6 +93,7 @@ function formatWebpackMessages(json) {
|
|
56
93
|
if (result.errors.length > 1) {
|
57
94
|
result.errors.length = 1;
|
58
95
|
}
|
96
|
+
result.errors = addErrorTips(result.errors, color);
|
59
97
|
return result;
|
60
98
|
}
|
61
99
|
export { formatWebpackMessages };
|
@@ -37,6 +37,8 @@ export declare const CHAIN_ID: {
|
|
37
37
|
readonly YAML: "yaml";
|
38
38
|
/** Rule for wasm */
|
39
39
|
readonly WASM: "wasm";
|
40
|
+
/** Rule for node */
|
41
|
+
readonly NODE: "node";
|
40
42
|
/** Rule for bff */
|
41
43
|
readonly JS_BFF_API: "js-bff-api";
|
42
44
|
};
|
@@ -75,6 +77,8 @@ export declare const CHAIN_ID: {
|
|
75
77
|
readonly TOML: "toml";
|
76
78
|
/** html-loader */
|
77
79
|
readonly HTML: "html";
|
80
|
+
/** node-loader */
|
81
|
+
readonly NODE: "html";
|
78
82
|
/** babel-loader */
|
79
83
|
readonly BABEL: "babel";
|
80
84
|
/** esbuild-loader */
|
@@ -6,7 +6,20 @@
|
|
6
6
|
* https://github.com/facebook/create-react-app/blob/master/LICENSE
|
7
7
|
*/
|
8
8
|
import type { StatsCompilation } from 'webpack';
|
9
|
-
declare function
|
9
|
+
export declare function addErrorTips(errors: string[], color?: {
|
10
|
+
gray: (message: string) => string;
|
11
|
+
cyan: (message: string) => string;
|
12
|
+
green: (message: string) => string;
|
13
|
+
yellow: (message: string) => string;
|
14
|
+
underline: (message: string) => string;
|
15
|
+
}): string[];
|
16
|
+
declare function formatWebpackMessages(json?: Pick<StatsCompilation, 'errors' | 'warnings'>, color?: {
|
17
|
+
gray: (message: string) => string;
|
18
|
+
cyan: (message: string) => string;
|
19
|
+
green: (message: string) => string;
|
20
|
+
yellow: (message: string) => string;
|
21
|
+
underline: (message: string) => string;
|
22
|
+
}): {
|
10
23
|
errors: string[];
|
11
24
|
warnings: string[];
|
12
25
|
};
|
package/package.json
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
"modern",
|
16
16
|
"modern.js"
|
17
17
|
],
|
18
|
-
"version": "2.
|
18
|
+
"version": "2.28.0",
|
19
19
|
"jsnext:source": "./src/index.ts",
|
20
20
|
"types": "./dist/types/index.d.ts",
|
21
21
|
"main": "./dist/cjs/index.js",
|
@@ -235,9 +235,9 @@
|
|
235
235
|
"typescript": "^5",
|
236
236
|
"webpack": "^5.88.1",
|
237
237
|
"@types/serialize-javascript": "^5.0.1",
|
238
|
-
"@modern-js/types": "2.
|
239
|
-
"@scripts/
|
240
|
-
"@scripts/
|
238
|
+
"@modern-js/types": "2.28.0",
|
239
|
+
"@scripts/build": "2.28.0",
|
240
|
+
"@scripts/jest-config": "2.28.0"
|
241
241
|
},
|
242
242
|
"sideEffects": false,
|
243
243
|
"scripts": {
|