@modern-js/utils 2.26.0 → 2.28.0

Sign up to get free protection for your applications and to get access to all the features.
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
  };