@modern-js/utils 2.12.0 → 2.12.1-alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. package/dist/{alias.js → cjs/alias.js} +4 -15
  2. package/dist/{analyzeProject.js → cjs/analyzeProject.js} +5 -25
  3. package/dist/{babel.js → cjs/babel.js} +9 -16
  4. package/dist/{compatRequire.js → cjs/compatRequire.js} +4 -17
  5. package/dist/{compiled.js → cjs/compiled.js} +3 -3
  6. package/dist/cjs/emptyDir.js +32 -0
  7. package/dist/{getEntryOptions.js → cjs/getEntryOptions.js} +1 -15
  8. package/dist/{getPackageManager.js → cjs/getPackageManager.js} +19 -41
  9. package/dist/{getPort.js → cjs/getPort.js} +4 -24
  10. package/dist/{getServerConfig.js → cjs/getServerConfig.js} +2 -22
  11. package/dist/{import.js → cjs/import.js} +1 -1
  12. package/dist/{logger.js → cjs/logger.js} +5 -16
  13. package/dist/{monorepo.js → cjs/monorepo.js} +4 -15
  14. package/dist/cjs/nodeEnv.js +55 -0
  15. package/dist/{path.js → cjs/path.js} +1 -1
  16. package/dist/{pathSerializer.js → cjs/pathSerializer.js} +1 -1
  17. package/dist/{react.js → cjs/react.js} +4 -15
  18. package/dist/{runtimeExports.js → cjs/runtimeExports.js} +1 -1
  19. package/dist/{universal → cjs/universal}/nestedRoutes.js +2 -19
  20. package/dist/cjs/version.js +59 -0
  21. package/dist/{watch.js → cjs/watch.js} +9 -29
  22. package/dist/esm/FileSizeReporter.js +180 -0
  23. package/dist/esm/alias.js +83 -0
  24. package/dist/esm/analyzeProject.js +168 -0
  25. package/dist/esm/applyOptionsChain.js +26 -0
  26. package/dist/esm/babel.js +169 -0
  27. package/dist/esm/chainId.js +92 -0
  28. package/dist/esm/clearConsole.js +6 -0
  29. package/dist/esm/commands.js +17 -0
  30. package/dist/esm/compatRequire.js +68 -0
  31. package/dist/esm/compiled.js +34 -0
  32. package/dist/esm/constants.js +317 -0
  33. package/dist/esm/debug.js +5 -0
  34. package/dist/esm/emptyDir.js +158 -0
  35. package/dist/esm/ensureAbsolutePath.js +5 -0
  36. package/dist/esm/ensureArray.js +9 -0
  37. package/dist/esm/findExists.js +27 -0
  38. package/dist/esm/generateMetaTags.js +40 -0
  39. package/dist/esm/getBrowserslist.js +12 -0
  40. package/dist/esm/getCoreJsVersion.js +57 -0
  41. package/dist/esm/getEntryOptions.js +45 -0
  42. package/dist/esm/getPackageManager.js +187 -0
  43. package/dist/esm/getPort.js +215 -0
  44. package/dist/esm/getServerConfig.js +145 -0
  45. package/dist/esm/getTargetDir.js +6 -0
  46. package/dist/esm/import.js +8 -0
  47. package/dist/esm/index.js +44 -0
  48. package/dist/esm/is/index.js +85 -0
  49. package/dist/esm/is/nodeEnv.js +16 -0
  50. package/dist/esm/is/platform.js +7 -0
  51. package/dist/esm/is/type.js +25 -0
  52. package/dist/esm/logger.js +207 -0
  53. package/dist/esm/monorepo.js +109 -0
  54. package/dist/esm/nodeEnv.js +258 -0
  55. package/dist/esm/path.js +85 -0
  56. package/dist/esm/pathSerializer.js +85 -0
  57. package/dist/esm/plugin.js +45 -0
  58. package/dist/esm/prettyInstructions.js +96 -0
  59. package/dist/esm/printBuildError.js +24 -0
  60. package/dist/esm/react.js +43 -0
  61. package/dist/esm/readTsConfig.js +10 -0
  62. package/dist/esm/removeSlash.js +10 -0
  63. package/dist/esm/resolve.js +42 -0
  64. package/dist/esm/routes.js +19 -0
  65. package/dist/esm/runtimeExports.js +65 -0
  66. package/dist/esm/ssr.js +3 -0
  67. package/dist/esm/storage.js +36 -0
  68. package/dist/esm/testUtils.js +13 -0
  69. package/dist/esm/types.js +1 -0
  70. package/dist/esm/universal/constants.js +3 -0
  71. package/dist/esm/universal/formatWebpack.js +108 -0
  72. package/dist/esm/universal/nestedRoutes.js +174 -0
  73. package/dist/esm/universal/remixRouter.js +1 -0
  74. package/dist/esm/universal/serialize.js +7 -0
  75. package/dist/esm/version.js +193 -0
  76. package/dist/esm/wait.js +7 -0
  77. package/dist/esm/watch.js +230 -0
  78. package/dist/esm-node/FileSizeReporter.js +133 -0
  79. package/dist/esm-node/alias.js +61 -0
  80. package/dist/esm-node/analyzeProject.js +17 -0
  81. package/dist/esm-node/applyOptionsChain.js +35 -0
  82. package/dist/esm-node/babel.js +105 -0
  83. package/dist/esm-node/chainId.js +173 -0
  84. package/dist/esm-node/clearConsole.js +8 -0
  85. package/dist/esm-node/commands.js +22 -0
  86. package/dist/esm-node/compatRequire.js +42 -0
  87. package/dist/esm-node/compiled.js +77 -0
  88. package/dist/esm-node/constants.js +264 -0
  89. package/dist/esm-node/debug.js +5 -0
  90. package/dist/esm-node/emptyDir.js +9 -0
  91. package/dist/esm-node/ensureAbsolutePath.js +5 -0
  92. package/dist/esm-node/ensureArray.js +9 -0
  93. package/dist/esm-node/findExists.js +12 -0
  94. package/dist/esm-node/generateMetaTags.js +38 -0
  95. package/dist/esm-node/getBrowserslist.js +7 -0
  96. package/dist/esm-node/getCoreJsVersion.js +13 -0
  97. package/dist/esm-node/getEntryOptions.js +17 -0
  98. package/dist/esm-node/getPackageManager.js +32 -0
  99. package/dist/esm-node/getPort.js +59 -0
  100. package/dist/esm-node/getServerConfig.js +14 -0
  101. package/dist/esm-node/getTargetDir.js +8 -0
  102. package/dist/esm-node/import.js +9 -0
  103. package/dist/esm-node/index.js +44 -0
  104. package/dist/esm-node/is/index.js +71 -0
  105. package/dist/esm-node/is/nodeEnv.js +12 -0
  106. package/dist/esm-node/is/platform.js +6 -0
  107. package/dist/esm-node/is/type.js +34 -0
  108. package/dist/esm-node/logger.js +100 -0
  109. package/dist/esm-node/monorepo.js +87 -0
  110. package/dist/esm-node/nodeEnv.js +30 -0
  111. package/dist/esm-node/path.js +50 -0
  112. package/dist/esm-node/pathSerializer.js +46 -0
  113. package/dist/esm-node/plugin.js +23 -0
  114. package/dist/esm-node/prettyInstructions.js +77 -0
  115. package/dist/esm-node/printBuildError.js +34 -0
  116. package/dist/esm-node/react.js +20 -0
  117. package/dist/esm-node/readTsConfig.js +13 -0
  118. package/dist/esm-node/removeSlash.js +8 -0
  119. package/dist/esm-node/resolve.js +38 -0
  120. package/dist/esm-node/routes.js +24 -0
  121. package/dist/esm-node/runtimeExports.js +40 -0
  122. package/dist/esm-node/ssr.js +6 -0
  123. package/dist/esm-node/storage.js +42 -0
  124. package/dist/esm-node/testUtils.js +15 -0
  125. package/dist/esm-node/types.js +0 -0
  126. package/dist/esm-node/universal/constants.js +6 -0
  127. package/dist/esm-node/universal/formatWebpack.js +77 -0
  128. package/dist/esm-node/universal/nestedRoutes.js +93 -0
  129. package/dist/esm-node/universal/remixRouter.js +1 -0
  130. package/dist/esm-node/universal/serialize.js +7 -0
  131. package/dist/esm-node/version.js +25 -0
  132. package/dist/esm-node/wait.js +6 -0
  133. package/dist/esm-node/watch.js +36 -0
  134. package/dist/types/compiled.d.ts +43 -0
  135. package/dist/{debug.d.ts → types/debug.d.ts} +1 -1
  136. package/dist/{logger.d.ts → types/logger.d.ts} +1 -1
  137. package/package.json +53 -21
  138. package/dist/compiled.d.ts +0 -43
  139. package/dist/emptyDir.js +0 -52
  140. package/dist/nodeEnv.js +0 -81
  141. package/dist/version.js +0 -92
  142. /package/dist/{FileSizeReporter.js → cjs/FileSizeReporter.js} +0 -0
  143. /package/dist/{applyOptionsChain.js → cjs/applyOptionsChain.js} +0 -0
  144. /package/dist/{chainId.js → cjs/chainId.js} +0 -0
  145. /package/dist/{clearConsole.js → cjs/clearConsole.js} +0 -0
  146. /package/dist/{commands.js → cjs/commands.js} +0 -0
  147. /package/dist/{constants.js → cjs/constants.js} +0 -0
  148. /package/dist/{debug.js → cjs/debug.js} +0 -0
  149. /package/dist/{ensureAbsolutePath.js → cjs/ensureAbsolutePath.js} +0 -0
  150. /package/dist/{ensureArray.js → cjs/ensureArray.js} +0 -0
  151. /package/dist/{findExists.js → cjs/findExists.js} +0 -0
  152. /package/dist/{generateMetaTags.js → cjs/generateMetaTags.js} +0 -0
  153. /package/dist/{getBrowserslist.js → cjs/getBrowserslist.js} +0 -0
  154. /package/dist/{getCoreJsVersion.js → cjs/getCoreJsVersion.js} +0 -0
  155. /package/dist/{getTargetDir.js → cjs/getTargetDir.js} +0 -0
  156. /package/dist/{index.js → cjs/index.js} +0 -0
  157. /package/dist/{is → cjs/is}/index.js +0 -0
  158. /package/dist/{is → cjs/is}/nodeEnv.js +0 -0
  159. /package/dist/{is → cjs/is}/platform.js +0 -0
  160. /package/dist/{is → cjs/is}/type.js +0 -0
  161. /package/dist/{plugin.js → cjs/plugin.js} +0 -0
  162. /package/dist/{prettyInstructions.js → cjs/prettyInstructions.js} +0 -0
  163. /package/dist/{printBuildError.js → cjs/printBuildError.js} +0 -0
  164. /package/dist/{readTsConfig.js → cjs/readTsConfig.js} +0 -0
  165. /package/dist/{removeSlash.js → cjs/removeSlash.js} +0 -0
  166. /package/dist/{resolve.js → cjs/resolve.js} +0 -0
  167. /package/dist/{routes.js → cjs/routes.js} +0 -0
  168. /package/dist/{ssr.js → cjs/ssr.js} +0 -0
  169. /package/dist/{storage.js → cjs/storage.js} +0 -0
  170. /package/dist/{testUtils.js → cjs/testUtils.js} +0 -0
  171. /package/dist/{types.js → cjs/types.js} +0 -0
  172. /package/dist/{universal → cjs/universal}/constants.js +0 -0
  173. /package/dist/{universal → cjs/universal}/formatWebpack.js +0 -0
  174. /package/dist/{universal → cjs/universal}/remixRouter.js +0 -0
  175. /package/dist/{universal → cjs/universal}/serialize.js +0 -0
  176. /package/dist/{wait.js → cjs/wait.js} +0 -0
  177. /package/dist/{FileSizeReporter.d.ts → types/FileSizeReporter.d.ts} +0 -0
  178. /package/dist/{alias.d.ts → types/alias.d.ts} +0 -0
  179. /package/dist/{analyzeProject.d.ts → types/analyzeProject.d.ts} +0 -0
  180. /package/dist/{applyOptionsChain.d.ts → types/applyOptionsChain.d.ts} +0 -0
  181. /package/dist/{babel.d.ts → types/babel.d.ts} +0 -0
  182. /package/dist/{chainId.d.ts → types/chainId.d.ts} +0 -0
  183. /package/dist/{clearConsole.d.ts → types/clearConsole.d.ts} +0 -0
  184. /package/dist/{commands.d.ts → types/commands.d.ts} +0 -0
  185. /package/dist/{compatRequire.d.ts → types/compatRequire.d.ts} +0 -0
  186. /package/dist/{constants.d.ts → types/constants.d.ts} +0 -0
  187. /package/dist/{emptyDir.d.ts → types/emptyDir.d.ts} +0 -0
  188. /package/dist/{ensureAbsolutePath.d.ts → types/ensureAbsolutePath.d.ts} +0 -0
  189. /package/dist/{ensureArray.d.ts → types/ensureArray.d.ts} +0 -0
  190. /package/dist/{findExists.d.ts → types/findExists.d.ts} +0 -0
  191. /package/dist/{generateMetaTags.d.ts → types/generateMetaTags.d.ts} +0 -0
  192. /package/dist/{getBrowserslist.d.ts → types/getBrowserslist.d.ts} +0 -0
  193. /package/dist/{getCoreJsVersion.d.ts → types/getCoreJsVersion.d.ts} +0 -0
  194. /package/dist/{getEntryOptions.d.ts → types/getEntryOptions.d.ts} +0 -0
  195. /package/dist/{getPackageManager.d.ts → types/getPackageManager.d.ts} +0 -0
  196. /package/dist/{getPort.d.ts → types/getPort.d.ts} +0 -0
  197. /package/dist/{getServerConfig.d.ts → types/getServerConfig.d.ts} +0 -0
  198. /package/dist/{getTargetDir.d.ts → types/getTargetDir.d.ts} +0 -0
  199. /package/dist/{import.d.ts → types/import.d.ts} +0 -0
  200. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  201. /package/dist/{is → types/is}/index.d.ts +0 -0
  202. /package/dist/{is → types/is}/nodeEnv.d.ts +0 -0
  203. /package/dist/{is → types/is}/platform.d.ts +0 -0
  204. /package/dist/{is → types/is}/type.d.ts +0 -0
  205. /package/dist/{monorepo.d.ts → types/monorepo.d.ts} +0 -0
  206. /package/dist/{nodeEnv.d.ts → types/nodeEnv.d.ts} +0 -0
  207. /package/dist/{path.d.ts → types/path.d.ts} +0 -0
  208. /package/dist/{pathSerializer.d.ts → types/pathSerializer.d.ts} +0 -0
  209. /package/dist/{plugin.d.ts → types/plugin.d.ts} +0 -0
  210. /package/dist/{prettyInstructions.d.ts → types/prettyInstructions.d.ts} +0 -0
  211. /package/dist/{printBuildError.d.ts → types/printBuildError.d.ts} +0 -0
  212. /package/dist/{react.d.ts → types/react.d.ts} +0 -0
  213. /package/dist/{readTsConfig.d.ts → types/readTsConfig.d.ts} +0 -0
  214. /package/dist/{removeSlash.d.ts → types/removeSlash.d.ts} +0 -0
  215. /package/dist/{resolve.d.ts → types/resolve.d.ts} +0 -0
  216. /package/dist/{routes.d.ts → types/routes.d.ts} +0 -0
  217. /package/dist/{runtimeExports.d.ts → types/runtimeExports.d.ts} +0 -0
  218. /package/dist/{ssr.d.ts → types/ssr.d.ts} +0 -0
  219. /package/dist/{storage.d.ts → types/storage.d.ts} +0 -0
  220. /package/dist/{testUtils.d.ts → types/testUtils.d.ts} +0 -0
  221. /package/dist/{types.d.ts → types/types.d.ts} +0 -0
  222. /package/dist/{universal → types/universal}/constants.d.ts +0 -0
  223. /package/dist/{universal → types/universal}/formatWebpack.d.ts +0 -0
  224. /package/dist/{universal → types/universal}/nestedRoutes.d.ts +0 -0
  225. /package/dist/{universal → types/universal}/remixRouter.d.ts +0 -0
  226. /package/dist/{universal → types/universal}/serialize.d.ts +0 -0
  227. /package/dist/{version.d.ts → types/version.d.ts} +0 -0
  228. /package/dist/{wait.d.ts → types/wait.d.ts} +0 -0
  229. /package/dist/{watch.d.ts → types/watch.d.ts} +0 -0
@@ -0,0 +1,13 @@
1
+ import * as fs from "../compiled/fs-extra";
2
+ const getCoreJsVersion = (corejsPkgPath) => {
3
+ try {
4
+ const { version } = fs.readJSONSync(corejsPkgPath);
5
+ const [major, minor] = version.split(".");
6
+ return `${major}.${minor}`;
7
+ } catch (err) {
8
+ return "3";
9
+ }
10
+ };
11
+ export {
12
+ getCoreJsVersion
13
+ };
@@ -0,0 +1,17 @@
1
+ import { isPlainObject } from "./is";
2
+ import { MAIN_ENTRY_NAME } from "./constants";
3
+ const getEntryOptions = (name, baseOptions, optionsByEntries, packageName) => {
4
+ if (optionsByEntries) {
5
+ let optionsByEntry = getOptionsByEntryName(name, optionsByEntries);
6
+ if (optionsByEntry === void 0 && name === MAIN_ENTRY_NAME && packageName) {
7
+ optionsByEntry = getOptionsByEntryName(packageName, optionsByEntries);
8
+ }
9
+ return optionsByEntry !== void 0 ? isPlainObject(optionsByEntry) && isPlainObject(baseOptions) ? { ...baseOptions, ...optionsByEntry } : optionsByEntry : baseOptions;
10
+ } else {
11
+ return baseOptions;
12
+ }
13
+ };
14
+ const getOptionsByEntryName = (name, optionsByEntries) => optionsByEntries.hasOwnProperty(name) ? optionsByEntries[name] : void 0;
15
+ export {
16
+ getEntryOptions
17
+ };
@@ -0,0 +1,32 @@
1
+ import os from "os";
2
+ import path from "path";
3
+ import { fs } from "./compiled";
4
+ import { canUsePnpm, canUseYarn } from "./nodeEnv";
5
+ const MAX_TIMES = 5;
6
+ async function getPackageManager(cwd = process.cwd()) {
7
+ let appDirectory = cwd;
8
+ let times = 0;
9
+ while (os.homedir() !== appDirectory && times < MAX_TIMES) {
10
+ times++;
11
+ if (fs.existsSync(path.resolve(appDirectory, "pnpm-lock.yaml"))) {
12
+ return "pnpm";
13
+ }
14
+ if (fs.existsSync(path.resolve(appDirectory, "yarn.lock"))) {
15
+ return "yarn";
16
+ }
17
+ if (fs.existsSync(path.resolve(appDirectory, "package-lock.json"))) {
18
+ return "npm";
19
+ }
20
+ appDirectory = path.join(appDirectory, "..");
21
+ }
22
+ if (await canUsePnpm()) {
23
+ return "pnpm";
24
+ }
25
+ if (await canUseYarn()) {
26
+ return "yarn";
27
+ }
28
+ return "npm";
29
+ }
30
+ export {
31
+ getPackageManager
32
+ };
@@ -0,0 +1,59 @@
1
+ import net from "net";
2
+ import { chalk } from "./compiled";
3
+ import { logger } from "./logger";
4
+ const getPort = async (port, {
5
+ tryLimits = 20,
6
+ strictPort = false
7
+ } = {}) => {
8
+ if (typeof port === "string") {
9
+ port = parseInt(port, 10);
10
+ }
11
+ if (strictPort) {
12
+ tryLimits = 1;
13
+ }
14
+ const original = port;
15
+ let found = false;
16
+ let attempts = 0;
17
+ while (!found && attempts <= tryLimits) {
18
+ try {
19
+ await new Promise((resolve, reject) => {
20
+ const server = net.createServer();
21
+ server.unref();
22
+ server.on("error", reject);
23
+ server.listen(
24
+ {
25
+ port,
26
+ host: "0.0.0.0"
27
+ },
28
+ () => {
29
+ found = true;
30
+ server.close(resolve);
31
+ }
32
+ );
33
+ });
34
+ } catch (e) {
35
+ if (e.code !== "EADDRINUSE") {
36
+ throw e;
37
+ }
38
+ port++;
39
+ attempts++;
40
+ }
41
+ }
42
+ if (port !== original) {
43
+ if (strictPort) {
44
+ throw new Error(
45
+ `Port "${original}" is occupied, please choose another one.`
46
+ );
47
+ } else {
48
+ logger.info(
49
+ `Something is already running on port ${original}. ${chalk.yellow(
50
+ `Use port ${port} instead.`
51
+ )}`
52
+ );
53
+ }
54
+ }
55
+ return port;
56
+ };
57
+ export {
58
+ getPort
59
+ };
@@ -0,0 +1,14 @@
1
+ import * as path from "path";
2
+ import { CONFIG_FILE_EXTENSIONS } from "./constants";
3
+ import { findExists } from "./findExists";
4
+ const getServerConfig = async (appDirectory, configFile) => {
5
+ const configFilePath = findExists(
6
+ CONFIG_FILE_EXTENSIONS.map(
7
+ (extension) => path.resolve(appDirectory, `${configFile}${extension}`)
8
+ )
9
+ );
10
+ return configFilePath;
11
+ };
12
+ export {
13
+ getServerConfig
14
+ };
@@ -0,0 +1,8 @@
1
+ import * as path from "path";
2
+ const getTargetDir = (from, baseDir, targetBaseDir) => {
3
+ const relativePath = path.relative(baseDir, from);
4
+ return path.resolve(targetBaseDir, relativePath);
5
+ };
6
+ export {
7
+ getTargetDir
8
+ };
@@ -0,0 +1,9 @@
1
+ const lazy = (moduleName, requireFn) => {
2
+ const importLazyLocal = require("../@compiled/import-lazy")(requireFn);
3
+ return importLazyLocal(moduleName);
4
+ };
5
+ const Import = { lazy };
6
+ export {
7
+ Import,
8
+ lazy as lazyImport
9
+ };
@@ -0,0 +1,44 @@
1
+ export * from "./compiled";
2
+ export * from "./commands";
3
+ export * from "./FileSizeReporter";
4
+ export * from "./printBuildError";
5
+ export * from "./debug";
6
+ export * from "./findExists";
7
+ export * from "./is";
8
+ export * from "./compatRequire";
9
+ export * from "./logger";
10
+ export * from "./constants";
11
+ export * from "./ensureArray";
12
+ export * from "./ensureAbsolutePath";
13
+ export * from "./clearConsole";
14
+ export * from "./applyOptionsChain";
15
+ export * from "./getBrowserslist";
16
+ export * from "./removeSlash";
17
+ export * from "./getEntryOptions";
18
+ export * from "./getPort";
19
+ export * from "./monorepo";
20
+ export * from "./getPackageManager";
21
+ export * from "./runtimeExports";
22
+ export * from "./readTsConfig";
23
+ export * from "./path";
24
+ export * from "./pathSerializer";
25
+ export * from "./generateMetaTags";
26
+ export * from "./prettyInstructions";
27
+ export * from "./alias";
28
+ export * from "./import";
29
+ export * from "./watch";
30
+ export * from "./nodeEnv";
31
+ export * from "./wait";
32
+ export * from "./emptyDir";
33
+ export * from "./getServerConfig";
34
+ export * from "./resolve";
35
+ export * from "./analyzeProject";
36
+ export * from "./chainId";
37
+ export * from "./version";
38
+ export * from "./plugin";
39
+ export * from "./routes";
40
+ export * from "./testUtils";
41
+ export * from "./getCoreJsVersion";
42
+ export * from "./react";
43
+ export * from "./getTargetDir";
44
+ export * from "./babel";
@@ -0,0 +1,71 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { createDebugger } from "../debug";
4
+ import { isDev } from "./nodeEnv";
5
+ const debug = createDebugger("judge-depExists");
6
+ const isDepExists = (appDirectory, name) => {
7
+ const pkgPath = path.resolve(appDirectory, "./package.json");
8
+ if (!fs.existsSync(pkgPath)) {
9
+ debug(`can't find package.json under: %s`, appDirectory);
10
+ return false;
11
+ }
12
+ const json = require(pkgPath);
13
+ const { dependencies = {}, devDependencies = {} } = json;
14
+ return dependencies.hasOwnProperty(name) || devDependencies.hasOwnProperty(name);
15
+ };
16
+ const isTypescript = (root) => fs.existsSync(path.resolve(root, "./tsconfig.json"));
17
+ const isEmpty = (o) => Object.entries(o).length === 0 && o.constructor === Object;
18
+ const isSSR = (config) => {
19
+ const { server } = config;
20
+ if (server == null ? void 0 : server.ssr) {
21
+ return true;
22
+ }
23
+ if ((server == null ? void 0 : server.ssrByEntries) && !isEmpty(server.ssrByEntries)) {
24
+ for (const name of Object.keys(server.ssrByEntries)) {
25
+ if (server.ssrByEntries[name]) {
26
+ return true;
27
+ }
28
+ }
29
+ }
30
+ return false;
31
+ };
32
+ const isUseSSRBundle = (config) => {
33
+ const { output } = config;
34
+ if (output == null ? void 0 : output.ssg) {
35
+ return true;
36
+ }
37
+ return isSSR(config);
38
+ };
39
+ const isServiceWorker = (config) => {
40
+ const { output, server } = config;
41
+ if ((server == null ? void 0 : server.worker) && ((output == null ? void 0 : output.ssg) || isSSR(config))) {
42
+ return true;
43
+ }
44
+ return false;
45
+ };
46
+ const isFastRefresh = () => isDev() && process.env.FAST_REFRESH !== "false";
47
+ const isRouterV5 = (config) => {
48
+ var _a, _b, _c;
49
+ return typeof ((_a = config.runtime) == null ? void 0 : _a.router) !== "boolean" && ((_c = (_b = config == null ? void 0 : config.runtime) == null ? void 0 : _b.router) == null ? void 0 : _c.mode) === "react-router-5";
50
+ };
51
+ const isSSGEntry = (config, entryName, entrypoints) => {
52
+ const ssgConfig = config.output.ssg;
53
+ const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof (ssgConfig == null ? void 0 : ssgConfig[0]) === "function" || Boolean(ssgConfig == null ? void 0 : ssgConfig[entryName]);
54
+ return useSSG;
55
+ };
56
+ const isSingleEntry = (entrypoints) => entrypoints.length === 1 && entrypoints[0].entryName === "main";
57
+ export * from "./nodeEnv";
58
+ export * from "./platform";
59
+ export * from "./type";
60
+ export {
61
+ isDepExists,
62
+ isEmpty,
63
+ isFastRefresh,
64
+ isRouterV5,
65
+ isSSGEntry,
66
+ isSSR,
67
+ isServiceWorker,
68
+ isSingleEntry,
69
+ isTypescript,
70
+ isUseSSRBundle
71
+ };
@@ -0,0 +1,12 @@
1
+ const getNodeEnv = () => process.env.NODE_ENV || "development";
2
+ const isDev = () => getNodeEnv() === "development";
3
+ const isProd = () => getNodeEnv() === "production";
4
+ const isTest = () => getNodeEnv() === "test";
5
+ const isProdProfile = () => isProd() && process.argv.includes("--profile");
6
+ export {
7
+ getNodeEnv,
8
+ isDev,
9
+ isProd,
10
+ isProdProfile,
11
+ isTest
12
+ };
@@ -0,0 +1,6 @@
1
+ const isNodeJS = () => typeof process !== "undefined" && process.versions != null && process.versions.node != null && process.versions.electron == null;
2
+ const isBrowser = () => typeof window !== "undefined";
3
+ export {
4
+ isBrowser,
5
+ isNodeJS
6
+ };
@@ -0,0 +1,34 @@
1
+ function isString(str) {
2
+ return typeof str === "string";
3
+ }
4
+ function isUndefined(obj) {
5
+ return typeof obj === "undefined";
6
+ }
7
+ function isArray(obj) {
8
+ return Array.isArray(obj);
9
+ }
10
+ function isFunction(func) {
11
+ return typeof func === "function";
12
+ }
13
+ function isObject(obj) {
14
+ return obj !== null && typeof obj === "object";
15
+ }
16
+ function isPlainObject(obj) {
17
+ return isObject(obj) && Object.prototype.toString.call(obj) === "[object Object]";
18
+ }
19
+ function isPromise(obj) {
20
+ return Boolean(obj) && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function";
21
+ }
22
+ function isRegExp(obj) {
23
+ return Object.prototype.toString.call(obj) === "[object RegExp]";
24
+ }
25
+ export {
26
+ isArray,
27
+ isFunction,
28
+ isObject,
29
+ isPlainObject,
30
+ isPromise,
31
+ isRegExp,
32
+ isString,
33
+ isUndefined
34
+ };
@@ -0,0 +1,100 @@
1
+ import chalk from "../compiled/chalk";
2
+ const LOG_LEVEL = {
3
+ error: 0,
4
+ warn: 1,
5
+ info: 2,
6
+ debug: 3,
7
+ log: 4
8
+ };
9
+ const LOG_TYPES = {
10
+ error: {
11
+ color: "red",
12
+ label: "error",
13
+ level: "error"
14
+ },
15
+ info: {
16
+ color: "cyan",
17
+ label: "info",
18
+ level: "info"
19
+ },
20
+ success: {
21
+ color: "green",
22
+ label: "Success",
23
+ level: "info"
24
+ },
25
+ warn: {
26
+ color: "yellow",
27
+ label: "warn",
28
+ level: "warn"
29
+ },
30
+ debug: {
31
+ color: "red",
32
+ label: "debug",
33
+ level: "debug"
34
+ },
35
+ log: { level: "log" }
36
+ };
37
+ const DEFAULT_CONFIG = {
38
+ displayLabel: true,
39
+ uppercaseLabel: false
40
+ };
41
+ class Logger {
42
+ constructor(options = {}) {
43
+ this.level = options.level || LOG_TYPES.log.level;
44
+ this.config = { ...DEFAULT_CONFIG, ...options.config || {} };
45
+ this.types = {
46
+ ...LOG_TYPES,
47
+ ...options.types || {}
48
+ };
49
+ this.longestLabel = this.getLongestLabel();
50
+ Object.keys(this.types).forEach((type) => {
51
+ this[type] = this._log.bind(this, type);
52
+ });
53
+ }
54
+ _log(type, message, ...args) {
55
+ if (message === void 0 || message === null) {
56
+ console.log();
57
+ return;
58
+ }
59
+ if (LOG_LEVEL[type] > LOG_LEVEL[this.level]) {
60
+ return;
61
+ }
62
+ let label = "";
63
+ let text = "";
64
+ const logType = this.types[type];
65
+ if (this.config.displayLabel && logType.label) {
66
+ label = this.config.uppercaseLabel ? logType.label.toUpperCase() : logType.label;
67
+ label = label.padEnd(this.longestLabel.length);
68
+ label = chalk.bold(logType.color ? chalk[logType.color](label) : label);
69
+ }
70
+ if (message instanceof Error) {
71
+ if (message.stack) {
72
+ const [name, ...rest] = message.stack.split("\n");
73
+ text = `${name}
74
+ ${chalk.grey(rest.join("\n"))}`;
75
+ } else {
76
+ text = message.message;
77
+ }
78
+ } else {
79
+ text = `${message}`;
80
+ }
81
+ const log = label.length > 0 ? `${label} ${text}` : text;
82
+ console.log(log, ...args);
83
+ }
84
+ getLongestLabel() {
85
+ let longestLabel = "";
86
+ Object.keys(this.types).forEach((type) => {
87
+ const { label = "" } = this.types[type];
88
+ if (label.length > longestLabel.length) {
89
+ longestLabel = label;
90
+ }
91
+ });
92
+ return longestLabel;
93
+ }
94
+ }
95
+ const logger = new Logger();
96
+ logger.Logger = Logger;
97
+ export {
98
+ Logger,
99
+ logger
100
+ };
@@ -0,0 +1,87 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { glob, yaml } from "./compiled";
4
+ const PACKAGE_MAX_DEPTH = 5;
5
+ const WORKSPACE_FILES = {
6
+ YARN: "package.json",
7
+ PNPM: "pnpm-workspace.yaml",
8
+ LERNA: "lerna.json"
9
+ };
10
+ const isLerna = (root) => fs.existsSync(path.join(root, WORKSPACE_FILES.LERNA));
11
+ const isYarnWorkspaces = (root) => {
12
+ var _a;
13
+ const pkg = path.join(root, WORKSPACE_FILES.YARN);
14
+ if (!fs.existsSync(pkg)) {
15
+ return false;
16
+ }
17
+ const json = JSON.parse(fs.readFileSync(pkg, "utf8"));
18
+ return Boolean((_a = json.workspaces) == null ? void 0 : _a.packages);
19
+ };
20
+ const isPnpmWorkspaces = (root) => fs.existsSync(path.join(root, WORKSPACE_FILES.PNPM));
21
+ const isMonorepo = (root) => isLerna(root) || isYarnWorkspaces(root) || isPnpmWorkspaces(root);
22
+ const isModernjsMonorepo = (root) => {
23
+ const pkgJsonPath = path.join(root, "package.json");
24
+ if (!fs.existsSync(pkgJsonPath)) {
25
+ return false;
26
+ }
27
+ const json = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
28
+ const deps = {
29
+ ...json.dependencies || {},
30
+ ...json.devDependencies || {}
31
+ };
32
+ return Boolean(deps["@modern-js/monorepo-tools"]);
33
+ };
34
+ const findMonorepoRoot = (appDirectory, maxDepth = PACKAGE_MAX_DEPTH) => {
35
+ let inMonorepo = false;
36
+ for (let depth = 0; depth < maxDepth; depth++) {
37
+ if (isMonorepo(appDirectory)) {
38
+ inMonorepo = true;
39
+ break;
40
+ }
41
+ appDirectory = path.dirname(appDirectory);
42
+ }
43
+ return inMonorepo ? appDirectory : void 0;
44
+ };
45
+ const getMonorepoPackages = (root) => {
46
+ let packages = [];
47
+ if (isYarnWorkspaces(root)) {
48
+ const json = JSON.parse(
49
+ fs.readFileSync(path.join(root, "package.json"), "utf8")
50
+ );
51
+ ({ packages } = json.workspaces);
52
+ } else if (isLerna(root)) {
53
+ const json = JSON.parse(
54
+ fs.readFileSync(path.resolve(root, "lerna.json"), "utf8")
55
+ );
56
+ ({ packages } = json);
57
+ } else {
58
+ ({ packages } = yaml.load(
59
+ fs.readFileSync(path.join(root, WORKSPACE_FILES.PNPM), "utf8")
60
+ ));
61
+ }
62
+ if (packages) {
63
+ return packages.map(
64
+ (name) => (
65
+ // The trailing / ensures only dirs are picked up
66
+ glob.sync(path.join(root, `${name}/`), {
67
+ ignore: ["**/node_modules/**"]
68
+ })
69
+ )
70
+ ).reduce((acc, val) => acc.concat(val), []).filter((filepath) => fs.existsSync(path.resolve(filepath, "package.json"))).map((filepath) => ({
71
+ path: filepath,
72
+ name: JSON.parse(
73
+ fs.readFileSync(path.resolve(filepath, "package.json"), "utf8")
74
+ ).name
75
+ }));
76
+ }
77
+ return [];
78
+ };
79
+ export {
80
+ findMonorepoRoot,
81
+ getMonorepoPackages,
82
+ isLerna,
83
+ isModernjsMonorepo,
84
+ isMonorepo,
85
+ isPnpmWorkspaces,
86
+ isYarnWorkspaces
87
+ };
@@ -0,0 +1,30 @@
1
+ import { execa } from "./compiled";
2
+ async function canUseNpm() {
3
+ try {
4
+ await execa("npm", ["--version"], { env: process.env });
5
+ return true;
6
+ } catch (e) {
7
+ return false;
8
+ }
9
+ }
10
+ async function canUseYarn() {
11
+ try {
12
+ await execa("yarn", ["--version"], { env: process.env });
13
+ return true;
14
+ } catch (e) {
15
+ return false;
16
+ }
17
+ }
18
+ async function canUsePnpm() {
19
+ try {
20
+ await execa("pnpm", ["--version"], { env: process.env });
21
+ return true;
22
+ } catch (e) {
23
+ return false;
24
+ }
25
+ }
26
+ export {
27
+ canUseNpm,
28
+ canUsePnpm,
29
+ canUseYarn
30
+ };
@@ -0,0 +1,50 @@
1
+ import path from "path";
2
+ import os from "os";
3
+ import fs from "fs";
4
+ import { nanoid, upath, lodash as _ } from "./compiled";
5
+ const isPathString = (test) => path.posix.basename(test) !== test || path.win32.basename(test) !== test;
6
+ const isRelativePath = (test) => /^\.\.?($|[\\/])/.test(test);
7
+ const normalizeOutputPath = (s) => s.replace(/\\/g, "\\\\");
8
+ const normalizeToPosixPath = (p) => upath.normalizeSafe(path.normalize(p || "")).replace(/^([a-zA-Z]+):/, (_2, m) => `/${m.toLowerCase()}`);
9
+ const getTemplatePath = (prefix) => {
10
+ const tmpRoot = fs.realpathSync(os.tmpdir());
11
+ const parts = [tmpRoot];
12
+ prefix && parts.push(prefix);
13
+ parts.push(nanoid());
14
+ return path.resolve(...parts);
15
+ };
16
+ function compilePathMatcherRegExp(match) {
17
+ if (typeof match !== "string") {
18
+ return match;
19
+ }
20
+ const escaped = _.escapeRegExp(match);
21
+ return new RegExp(`(?<=\\W|^)${escaped}(?=\\W|$)`);
22
+ }
23
+ const _joinPathParts = (_part, i, parts) => _(parts).filter((part) => !["/", "\\"].includes(part)).tap((parts2) => parts2.unshift("")).slice(0, i + 2).join("/");
24
+ function upwardPaths(start) {
25
+ return _(start).split(/[/\\]/).filter(Boolean).map(_joinPathParts).reverse().push("/").value();
26
+ }
27
+ function getRealTemporaryDirectory() {
28
+ let ret = null;
29
+ try {
30
+ ret = os.tmpdir();
31
+ ret = fs.realpathSync(ret);
32
+ } catch {
33
+ }
34
+ return ret;
35
+ }
36
+ function splitPathString(str) {
37
+ return str.split(/[\\/]/);
38
+ }
39
+ export {
40
+ _joinPathParts,
41
+ compilePathMatcherRegExp,
42
+ getRealTemporaryDirectory,
43
+ getTemplatePath,
44
+ isPathString,
45
+ isRelativePath,
46
+ normalizeOutputPath,
47
+ normalizeToPosixPath,
48
+ splitPathString,
49
+ upwardPaths
50
+ };
@@ -0,0 +1,46 @@
1
+ import os from "os";
2
+ import _ from "../compiled/lodash";
3
+ import {
4
+ compilePathMatcherRegExp,
5
+ normalizeToPosixPath,
6
+ getRealTemporaryDirectory,
7
+ splitPathString,
8
+ upwardPaths
9
+ } from "./path";
10
+ const matchUpwardPathsAsUnknown = (p) => _(upwardPaths(normalizeToPosixPath(p))).map((match) => ({ match, mark: "unknown" })).slice(1, -1).value();
11
+ function applyPathMatcher(matcher, str, options = {}) {
12
+ const regex = compilePathMatcherRegExp(matcher.match);
13
+ const replacer = (substring, ...args) => {
14
+ if (options.minPartials && splitPathString(substring).length < options.minPartials) {
15
+ return substring;
16
+ }
17
+ const ret = typeof matcher.mark === "string" ? matcher.mark : matcher.mark(substring, ...args);
18
+ return `<${_.snakeCase(ret).toUpperCase()}>`;
19
+ };
20
+ return str.replace(regex, replacer);
21
+ }
22
+ function applyMatcherReplacement(matchers, str, options = {}) {
23
+ return matchers.reduce((ret, matcher) => {
24
+ return applyPathMatcher(matcher, ret, options);
25
+ }, str);
26
+ }
27
+ const createDefaultPathMatchers = (root) => {
28
+ const ret = [
29
+ {
30
+ match: /(?<=\/)(\.pnpm\/.+?\/node_modules)(?=\/)/,
31
+ mark: "pnpmInner"
32
+ }
33
+ ];
34
+ const tmpdir = getRealTemporaryDirectory();
35
+ tmpdir && ret.push({ match: tmpdir, mark: "temp" });
36
+ ret.push({ match: os.tmpdir(), mark: "temp" });
37
+ ret.push({ match: os.homedir(), mark: "home" });
38
+ ret.push(...matchUpwardPathsAsUnknown(root));
39
+ return ret;
40
+ };
41
+ export {
42
+ applyMatcherReplacement,
43
+ applyPathMatcher,
44
+ createDefaultPathMatchers,
45
+ matchUpwardPathsAsUnknown
46
+ };
@@ -0,0 +1,23 @@
1
+ import { INTERNAL_CLI_PLUGINS } from "./constants";
2
+ import { isDepExists } from "./is";
3
+ function getInternalPlugins(appDirectory, internalPlugins = INTERNAL_CLI_PLUGINS) {
4
+ return [
5
+ ...Object.keys(internalPlugins).filter((name) => {
6
+ const config = internalPlugins[name];
7
+ if (typeof config !== "string" && config.forced === true) {
8
+ return true;
9
+ }
10
+ return isDepExists(appDirectory, name);
11
+ }).map((name) => {
12
+ const config = internalPlugins[name];
13
+ if (typeof config !== "string") {
14
+ return config.path;
15
+ } else {
16
+ return config;
17
+ }
18
+ })
19
+ ];
20
+ }
21
+ export {
22
+ getInternalPlugins
23
+ };