@modern-js/utils 2.12.0 → 2.12.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{alias.js → cjs/alias.js} +4 -15
- package/dist/{analyzeProject.js → cjs/analyzeProject.js} +5 -25
- package/dist/{babel.js → cjs/babel.js} +9 -16
- package/dist/{compatRequire.js → cjs/compatRequire.js} +4 -17
- package/dist/{compiled.js → cjs/compiled.js} +3 -3
- package/dist/cjs/emptyDir.js +32 -0
- package/dist/{getEntryOptions.js → cjs/getEntryOptions.js} +1 -15
- package/dist/{getPackageManager.js → cjs/getPackageManager.js} +19 -41
- package/dist/{getPort.js → cjs/getPort.js} +4 -24
- package/dist/{getServerConfig.js → cjs/getServerConfig.js} +2 -22
- package/dist/{import.js → cjs/import.js} +1 -1
- package/dist/{logger.js → cjs/logger.js} +5 -16
- package/dist/{monorepo.js → cjs/monorepo.js} +4 -15
- package/dist/cjs/nodeEnv.js +55 -0
- package/dist/{path.js → cjs/path.js} +1 -1
- package/dist/{pathSerializer.js → cjs/pathSerializer.js} +1 -1
- package/dist/{react.js → cjs/react.js} +4 -15
- package/dist/{runtimeExports.js → cjs/runtimeExports.js} +1 -1
- package/dist/{universal → cjs/universal}/nestedRoutes.js +2 -19
- package/dist/cjs/version.js +59 -0
- package/dist/{watch.js → cjs/watch.js} +9 -29
- package/dist/esm/FileSizeReporter.js +180 -0
- package/dist/esm/alias.js +83 -0
- package/dist/esm/analyzeProject.js +168 -0
- package/dist/esm/applyOptionsChain.js +26 -0
- package/dist/esm/babel.js +169 -0
- package/dist/esm/chainId.js +92 -0
- package/dist/esm/clearConsole.js +6 -0
- package/dist/esm/commands.js +17 -0
- package/dist/esm/compatRequire.js +68 -0
- package/dist/esm/compiled.js +34 -0
- package/dist/esm/constants.js +317 -0
- package/dist/esm/debug.js +5 -0
- package/dist/esm/emptyDir.js +158 -0
- package/dist/esm/ensureAbsolutePath.js +5 -0
- package/dist/esm/ensureArray.js +9 -0
- package/dist/esm/findExists.js +27 -0
- package/dist/esm/generateMetaTags.js +40 -0
- package/dist/esm/getBrowserslist.js +12 -0
- package/dist/esm/getCoreJsVersion.js +57 -0
- package/dist/esm/getEntryOptions.js +45 -0
- package/dist/esm/getPackageManager.js +187 -0
- package/dist/esm/getPort.js +215 -0
- package/dist/esm/getServerConfig.js +145 -0
- package/dist/esm/getTargetDir.js +6 -0
- package/dist/esm/import.js +8 -0
- package/dist/esm/index.js +44 -0
- package/dist/esm/is/index.js +85 -0
- package/dist/esm/is/nodeEnv.js +16 -0
- package/dist/esm/is/platform.js +7 -0
- package/dist/esm/is/type.js +25 -0
- package/dist/esm/logger.js +207 -0
- package/dist/esm/monorepo.js +109 -0
- package/dist/esm/nodeEnv.js +258 -0
- package/dist/esm/path.js +85 -0
- package/dist/esm/pathSerializer.js +85 -0
- package/dist/esm/plugin.js +45 -0
- package/dist/esm/prettyInstructions.js +96 -0
- package/dist/esm/printBuildError.js +24 -0
- package/dist/esm/react.js +43 -0
- package/dist/esm/readTsConfig.js +10 -0
- package/dist/esm/removeSlash.js +10 -0
- package/dist/esm/resolve.js +42 -0
- package/dist/esm/routes.js +19 -0
- package/dist/esm/runtimeExports.js +65 -0
- package/dist/esm/ssr.js +3 -0
- package/dist/esm/storage.js +36 -0
- package/dist/esm/testUtils.js +13 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/universal/constants.js +3 -0
- package/dist/esm/universal/formatWebpack.js +108 -0
- package/dist/esm/universal/nestedRoutes.js +174 -0
- package/dist/esm/universal/remixRouter.js +1 -0
- package/dist/esm/universal/serialize.js +7 -0
- package/dist/esm/version.js +193 -0
- package/dist/esm/wait.js +7 -0
- package/dist/esm/watch.js +230 -0
- package/dist/esm-node/FileSizeReporter.js +133 -0
- package/dist/esm-node/alias.js +61 -0
- package/dist/esm-node/analyzeProject.js +17 -0
- package/dist/esm-node/applyOptionsChain.js +35 -0
- package/dist/esm-node/babel.js +105 -0
- package/dist/esm-node/chainId.js +173 -0
- package/dist/esm-node/clearConsole.js +8 -0
- package/dist/esm-node/commands.js +22 -0
- package/dist/esm-node/compatRequire.js +42 -0
- package/dist/esm-node/compiled.js +77 -0
- package/dist/esm-node/constants.js +264 -0
- package/dist/esm-node/debug.js +5 -0
- package/dist/esm-node/emptyDir.js +9 -0
- package/dist/esm-node/ensureAbsolutePath.js +5 -0
- package/dist/esm-node/ensureArray.js +9 -0
- package/dist/esm-node/findExists.js +12 -0
- package/dist/esm-node/generateMetaTags.js +38 -0
- package/dist/esm-node/getBrowserslist.js +7 -0
- package/dist/esm-node/getCoreJsVersion.js +13 -0
- package/dist/esm-node/getEntryOptions.js +17 -0
- package/dist/esm-node/getPackageManager.js +32 -0
- package/dist/esm-node/getPort.js +59 -0
- package/dist/esm-node/getServerConfig.js +14 -0
- package/dist/esm-node/getTargetDir.js +8 -0
- package/dist/esm-node/import.js +9 -0
- package/dist/esm-node/index.js +44 -0
- package/dist/esm-node/is/index.js +71 -0
- package/dist/esm-node/is/nodeEnv.js +12 -0
- package/dist/esm-node/is/platform.js +6 -0
- package/dist/esm-node/is/type.js +34 -0
- package/dist/esm-node/logger.js +100 -0
- package/dist/esm-node/monorepo.js +87 -0
- package/dist/esm-node/nodeEnv.js +30 -0
- package/dist/esm-node/path.js +50 -0
- package/dist/esm-node/pathSerializer.js +46 -0
- package/dist/esm-node/plugin.js +23 -0
- package/dist/esm-node/prettyInstructions.js +77 -0
- package/dist/esm-node/printBuildError.js +34 -0
- package/dist/esm-node/react.js +20 -0
- package/dist/esm-node/readTsConfig.js +13 -0
- package/dist/esm-node/removeSlash.js +8 -0
- package/dist/esm-node/resolve.js +38 -0
- package/dist/esm-node/routes.js +24 -0
- package/dist/esm-node/runtimeExports.js +40 -0
- package/dist/esm-node/ssr.js +6 -0
- package/dist/esm-node/storage.js +42 -0
- package/dist/esm-node/testUtils.js +15 -0
- package/dist/esm-node/types.js +0 -0
- package/dist/esm-node/universal/constants.js +6 -0
- package/dist/esm-node/universal/formatWebpack.js +77 -0
- package/dist/esm-node/universal/nestedRoutes.js +93 -0
- package/dist/esm-node/universal/remixRouter.js +1 -0
- package/dist/esm-node/universal/serialize.js +7 -0
- package/dist/esm-node/version.js +25 -0
- package/dist/esm-node/wait.js +6 -0
- package/dist/esm-node/watch.js +36 -0
- package/dist/types/compiled.d.ts +43 -0
- package/dist/{debug.d.ts → types/debug.d.ts} +1 -1
- package/dist/{logger.d.ts → types/logger.d.ts} +1 -1
- package/package.json +53 -21
- package/dist/compiled.d.ts +0 -43
- package/dist/emptyDir.js +0 -52
- package/dist/nodeEnv.js +0 -81
- package/dist/version.js +0 -92
- /package/dist/{FileSizeReporter.js → cjs/FileSizeReporter.js} +0 -0
- /package/dist/{applyOptionsChain.js → cjs/applyOptionsChain.js} +0 -0
- /package/dist/{chainId.js → cjs/chainId.js} +0 -0
- /package/dist/{clearConsole.js → cjs/clearConsole.js} +0 -0
- /package/dist/{commands.js → cjs/commands.js} +0 -0
- /package/dist/{constants.js → cjs/constants.js} +0 -0
- /package/dist/{debug.js → cjs/debug.js} +0 -0
- /package/dist/{ensureAbsolutePath.js → cjs/ensureAbsolutePath.js} +0 -0
- /package/dist/{ensureArray.js → cjs/ensureArray.js} +0 -0
- /package/dist/{findExists.js → cjs/findExists.js} +0 -0
- /package/dist/{generateMetaTags.js → cjs/generateMetaTags.js} +0 -0
- /package/dist/{getBrowserslist.js → cjs/getBrowserslist.js} +0 -0
- /package/dist/{getCoreJsVersion.js → cjs/getCoreJsVersion.js} +0 -0
- /package/dist/{getTargetDir.js → cjs/getTargetDir.js} +0 -0
- /package/dist/{index.js → cjs/index.js} +0 -0
- /package/dist/{is → cjs/is}/index.js +0 -0
- /package/dist/{is → cjs/is}/nodeEnv.js +0 -0
- /package/dist/{is → cjs/is}/platform.js +0 -0
- /package/dist/{is → cjs/is}/type.js +0 -0
- /package/dist/{plugin.js → cjs/plugin.js} +0 -0
- /package/dist/{prettyInstructions.js → cjs/prettyInstructions.js} +0 -0
- /package/dist/{printBuildError.js → cjs/printBuildError.js} +0 -0
- /package/dist/{readTsConfig.js → cjs/readTsConfig.js} +0 -0
- /package/dist/{removeSlash.js → cjs/removeSlash.js} +0 -0
- /package/dist/{resolve.js → cjs/resolve.js} +0 -0
- /package/dist/{routes.js → cjs/routes.js} +0 -0
- /package/dist/{ssr.js → cjs/ssr.js} +0 -0
- /package/dist/{storage.js → cjs/storage.js} +0 -0
- /package/dist/{testUtils.js → cjs/testUtils.js} +0 -0
- /package/dist/{types.js → cjs/types.js} +0 -0
- /package/dist/{universal → cjs/universal}/constants.js +0 -0
- /package/dist/{universal → cjs/universal}/formatWebpack.js +0 -0
- /package/dist/{universal → cjs/universal}/remixRouter.js +0 -0
- /package/dist/{universal → cjs/universal}/serialize.js +0 -0
- /package/dist/{wait.js → cjs/wait.js} +0 -0
- /package/dist/{FileSizeReporter.d.ts → types/FileSizeReporter.d.ts} +0 -0
- /package/dist/{alias.d.ts → types/alias.d.ts} +0 -0
- /package/dist/{analyzeProject.d.ts → types/analyzeProject.d.ts} +0 -0
- /package/dist/{applyOptionsChain.d.ts → types/applyOptionsChain.d.ts} +0 -0
- /package/dist/{babel.d.ts → types/babel.d.ts} +0 -0
- /package/dist/{chainId.d.ts → types/chainId.d.ts} +0 -0
- /package/dist/{clearConsole.d.ts → types/clearConsole.d.ts} +0 -0
- /package/dist/{commands.d.ts → types/commands.d.ts} +0 -0
- /package/dist/{compatRequire.d.ts → types/compatRequire.d.ts} +0 -0
- /package/dist/{constants.d.ts → types/constants.d.ts} +0 -0
- /package/dist/{emptyDir.d.ts → types/emptyDir.d.ts} +0 -0
- /package/dist/{ensureAbsolutePath.d.ts → types/ensureAbsolutePath.d.ts} +0 -0
- /package/dist/{ensureArray.d.ts → types/ensureArray.d.ts} +0 -0
- /package/dist/{findExists.d.ts → types/findExists.d.ts} +0 -0
- /package/dist/{generateMetaTags.d.ts → types/generateMetaTags.d.ts} +0 -0
- /package/dist/{getBrowserslist.d.ts → types/getBrowserslist.d.ts} +0 -0
- /package/dist/{getCoreJsVersion.d.ts → types/getCoreJsVersion.d.ts} +0 -0
- /package/dist/{getEntryOptions.d.ts → types/getEntryOptions.d.ts} +0 -0
- /package/dist/{getPackageManager.d.ts → types/getPackageManager.d.ts} +0 -0
- /package/dist/{getPort.d.ts → types/getPort.d.ts} +0 -0
- /package/dist/{getServerConfig.d.ts → types/getServerConfig.d.ts} +0 -0
- /package/dist/{getTargetDir.d.ts → types/getTargetDir.d.ts} +0 -0
- /package/dist/{import.d.ts → types/import.d.ts} +0 -0
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
- /package/dist/{is → types/is}/index.d.ts +0 -0
- /package/dist/{is → types/is}/nodeEnv.d.ts +0 -0
- /package/dist/{is → types/is}/platform.d.ts +0 -0
- /package/dist/{is → types/is}/type.d.ts +0 -0
- /package/dist/{monorepo.d.ts → types/monorepo.d.ts} +0 -0
- /package/dist/{nodeEnv.d.ts → types/nodeEnv.d.ts} +0 -0
- /package/dist/{path.d.ts → types/path.d.ts} +0 -0
- /package/dist/{pathSerializer.d.ts → types/pathSerializer.d.ts} +0 -0
- /package/dist/{plugin.d.ts → types/plugin.d.ts} +0 -0
- /package/dist/{prettyInstructions.d.ts → types/prettyInstructions.d.ts} +0 -0
- /package/dist/{printBuildError.d.ts → types/printBuildError.d.ts} +0 -0
- /package/dist/{react.d.ts → types/react.d.ts} +0 -0
- /package/dist/{readTsConfig.d.ts → types/readTsConfig.d.ts} +0 -0
- /package/dist/{removeSlash.d.ts → types/removeSlash.d.ts} +0 -0
- /package/dist/{resolve.d.ts → types/resolve.d.ts} +0 -0
- /package/dist/{routes.d.ts → types/routes.d.ts} +0 -0
- /package/dist/{runtimeExports.d.ts → types/runtimeExports.d.ts} +0 -0
- /package/dist/{ssr.d.ts → types/ssr.d.ts} +0 -0
- /package/dist/{storage.d.ts → types/storage.d.ts} +0 -0
- /package/dist/{testUtils.d.ts → types/testUtils.d.ts} +0 -0
- /package/dist/{types.d.ts → types/types.d.ts} +0 -0
- /package/dist/{universal → types/universal}/constants.d.ts +0 -0
- /package/dist/{universal → types/universal}/formatWebpack.d.ts +0 -0
- /package/dist/{universal → types/universal}/nestedRoutes.d.ts +0 -0
- /package/dist/{universal → types/universal}/remixRouter.d.ts +0 -0
- /package/dist/{universal → types/universal}/serialize.d.ts +0 -0
- /package/dist/{version.d.ts → types/version.d.ts} +0 -0
- /package/dist/{wait.d.ts → types/wait.d.ts} +0 -0
- /package/dist/{watch.d.ts → types/watch.d.ts} +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import os from "os";
|
|
2
|
+
import { chalk } from "./compiled";
|
|
3
|
+
import { isDev, isSingleEntry } from "./is";
|
|
4
|
+
const normalizeUrl = (url) => url.replace(/([^:]\/)\/+/g, "$1");
|
|
5
|
+
const getIpv4Interfaces = () => {
|
|
6
|
+
const interfaces = os.networkInterfaces();
|
|
7
|
+
const ipv4Interfaces = [];
|
|
8
|
+
Object.keys(interfaces).forEach((key) => {
|
|
9
|
+
interfaces[key].forEach((detail) => {
|
|
10
|
+
const familyV4Value = typeof detail.family === "string" ? "IPv4" : 4;
|
|
11
|
+
if (detail.family === familyV4Value) {
|
|
12
|
+
ipv4Interfaces.push(detail);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
return ipv4Interfaces;
|
|
17
|
+
};
|
|
18
|
+
const getAddressUrls = (protocol = "http", port) => {
|
|
19
|
+
const ipv4Interfaces = getIpv4Interfaces();
|
|
20
|
+
return ipv4Interfaces.reduce((memo, detail) => {
|
|
21
|
+
let label = "Network: ";
|
|
22
|
+
let url = `${protocol}://${detail.address}:${port}`;
|
|
23
|
+
if (detail.address.includes(`localhost`) || detail.internal) {
|
|
24
|
+
label = "Local: ";
|
|
25
|
+
url = `${protocol}://localhost:${port}`;
|
|
26
|
+
}
|
|
27
|
+
memo.push({ label, url });
|
|
28
|
+
return memo;
|
|
29
|
+
}, []);
|
|
30
|
+
};
|
|
31
|
+
const prettyInstructions = (appContext, config) => {
|
|
32
|
+
const { entrypoints, serverRoutes, port, apiOnly, checkedEntries } = appContext;
|
|
33
|
+
const urls = getAddressUrls(
|
|
34
|
+
config.dev.https && isDev() ? "https" : "http",
|
|
35
|
+
port
|
|
36
|
+
);
|
|
37
|
+
const routes = !apiOnly ? serverRoutes.filter((route) => route.entryName) : serverRoutes;
|
|
38
|
+
let message = "App running at:\n\n";
|
|
39
|
+
if (isSingleEntry(entrypoints) || apiOnly) {
|
|
40
|
+
message += urls.map(
|
|
41
|
+
({ label, url }) => ` ${chalk.bold(`> ${label.padEnd(10)}`)}${chalk.cyanBright(
|
|
42
|
+
normalizeUrl(`${url}/${routes[0].urlPath}`)
|
|
43
|
+
)}
|
|
44
|
+
`
|
|
45
|
+
).join("");
|
|
46
|
+
} else {
|
|
47
|
+
const maxNameLength = Math.max(...routes.map((r) => r.entryName.length));
|
|
48
|
+
urls.forEach(({ label, url }) => {
|
|
49
|
+
message += ` ${chalk.bold(`> ${label}`)}
|
|
50
|
+
`;
|
|
51
|
+
routes.forEach(({ entryName, urlPath, isSSR }) => {
|
|
52
|
+
if (!checkedEntries.includes(entryName)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
message += ` ${chalk.yellowBright(
|
|
56
|
+
isSSR ? "λ" : "○"
|
|
57
|
+
)} ${chalk.yellowBright(
|
|
58
|
+
entryName.padEnd(maxNameLength + 8)
|
|
59
|
+
)}${chalk.cyanBright(normalizeUrl(`${url}/${urlPath}`))}
|
|
60
|
+
`;
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
message += "\n";
|
|
64
|
+
message += chalk.cyanBright(
|
|
65
|
+
" λ (Server) server-side renders at runtime\n"
|
|
66
|
+
);
|
|
67
|
+
message += chalk.cyanBright(
|
|
68
|
+
" ○ (Static) client-side renders as static HTML\n"
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return message;
|
|
72
|
+
};
|
|
73
|
+
export {
|
|
74
|
+
getAddressUrls,
|
|
75
|
+
getIpv4Interfaces,
|
|
76
|
+
prettyInstructions
|
|
77
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { chalk } from "./compiled";
|
|
2
|
+
import { logger } from "./logger";
|
|
3
|
+
function printBuildError(err) {
|
|
4
|
+
const message = err != null && err.message;
|
|
5
|
+
const stack = err != null && err.stack;
|
|
6
|
+
if (stack && typeof message === "string" && message.indexOf("from Terser") !== -1) {
|
|
7
|
+
try {
|
|
8
|
+
const matched = /(.+)\[(.+):(.+),(.+)\]\[.+\]/.exec(stack);
|
|
9
|
+
if (!matched) {
|
|
10
|
+
throw new Error("Using errors for control flow is bad.");
|
|
11
|
+
}
|
|
12
|
+
const problemPath = matched[2];
|
|
13
|
+
const line = matched[3];
|
|
14
|
+
const column = matched[4];
|
|
15
|
+
logger.error(
|
|
16
|
+
`Failed to minify the code from this file:
|
|
17
|
+
|
|
18
|
+
${chalk.yellow(
|
|
19
|
+
` ${problemPath}:${line}${column !== "0" ? ":" + column : ""}`
|
|
20
|
+
)}
|
|
21
|
+
`
|
|
22
|
+
);
|
|
23
|
+
} catch (ignored) {
|
|
24
|
+
logger.error(`Failed to minify the bundle. ${err}
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
logger.error((message || err) + "\n");
|
|
29
|
+
}
|
|
30
|
+
logger.log();
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
printBuildError
|
|
34
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fs, semver } from ".";
|
|
3
|
+
const isBeyondReact17 = (cwd) => {
|
|
4
|
+
const pkgPath = path.join(cwd, "package.json");
|
|
5
|
+
if (!fs.existsSync(pkgPath)) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const pkgInfo = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
9
|
+
const deps = {
|
|
10
|
+
...pkgInfo.devDependencies,
|
|
11
|
+
...pkgInfo.dependencies
|
|
12
|
+
};
|
|
13
|
+
if (typeof deps.react !== "string") {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return semver.satisfies(semver.minVersion(deps.react), ">=17.0.0");
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
isBeyondReact17
|
|
20
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fs, json5 } from "./compiled";
|
|
3
|
+
const readTsConfig = (root) => {
|
|
4
|
+
return readTsConfigByFile(path.resolve(root, "./tsconfig.json"));
|
|
5
|
+
};
|
|
6
|
+
const readTsConfigByFile = (filename) => {
|
|
7
|
+
const content = fs.readFileSync(path.resolve(filename), "utf-8");
|
|
8
|
+
return json5.parse(content);
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
readTsConfig,
|
|
12
|
+
readTsConfigByFile
|
|
13
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ensureArray } from "./ensureArray";
|
|
2
|
+
const tryResolve = (name, resolvePath) => {
|
|
3
|
+
let filePath = "";
|
|
4
|
+
try {
|
|
5
|
+
filePath = require.resolve(name, { paths: [resolvePath] });
|
|
6
|
+
delete require.cache[filePath];
|
|
7
|
+
} catch (err) {
|
|
8
|
+
if (err.code === "MODULE_NOT_FOUND") {
|
|
9
|
+
throw new Error(`Can not find module ${name}.`);
|
|
10
|
+
}
|
|
11
|
+
throw err;
|
|
12
|
+
}
|
|
13
|
+
return filePath;
|
|
14
|
+
};
|
|
15
|
+
const isPackageInstalled = (name, resolvePaths) => {
|
|
16
|
+
try {
|
|
17
|
+
require.resolve(name, { paths: ensureArray(resolvePaths) });
|
|
18
|
+
return true;
|
|
19
|
+
} catch (err) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const getAntdMajorVersion = (appDirectory) => {
|
|
24
|
+
try {
|
|
25
|
+
const pkgJsonPath = require.resolve("antd/package.json", {
|
|
26
|
+
paths: [appDirectory]
|
|
27
|
+
});
|
|
28
|
+
const { version } = require(pkgJsonPath);
|
|
29
|
+
return Number(version.split(".")[0]);
|
|
30
|
+
} catch (err) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export {
|
|
35
|
+
getAntdMajorVersion,
|
|
36
|
+
isPackageInstalled,
|
|
37
|
+
tryResolve
|
|
38
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { normalizeToPosixPath } from "./path";
|
|
3
|
+
import { MAIN_ENTRY_NAME } from "./constants";
|
|
4
|
+
const getPathWithoutExt = (filename) => {
|
|
5
|
+
const extname = path.extname(filename);
|
|
6
|
+
return filename.slice(0, -extname.length);
|
|
7
|
+
};
|
|
8
|
+
const getRouteId = (componentPath, routesDir, entryName) => {
|
|
9
|
+
const relativePath = normalizeToPosixPath(
|
|
10
|
+
path.relative(routesDir, componentPath)
|
|
11
|
+
);
|
|
12
|
+
const pathWithoutExt = getPathWithoutExt(relativePath);
|
|
13
|
+
let id = ``;
|
|
14
|
+
if (entryName === MAIN_ENTRY_NAME) {
|
|
15
|
+
id = pathWithoutExt;
|
|
16
|
+
} else {
|
|
17
|
+
id = `${entryName}_${pathWithoutExt}`;
|
|
18
|
+
}
|
|
19
|
+
return id;
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
getPathWithoutExt,
|
|
23
|
+
getRouteId
|
|
24
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fs } from "./compiled";
|
|
3
|
+
import { normalizeOutputPath } from "./path";
|
|
4
|
+
const memo = (fn) => {
|
|
5
|
+
const cache = /* @__PURE__ */ new Map();
|
|
6
|
+
return (...params) => {
|
|
7
|
+
const stringifiedParams = JSON.stringify(params);
|
|
8
|
+
const cachedResult = cache.get(stringifiedParams);
|
|
9
|
+
if (cachedResult) {
|
|
10
|
+
return cachedResult;
|
|
11
|
+
}
|
|
12
|
+
const res = fn(...params);
|
|
13
|
+
cache.set(stringifiedParams, res);
|
|
14
|
+
return res;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
const createRuntimeExportsUtils = memo(
|
|
18
|
+
(pwd = "", namespace = "index") => {
|
|
19
|
+
const entryExportFile = path.join(pwd, `.runtime-exports/${namespace}.js`);
|
|
20
|
+
const addExport = (statement) => {
|
|
21
|
+
statement = normalizeOutputPath(statement);
|
|
22
|
+
try {
|
|
23
|
+
fs.ensureFileSync(entryExportFile);
|
|
24
|
+
if (!fs.readFileSync(entryExportFile, "utf8").includes(statement)) {
|
|
25
|
+
fs.appendFileSync(entryExportFile, `${statement}
|
|
26
|
+
`);
|
|
27
|
+
}
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const getPath = () => entryExportFile;
|
|
32
|
+
return {
|
|
33
|
+
addExport,
|
|
34
|
+
getPath
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
export {
|
|
39
|
+
createRuntimeExportsUtils
|
|
40
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as ah from "async_hooks";
|
|
2
|
+
const createStorage = () => {
|
|
3
|
+
let storage;
|
|
4
|
+
if (typeof ah.AsyncLocalStorage !== "undefined") {
|
|
5
|
+
storage = new ah.AsyncLocalStorage();
|
|
6
|
+
}
|
|
7
|
+
const run = (context, cb) => {
|
|
8
|
+
if (!storage) {
|
|
9
|
+
throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
|
|
10
|
+
`);
|
|
11
|
+
}
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
storage.run(context, () => {
|
|
14
|
+
try {
|
|
15
|
+
return resolve(cb());
|
|
16
|
+
} catch (error) {
|
|
17
|
+
return reject(error);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
const useContext = () => {
|
|
23
|
+
if (!storage) {
|
|
24
|
+
throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
const context = storage.getStore();
|
|
28
|
+
if (!context) {
|
|
29
|
+
throw new Error(
|
|
30
|
+
`Can't call useContext out of scope, make sure @modern-js/utils is a single version in node_modules`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return context;
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
run,
|
|
37
|
+
useContext
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export {
|
|
41
|
+
createStorage
|
|
42
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const initSnapshotSerializer = (root) => {
|
|
2
|
+
expect.addSnapshotSerializer({
|
|
3
|
+
test: (val) => typeof val === "string" && (val.includes("modern.js") || val.includes("node_modules") || val.includes(root)),
|
|
4
|
+
print: (val) => (
|
|
5
|
+
// eslint-disable-next-line no-nested-ternary
|
|
6
|
+
typeof val === "string" ? (
|
|
7
|
+
// eslint-disable-next-line no-nested-ternary
|
|
8
|
+
val.includes("node_modules") ? `"${val.replace(/.+node_modules/, ``).replace(/\\/g, "/")}"` : val.includes("modern.js") ? `"${val.replace(/.+modern\.js/, ``).replace(/\\/g, "/")}"` : `"${val.replace(root, "").replace(/\\/g, "/")}"`
|
|
9
|
+
) : val
|
|
10
|
+
)
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
initSnapshotSerializer
|
|
15
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const friendlySyntaxErrorLabel = "SyntaxError:";
|
|
2
|
+
function isLikelyASyntaxError(message) {
|
|
3
|
+
return message.includes(friendlySyntaxErrorLabel);
|
|
4
|
+
}
|
|
5
|
+
function formatMessage(stats) {
|
|
6
|
+
let lines = [];
|
|
7
|
+
let message;
|
|
8
|
+
if (typeof stats === "object") {
|
|
9
|
+
const fileName = stats.moduleName ? `File: ${stats.moduleName}
|
|
10
|
+
` : "";
|
|
11
|
+
const mainMessage = typeof stats.formatted === "string" ? stats.formatted : stats.message;
|
|
12
|
+
const details = stats.details ? `
|
|
13
|
+
Details: ${stats.details}
|
|
14
|
+
` : "";
|
|
15
|
+
const stack = stats.stack ? `
|
|
16
|
+
${stats.stack}` : "";
|
|
17
|
+
message = `${fileName}${mainMessage}${details}${stack}`;
|
|
18
|
+
} else {
|
|
19
|
+
message = stats;
|
|
20
|
+
}
|
|
21
|
+
lines = message.split("\n");
|
|
22
|
+
lines = lines.map((line) => {
|
|
23
|
+
const parsingError = /Line (\d+):(?:(\d+):)?\s*Parsing error: (.+)$/.exec(
|
|
24
|
+
line
|
|
25
|
+
);
|
|
26
|
+
if (!parsingError) {
|
|
27
|
+
return line;
|
|
28
|
+
}
|
|
29
|
+
const [, errorLine, errorColumn, errorMessage] = parsingError;
|
|
30
|
+
return `${friendlySyntaxErrorLabel} ${errorMessage} (${errorLine}:${errorColumn})`;
|
|
31
|
+
});
|
|
32
|
+
message = lines.join("\n");
|
|
33
|
+
message = message.replace(
|
|
34
|
+
/SyntaxError\s+\((\d+):(\d+)\)\s*(.+?)\n/g,
|
|
35
|
+
`${friendlySyntaxErrorLabel} $3 ($1:$2)
|
|
36
|
+
`
|
|
37
|
+
);
|
|
38
|
+
lines = message.split("\n");
|
|
39
|
+
if (lines.length > 2 && lines[1].trim() === "") {
|
|
40
|
+
lines.splice(1, 1);
|
|
41
|
+
}
|
|
42
|
+
lines[0] = lines[0].replace(/^(.*) \d+:\d+-\d+$/, "$1");
|
|
43
|
+
if (lines[1] && lines[1].indexOf("Module not found:") !== -1) {
|
|
44
|
+
lines[1] = lines[1].replace("Error: ", "");
|
|
45
|
+
}
|
|
46
|
+
message = lines.join("\n");
|
|
47
|
+
message = message.replace(
|
|
48
|
+
/^\s*at\s((?!webpack:).)*:\d+:\d+[\s)]*(\n|$)/gm,
|
|
49
|
+
""
|
|
50
|
+
);
|
|
51
|
+
message = message.replace(/^\s*at\s<anonymous>(\n|$)/gm, "");
|
|
52
|
+
lines = message.split("\n");
|
|
53
|
+
lines = lines.filter(
|
|
54
|
+
(line, index, arr) => index === 0 || line.trim() !== "" || line.trim() !== arr[index - 1].trim()
|
|
55
|
+
);
|
|
56
|
+
message = lines.join("\n");
|
|
57
|
+
return message.trim();
|
|
58
|
+
}
|
|
59
|
+
function formatWebpackMessages(json) {
|
|
60
|
+
var _a, _b, _c;
|
|
61
|
+
const formattedErrors = (_a = json == null ? void 0 : json.errors) == null ? void 0 : _a.map(formatMessage);
|
|
62
|
+
const formattedWarnings = (_b = json == null ? void 0 : json.warnings) == null ? void 0 : _b.map(formatMessage);
|
|
63
|
+
const result = {
|
|
64
|
+
errors: formattedErrors || [],
|
|
65
|
+
warnings: formattedWarnings || []
|
|
66
|
+
};
|
|
67
|
+
if ((_c = result.errors) == null ? void 0 : _c.some(isLikelyASyntaxError)) {
|
|
68
|
+
result.errors = result.errors.filter(isLikelyASyntaxError);
|
|
69
|
+
}
|
|
70
|
+
if (result.errors.length > 1) {
|
|
71
|
+
result.errors.length = 1;
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
formatWebpackMessages
|
|
77
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Suspense } from "react";
|
|
3
|
+
import {
|
|
4
|
+
createRoutesFromElements,
|
|
5
|
+
Route
|
|
6
|
+
} from "react-router-dom";
|
|
7
|
+
const transformNestedRoutes = (routes) => {
|
|
8
|
+
const routeElements = [];
|
|
9
|
+
for (const route of routes) {
|
|
10
|
+
const routeElement = renderNestedRoute(route);
|
|
11
|
+
routeElements.push(routeElement);
|
|
12
|
+
}
|
|
13
|
+
return createRoutesFromElements(routeElements);
|
|
14
|
+
};
|
|
15
|
+
const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
16
|
+
const { children, index, id, component, isRoot, lazyImport } = nestedRoute;
|
|
17
|
+
const Component = component;
|
|
18
|
+
const { parent, DeferredDataComponent, props = {} } = options;
|
|
19
|
+
const routeProps = {
|
|
20
|
+
caseSensitive: nestedRoute.caseSensitive,
|
|
21
|
+
path: nestedRoute.path,
|
|
22
|
+
id: nestedRoute.id,
|
|
23
|
+
loader: createLoader(nestedRoute),
|
|
24
|
+
action: nestedRoute.action,
|
|
25
|
+
hasErrorBoundary: nestedRoute.hasErrorBoundary,
|
|
26
|
+
shouldRevalidate: nestedRoute.shouldRevalidate,
|
|
27
|
+
handle: nestedRoute.handle,
|
|
28
|
+
index: nestedRoute.index,
|
|
29
|
+
element: nestedRoute.element,
|
|
30
|
+
errorElement: nestedRoute.errorElement
|
|
31
|
+
};
|
|
32
|
+
if (nestedRoute.error) {
|
|
33
|
+
const errorElement = /* @__PURE__ */ jsx(nestedRoute.error, {});
|
|
34
|
+
routeProps.errorElement = errorElement;
|
|
35
|
+
}
|
|
36
|
+
let element;
|
|
37
|
+
if (Component) {
|
|
38
|
+
if ((parent == null ? void 0 : parent.loading) && lazyImport) {
|
|
39
|
+
const Loading = parent.loading;
|
|
40
|
+
if (isLoadableComponent(Component)) {
|
|
41
|
+
element = /* @__PURE__ */ jsx(Component, { fallback: /* @__PURE__ */ jsx(Loading, {}) });
|
|
42
|
+
} else {
|
|
43
|
+
element = /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Loading, {}), children: /* @__PURE__ */ jsx(Component, {}) });
|
|
44
|
+
}
|
|
45
|
+
} else if (isLoadableComponent(Component) && lazyImport) {
|
|
46
|
+
element = /* @__PURE__ */ jsx(Component, {});
|
|
47
|
+
} else if (isRoot) {
|
|
48
|
+
element = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
49
|
+
/* @__PURE__ */ jsx(Component, { ...props }),
|
|
50
|
+
typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ jsx(DeferredDataComponent, {})
|
|
51
|
+
] });
|
|
52
|
+
} else if (lazyImport) {
|
|
53
|
+
element = /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Component, {}) });
|
|
54
|
+
} else {
|
|
55
|
+
element = /* @__PURE__ */ jsx(Component, {});
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
nestedRoute.loading = parent == null ? void 0 : parent.loading;
|
|
59
|
+
}
|
|
60
|
+
if (element) {
|
|
61
|
+
routeProps.element = element;
|
|
62
|
+
}
|
|
63
|
+
const childElements = children == null ? void 0 : children.map((childRoute) => {
|
|
64
|
+
return renderNestedRoute(childRoute, { parent: nestedRoute });
|
|
65
|
+
});
|
|
66
|
+
const routeElement = index ? /* @__PURE__ */ jsx(Route, { ...routeProps, index: true }, id) : /* @__PURE__ */ jsx(Route, { ...routeProps, index: false, children: childElements }, id);
|
|
67
|
+
return routeElement;
|
|
68
|
+
};
|
|
69
|
+
function createLoader(route) {
|
|
70
|
+
const { loader } = route;
|
|
71
|
+
if (loader) {
|
|
72
|
+
return (args) => {
|
|
73
|
+
if (typeof route.lazyImport === "function") {
|
|
74
|
+
route.lazyImport();
|
|
75
|
+
}
|
|
76
|
+
return loader(args);
|
|
77
|
+
};
|
|
78
|
+
} else {
|
|
79
|
+
return () => {
|
|
80
|
+
if (typeof route.lazyImport === "function") {
|
|
81
|
+
route.lazyImport();
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function isLoadableComponent(component) {
|
|
88
|
+
return component && component.displayName === "Loadable" && component.preload && typeof component.preload === "function";
|
|
89
|
+
}
|
|
90
|
+
export {
|
|
91
|
+
renderNestedRoute,
|
|
92
|
+
transformNestedRoutes
|
|
93
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@remix-run/router";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fs, execa, semver } from "./compiled";
|
|
3
|
+
async function getPnpmVersion() {
|
|
4
|
+
const { stdout } = await execa("pnpm", ["--version"]);
|
|
5
|
+
return stdout;
|
|
6
|
+
}
|
|
7
|
+
const isReact18 = (cwd) => {
|
|
8
|
+
const pkgPath = path.join(cwd, "package.json");
|
|
9
|
+
if (!fs.existsSync(pkgPath)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const pkgInfo = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
13
|
+
const deps = {
|
|
14
|
+
...pkgInfo.devDependencies,
|
|
15
|
+
...pkgInfo.dependencies
|
|
16
|
+
};
|
|
17
|
+
if (typeof deps.react !== "string") {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return semver.satisfies(semver.minVersion(deps.react), ">=18.0.0");
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
getPnpmVersion,
|
|
24
|
+
isReact18
|
|
25
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import { chokidar } from "./compiled";
|
|
3
|
+
const WatchChangeType = {
|
|
4
|
+
ADD: "add",
|
|
5
|
+
UNLINK: "unlink",
|
|
6
|
+
CHANGE: "change"
|
|
7
|
+
};
|
|
8
|
+
const watch = (watchDir, runTask, ignored = []) => {
|
|
9
|
+
let ready = false;
|
|
10
|
+
const watcher = chokidar.watch(watchDir, {
|
|
11
|
+
ignored
|
|
12
|
+
});
|
|
13
|
+
watcher.on("ready", () => ready = true);
|
|
14
|
+
watcher.on("change", async (filePath) => {
|
|
15
|
+
const changedFilePath = path.resolve(filePath);
|
|
16
|
+
await runTask({ changedFilePath, changeType: WatchChangeType.CHANGE });
|
|
17
|
+
});
|
|
18
|
+
watcher.on("add", async (filePath) => {
|
|
19
|
+
const changedFilePath = path.resolve(filePath);
|
|
20
|
+
if (ready) {
|
|
21
|
+
await runTask({ changedFilePath, changeType: WatchChangeType.ADD });
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
watcher.on("unlink", async (filePath) => {
|
|
25
|
+
const changedFilePath = path.resolve(filePath);
|
|
26
|
+
await runTask({ changedFilePath, changeType: WatchChangeType.UNLINK });
|
|
27
|
+
});
|
|
28
|
+
watcher.on("error", (err) => {
|
|
29
|
+
throw err;
|
|
30
|
+
});
|
|
31
|
+
return watcher;
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
WatchChangeType,
|
|
35
|
+
watch
|
|
36
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export { default as fs } from '@compiled/fs-extra';
|
|
2
|
+
export { default as ora } from '@compiled/ora';
|
|
3
|
+
export { default as glob } from '@compiled/glob';
|
|
4
|
+
export { default as yaml } from '@compiled/js-yaml';
|
|
5
|
+
export { default as chalk } from '@compiled/chalk';
|
|
6
|
+
export { default as debug } from '@compiled/debug';
|
|
7
|
+
export { default as slash } from '@compiled/slash';
|
|
8
|
+
export { default as execa } from '@compiled/execa';
|
|
9
|
+
export { default as json5 } from '@compiled/json5';
|
|
10
|
+
export { default as upath } from '@compiled/upath';
|
|
11
|
+
export { default as pkgUp } from '@compiled/pkg-up';
|
|
12
|
+
export { nanoid } from '@compiled/nanoid';
|
|
13
|
+
export { default as semver } from '@compiled/semver';
|
|
14
|
+
export { default as dotenv } from '@compiled/dotenv';
|
|
15
|
+
export { default as lodash } from '@compiled/lodash';
|
|
16
|
+
export { default as globby } from '@compiled/globby';
|
|
17
|
+
export { default as address } from '@compiled/address';
|
|
18
|
+
export { default as signale } from '@compiled/signale';
|
|
19
|
+
export { default as urlJoin } from '@compiled/url-join';
|
|
20
|
+
export { default as minimist } from '@compiled/minimist';
|
|
21
|
+
export { default as fastGlob } from '@compiled/fast-glob';
|
|
22
|
+
export { default as filesize } from '@compiled/filesize';
|
|
23
|
+
export { default as gzipSize } from '@compiled/gzip-size';
|
|
24
|
+
export { default as stripAnsi } from '@compiled/strip-ansi';
|
|
25
|
+
export { default as dotenvExpand } from '@compiled/dotenv-expand';
|
|
26
|
+
export { default as browserslist } from '@compiled/browserslist';
|
|
27
|
+
export { default as recursiveReaddir } from '@compiled/recursive-readdir';
|
|
28
|
+
export { program, Command } from '@compiled/commander';
|
|
29
|
+
export { Signale } from '@compiled/signale';
|
|
30
|
+
export type { SignaleOptions } from '@compiled/signale';
|
|
31
|
+
export type { IOptions as GlobOptions } from '@compiled/glob';
|
|
32
|
+
export type { GlobbyOptions } from '@compiled/globby';
|
|
33
|
+
export type { FSWatcher, WatchOptions } from '@compiled/chokidar';
|
|
34
|
+
export type { ExecaError } from '@compiled/execa';
|
|
35
|
+
export type { default as WebpackChain } from '@compiled/webpack-chain';
|
|
36
|
+
/**
|
|
37
|
+
* Lazy import some expensive modules that will slow down startup speed.
|
|
38
|
+
* Notice that `csmith-tools build` can not bundle lazy imported modules.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
export declare const mime: typeof import('@compiled/mime-types');
|
|
42
|
+
export declare const chokidar: typeof import('@compiled/chokidar');
|
|
43
|
+
export declare const inquirer: typeof import('@compiled/inquirer');
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* @param scope - Custom module name of your debug function.
|
|
4
4
|
* @returns Debug function which namespace start with modern-js:.
|
|
5
5
|
*/
|
|
6
|
-
export declare const createDebugger: (scope: string) => import("
|
|
6
|
+
export declare const createDebugger: (scope: string) => import("@compiled/debug").Debugger;
|