@modern-js/utils 2.12.0 → 2.12.1-alpha.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 (228) 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/cjs/emptyDir.js +32 -0
  6. package/dist/{getEntryOptions.js → cjs/getEntryOptions.js} +1 -15
  7. package/dist/{getPackageManager.js → cjs/getPackageManager.js} +19 -41
  8. package/dist/{getPort.js → cjs/getPort.js} +4 -24
  9. package/dist/{getServerConfig.js → cjs/getServerConfig.js} +2 -22
  10. package/dist/{logger.js → cjs/logger.js} +5 -16
  11. package/dist/{monorepo.js → cjs/monorepo.js} +4 -15
  12. package/dist/cjs/nodeEnv.js +55 -0
  13. package/dist/{path.js → cjs/path.js} +1 -1
  14. package/dist/{pathSerializer.js → cjs/pathSerializer.js} +1 -1
  15. package/dist/{react.js → cjs/react.js} +4 -15
  16. package/dist/{runtimeExports.js → cjs/runtimeExports.js} +1 -1
  17. package/dist/{universal → cjs/universal}/nestedRoutes.js +2 -19
  18. package/dist/cjs/version.js +59 -0
  19. package/dist/{watch.js → cjs/watch.js} +9 -29
  20. package/dist/esm/FileSizeReporter.js +180 -0
  21. package/dist/esm/alias.js +83 -0
  22. package/dist/esm/analyzeProject.js +168 -0
  23. package/dist/esm/applyOptionsChain.js +26 -0
  24. package/dist/esm/babel.js +169 -0
  25. package/dist/esm/chainId.js +92 -0
  26. package/dist/esm/clearConsole.js +6 -0
  27. package/dist/esm/commands.js +17 -0
  28. package/dist/esm/compatRequire.js +68 -0
  29. package/dist/esm/compiled.js +34 -0
  30. package/dist/esm/constants.js +317 -0
  31. package/dist/esm/debug.js +5 -0
  32. package/dist/esm/emptyDir.js +158 -0
  33. package/dist/esm/ensureAbsolutePath.js +5 -0
  34. package/dist/esm/ensureArray.js +9 -0
  35. package/dist/esm/findExists.js +27 -0
  36. package/dist/esm/generateMetaTags.js +40 -0
  37. package/dist/esm/getBrowserslist.js +12 -0
  38. package/dist/esm/getCoreJsVersion.js +57 -0
  39. package/dist/esm/getEntryOptions.js +45 -0
  40. package/dist/esm/getPackageManager.js +187 -0
  41. package/dist/esm/getPort.js +215 -0
  42. package/dist/esm/getServerConfig.js +145 -0
  43. package/dist/esm/getTargetDir.js +6 -0
  44. package/dist/esm/import.js +8 -0
  45. package/dist/esm/index.js +44 -0
  46. package/dist/esm/is/index.js +85 -0
  47. package/dist/esm/is/nodeEnv.js +16 -0
  48. package/dist/esm/is/platform.js +7 -0
  49. package/dist/esm/is/type.js +25 -0
  50. package/dist/esm/logger.js +207 -0
  51. package/dist/esm/monorepo.js +109 -0
  52. package/dist/esm/nodeEnv.js +258 -0
  53. package/dist/esm/path.js +85 -0
  54. package/dist/esm/pathSerializer.js +85 -0
  55. package/dist/esm/plugin.js +45 -0
  56. package/dist/esm/prettyInstructions.js +96 -0
  57. package/dist/esm/printBuildError.js +24 -0
  58. package/dist/esm/react.js +43 -0
  59. package/dist/esm/readTsConfig.js +10 -0
  60. package/dist/esm/removeSlash.js +10 -0
  61. package/dist/esm/resolve.js +42 -0
  62. package/dist/esm/routes.js +19 -0
  63. package/dist/esm/runtimeExports.js +65 -0
  64. package/dist/esm/ssr.js +3 -0
  65. package/dist/esm/storage.js +36 -0
  66. package/dist/esm/testUtils.js +13 -0
  67. package/dist/esm/types.js +1 -0
  68. package/dist/esm/universal/constants.js +3 -0
  69. package/dist/esm/universal/formatWebpack.js +108 -0
  70. package/dist/esm/universal/nestedRoutes.js +174 -0
  71. package/dist/esm/universal/remixRouter.js +1 -0
  72. package/dist/esm/universal/serialize.js +7 -0
  73. package/dist/esm/version.js +193 -0
  74. package/dist/esm/wait.js +7 -0
  75. package/dist/esm/watch.js +230 -0
  76. package/dist/esm-node/FileSizeReporter.js +133 -0
  77. package/dist/esm-node/alias.js +61 -0
  78. package/dist/esm-node/analyzeProject.js +17 -0
  79. package/dist/esm-node/applyOptionsChain.js +35 -0
  80. package/dist/esm-node/babel.js +105 -0
  81. package/dist/esm-node/chainId.js +173 -0
  82. package/dist/esm-node/clearConsole.js +8 -0
  83. package/dist/esm-node/commands.js +22 -0
  84. package/dist/esm-node/compatRequire.js +42 -0
  85. package/dist/esm-node/compiled.js +77 -0
  86. package/dist/esm-node/constants.js +264 -0
  87. package/dist/esm-node/debug.js +5 -0
  88. package/dist/esm-node/emptyDir.js +9 -0
  89. package/dist/esm-node/ensureAbsolutePath.js +5 -0
  90. package/dist/esm-node/ensureArray.js +9 -0
  91. package/dist/esm-node/findExists.js +12 -0
  92. package/dist/esm-node/generateMetaTags.js +38 -0
  93. package/dist/esm-node/getBrowserslist.js +7 -0
  94. package/dist/esm-node/getCoreJsVersion.js +13 -0
  95. package/dist/esm-node/getEntryOptions.js +17 -0
  96. package/dist/esm-node/getPackageManager.js +32 -0
  97. package/dist/esm-node/getPort.js +59 -0
  98. package/dist/esm-node/getServerConfig.js +14 -0
  99. package/dist/esm-node/getTargetDir.js +8 -0
  100. package/dist/esm-node/import.js +9 -0
  101. package/dist/esm-node/index.js +44 -0
  102. package/dist/esm-node/is/index.js +71 -0
  103. package/dist/esm-node/is/nodeEnv.js +12 -0
  104. package/dist/esm-node/is/platform.js +6 -0
  105. package/dist/esm-node/is/type.js +34 -0
  106. package/dist/esm-node/logger.js +100 -0
  107. package/dist/esm-node/monorepo.js +87 -0
  108. package/dist/esm-node/nodeEnv.js +30 -0
  109. package/dist/esm-node/path.js +50 -0
  110. package/dist/esm-node/pathSerializer.js +46 -0
  111. package/dist/esm-node/plugin.js +23 -0
  112. package/dist/esm-node/prettyInstructions.js +77 -0
  113. package/dist/esm-node/printBuildError.js +34 -0
  114. package/dist/esm-node/react.js +20 -0
  115. package/dist/esm-node/readTsConfig.js +13 -0
  116. package/dist/esm-node/removeSlash.js +8 -0
  117. package/dist/esm-node/resolve.js +38 -0
  118. package/dist/esm-node/routes.js +24 -0
  119. package/dist/esm-node/runtimeExports.js +40 -0
  120. package/dist/esm-node/ssr.js +6 -0
  121. package/dist/esm-node/storage.js +42 -0
  122. package/dist/esm-node/testUtils.js +15 -0
  123. package/dist/esm-node/types.js +0 -0
  124. package/dist/esm-node/universal/constants.js +6 -0
  125. package/dist/esm-node/universal/formatWebpack.js +77 -0
  126. package/dist/esm-node/universal/nestedRoutes.js +93 -0
  127. package/dist/esm-node/universal/remixRouter.js +1 -0
  128. package/dist/esm-node/universal/serialize.js +7 -0
  129. package/dist/esm-node/version.js +25 -0
  130. package/dist/esm-node/wait.js +6 -0
  131. package/dist/esm-node/watch.js +36 -0
  132. package/package.json +2 -2
  133. package/dist/emptyDir.js +0 -52
  134. package/dist/nodeEnv.js +0 -81
  135. package/dist/version.js +0 -92
  136. /package/dist/{FileSizeReporter.js → cjs/FileSizeReporter.js} +0 -0
  137. /package/dist/{applyOptionsChain.js → cjs/applyOptionsChain.js} +0 -0
  138. /package/dist/{chainId.js → cjs/chainId.js} +0 -0
  139. /package/dist/{clearConsole.js → cjs/clearConsole.js} +0 -0
  140. /package/dist/{commands.js → cjs/commands.js} +0 -0
  141. /package/dist/{compiled.js → cjs/compiled.js} +0 -0
  142. /package/dist/{constants.js → cjs/constants.js} +0 -0
  143. /package/dist/{debug.js → cjs/debug.js} +0 -0
  144. /package/dist/{ensureAbsolutePath.js → cjs/ensureAbsolutePath.js} +0 -0
  145. /package/dist/{ensureArray.js → cjs/ensureArray.js} +0 -0
  146. /package/dist/{findExists.js → cjs/findExists.js} +0 -0
  147. /package/dist/{generateMetaTags.js → cjs/generateMetaTags.js} +0 -0
  148. /package/dist/{getBrowserslist.js → cjs/getBrowserslist.js} +0 -0
  149. /package/dist/{getCoreJsVersion.js → cjs/getCoreJsVersion.js} +0 -0
  150. /package/dist/{getTargetDir.js → cjs/getTargetDir.js} +0 -0
  151. /package/dist/{import.js → cjs/import.js} +0 -0
  152. /package/dist/{index.js → cjs/index.js} +0 -0
  153. /package/dist/{is → cjs/is}/index.js +0 -0
  154. /package/dist/{is → cjs/is}/nodeEnv.js +0 -0
  155. /package/dist/{is → cjs/is}/platform.js +0 -0
  156. /package/dist/{is → cjs/is}/type.js +0 -0
  157. /package/dist/{plugin.js → cjs/plugin.js} +0 -0
  158. /package/dist/{prettyInstructions.js → cjs/prettyInstructions.js} +0 -0
  159. /package/dist/{printBuildError.js → cjs/printBuildError.js} +0 -0
  160. /package/dist/{readTsConfig.js → cjs/readTsConfig.js} +0 -0
  161. /package/dist/{removeSlash.js → cjs/removeSlash.js} +0 -0
  162. /package/dist/{resolve.js → cjs/resolve.js} +0 -0
  163. /package/dist/{routes.js → cjs/routes.js} +0 -0
  164. /package/dist/{ssr.js → cjs/ssr.js} +0 -0
  165. /package/dist/{storage.js → cjs/storage.js} +0 -0
  166. /package/dist/{testUtils.js → cjs/testUtils.js} +0 -0
  167. /package/dist/{types.js → cjs/types.js} +0 -0
  168. /package/dist/{universal → cjs/universal}/constants.js +0 -0
  169. /package/dist/{universal → cjs/universal}/formatWebpack.js +0 -0
  170. /package/dist/{universal → cjs/universal}/remixRouter.js +0 -0
  171. /package/dist/{universal → cjs/universal}/serialize.js +0 -0
  172. /package/dist/{wait.js → cjs/wait.js} +0 -0
  173. /package/dist/{FileSizeReporter.d.ts → types/FileSizeReporter.d.ts} +0 -0
  174. /package/dist/{alias.d.ts → types/alias.d.ts} +0 -0
  175. /package/dist/{analyzeProject.d.ts → types/analyzeProject.d.ts} +0 -0
  176. /package/dist/{applyOptionsChain.d.ts → types/applyOptionsChain.d.ts} +0 -0
  177. /package/dist/{babel.d.ts → types/babel.d.ts} +0 -0
  178. /package/dist/{chainId.d.ts → types/chainId.d.ts} +0 -0
  179. /package/dist/{clearConsole.d.ts → types/clearConsole.d.ts} +0 -0
  180. /package/dist/{commands.d.ts → types/commands.d.ts} +0 -0
  181. /package/dist/{compatRequire.d.ts → types/compatRequire.d.ts} +0 -0
  182. /package/dist/{compiled.d.ts → types/compiled.d.ts} +0 -0
  183. /package/dist/{constants.d.ts → types/constants.d.ts} +0 -0
  184. /package/dist/{debug.d.ts → types/debug.d.ts} +0 -0
  185. /package/dist/{emptyDir.d.ts → types/emptyDir.d.ts} +0 -0
  186. /package/dist/{ensureAbsolutePath.d.ts → types/ensureAbsolutePath.d.ts} +0 -0
  187. /package/dist/{ensureArray.d.ts → types/ensureArray.d.ts} +0 -0
  188. /package/dist/{findExists.d.ts → types/findExists.d.ts} +0 -0
  189. /package/dist/{generateMetaTags.d.ts → types/generateMetaTags.d.ts} +0 -0
  190. /package/dist/{getBrowserslist.d.ts → types/getBrowserslist.d.ts} +0 -0
  191. /package/dist/{getCoreJsVersion.d.ts → types/getCoreJsVersion.d.ts} +0 -0
  192. /package/dist/{getEntryOptions.d.ts → types/getEntryOptions.d.ts} +0 -0
  193. /package/dist/{getPackageManager.d.ts → types/getPackageManager.d.ts} +0 -0
  194. /package/dist/{getPort.d.ts → types/getPort.d.ts} +0 -0
  195. /package/dist/{getServerConfig.d.ts → types/getServerConfig.d.ts} +0 -0
  196. /package/dist/{getTargetDir.d.ts → types/getTargetDir.d.ts} +0 -0
  197. /package/dist/{import.d.ts → types/import.d.ts} +0 -0
  198. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  199. /package/dist/{is → types/is}/index.d.ts +0 -0
  200. /package/dist/{is → types/is}/nodeEnv.d.ts +0 -0
  201. /package/dist/{is → types/is}/platform.d.ts +0 -0
  202. /package/dist/{is → types/is}/type.d.ts +0 -0
  203. /package/dist/{logger.d.ts → types/logger.d.ts} +0 -0
  204. /package/dist/{monorepo.d.ts → types/monorepo.d.ts} +0 -0
  205. /package/dist/{nodeEnv.d.ts → types/nodeEnv.d.ts} +0 -0
  206. /package/dist/{path.d.ts → types/path.d.ts} +0 -0
  207. /package/dist/{pathSerializer.d.ts → types/pathSerializer.d.ts} +0 -0
  208. /package/dist/{plugin.d.ts → types/plugin.d.ts} +0 -0
  209. /package/dist/{prettyInstructions.d.ts → types/prettyInstructions.d.ts} +0 -0
  210. /package/dist/{printBuildError.d.ts → types/printBuildError.d.ts} +0 -0
  211. /package/dist/{react.d.ts → types/react.d.ts} +0 -0
  212. /package/dist/{readTsConfig.d.ts → types/readTsConfig.d.ts} +0 -0
  213. /package/dist/{removeSlash.d.ts → types/removeSlash.d.ts} +0 -0
  214. /package/dist/{resolve.d.ts → types/resolve.d.ts} +0 -0
  215. /package/dist/{routes.d.ts → types/routes.d.ts} +0 -0
  216. /package/dist/{runtimeExports.d.ts → types/runtimeExports.d.ts} +0 -0
  217. /package/dist/{ssr.d.ts → types/ssr.d.ts} +0 -0
  218. /package/dist/{storage.d.ts → types/storage.d.ts} +0 -0
  219. /package/dist/{testUtils.d.ts → types/testUtils.d.ts} +0 -0
  220. /package/dist/{types.d.ts → types/types.d.ts} +0 -0
  221. /package/dist/{universal → types/universal}/constants.d.ts +0 -0
  222. /package/dist/{universal → types/universal}/formatWebpack.d.ts +0 -0
  223. /package/dist/{universal → types/universal}/nestedRoutes.d.ts +0 -0
  224. /package/dist/{universal → types/universal}/remixRouter.d.ts +0 -0
  225. /package/dist/{universal → types/universal}/serialize.d.ts +0 -0
  226. /package/dist/{version.d.ts → types/version.d.ts} +0 -0
  227. /package/dist/{wait.d.ts → types/wait.d.ts} +0 -0
  228. /package/dist/{watch.d.ts → types/watch.d.ts} +0 -0
@@ -0,0 +1,230 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import * as path from "path";
126
+ import { chokidar } from "./compiled";
127
+ var WatchChangeType = {
128
+ ADD: "add",
129
+ UNLINK: "unlink",
130
+ CHANGE: "change"
131
+ };
132
+ var watch = function(watchDir, runTask) {
133
+ var ignored = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
134
+ var ready = false;
135
+ var watcher = chokidar.watch(watchDir, {
136
+ ignored: ignored
137
+ });
138
+ watcher.on("ready", function() {
139
+ return ready = true;
140
+ });
141
+ watcher.on("change", function() {
142
+ var _ref = _asyncToGenerator(function(filePath) {
143
+ var changedFilePath;
144
+ return __generator(this, function(_state) {
145
+ switch(_state.label){
146
+ case 0:
147
+ changedFilePath = path.resolve(filePath);
148
+ return [
149
+ 4,
150
+ runTask({
151
+ changedFilePath: changedFilePath,
152
+ changeType: WatchChangeType.CHANGE
153
+ })
154
+ ];
155
+ case 1:
156
+ _state.sent();
157
+ return [
158
+ 2
159
+ ];
160
+ }
161
+ });
162
+ });
163
+ return function(filePath) {
164
+ return _ref.apply(this, arguments);
165
+ };
166
+ }());
167
+ watcher.on("add", function() {
168
+ var _ref = _asyncToGenerator(function(filePath) {
169
+ var changedFilePath;
170
+ return __generator(this, function(_state) {
171
+ switch(_state.label){
172
+ case 0:
173
+ changedFilePath = path.resolve(filePath);
174
+ if (!ready) return [
175
+ 3,
176
+ 2
177
+ ];
178
+ return [
179
+ 4,
180
+ runTask({
181
+ changedFilePath: changedFilePath,
182
+ changeType: WatchChangeType.ADD
183
+ })
184
+ ];
185
+ case 1:
186
+ _state.sent();
187
+ _state.label = 2;
188
+ case 2:
189
+ return [
190
+ 2
191
+ ];
192
+ }
193
+ });
194
+ });
195
+ return function(filePath) {
196
+ return _ref.apply(this, arguments);
197
+ };
198
+ }());
199
+ watcher.on("unlink", function() {
200
+ var _ref = _asyncToGenerator(function(filePath) {
201
+ var changedFilePath;
202
+ return __generator(this, function(_state) {
203
+ switch(_state.label){
204
+ case 0:
205
+ changedFilePath = path.resolve(filePath);
206
+ return [
207
+ 4,
208
+ runTask({
209
+ changedFilePath: changedFilePath,
210
+ changeType: WatchChangeType.UNLINK
211
+ })
212
+ ];
213
+ case 1:
214
+ _state.sent();
215
+ return [
216
+ 2
217
+ ];
218
+ }
219
+ });
220
+ });
221
+ return function(filePath) {
222
+ return _ref.apply(this, arguments);
223
+ };
224
+ }());
225
+ watcher.on("error", function(err) {
226
+ throw err;
227
+ });
228
+ return watcher;
229
+ };
230
+ export { WatchChangeType, watch };
@@ -0,0 +1,133 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import {
4
+ chalk,
5
+ filesize,
6
+ stripAnsi,
7
+ gzipSize,
8
+ recursiveReaddir
9
+ } from "./compiled";
10
+ import { logger } from "./logger";
11
+ function canReadAsset(asset) {
12
+ return /\.(js|css)$/.test(asset) && !/service-worker\.js/.test(asset) && !/precache-manifest\.[0-9a-f]+\.js/.test(asset);
13
+ }
14
+ function printFileSizesAfterBuild(webpackStats, previousSizeMap, buildFolder, maxBundleGzipSize, maxChunkGzipSize) {
15
+ var root = previousSizeMap.root;
16
+ var sizes = previousSizeMap.sizes;
17
+ var assets = (webpackStats.stats || [webpackStats]).map(
18
+ (stats) => stats.toJson({ all: false, assets: true }).assets.filter((asset) => canReadAsset(asset.name)).map((asset) => {
19
+ var fileContents = fs.readFileSync(path.join(root, asset.name));
20
+ var size = fileContents.length;
21
+ var gzippedSize = gzipSize.sync(fileContents);
22
+ var [previousSize, previousGzipSize] = sizes[removeFileNameHash(root, asset.name)] || [];
23
+ var sizeDifference = getDifferenceLabel(size, previousSize);
24
+ var gzipSizeDifference = getDifferenceLabel(
25
+ gzippedSize,
26
+ previousGzipSize
27
+ );
28
+ return {
29
+ folder: path.join(
30
+ path.basename(buildFolder),
31
+ path.dirname(asset.name)
32
+ ),
33
+ name: path.basename(asset.name),
34
+ gzippedSize,
35
+ sizeLabel: filesize(size) + (sizeDifference ? " (" + sizeDifference + ")" : ""),
36
+ gzipSizeLabel: filesize(gzippedSize) + (gzipSizeDifference ? " (" + gzipSizeDifference + ")" : "")
37
+ };
38
+ })
39
+ ).reduce((single, all) => all.concat(single), []);
40
+ assets.sort((a, b) => b.size - a.size);
41
+ var longestSizeLabelLength = Math.max.apply(
42
+ null,
43
+ assets.map((a) => stripAnsi(a.sizeLabel).length)
44
+ );
45
+ var longestFileNameLength = Math.max.apply(
46
+ null,
47
+ assets.map((a) => stripAnsi(a.folder + path.sep + a.name).length)
48
+ );
49
+ printFileSizesHeader(longestFileNameLength, longestSizeLabelLength);
50
+ var suggestBundleSplitting = false;
51
+ assets.forEach((asset) => {
52
+ var { folder, name, sizeLabel, gzipSizeLabel, gzippedSize } = asset;
53
+ var fileNameLength = stripAnsi(folder + path.sep + name).length;
54
+ var sizeLength = stripAnsi(sizeLabel).length;
55
+ if (sizeLength < longestSizeLabelLength) {
56
+ var rightPadding = " ".repeat(longestSizeLabelLength - sizeLength);
57
+ sizeLabel += rightPadding;
58
+ }
59
+ var fileNameLabel = chalk.dim(asset.folder + path.sep) + chalk.cyan(asset.name);
60
+ if (fileNameLength < longestFileNameLength) {
61
+ var rightPadding = " ".repeat(longestFileNameLength - fileNameLength);
62
+ fileNameLabel += rightPadding;
63
+ }
64
+ var isMainBundle = asset.name.indexOf("main.") === 0;
65
+ var maxRecommendedSize = isMainBundle ? maxBundleGzipSize : maxChunkGzipSize;
66
+ var isLarge = maxRecommendedSize && gzippedSize > maxRecommendedSize;
67
+ if (isLarge && path.extname(asset.name) === ".js") {
68
+ suggestBundleSplitting = true;
69
+ }
70
+ logger.log(
71
+ " " + fileNameLabel + " " + sizeLabel + " " + (isLarge ? chalk.yellow(gzipSizeLabel) : gzipSizeLabel)
72
+ );
73
+ });
74
+ if (suggestBundleSplitting) {
75
+ logger.log();
76
+ logger.warn("The bundle size is significantly larger than recommended.");
77
+ }
78
+ }
79
+ function printFileSizesHeader(longestFileNameLength, longestSizeLabelLength) {
80
+ const longestLengths = [longestFileNameLength, longestSizeLabelLength];
81
+ const headerRow = ["File", "Size", "Gzipped"].reduce((prev, cur, index) => {
82
+ const length = longestLengths[index];
83
+ let curLabel = cur;
84
+ if (length) {
85
+ curLabel = cur.length < length ? cur + " ".repeat(length - cur.length) : cur;
86
+ }
87
+ return prev + curLabel + " ";
88
+ }, " ");
89
+ logger.log(chalk.bold(chalk.blue(headerRow)));
90
+ }
91
+ function removeFileNameHash(buildFolder, fileName) {
92
+ return fileName.replace(buildFolder, "").replace(/\\/g, "/").replace(
93
+ /\/?(.*)(\.[0-9a-f]+)(\.chunk)?(\.js|\.css)/,
94
+ (match, p1, p2, p3, p4) => p1 + p4
95
+ );
96
+ }
97
+ function getDifferenceLabel(currentSize, previousSize) {
98
+ var FIFTY_KILOBYTES = 1024 * 50;
99
+ var difference = currentSize - previousSize;
100
+ var fileSize = !Number.isNaN(difference) ? filesize(difference) : 0;
101
+ if (difference >= FIFTY_KILOBYTES) {
102
+ return chalk.red("+" + fileSize);
103
+ } else if (difference < FIFTY_KILOBYTES && difference > 0) {
104
+ return chalk.yellow("+" + fileSize);
105
+ } else if (difference < 0) {
106
+ return chalk.green(fileSize);
107
+ } else {
108
+ return "";
109
+ }
110
+ }
111
+ function measureFileSizesBeforeBuild(buildFolder) {
112
+ return new Promise((resolve) => {
113
+ recursiveReaddir(buildFolder, (err, fileNames) => {
114
+ var sizes;
115
+ if (!err && fileNames) {
116
+ sizes = fileNames.filter(canReadAsset).reduce((memo, fileName) => {
117
+ var contents = fs.readFileSync(fileName);
118
+ var key = removeFileNameHash(buildFolder, fileName);
119
+ memo[key] = [contents.length, gzipSize.sync(contents)];
120
+ return memo;
121
+ }, {});
122
+ }
123
+ resolve({
124
+ root: buildFolder,
125
+ sizes: sizes || {}
126
+ });
127
+ });
128
+ });
129
+ }
130
+ export {
131
+ measureFileSizesBeforeBuild,
132
+ printFileSizesAfterBuild
133
+ };
@@ -0,0 +1,61 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { chalk } from "./compiled";
4
+ import { readTsConfigByFile } from "./readTsConfig";
5
+ import { applyOptionsChain } from "./applyOptionsChain";
6
+ const validAlias = (modernConfig, { tsconfigPath }) => {
7
+ const {
8
+ source: { alias }
9
+ } = modernConfig;
10
+ if (!alias) {
11
+ return null;
12
+ }
13
+ const isTsProject = fs.existsSync(tsconfigPath);
14
+ if (!isTsProject) {
15
+ return null;
16
+ }
17
+ const userAlias = getUserAlias(alias);
18
+ if (Object.keys(userAlias).length > 0) {
19
+ return chalk.red(
20
+ 'Note: Please use `compilerOptions.paths` in "tsconfig.json" file replace `source.alias` config in "modern.config.js/ts" when project is typescript'
21
+ );
22
+ }
23
+ return null;
24
+ };
25
+ const mergeAlias = (alias) => applyOptionsChain({}, alias);
26
+ const getAliasConfig = (aliasOption, option) => {
27
+ var _a, _b;
28
+ const isTsProject = fs.existsSync(option.tsconfigPath);
29
+ const alias = mergeAlias(aliasOption);
30
+ if (!isTsProject) {
31
+ return {
32
+ absoluteBaseUrl: option.appDirectory,
33
+ paths: alias,
34
+ isTsPath: false,
35
+ isTsProject
36
+ };
37
+ }
38
+ const tsconfig = readTsConfigByFile(option.tsconfigPath);
39
+ const baseUrl = (_a = tsconfig == null ? void 0 : tsconfig.compilerOptions) == null ? void 0 : _a.baseUrl;
40
+ return {
41
+ absoluteBaseUrl: baseUrl ? path.join(option.appDirectory, baseUrl) : option.appDirectory,
42
+ paths: {
43
+ ...alias,
44
+ ...(_b = tsconfig == null ? void 0 : tsconfig.compilerOptions) == null ? void 0 : _b.paths
45
+ },
46
+ isTsPath: true,
47
+ isTsProject
48
+ };
49
+ };
50
+ const getUserAlias = (alias = {}) => Object.keys(alias).reduce((o, k) => {
51
+ if (Array.isArray(alias[k])) {
52
+ o[k] = alias[k];
53
+ }
54
+ return o;
55
+ }, {});
56
+ export {
57
+ getAliasConfig,
58
+ getUserAlias,
59
+ mergeAlias,
60
+ validAlias
61
+ };
@@ -0,0 +1,17 @@
1
+ import * as path from "path";
2
+ import { getArgv } from "./commands";
3
+ import { fs, minimist } from "./compiled";
4
+ const isApiOnly = async (appDirectory, entryDir) => {
5
+ const srcDir = path.join(appDirectory, entryDir != null ? entryDir : "src");
6
+ const existSrc = await fs.pathExists(srcDir);
7
+ const options = minimist(getArgv());
8
+ return !existSrc || Boolean(options["api-only"]);
9
+ };
10
+ const isWebOnly = async () => {
11
+ const options = minimist(getArgv());
12
+ return Boolean(options["web-only"]);
13
+ };
14
+ export {
15
+ isApiOnly,
16
+ isWebOnly
17
+ };
@@ -0,0 +1,35 @@
1
+ import { isFunction, logger, isPlainObject } from "./index";
2
+ function applyOptionsChain(defaults, options, utils, mergeFn = Object.assign) {
3
+ if (!options) {
4
+ return defaults;
5
+ }
6
+ if (isPlainObject(options)) {
7
+ return mergeFn(defaults, options);
8
+ } else if (isFunction(options)) {
9
+ const ret = options(defaults, utils);
10
+ if (ret) {
11
+ if (!isPlainObject(ret)) {
12
+ logger.warn(
13
+ `${options.name}: Function should mutate the config and return nothing, Or return a cloned or merged version of config object.`
14
+ );
15
+ }
16
+ return ret;
17
+ }
18
+ } else if (Array.isArray(options)) {
19
+ return options.reduce(
20
+ (memo, cur) => applyOptionsChain(memo, cur, utils, mergeFn),
21
+ defaults
22
+ );
23
+ } else {
24
+ throw new Error(
25
+ `applyOptionsChain error:
26
+ default options is: ${JSON.stringify(
27
+ defaults
28
+ )}`
29
+ );
30
+ }
31
+ return defaults;
32
+ }
33
+ export {
34
+ applyOptionsChain
35
+ };
@@ -0,0 +1,105 @@
1
+ import { isAbsolute, sep } from "path";
2
+ import { applyOptionsChain } from "./applyOptionsChain";
3
+ import { ensureArray } from "./ensureArray";
4
+ import { normalizeToPosixPath } from "./path";
5
+ const formatPath = (originPath) => {
6
+ if (isAbsolute(originPath)) {
7
+ return originPath.split(sep).join("/");
8
+ }
9
+ return originPath;
10
+ };
11
+ const getPluginItemName = (item) => {
12
+ if (typeof item === "string") {
13
+ return formatPath(item);
14
+ }
15
+ if (Array.isArray(item) && typeof item[0] === "string") {
16
+ return formatPath(item[0]);
17
+ }
18
+ return null;
19
+ };
20
+ const addPlugins = (plugins, config) => {
21
+ if (config.plugins) {
22
+ config.plugins.push(...plugins);
23
+ } else {
24
+ config.plugins = plugins;
25
+ }
26
+ };
27
+ const addPresets = (presets, config) => {
28
+ if (config.presets) {
29
+ config.presets.push(...presets);
30
+ } else {
31
+ config.presets = presets;
32
+ }
33
+ };
34
+ const removePlugins = (plugins, config) => {
35
+ if (!config.plugins) {
36
+ return;
37
+ }
38
+ const removeList = ensureArray(plugins);
39
+ config.plugins = config.plugins.filter((item) => {
40
+ const name = getPluginItemName(item);
41
+ if (name) {
42
+ return !removeList.find((removeItem) => name.includes(removeItem));
43
+ }
44
+ return true;
45
+ });
46
+ };
47
+ const removePresets = (presets, config) => {
48
+ if (!config.presets) {
49
+ return;
50
+ }
51
+ const removeList = ensureArray(presets);
52
+ config.presets = config.presets.filter((item) => {
53
+ const name = getPluginItemName(item);
54
+ if (name) {
55
+ return !removeList.find((removeItem) => name.includes(removeItem));
56
+ }
57
+ return true;
58
+ });
59
+ };
60
+ const modifyPresetOptions = (presetName, options, presets = []) => {
61
+ presets.forEach((preset, index) => {
62
+ if (Array.isArray(preset)) {
63
+ if (typeof preset[0] === "string" && normalizeToPosixPath(preset[0]).includes(presetName)) {
64
+ preset[1] = {
65
+ ...preset[1] || {},
66
+ ...options
67
+ // `options` is specific to different presets
68
+ };
69
+ }
70
+ } else if (typeof preset === "string" && normalizeToPosixPath(preset).includes(presetName)) {
71
+ presets[index] = [preset, options];
72
+ }
73
+ });
74
+ };
75
+ const getBabelUtils = (config) => {
76
+ const noop = () => {
77
+ };
78
+ return {
79
+ addPlugins: (plugins) => addPlugins(plugins, config),
80
+ addPresets: (presets) => addPresets(presets, config),
81
+ removePlugins: (plugins) => removePlugins(plugins, config),
82
+ removePresets: (presets) => removePresets(presets, config),
83
+ // `addIncludes` and `addExcludes` are noop functions by default,
84
+ // It can be overridden by `extraBabelUtils`.
85
+ addIncludes: noop,
86
+ addExcludes: noop,
87
+ // Compat `presetEnvOptions` and `presetReactOptions` in Eden.
88
+ modifyPresetEnvOptions: (options) => modifyPresetOptions("@babel/preset-env", options, config.presets || []),
89
+ modifyPresetReactOptions: (options) => modifyPresetOptions("@babel/preset-react", options, config.presets || [])
90
+ };
91
+ };
92
+ const applyUserBabelConfig = (defaultOptions, userBabelConfig, extraBabelUtils) => {
93
+ if (userBabelConfig) {
94
+ const babelUtils = {
95
+ ...getBabelUtils(defaultOptions),
96
+ ...extraBabelUtils
97
+ };
98
+ return applyOptionsChain(defaultOptions, userBabelConfig || {}, babelUtils);
99
+ }
100
+ return defaultOptions;
101
+ };
102
+ export {
103
+ applyUserBabelConfig,
104
+ getBabelUtils
105
+ };