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

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