@modern-js/utils 2.26.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.
Files changed (96) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/cli/alias.js +3 -3
  3. package/dist/cjs/cli/constants/chainId.js +4 -0
  4. package/dist/cjs/cli/constants/index.js +0 -1
  5. package/dist/cjs/cli/is/config.js +11 -8
  6. package/dist/cjs/cli/prettyInstructions.js +3 -2
  7. package/dist/cjs/cli/require.js +2 -1
  8. package/dist/cjs/runtime/nestedRoutes.js +9 -5
  9. package/dist/cjs/runtime-browser/parsed.js +2 -1
  10. package/dist/cjs/universal/formatWebpack.js +55 -12
  11. package/dist/esm/cli/alias.js +27 -23
  12. package/dist/esm/cli/applyOptionsChain.js +8 -6
  13. package/dist/esm/cli/babel.js +50 -35
  14. package/dist/esm/cli/commands.js +7 -7
  15. package/dist/esm/cli/common.js +10 -5
  16. package/dist/esm/cli/constants/chainId.js +5 -1
  17. package/dist/esm/cli/constants/index.js +33 -38
  18. package/dist/esm/cli/ensure.js +4 -2
  19. package/dist/esm/cli/fs.js +56 -9
  20. package/dist/esm/cli/get/config.js +7 -7
  21. package/dist/esm/cli/get/data.js +102 -55
  22. package/dist/esm/cli/get/index.js +21 -6
  23. package/dist/esm/cli/is/config.js +43 -21
  24. package/dist/esm/cli/is/env.js +18 -6
  25. package/dist/esm/cli/is/platform.js +6 -2
  26. package/dist/esm/cli/is/project.js +73 -36
  27. package/dist/esm/cli/is/type.js +3 -1
  28. package/dist/esm/cli/logger.js +49 -38
  29. package/dist/esm/cli/monorepo.js +49 -36
  30. package/dist/esm/cli/package.js +156 -38
  31. package/dist/esm/cli/path.js +44 -20
  32. package/dist/esm/cli/pathSerializer.js +29 -15
  33. package/dist/esm/cli/port.js +89 -40
  34. package/dist/esm/cli/prettyInstructions.js +44 -32
  35. package/dist/esm/cli/require.js +22 -16
  36. package/dist/esm/cli/runtimeExports.js +21 -15
  37. package/dist/esm/cli/watch.js +94 -27
  38. package/dist/esm/compiled.js +3 -3
  39. package/dist/esm/import.js +4 -4
  40. package/dist/esm/runtime/nestedRoutes.js +49 -32
  41. package/dist/esm/runtime-browser/parsed.js +6 -5
  42. package/dist/esm/runtime-node/index.js +1 -1
  43. package/dist/esm/runtime-node/nestedRoutes.js +6 -4
  44. package/dist/esm/runtime-node/serialize.js +1 -1
  45. package/dist/esm/runtime-node/storage.js +12 -14
  46. package/dist/esm/universal/constants.js +3 -3
  47. package/dist/esm/universal/formatWebpack.js +54 -28
  48. package/dist/esm/universal/pluginDagSort.js +49 -26
  49. package/dist/esm-node/cli/alias.js +51 -0
  50. package/dist/esm-node/cli/applyOptionsChain.js +24 -0
  51. package/dist/esm-node/cli/babel.js +103 -0
  52. package/dist/esm-node/cli/commands.js +16 -0
  53. package/dist/esm-node/cli/common.js +10 -0
  54. package/dist/esm-node/cli/constants/chainId.js +184 -0
  55. package/dist/esm-node/cli/constants/index.js +102 -0
  56. package/dist/esm-node/cli/ensure.js +10 -0
  57. package/dist/esm-node/cli/fs.js +14 -0
  58. package/dist/esm-node/cli/get/config.js +16 -0
  59. package/dist/esm-node/cli/get/data.js +86 -0
  60. package/dist/esm-node/cli/get/index.js +13 -0
  61. package/dist/esm-node/cli/index.js +20 -0
  62. package/dist/esm-node/cli/is/config.js +43 -0
  63. package/dist/esm-node/cli/is/env.js +6 -0
  64. package/dist/esm-node/cli/is/index.js +5 -0
  65. package/dist/esm-node/cli/is/platform.js +2 -0
  66. package/dist/esm-node/cli/is/project.js +73 -0
  67. package/dist/esm-node/cli/is/type.js +25 -0
  68. package/dist/esm-node/cli/logger.js +103 -0
  69. package/dist/esm-node/cli/monorepo.js +70 -0
  70. package/dist/esm-node/cli/package.js +43 -0
  71. package/dist/esm-node/cli/path.js +49 -0
  72. package/dist/esm-node/cli/pathSerializer.js +46 -0
  73. package/dist/esm-node/cli/port.js +44 -0
  74. package/dist/esm-node/cli/prettyInstructions.js +78 -0
  75. package/dist/esm-node/cli/require.js +53 -0
  76. package/dist/esm-node/cli/runtimeExports.js +35 -0
  77. package/dist/esm-node/cli/watch.js +41 -0
  78. package/dist/esm-node/compiled.js +33 -0
  79. package/dist/esm-node/import.js +8 -0
  80. package/dist/esm-node/index.js +3 -0
  81. package/dist/esm-node/runtime/nestedRoutes.js +116 -0
  82. package/dist/esm-node/runtime/remixRouter.js +1 -0
  83. package/dist/esm-node/runtime/router.js +1 -0
  84. package/dist/esm-node/runtime-browser/index.js +1 -0
  85. package/dist/esm-node/runtime-browser/parsed.js +18 -0
  86. package/dist/esm-node/runtime-node/index.js +5 -0
  87. package/dist/esm-node/runtime-node/nestedRoutes.js +18 -0
  88. package/dist/esm-node/runtime-node/router.js +1 -0
  89. package/dist/esm-node/runtime-node/serialize.js +6 -0
  90. package/dist/esm-node/runtime-node/storage.js +38 -0
  91. package/dist/esm-node/universal/constants.js +3 -0
  92. package/dist/esm-node/universal/formatWebpack.js +99 -0
  93. package/dist/esm-node/universal/pluginDagSort.js +50 -0
  94. package/dist/types/cli/constants/chainId.d.ts +4 -0
  95. package/dist/types/universal/formatWebpack.d.ts +14 -1
  96. package/package.json +4 -4
@@ -1,40 +1,107 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
1
3
  import path from "path";
2
4
  import { chokidar } from "../compiled";
3
- export const WatchChangeType = {
5
+ export var WatchChangeType = {
4
6
  ADD: "add",
5
7
  UNLINK: "unlink",
6
8
  CHANGE: "change"
7
9
  };
8
- export const watch = (watchDir, runTask, ignored = []) => {
9
- let ready = false;
10
- const watcher = chokidar.watch(watchDir, {
11
- ignored
10
+ export var watch = function(watchDir, runTask) {
11
+ var ignored = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
12
+ var ready = false;
13
+ var watcher = chokidar.watch(watchDir, {
14
+ ignored: ignored
12
15
  });
13
- watcher.on("ready", () => ready = true);
14
- watcher.on("change", async (filePath) => {
15
- const changedFilePath = path.resolve(filePath);
16
- await runTask({
17
- changedFilePath,
18
- changeType: WatchChangeType.CHANGE
19
- });
16
+ watcher.on("ready", function() {
17
+ return ready = true;
20
18
  });
21
- watcher.on("add", async (filePath) => {
22
- const changedFilePath = path.resolve(filePath);
23
- if (ready) {
24
- await runTask({
25
- changedFilePath,
26
- changeType: WatchChangeType.ADD
19
+ watcher.on("change", function() {
20
+ var _ref = _async_to_generator(function(filePath) {
21
+ var changedFilePath;
22
+ return _ts_generator(this, function(_state) {
23
+ switch (_state.label) {
24
+ case 0:
25
+ changedFilePath = path.resolve(filePath);
26
+ return [
27
+ 4,
28
+ runTask({
29
+ changedFilePath: changedFilePath,
30
+ changeType: WatchChangeType.CHANGE
31
+ })
32
+ ];
33
+ case 1:
34
+ _state.sent();
35
+ return [
36
+ 2
37
+ ];
38
+ }
27
39
  });
28
- }
29
- });
30
- watcher.on("unlink", async (filePath) => {
31
- const changedFilePath = path.resolve(filePath);
32
- await runTask({
33
- changedFilePath,
34
- changeType: WatchChangeType.UNLINK
35
40
  });
36
- });
37
- watcher.on("error", (err) => {
41
+ return function(filePath) {
42
+ return _ref.apply(this, arguments);
43
+ };
44
+ }());
45
+ watcher.on("add", function() {
46
+ var _ref = _async_to_generator(function(filePath) {
47
+ var changedFilePath;
48
+ return _ts_generator(this, function(_state) {
49
+ switch (_state.label) {
50
+ case 0:
51
+ changedFilePath = path.resolve(filePath);
52
+ if (!ready)
53
+ return [
54
+ 3,
55
+ 2
56
+ ];
57
+ return [
58
+ 4,
59
+ runTask({
60
+ changedFilePath: changedFilePath,
61
+ changeType: WatchChangeType.ADD
62
+ })
63
+ ];
64
+ case 1:
65
+ _state.sent();
66
+ _state.label = 2;
67
+ case 2:
68
+ return [
69
+ 2
70
+ ];
71
+ }
72
+ });
73
+ });
74
+ return function(filePath) {
75
+ return _ref.apply(this, arguments);
76
+ };
77
+ }());
78
+ watcher.on("unlink", function() {
79
+ var _ref = _async_to_generator(function(filePath) {
80
+ var changedFilePath;
81
+ return _ts_generator(this, function(_state) {
82
+ switch (_state.label) {
83
+ case 0:
84
+ changedFilePath = path.resolve(filePath);
85
+ return [
86
+ 4,
87
+ runTask({
88
+ changedFilePath: changedFilePath,
89
+ changeType: WatchChangeType.UNLINK
90
+ })
91
+ ];
92
+ case 1:
93
+ _state.sent();
94
+ return [
95
+ 2
96
+ ];
97
+ }
98
+ });
99
+ });
100
+ return function(filePath) {
101
+ return _ref.apply(this, arguments);
102
+ };
103
+ }());
104
+ watcher.on("error", function(err) {
38
105
  throw err;
39
106
  });
40
107
  return watcher;
@@ -28,6 +28,6 @@ export { default as browserslist } from "../compiled/browserslist";
28
28
  export { default as recursiveReaddir } from "../compiled/recursive-readdir";
29
29
  export { program, Command } from "../compiled/commander";
30
30
  export { Signale } from "../compiled/signale";
31
- export const mime = Import.lazy("../compiled/mime-types", require);
32
- export const chokidar = Import.lazy("../compiled/chokidar", require);
33
- export const inquirer = Import.lazy("../compiled/inquirer", require);
31
+ export var mime = Import.lazy("../compiled/mime-types", require);
32
+ export var chokidar = Import.lazy("../compiled/chokidar", require);
33
+ export var inquirer = Import.lazy("../compiled/inquirer", require);
@@ -1,8 +1,8 @@
1
- const lazy = (moduleName, requireFn) => {
2
- const importLazyLocal = require("../compiled/import-lazy")(requireFn);
1
+ var lazy = function(moduleName, requireFn) {
2
+ var importLazyLocal = require("../compiled/import-lazy")(requireFn);
3
3
  return importLazyLocal(moduleName);
4
4
  };
5
5
  export { lazy as lazyImport };
6
- export const Import = {
7
- lazy
6
+ export var Import = {
7
+ lazy: lazy
8
8
  };
@@ -1,19 +1,40 @@
1
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
1
3
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
4
  import { Suspense } from "react";
3
5
  import { createRoutesFromElements, Route } from "react-router-dom";
4
- export const transformNestedRoutes = (routes) => {
5
- const routeElements = [];
6
- for (const route of routes) {
7
- const routeElement = renderNestedRoute(route);
8
- routeElements.push(routeElement);
6
+ export var transformNestedRoutes = function(routes) {
7
+ var routeElements = [];
8
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
9
+ try {
10
+ for (var _iterator = routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
11
+ var route = _step.value;
12
+ var routeElement = renderNestedRoute(route);
13
+ routeElements.push(routeElement);
14
+ }
15
+ } catch (err) {
16
+ _didIteratorError = true;
17
+ _iteratorError = err;
18
+ } finally {
19
+ try {
20
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
21
+ _iterator.return();
22
+ }
23
+ } finally {
24
+ if (_didIteratorError) {
25
+ throw _iteratorError;
26
+ }
27
+ }
9
28
  }
10
29
  return createRoutesFromElements(routeElements);
11
30
  };
12
- export const renderNestedRoute = (nestedRoute, options = {}) => {
13
- const { children, index, id, component, isRoot, lazyImport, config, handle } = nestedRoute;
14
- const Component = component;
15
- const { parent, DeferredDataComponent, props = {} } = options;
16
- const routeProps = {
31
+ export var renderNestedRoute = function(nestedRoute) {
32
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
33
+ var _config, _children;
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;
35
+ var Component = component;
36
+ var parent = options.parent, DeferredDataComponent = options.DeferredDataComponent, _options_props = options.props, props = _options_props === void 0 ? {} : _options_props;
37
+ var routeProps = {
17
38
  caseSensitive: nestedRoute.caseSensitive,
18
39
  path: nestedRoute.path,
19
40
  id: nestedRoute.id,
@@ -21,22 +42,20 @@ export const renderNestedRoute = (nestedRoute, options = {}) => {
21
42
  action: nestedRoute.action,
22
43
  hasErrorBoundary: nestedRoute.hasErrorBoundary,
23
44
  shouldRevalidate: nestedRoute.shouldRevalidate,
24
- handle: {
25
- ...handle,
26
- ...typeof config === "object" ? config === null || config === void 0 ? void 0 : config.handle : {}
27
- },
45
+ handle: _object_spread({}, handle, typeof config === "object" ? (_config = config) === null || _config === void 0 ? void 0 : _config.handle : {}),
28
46
  index: nestedRoute.index,
29
47
  element: nestedRoute.element,
30
48
  errorElement: nestedRoute.errorElement
31
49
  };
32
50
  if (nestedRoute.error) {
33
- const errorElement = /* @__PURE__ */ _jsx(nestedRoute.error, {});
51
+ var errorElement = /* @__PURE__ */ _jsx(nestedRoute.error, {});
34
52
  routeProps.errorElement = errorElement;
35
53
  }
36
- let element;
54
+ var element;
37
55
  if (Component) {
38
- if ((parent === null || parent === void 0 ? void 0 : parent.loading) && lazyImport) {
39
- const Loading = parent.loading;
56
+ var _parent;
57
+ if (((_parent = parent) === null || _parent === void 0 ? void 0 : _parent.loading) && lazyImport) {
58
+ var Loading = parent.loading;
40
59
  if (isLoadableComponent(Component)) {
41
60
  element = /* @__PURE__ */ _jsx(Component, {
42
61
  fallback: /* @__PURE__ */ _jsx(Loading, {})
@@ -50,13 +69,12 @@ export const renderNestedRoute = (nestedRoute, options = {}) => {
50
69
  } else if (isLoadableComponent(Component) && lazyImport) {
51
70
  element = /* @__PURE__ */ _jsx(Component, {});
52
71
  } else if (isRoot) {
72
+ var _props;
53
73
  element = /* @__PURE__ */ _jsxs(_Fragment, {
54
74
  children: [
55
- /* @__PURE__ */ _jsx(Component, {
56
- ...props
57
- }),
75
+ /* @__PURE__ */ _jsx(Component, _object_spread({}, props)),
58
76
  typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ _jsx(DeferredDataComponent, {
59
- nonce: props === null || props === void 0 ? void 0 : props.nonce
77
+ nonce: (_props = props) === null || _props === void 0 ? void 0 : _props.nonce
60
78
  })
61
79
  ]
62
80
  });
@@ -69,37 +87,36 @@ export const renderNestedRoute = (nestedRoute, options = {}) => {
69
87
  element = /* @__PURE__ */ _jsx(Component, {});
70
88
  }
71
89
  } else {
72
- nestedRoute.loading = parent === null || parent === void 0 ? void 0 : parent.loading;
90
+ var _parent1;
91
+ nestedRoute.loading = (_parent1 = parent) === null || _parent1 === void 0 ? void 0 : _parent1.loading;
73
92
  }
74
93
  if (element) {
75
94
  routeProps.element = element;
76
95
  }
77
- const childElements = children === null || children === void 0 ? void 0 : children.map((childRoute) => {
96
+ var childElements = (_children = children) === null || _children === void 0 ? void 0 : _children.map(function(childRoute) {
78
97
  return renderNestedRoute(childRoute, {
79
98
  parent: nestedRoute
80
99
  });
81
100
  });
82
- const routeElement = index ? /* @__PURE__ */ _jsx(Route, {
83
- ...routeProps,
101
+ var routeElement = index ? /* @__PURE__ */ _jsx(Route, _object_spread_props(_object_spread({}, routeProps), {
84
102
  index: true
85
- }, id) : /* @__PURE__ */ _jsx(Route, {
86
- ...routeProps,
103
+ }), id) : /* @__PURE__ */ _jsx(Route, _object_spread_props(_object_spread({}, routeProps), {
87
104
  index: false,
88
105
  children: childElements
89
- }, id);
106
+ }), id);
90
107
  return routeElement;
91
108
  };
92
109
  function createLoader(route) {
93
- const { loader } = route;
110
+ var loader = route.loader;
94
111
  if (loader) {
95
- return (args) => {
112
+ return function(args) {
96
113
  if (typeof route.lazyImport === "function") {
97
114
  route.lazyImport();
98
115
  }
99
116
  return loader(args);
100
117
  };
101
118
  } else {
102
- return () => {
119
+ return function() {
103
120
  if (typeof route.lazyImport === "function") {
104
121
  route.lazyImport();
105
122
  }
@@ -1,15 +1,16 @@
1
- export const parsedJSONFromElement = (id) => {
2
- const elements = document.querySelectorAll(`#${id}`);
1
+ export var parsedJSONFromElement = function(id) {
2
+ var elements = document.querySelectorAll("#".concat(id));
3
3
  if (elements.length === 0) {
4
4
  return void 0;
5
5
  }
6
- const element = elements[elements.length - 1];
6
+ var element = elements[elements.length - 1];
7
7
  if (element) {
8
8
  try {
9
- const parsed = JSON.parse((element === null || element === void 0 ? void 0 : element.textContent) || "");
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
- console.error(`parse ${id} error`, e);
13
+ console.error("parse ".concat(id, " error"), e);
13
14
  return void 0;
14
15
  }
15
16
  }
@@ -1,5 +1,5 @@
1
1
  import { createStorage } from "./storage";
2
- const { run, useContext: useHeaders } = createStorage();
2
+ var _createStorage = createStorage(), run = _createStorage.run, useHeaders = _createStorage.useContext;
3
3
  export { run, useHeaders };
4
4
  export { serializeJson } from "./serialize";
5
5
  export * from "./nestedRoutes";
@@ -1,7 +1,7 @@
1
1
  function sortByUrlPath(entries) {
2
2
  entries.sort(function(a, b) {
3
- const length1 = a.urlPath.length;
4
- const length2 = b.urlPath.length;
3
+ var length1 = a.urlPath.length;
4
+ var length2 = b.urlPath.length;
5
5
  if (length1 < length2) {
6
6
  return 1;
7
7
  }
@@ -12,7 +12,9 @@ function sortByUrlPath(entries) {
12
12
  });
13
13
  return entries;
14
14
  }
15
- export const matchEntry = (pathname, entries) => {
15
+ export var matchEntry = function(pathname, entries) {
16
16
  sortByUrlPath(entries);
17
- return entries.find((entry) => pathname.startsWith(entry.urlPath));
17
+ return entries.find(function(entry) {
18
+ return pathname.startsWith(entry.urlPath);
19
+ });
18
20
  };
@@ -1,5 +1,5 @@
1
1
  import serialize from "serialize-javascript";
2
- export const serializeJson = (data) => {
2
+ export var serializeJson = function(data) {
3
3
  return serialize(data, {
4
4
  isJSON: true
5
5
  });
@@ -1,16 +1,15 @@
1
1
  import * as ah from "async_hooks";
2
- const createStorage = () => {
3
- let storage;
2
+ var createStorage = function() {
3
+ var storage;
4
4
  if (typeof ah.AsyncLocalStorage !== "undefined") {
5
5
  storage = new ah.AsyncLocalStorage();
6
6
  }
7
- const run = (context, cb) => {
7
+ var run = function(context, cb) {
8
8
  if (!storage) {
9
- throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
10
- `);
9
+ throw new Error("Unable to use async_hook, please confirm the node version >= 12.17\n ");
11
10
  }
12
- return new Promise((resolve, reject) => {
13
- storage.run(context, () => {
11
+ return new Promise(function(resolve, reject) {
12
+ storage.run(context, function() {
14
13
  try {
15
14
  return resolve(cb());
16
15
  } catch (error) {
@@ -19,20 +18,19 @@ const createStorage = () => {
19
18
  });
20
19
  });
21
20
  };
22
- const useContext = () => {
21
+ var useContext = function() {
23
22
  if (!storage) {
24
- throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
25
- `);
23
+ throw new Error("Unable to use async_hook, please confirm the node version >= 12.17\n ");
26
24
  }
27
- const context = storage.getStore();
25
+ var context = storage.getStore();
28
26
  if (!context) {
29
- throw new Error(`Can't call useContext out of scope, make sure @modern-js/utils is a single version in node_modules`);
27
+ throw new Error("Can't call useContext out of scope, make sure @modern-js/utils is a single version in node_modules");
30
28
  }
31
29
  return context;
32
30
  };
33
31
  return {
34
- run,
35
- useContext
32
+ run: run,
33
+ useContext: useContext
36
34
  };
37
35
  };
38
36
  export { createStorage };
@@ -1,3 +1,3 @@
1
- export const ROUTE_MANIFEST = `_MODERNJS_ROUTE_MANIFEST`;
2
- export const HMR_SOCK_PATH = "/webpack-hmr";
3
- export const HTML_CHUNKSMAP_SEPARATOR = "<!--<?- chunksMap.js ?>-->";
1
+ export var ROUTE_MANIFEST = "_MODERNJS_ROUTE_MANIFEST";
2
+ export var HMR_SOCK_PATH = "/webpack-hmr";
3
+ export var HTML_CHUNKSMAP_SEPARATOR = "<!--<?- chunksMap.js ?>-->";
@@ -1,35 +1,31 @@
1
- const friendlySyntaxErrorLabel = "SyntaxError:";
1
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
+ var friendlySyntaxErrorLabel = "SyntaxError:";
2
3
  function isLikelyASyntaxError(message) {
3
4
  return message.includes(friendlySyntaxErrorLabel);
4
5
  }
5
6
  function formatMessage(stats) {
6
- let lines = [];
7
- let message;
7
+ var lines = [];
8
+ var message;
8
9
  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}`;
10
+ var fileName = stats.moduleName ? "File: ".concat(stats.moduleName, "\n") : "";
11
+ var mainMessage = typeof stats.formatted === "string" ? stats.formatted : stats.message;
12
+ var details = stats.details ? "\nDetails: ".concat(stats.details, "\n") : "";
13
+ var stack = stats.stack ? "\n".concat(stats.stack) : "";
14
+ message = "".concat(fileName).concat(mainMessage).concat(details).concat(stack);
18
15
  } else {
19
16
  message = stats;
20
17
  }
21
18
  lines = message.split("\n");
22
- lines = lines.map((line) => {
23
- const parsingError = /Line (\d+):(?:(\d+):)?\s*Parsing error: (.+)$/.exec(line);
19
+ lines = lines.map(function(line) {
20
+ var parsingError = /Line (\d+):(?:(\d+):)?\s*Parsing error: (.+)$/.exec(line);
24
21
  if (!parsingError) {
25
22
  return line;
26
23
  }
27
- const [, errorLine, errorColumn, errorMessage] = parsingError;
28
- return `${friendlySyntaxErrorLabel} ${errorMessage} (${errorLine}:${errorColumn})`;
24
+ var _parsingError = _sliced_to_array(parsingError, 4), errorLine = _parsingError[1], errorColumn = _parsingError[2], errorMessage = _parsingError[3];
25
+ return "".concat(friendlySyntaxErrorLabel, " ").concat(errorMessage, " (").concat(errorLine, ":").concat(errorColumn, ")");
29
26
  });
30
27
  message = lines.join("\n");
31
- message = message.replace(/SyntaxError\s+\((\d+):(\d+)\)\s*(.+?)\n/g, `${friendlySyntaxErrorLabel} $3 ($1:$2)
32
- `);
28
+ message = message.replace(/SyntaxError\s+\((\d+):(\d+)\)\s*(.+?)\n/g, "".concat(friendlySyntaxErrorLabel, " $3 ($1:$2)\n"));
33
29
  lines = message.split("\n");
34
30
  if (lines.length > 2 && lines[1].trim() === "") {
35
31
  lines.splice(1, 1);
@@ -38,21 +34,50 @@ ${stats.stack}` : "";
38
34
  if (lines[1] && lines[1].indexOf("Module not found:") !== -1) {
39
35
  lines[1] = lines[1].replace("Error: ", "");
40
36
  }
41
- message = lines.join("\n");
42
- message = message.replace(/^\s*at\s((?!webpack:).)*:\d+:\d+[\s)]*(\n|$)/gm, "");
43
- message = message.replace(/^\s*at\s<anonymous>(\n|$)/gm, "");
44
- lines = message.split("\n");
45
- lines = lines.filter((line, index, arr) => index === 0 || line.trim() !== "" || line.trim() !== arr[index - 1].trim());
37
+ lines = lines.filter(function(line, index, arr) {
38
+ return index === 0 || line.trim() !== "" || line.trim() !== arr[index - 1].trim();
39
+ });
46
40
  message = lines.join("\n");
47
41
  return message.trim();
48
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
+ }
49
72
  function formatWebpackMessages(json) {
50
- var _json_errors, _json_warnings, _result_errors;
51
- const formattedErrors = json === null || json === void 0 ? void 0 : (_json_errors = json.errors) === null || _json_errors === void 0 ? void 0 : _json_errors.map(formatMessage);
52
- const formattedWarnings = json === null || json === void 0 ? void 0 : (_json_warnings = json.warnings) === null || _json_warnings === void 0 ? void 0 : _json_warnings.map(formatMessage);
53
- const result = {
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);
77
+ var result = {
54
78
  errors: formattedErrors || [],
55
- warnings: formattedWarnings || []
79
+ warnings: formattedWarnings || [],
80
+ errorTips: []
56
81
  };
57
82
  if ((_result_errors = result.errors) === null || _result_errors === void 0 ? void 0 : _result_errors.some(isLikelyASyntaxError)) {
58
83
  result.errors = result.errors.filter(isLikelyASyntaxError);
@@ -60,6 +85,7 @@ function formatWebpackMessages(json) {
60
85
  if (result.errors.length > 1) {
61
86
  result.errors.length = 1;
62
87
  }
88
+ result.errors = addErrorTips(result.errors, color);
63
89
  return result;
64
90
  }
65
91
  export { formatWebpackMessages };
@@ -1,24 +1,51 @@
1
- export const pluginDagSort = (plugins, key = "name", preKey = "pre", postKey = "post") => {
2
- let allLines = [];
3
- function getPluginByAny(q) {
4
- const target = plugins.find((item) => typeof q === "string" ? item[key] === q : item[key] === q[key]);
1
+ export var pluginDagSort = function(plugins) {
2
+ var _loop = function() {
3
+ var zep = zeroEndPoints.shift();
4
+ sortedPoint.push(getPluginByAny(zep));
5
+ allLines = allLines.filter(function(l) {
6
+ return l[0] !== getPluginByAny(zep)[key];
7
+ });
8
+ var restPoints = plugins.filter(function(item) {
9
+ return !sortedPoint.find(function(sp) {
10
+ return sp[key] === item[key];
11
+ });
12
+ });
13
+ zeroEndPoints = restPoints.filter(
14
+ // eslint-disable-next-line @typescript-eslint/no-loop-func
15
+ function(item) {
16
+ return !allLines.find(function(l) {
17
+ return l[1] === item[key];
18
+ });
19
+ }
20
+ );
21
+ };
22
+ var key = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "name", preKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "pre", postKey = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "post";
23
+ var getPluginByAny = function getPluginByAny2(q) {
24
+ var target = plugins.find(function(item) {
25
+ return typeof q === "string" ? item[key] === q : item[key] === q[key];
26
+ });
5
27
  if (!target) {
6
- throw new Error(`plugin ${q} not existed`);
28
+ throw new Error("plugin ".concat(q, " not existed"));
7
29
  }
8
30
  return target;
9
- }
10
- plugins.forEach((item) => {
31
+ };
32
+ var allLines = [];
33
+ plugins.forEach(function(item) {
11
34
  var _item_preKey, _item_postKey;
12
- (_item_preKey = item[preKey]) === null || _item_preKey === void 0 ? void 0 : _item_preKey.forEach((p) => {
13
- if (plugins.find((ap) => ap.name === p)) {
35
+ (_item_preKey = item[preKey]) === null || _item_preKey === void 0 ? void 0 : _item_preKey.forEach(function(p) {
36
+ if (plugins.find(function(ap) {
37
+ return ap.name === p;
38
+ })) {
14
39
  allLines.push([
15
40
  getPluginByAny(p)[key],
16
41
  getPluginByAny(item)[key]
17
42
  ]);
18
43
  }
19
44
  });
20
- (_item_postKey = item[postKey]) === null || _item_postKey === void 0 ? void 0 : _item_postKey.forEach((pt) => {
21
- if (plugins.find((ap) => ap.name === pt)) {
45
+ (_item_postKey = item[postKey]) === null || _item_postKey === void 0 ? void 0 : _item_postKey.forEach(function(pt) {
46
+ if (plugins.find(function(ap) {
47
+ return ap.name === pt;
48
+ })) {
22
49
  allLines.push([
23
50
  getPluginByAny(item)[key],
24
51
  getPluginByAny(pt)[key]
@@ -26,25 +53,21 @@ export const pluginDagSort = (plugins, key = "name", preKey = "pre", postKey = "
26
53
  }
27
54
  });
28
55
  });
29
- let zeroEndPoints = plugins.filter((item) => !allLines.find((l) => l[1] === item[key]));
30
- const sortedPoint = [];
31
- while (zeroEndPoints.length) {
32
- const zep = zeroEndPoints.shift();
33
- sortedPoint.push(getPluginByAny(zep));
34
- allLines = allLines.filter((l) => l[0] !== getPluginByAny(zep)[key]);
35
- const restPoints = plugins.filter((item) => !sortedPoint.find((sp) => sp[key] === item[key]));
36
- zeroEndPoints = restPoints.filter(
37
- // eslint-disable-next-line @typescript-eslint/no-loop-func
38
- (item) => !allLines.find((l) => l[1] === item[key])
39
- );
40
- }
56
+ var zeroEndPoints = plugins.filter(function(item) {
57
+ return !allLines.find(function(l) {
58
+ return l[1] === item[key];
59
+ });
60
+ });
61
+ var sortedPoint = [];
62
+ while (zeroEndPoints.length)
63
+ _loop();
41
64
  if (allLines.length) {
42
- const restInRingPoints = {};
43
- allLines.forEach((l) => {
65
+ var restInRingPoints = {};
66
+ allLines.forEach(function(l) {
44
67
  restInRingPoints[l[0]] = true;
45
68
  restInRingPoints[l[1]] = true;
46
69
  });
47
- throw new Error(`plugins dependences has loop: ${Object.keys(restInRingPoints).join(",")}`);
70
+ throw new Error("plugins dependences has loop: ".concat(Object.keys(restInRingPoints).join(",")));
48
71
  }
49
72
  return sortedPoint;
50
73
  };