@umijs/bundler-webpack 3.5.18 → 4.0.0-beta.10

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 (334) hide show
  1. package/README.md +2 -0
  2. package/bin/bundler-webpack.js +1 -2
  3. package/client/client/client.js +202 -0
  4. package/client/constants.js +12 -0
  5. package/client/utils/formatWebpackMessages.js +92 -0
  6. package/compiled/@svgr/webpack/LICENSE +7 -0
  7. package/compiled/@svgr/webpack/index.js +266 -0
  8. package/compiled/@svgr/webpack/package.json +1 -0
  9. package/compiled/autoprefixer/LICENSE +20 -0
  10. package/compiled/autoprefixer/browserslist/index.d.ts +172 -0
  11. package/compiled/autoprefixer/index.js +9 -0
  12. package/compiled/autoprefixer/lib/autoprefixer.d.ts +95 -0
  13. package/compiled/autoprefixer/package.json +1 -0
  14. package/compiled/autoprefixer/postcss/lib/at-rule.d.ts +106 -0
  15. package/compiled/autoprefixer/postcss/lib/comment.d.ts +56 -0
  16. package/compiled/autoprefixer/postcss/lib/container.d.ts +442 -0
  17. package/compiled/autoprefixer/postcss/lib/css-syntax-error.d.ts +192 -0
  18. package/compiled/autoprefixer/postcss/lib/declaration.d.ts +124 -0
  19. package/compiled/autoprefixer/postcss/lib/document.d.ts +57 -0
  20. package/compiled/autoprefixer/postcss/lib/input.d.ts +130 -0
  21. package/compiled/autoprefixer/postcss/lib/lazy-result.d.ts +175 -0
  22. package/compiled/autoprefixer/postcss/lib/list.d.ts +51 -0
  23. package/compiled/autoprefixer/postcss/lib/node.d.ts +444 -0
  24. package/compiled/autoprefixer/postcss/lib/postcss.d.ts +472 -0
  25. package/compiled/autoprefixer/postcss/lib/previous-map.d.ts +72 -0
  26. package/compiled/autoprefixer/postcss/lib/processor.d.ts +101 -0
  27. package/compiled/autoprefixer/postcss/lib/result.d.ts +195 -0
  28. package/compiled/autoprefixer/postcss/lib/root.d.ts +73 -0
  29. package/compiled/autoprefixer/postcss/lib/rule.d.ts +104 -0
  30. package/compiled/autoprefixer/postcss/lib/warning.d.ts +104 -0
  31. package/compiled/autoprefixer/source-map-js/source-map.d.ts +98 -0
  32. package/compiled/babel-loader/LICENSE +22 -0
  33. package/compiled/babel-loader/index.js +3 -0
  34. package/compiled/babel-loader/package.json +1 -0
  35. package/compiled/compression/LICENSE +23 -0
  36. package/compiled/compression/index.js +57 -0
  37. package/compiled/compression/package.json +1 -0
  38. package/compiled/connect-history-api-fallback/LICENSE +21 -0
  39. package/compiled/connect-history-api-fallback/index.js +1 -0
  40. package/compiled/connect-history-api-fallback/package.json +1 -0
  41. package/{lib/webpack/plugins/mini-css-extract-plugin → compiled/copy-webpack-plugin}/LICENSE +0 -0
  42. package/compiled/copy-webpack-plugin/index.js +46 -0
  43. package/compiled/copy-webpack-plugin/package.json +1 -0
  44. package/{lib/webpack/plugins/terser-webpack-plugin → compiled/css-loader}/LICENSE +0 -0
  45. package/compiled/css-loader/api.js +102 -0
  46. package/compiled/css-loader/getUrl.js +29 -0
  47. package/compiled/css-loader/index.js +2 -0
  48. package/compiled/css-loader/noSourceMaps.js +5 -0
  49. package/compiled/css-loader/package.json +1 -0
  50. package/compiled/css-loader/sourceMaps.js +22 -0
  51. package/compiled/css-minimizer-webpack-plugin/LICENSE +20 -0
  52. package/compiled/css-minimizer-webpack-plugin/index.js +3 -0
  53. package/compiled/css-minimizer-webpack-plugin/minify.js +72 -0
  54. package/compiled/css-minimizer-webpack-plugin/package.json +1 -0
  55. package/compiled/css-minimizer-webpack-plugin/utils.js +166 -0
  56. package/compiled/cssnano/index.js +192 -0
  57. package/compiled/cssnano/package.json +1 -0
  58. package/compiled/express/LICENSE +24 -0
  59. package/compiled/express/body-parser/index.d.ts +104 -0
  60. package/compiled/express/connect/index.d.ts +93 -0
  61. package/compiled/express/express-serve-static-core/index.d.ts +1252 -0
  62. package/compiled/express/index.d.ts +133 -0
  63. package/compiled/express/index.js +338 -0
  64. package/compiled/express/mime/index.d.ts +35 -0
  65. package/compiled/express/package.json +1 -0
  66. package/compiled/express/qs/index.d.ts +62 -0
  67. package/compiled/express/range-parser/index.d.ts +35 -0
  68. package/compiled/express/serve-static/index.d.ts +108 -0
  69. package/compiled/http-proxy-middleware/LICENSE +22 -0
  70. package/compiled/http-proxy-middleware/dist/index.d.ts +4 -0
  71. package/compiled/http-proxy-middleware/dist/types.d.ts +54 -0
  72. package/compiled/http-proxy-middleware/http-proxy/index.d.ts +226 -0
  73. package/compiled/http-proxy-middleware/index.js +66 -0
  74. package/compiled/http-proxy-middleware/package.json +1 -0
  75. package/compiled/less/index.js +31 -0
  76. package/compiled/less/package.json +1 -0
  77. package/compiled/less-loader/LICENSE +20 -0
  78. package/compiled/less-loader/index.js +1 -0
  79. package/compiled/less-loader/package.json +1 -0
  80. package/compiled/mini-css-extract-plugin/LICENSE +20 -0
  81. package/{lib/webpack/plugins/mini-css-extract-plugin/src → compiled/mini-css-extract-plugin}/hmr/hotModuleReplacement.js +50 -52
  82. package/compiled/mini-css-extract-plugin/hmr/normalize-url.js +35 -0
  83. package/compiled/mini-css-extract-plugin/index.js +11606 -0
  84. package/compiled/mini-css-extract-plugin/loader-options.json +32 -0
  85. package/compiled/mini-css-extract-plugin/loader.js +315 -0
  86. package/compiled/mini-css-extract-plugin/package.json +1 -0
  87. package/compiled/mini-css-extract-plugin/utils.js +154 -0
  88. package/compiled/postcss-flexbugs-fixes/LICENSE +20 -0
  89. package/compiled/postcss-flexbugs-fixes/index.js +1 -0
  90. package/compiled/postcss-flexbugs-fixes/package.json +1 -0
  91. package/compiled/postcss-loader/LICENSE +20 -0
  92. package/compiled/postcss-loader/index.js +1 -0
  93. package/compiled/postcss-loader/package.json +1 -0
  94. package/compiled/purgecss-webpack-plugin/LICENSE +21 -0
  95. package/compiled/purgecss-webpack-plugin/index.js +7781 -0
  96. package/compiled/purgecss-webpack-plugin/package.json +1 -0
  97. package/compiled/react-refresh/index.js +19 -0
  98. package/compiled/sass-loader/LICENSE +20 -0
  99. package/compiled/sass-loader/index.js +1 -0
  100. package/compiled/sass-loader/package.json +1 -0
  101. package/compiled/schema-utils/LICENSE +20 -0
  102. package/compiled/schema-utils/ajv/lib/ajv.d.ts +397 -0
  103. package/compiled/schema-utils/declarations/ValidationError.d.ts +74 -0
  104. package/compiled/schema-utils/declarations/index.d.ts +3 -0
  105. package/compiled/schema-utils/declarations/validate.d.ts +37 -0
  106. package/compiled/schema-utils/index.js +3 -0
  107. package/compiled/schema-utils/json-schema/index.d.ts +751 -0
  108. package/compiled/schema-utils/package.json +1 -0
  109. package/compiled/speed-measure-webpack-plugin/LICENSE +21 -0
  110. package/compiled/speed-measure-webpack-plugin/index.js +1 -0
  111. package/compiled/speed-measure-webpack-plugin/package.json +1 -0
  112. package/compiled/style-loader/LICENSE +20 -0
  113. package/compiled/style-loader/index.js +1 -0
  114. package/compiled/style-loader/package.json +1 -0
  115. package/compiled/style-loader/runtime/injectStylesIntoLinkTag.js +29 -0
  116. package/compiled/style-loader/runtime/injectStylesIntoStyleTag.js +104 -0
  117. package/compiled/style-loader/runtime/insertBySelector.js +39 -0
  118. package/compiled/style-loader/runtime/insertStyleElement.js +11 -0
  119. package/compiled/style-loader/runtime/isEqualLocals.js +35 -0
  120. package/compiled/style-loader/runtime/isOldIE.js +19 -0
  121. package/compiled/style-loader/runtime/setAttributesWithAttributes.js +16 -0
  122. package/compiled/style-loader/runtime/setAttributesWithAttributesAndNonce.js +10 -0
  123. package/compiled/style-loader/runtime/setAttributesWithoutAttributes.js +12 -0
  124. package/compiled/style-loader/runtime/singletonStyleDomAPI.js +93 -0
  125. package/compiled/style-loader/runtime/styleDomAPI.js +70 -0
  126. package/compiled/style-loader/runtime/styleTagTransform.js +16 -0
  127. package/compiled/svgo-loader/LICENSE +22 -0
  128. package/compiled/svgo-loader/index.js +4 -0
  129. package/compiled/svgo-loader/package.json +1 -0
  130. package/compiled/swc-loader/LICENSE +25 -0
  131. package/compiled/swc-loader/index.js +1 -0
  132. package/compiled/swc-loader/package.json +1 -0
  133. package/compiled/tapable/LICENSE +21 -0
  134. package/compiled/tapable/index.js +1 -0
  135. package/compiled/tapable/package.json +1 -0
  136. package/compiled/tapable/tapable.d.ts +116 -0
  137. package/compiled/terser/LICENSE +29 -0
  138. package/compiled/terser/index.js +1 -0
  139. package/compiled/terser/mappings.wasm +0 -0
  140. package/compiled/terser/package.json +1 -0
  141. package/compiled/terser/source-map/source-map.d.ts +369 -0
  142. package/compiled/terser/tools/terser.d.ts +207 -0
  143. package/compiled/terser-webpack-plugin/LICENSE +20 -0
  144. package/compiled/terser-webpack-plugin/ajv/lib/ajv.d.ts +397 -0
  145. package/compiled/terser-webpack-plugin/index.js +15142 -0
  146. package/compiled/terser-webpack-plugin/jest-worker/build/index.d.ts +49 -0
  147. package/compiled/terser-webpack-plugin/jest-worker/build/types.d.ts +142 -0
  148. package/compiled/terser-webpack-plugin/json-schema/index.d.ts +751 -0
  149. package/compiled/terser-webpack-plugin/minify.js +43 -0
  150. package/compiled/terser-webpack-plugin/package.json +1 -0
  151. package/compiled/terser-webpack-plugin/schema-utils/declarations/ValidationError.d.ts +74 -0
  152. package/compiled/terser-webpack-plugin/schema-utils/declarations/index.d.ts +3 -0
  153. package/compiled/terser-webpack-plugin/schema-utils/declarations/validate.d.ts +37 -0
  154. package/compiled/terser-webpack-plugin/source-map/source-map.d.ts +98 -0
  155. package/compiled/terser-webpack-plugin/types/cjs.d.ts +3 -0
  156. package/compiled/terser-webpack-plugin/types/index.d.ts +295 -0
  157. package/compiled/terser-webpack-plugin/types/utils.d.ts +105 -0
  158. package/compiled/terser-webpack-plugin/utils.js +594 -0
  159. package/compiled/url-loader/LICENSE +20 -0
  160. package/compiled/url-loader/index.js +15 -0
  161. package/compiled/url-loader/package.json +1 -0
  162. package/compiled/webpack/Chunk.js +1 -0
  163. package/compiled/webpack/Compilation.js +1 -0
  164. package/compiled/webpack/HotModuleReplacement.runtime.js +394 -0
  165. package/compiled/webpack/JavascriptHotModuleReplacement.runtime.js +462 -0
  166. package/compiled/webpack/LICENSE +20 -0
  167. package/compiled/webpack/LibraryTemplatePlugin.js +1 -0
  168. package/compiled/webpack/LoaderTargetPlugin.js +1 -0
  169. package/compiled/webpack/ModuleFilenameHelpers.js +1 -0
  170. package/compiled/webpack/NormalModule.js +1 -0
  171. package/compiled/webpack/RuntimeGlobals.js +1 -0
  172. package/compiled/webpack/RuntimeModule.js +1 -0
  173. package/compiled/webpack/SingleEntryPlugin.js +1 -0
  174. package/compiled/webpack/Template.js +1 -0
  175. package/compiled/webpack/ajv/lib/ajv.d.ts +397 -0
  176. package/compiled/webpack/deepImports.json +12 -0
  177. package/compiled/webpack/index.js +162861 -0
  178. package/compiled/webpack/json-schema/index.d.ts +751 -0
  179. package/compiled/webpack/lazy-compilation-node.js +40 -0
  180. package/compiled/webpack/lazy-compilation-web.js +74 -0
  181. package/compiled/webpack/package.json +5 -0
  182. package/compiled/webpack/schema-utils/declarations/ValidationError.d.ts +74 -0
  183. package/compiled/webpack/schema-utils/declarations/index.d.ts +3 -0
  184. package/compiled/webpack/schema-utils/declarations/validate.d.ts +37 -0
  185. package/compiled/webpack/types.d.ts +12664 -0
  186. package/compiled/webpack-5-chain/LICENSE +373 -0
  187. package/compiled/webpack-5-chain/index.js +1 -0
  188. package/compiled/webpack-5-chain/package.json +1 -0
  189. package/compiled/webpack-5-chain/types/index.d.ts +543 -0
  190. package/compiled/webpack-bundle-analyzer/LICENSE +20 -0
  191. package/compiled/webpack-bundle-analyzer/index.js +30 -0
  192. package/compiled/webpack-bundle-analyzer/package.json +1 -0
  193. package/compiled/webpack-bundle-analyzer/public/viewer.js +16 -0
  194. package/compiled/webpack-bundle-analyzer/public/viewer.js.LICENSE.txt +10 -0
  195. package/compiled/webpack-bundle-analyzer/public/viewer.js.map +1 -0
  196. package/compiled/webpack-dev-middleware/LICENSE +20 -0
  197. package/compiled/webpack-dev-middleware/index.js +21 -0
  198. package/compiled/webpack-dev-middleware/package.json +1 -0
  199. package/compiled/webpack-sources/LICENSE +21 -0
  200. package/compiled/webpack-sources/index.d.ts +20 -0
  201. package/compiled/webpack-sources/index.js +1 -0
  202. package/compiled/webpack-sources/lib/CachedSource.d.ts +18 -0
  203. package/compiled/webpack-sources/lib/CompatSource.d.ts +9 -0
  204. package/compiled/webpack-sources/lib/ConcatSource.d.ts +22 -0
  205. package/compiled/webpack-sources/lib/OriginalSource.d.ts +18 -0
  206. package/compiled/webpack-sources/lib/PrefixSource.d.ts +12 -0
  207. package/compiled/webpack-sources/lib/RawSource.d.ts +13 -0
  208. package/compiled/webpack-sources/lib/ReplaceSource.d.ts +35 -0
  209. package/compiled/webpack-sources/lib/SizeOnlySource.d.ts +7 -0
  210. package/compiled/webpack-sources/lib/Source.d.ts +45 -0
  211. package/compiled/webpack-sources/lib/SourceMapSource.d.ts +22 -0
  212. package/compiled/webpack-sources/lib/index.d.ts +60 -0
  213. package/compiled/webpack-sources/package.json +1 -0
  214. package/compiled/webpack-sources/source-list-map/index.d.ts +91 -0
  215. package/compiled/webpack-sources/source-map/source-map.d.ts +369 -0
  216. package/compiled/ws/LICENSE +19 -0
  217. package/compiled/ws/index.d.ts +359 -0
  218. package/compiled/ws/index.js +1 -0
  219. package/compiled/ws/package.json +1 -0
  220. package/dist/build.d.ts +17 -0
  221. package/dist/build.js +72 -0
  222. package/{lib → dist}/cli.d.ts +0 -0
  223. package/dist/cli.js +93 -0
  224. package/{lib/webpackHotDevClient/webpackHotDevClient.d.ts → dist/client/client.d.ts} +0 -0
  225. package/dist/client/client.js +239 -0
  226. package/dist/config/_sampleFeature.d.ts +10 -0
  227. package/dist/config/_sampleFeature.js +22 -0
  228. package/dist/config/assetRules.d.ts +11 -0
  229. package/dist/config/assetRules.js +69 -0
  230. package/dist/config/bundleAnalyzerPlugin.d.ts +10 -0
  231. package/dist/config/bundleAnalyzerPlugin.js +30 -0
  232. package/dist/config/compressPlugin.d.ts +10 -0
  233. package/dist/config/compressPlugin.js +77 -0
  234. package/dist/config/config.d.ts +20 -0
  235. package/dist/config/config.js +178 -0
  236. package/dist/config/copyPlugin.d.ts +10 -0
  237. package/dist/config/copyPlugin.js +49 -0
  238. package/dist/config/cssRules.d.ts +11 -0
  239. package/dist/config/cssRules.js +98 -0
  240. package/dist/config/definePlugin.d.ts +15 -0
  241. package/dist/config/definePlugin.js +45 -0
  242. package/dist/config/fastRefreshPlugin.d.ts +12 -0
  243. package/dist/config/fastRefreshPlugin.js +34 -0
  244. package/dist/config/ignorePlugin.d.ts +10 -0
  245. package/dist/config/ignorePlugin.js +27 -0
  246. package/dist/config/javaScriptRules.d.ts +14 -0
  247. package/dist/config/javaScriptRules.js +155 -0
  248. package/dist/config/miniCSSExtractPlugin.d.ts +10 -0
  249. package/dist/config/miniCSSExtractPlugin.js +34 -0
  250. package/dist/config/nodePolyfill.d.ts +10 -0
  251. package/dist/config/nodePolyfill.js +34 -0
  252. package/dist/config/progressPlugin.d.ts +11 -0
  253. package/dist/config/progressPlugin.js +27 -0
  254. package/dist/config/purgecssWebpackPlugin.d.ts +10 -0
  255. package/dist/config/purgecssWebpackPlugin.js +32 -0
  256. package/dist/config/speedMeasureWebpackPlugin.d.ts +6 -0
  257. package/dist/config/speedMeasureWebpackPlugin.js +34 -0
  258. package/dist/config/svgRules.d.ts +11 -0
  259. package/dist/config/svgRules.js +43 -0
  260. package/dist/constants.d.ts +11 -0
  261. package/dist/constants.js +15 -0
  262. package/dist/dev.d.ts +19 -0
  263. package/dist/dev.js +87 -0
  264. package/dist/index.d.ts +5 -0
  265. package/dist/index.js +16 -0
  266. package/dist/plugins/ESBuildCSSMinifyPlugin.d.ts +11 -0
  267. package/dist/plugins/ESBuildCSSMinifyPlugin.js +65 -0
  268. package/dist/plugins/ProgressPlugin.d.ts +15 -0
  269. package/dist/plugins/ProgressPlugin.js +44 -0
  270. package/dist/plugins/_SamplePlugin.d.ts +9 -0
  271. package/dist/plugins/_SamplePlugin.js +14 -0
  272. package/dist/requireHook.d.ts +1 -0
  273. package/dist/requireHook.js +31 -0
  274. package/dist/schema.d.ts +3 -0
  275. package/dist/schema.js +72 -0
  276. package/dist/server/server.d.ts +16 -0
  277. package/dist/server/server.js +158 -0
  278. package/dist/server/ws.d.ts +8 -0
  279. package/dist/server/ws.js +42 -0
  280. package/dist/swcPlugins/autoCSSModules.d.ts +8 -0
  281. package/dist/swcPlugins/autoCSSModules.js +35 -0
  282. package/dist/types.d.ts +100 -0
  283. package/dist/types.js +29 -0
  284. package/dist/utils/browsersList.d.ts +5 -0
  285. package/dist/utils/browsersList.js +10 -0
  286. package/dist/utils/depMatch.d.ts +6 -0
  287. package/dist/utils/depMatch.js +46 -0
  288. package/dist/utils/formatWebpackMessages.d.ts +12 -0
  289. package/dist/utils/formatWebpackMessages.js +100 -0
  290. package/package.json +170 -42
  291. package/bundled/css/hotModuleReplacement.js +0 -1203
  292. package/bundled/js/webpackHotDevClient.js +0 -13386
  293. package/lib/DevCompileDonePlugin.d.ts +0 -10
  294. package/lib/DevCompileDonePlugin.js +0 -53
  295. package/lib/cli.js +0 -184
  296. package/lib/getConfig/css.d.ts +0 -22
  297. package/lib/getConfig/css.js +0 -186
  298. package/lib/getConfig/getConfig.d.ts +0 -26
  299. package/lib/getConfig/getConfig.js +0 -578
  300. package/lib/getConfig/nodeModulesTransform.d.ts +0 -13
  301. package/lib/getConfig/nodeModulesTransform.js +0 -141
  302. package/lib/getConfig/pkgMatch.d.ts +0 -2
  303. package/lib/getConfig/pkgMatch.js +0 -58
  304. package/lib/getConfig/resolveDefine.d.ts +0 -5
  305. package/lib/getConfig/resolveDefine.js +0 -53
  306. package/lib/getConfig/runtimePublicPathEntry.d.ts +0 -1
  307. package/lib/getConfig/runtimePublicPathEntry.js +0 -3
  308. package/lib/getConfig/terserOptions.d.ts +0 -41
  309. package/lib/getConfig/terserOptions.js +0 -64
  310. package/lib/index.d.ts +0 -34
  311. package/lib/index.js +0 -314
  312. package/lib/requireHook.d.ts +0 -3
  313. package/lib/requireHook.js +0 -51
  314. package/lib/webpack/plugins/mini-css-extract-plugin/src/CssDependency.js +0 -94
  315. package/lib/webpack/plugins/mini-css-extract-plugin/src/CssDependencyTemplate.js +0 -26
  316. package/lib/webpack/plugins/mini-css-extract-plugin/src/CssLoadingRuntimeModule.js +0 -93
  317. package/lib/webpack/plugins/mini-css-extract-plugin/src/CssModule.js +0 -164
  318. package/lib/webpack/plugins/mini-css-extract-plugin/src/CssModuleFactory.js +0 -32
  319. package/lib/webpack/plugins/mini-css-extract-plugin/src/cjs.js +0 -15
  320. package/lib/webpack/plugins/mini-css-extract-plugin/src/index.js +0 -542
  321. package/lib/webpack/plugins/mini-css-extract-plugin/src/loader.js +0 -319
  322. package/lib/webpack/plugins/mini-css-extract-plugin/src/utils.js +0 -97
  323. package/lib/webpack/plugins/mini-css-extract-plugin.d.ts +0 -1
  324. package/lib/webpack/plugins/mini-css-extract-plugin.js +0 -15
  325. package/lib/webpack/plugins/terser-webpack-plugin/package.json +0 -3
  326. package/lib/webpack/plugins/terser-webpack-plugin/src/Webpack4Cache.js +0 -187
  327. package/lib/webpack/plugins/terser-webpack-plugin/src/Webpack5Cache.js +0 -61
  328. package/lib/webpack/plugins/terser-webpack-plugin/src/index.js +0 -683
  329. package/lib/webpack/plugins/terser-webpack-plugin/src/minify.js +0 -197
  330. package/lib/webpack/plugins/terser-webpack-plugin.d.ts +0 -1
  331. package/lib/webpack/plugins/terser-webpack-plugin.js +0 -15
  332. package/lib/webpackHotDevClient/formatWebpackMessages.d.ts +0 -11
  333. package/lib/webpackHotDevClient/formatWebpackMessages.js +0 -127
  334. package/lib/webpackHotDevClient/webpackHotDevClient.js +0 -311
@@ -0,0 +1,594 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.terserMinify = terserMinify;
7
+ exports.uglifyJsMinify = uglifyJsMinify;
8
+ exports.swcMinify = swcMinify;
9
+ exports.esbuildMinify = esbuildMinify;
10
+
11
+ /** @typedef {import("source-map").RawSourceMap} RawSourceMap */
12
+
13
+ /** @typedef {import("terser").FormatOptions} TerserFormatOptions */
14
+
15
+ /** @typedef {import("terser").MinifyOptions} TerserOptions */
16
+
17
+ /** @typedef {import("terser").ECMA} TerserECMA */
18
+
19
+ /** @typedef {import("./index.js").ExtractCommentsOptions} ExtractCommentsOptions */
20
+
21
+ /** @typedef {import("./index.js").ExtractCommentsFunction} ExtractCommentsFunction */
22
+
23
+ /** @typedef {import("./index.js").ExtractCommentsCondition} ExtractCommentsCondition */
24
+
25
+ /** @typedef {import("./index.js").Input} Input */
26
+
27
+ /** @typedef {import("./index.js").MinimizedResult} MinimizedResult */
28
+
29
+ /** @typedef {import("./index.js").PredefinedOptions} PredefinedOptions */
30
+
31
+ /**
32
+ * @typedef {{ [key: string]: any }} CustomOptions
33
+ */
34
+
35
+ /**
36
+ * @typedef {Array<string>} ExtractedComments
37
+ */
38
+
39
+ /* istanbul ignore next */
40
+
41
+ /**
42
+ * @param {Input} input
43
+ * @param {RawSourceMap | undefined} sourceMap
44
+ * @param {PredefinedOptions & CustomOptions} minimizerOptions
45
+ * @param {ExtractCommentsOptions | undefined} extractComments
46
+ * @return {Promise<MinimizedResult>}
47
+ */
48
+ async function terserMinify(input, sourceMap, minimizerOptions, extractComments) {
49
+ /**
50
+ * @param {any} value
51
+ * @returns {boolean}
52
+ */
53
+ const isObject = value => {
54
+ const type = typeof value;
55
+ return value != null && (type === "object" || type === "function");
56
+ };
57
+ /**
58
+ * @param {TerserOptions & { sourceMap: undefined } & ({ output: TerserFormatOptions & { beautify: boolean } } | { format: TerserFormatOptions & { beautify: boolean } })} terserOptions
59
+ * @param {ExtractedComments} extractedComments
60
+ * @returns {ExtractCommentsFunction}
61
+ */
62
+
63
+
64
+ const buildComments = (terserOptions, extractedComments) => {
65
+ /** @type {{ [index: string]: ExtractCommentsCondition }} */
66
+ const condition = {};
67
+ let comments;
68
+
69
+ if (terserOptions.format) {
70
+ ({
71
+ comments
72
+ } = terserOptions.format);
73
+ } else if (terserOptions.output) {
74
+ ({
75
+ comments
76
+ } = terserOptions.output);
77
+ }
78
+
79
+ condition.preserve = typeof comments !== "undefined" ? comments : false;
80
+
81
+ if (typeof extractComments === "boolean" && extractComments) {
82
+ condition.extract = "some";
83
+ } else if (typeof extractComments === "string" || extractComments instanceof RegExp) {
84
+ condition.extract = extractComments;
85
+ } else if (typeof extractComments === "function") {
86
+ condition.extract = extractComments;
87
+ } else if (extractComments && isObject(extractComments)) {
88
+ condition.extract = typeof extractComments.condition === "boolean" && extractComments.condition ? "some" : typeof extractComments.condition !== "undefined" ? extractComments.condition : "some";
89
+ } else {
90
+ // No extract
91
+ // Preserve using "commentsOpts" or "some"
92
+ condition.preserve = typeof comments !== "undefined" ? comments : "some";
93
+ condition.extract = false;
94
+ } // Ensure that both conditions are functions
95
+
96
+
97
+ ["preserve", "extract"].forEach(key => {
98
+ /** @type {undefined | string} */
99
+ let regexStr;
100
+ /** @type {undefined | RegExp} */
101
+
102
+ let regex;
103
+
104
+ switch (typeof condition[key]) {
105
+ case "boolean":
106
+ condition[key] = condition[key] ? () => true : () => false;
107
+ break;
108
+
109
+ case "function":
110
+ break;
111
+
112
+ case "string":
113
+ if (condition[key] === "all") {
114
+ condition[key] = () => true;
115
+
116
+ break;
117
+ }
118
+
119
+ if (condition[key] === "some") {
120
+ condition[key] = (astNode, comment) => (comment.type === "comment2" || comment.type === "comment1") && /@preserve|@lic|@cc_on|^\**!/i.test(comment.value);
121
+
122
+ break;
123
+ }
124
+
125
+ regexStr = condition[key];
126
+
127
+ condition[key] = (astNode, comment) => new RegExp(regexStr).test(comment.value);
128
+
129
+ break;
130
+
131
+ default:
132
+ regex = condition[key];
133
+
134
+ condition[key] = (astNode, comment) =>
135
+ /** @type {RegExp} */
136
+ regex.test(comment.value);
137
+
138
+ }
139
+ }); // Redefine the comments function to extract and preserve
140
+ // comments according to the two conditions
141
+
142
+ return (astNode, comment) => {
143
+ if (
144
+ /** @type {{ extract: ExtractCommentsFunction }} */
145
+ condition.extract(astNode, comment)) {
146
+ const commentText = comment.type === "comment2" ? `/*${comment.value}*/` : `//${comment.value}`; // Don't include duplicate comments
147
+
148
+ if (!extractedComments.includes(commentText)) {
149
+ extractedComments.push(commentText);
150
+ }
151
+ }
152
+
153
+ return (
154
+ /** @type {{ preserve: ExtractCommentsFunction }} */
155
+ condition.preserve(astNode, comment)
156
+ );
157
+ };
158
+ };
159
+ /**
160
+ * @param {PredefinedOptions & TerserOptions} [terserOptions={}]
161
+ * @returns {TerserOptions & { sourceMap: undefined } & ({ output: TerserFormatOptions & { beautify: boolean } } | { format: TerserFormatOptions & { beautify: boolean } })}
162
+ */
163
+
164
+
165
+ const buildTerserOptions = (terserOptions = {}) => {
166
+ // Need deep copy objects to avoid https://github.com/terser/terser/issues/366
167
+ return { ...terserOptions,
168
+ compress: typeof terserOptions.compress === "boolean" ? terserOptions.compress : { ...terserOptions.compress
169
+ },
170
+ // ecma: terserOptions.ecma,
171
+ // ie8: terserOptions.ie8,
172
+ // keep_classnames: terserOptions.keep_classnames,
173
+ // keep_fnames: terserOptions.keep_fnames,
174
+ mangle: terserOptions.mangle == null ? true : typeof terserOptions.mangle === "boolean" ? terserOptions.mangle : { ...terserOptions.mangle
175
+ },
176
+ // module: terserOptions.module,
177
+ // nameCache: { ...terserOptions.toplevel },
178
+ // the `output` option is deprecated
179
+ ...(terserOptions.format ? {
180
+ format: {
181
+ beautify: false,
182
+ ...terserOptions.format
183
+ }
184
+ } : {
185
+ output: {
186
+ beautify: false,
187
+ ...terserOptions.output
188
+ }
189
+ }),
190
+ parse: { ...terserOptions.parse
191
+ },
192
+ // safari10: terserOptions.safari10,
193
+ // Ignoring sourceMap from options
194
+ // eslint-disable-next-line no-undefined
195
+ sourceMap: undefined // toplevel: terserOptions.toplevel
196
+
197
+ };
198
+ }; // eslint-disable-next-line global-require
199
+
200
+
201
+ const {
202
+ minify
203
+ } = require('@umijs/bundler-webpack/compiled/terser'); // Copy `terser` options
204
+
205
+
206
+ const terserOptions = buildTerserOptions(minimizerOptions); // Let terser generate a SourceMap
207
+
208
+ if (sourceMap) {
209
+ // @ts-ignore
210
+ terserOptions.sourceMap = {
211
+ asObject: true
212
+ };
213
+ }
214
+ /** @type {ExtractedComments} */
215
+
216
+
217
+ const extractedComments = [];
218
+
219
+ if (terserOptions.output) {
220
+ terserOptions.output.comments = buildComments(terserOptions, extractedComments);
221
+ } else if (terserOptions.format) {
222
+ terserOptions.format.comments = buildComments(terserOptions, extractedComments);
223
+ }
224
+
225
+ const [[filename, code]] = Object.entries(input);
226
+ const result = await minify({
227
+ [filename]: code
228
+ }, terserOptions);
229
+ return {
230
+ code: result.code,
231
+ // @ts-ignore
232
+ // eslint-disable-next-line no-undefined
233
+ map: result.map ? result.map : undefined,
234
+ extractedComments
235
+ };
236
+ }
237
+ /**
238
+ * @returns {string | undefined}
239
+ */
240
+
241
+
242
+ terserMinify.getMinimizerVersion = () => {
243
+ let packageJson;
244
+
245
+ try {
246
+ // eslint-disable-next-line global-require
247
+ packageJson = require('@umijs/bundler-webpack/compiled/terser/package.json');
248
+ } catch (error) {// Ignore
249
+ }
250
+
251
+ return packageJson && packageJson.version;
252
+ };
253
+ /* istanbul ignore next */
254
+
255
+ /**
256
+ * @param {Input} input
257
+ * @param {RawSourceMap | undefined} sourceMap
258
+ * @param {PredefinedOptions & CustomOptions} minimizerOptions
259
+ * @param {ExtractCommentsOptions | undefined} extractComments
260
+ * @return {Promise<MinimizedResult>}
261
+ */
262
+
263
+
264
+ async function uglifyJsMinify(input, sourceMap, minimizerOptions, extractComments) {
265
+ /**
266
+ * @param {any} value
267
+ * @returns {boolean}
268
+ */
269
+ const isObject = value => {
270
+ const type = typeof value;
271
+ return value != null && (type === "object" || type === "function");
272
+ };
273
+ /**
274
+ * @param {import("uglify-js").MinifyOptions & { sourceMap: undefined } & { output: import("uglify-js").OutputOptions & { beautify: boolean }}} uglifyJsOptions
275
+ * @param {ExtractedComments} extractedComments
276
+ * @returns {ExtractCommentsFunction}
277
+ */
278
+
279
+
280
+ const buildComments = (uglifyJsOptions, extractedComments) => {
281
+ /** @type {{ [index: string]: ExtractCommentsCondition }} */
282
+ const condition = {};
283
+ const {
284
+ comments
285
+ } = uglifyJsOptions.output;
286
+ condition.preserve = typeof comments !== "undefined" ? comments : false;
287
+
288
+ if (typeof extractComments === "boolean" && extractComments) {
289
+ condition.extract = "some";
290
+ } else if (typeof extractComments === "string" || extractComments instanceof RegExp) {
291
+ condition.extract = extractComments;
292
+ } else if (typeof extractComments === "function") {
293
+ condition.extract = extractComments;
294
+ } else if (extractComments && isObject(extractComments)) {
295
+ condition.extract = typeof extractComments.condition === "boolean" && extractComments.condition ? "some" : typeof extractComments.condition !== "undefined" ? extractComments.condition : "some";
296
+ } else {
297
+ // No extract
298
+ // Preserve using "commentsOpts" or "some"
299
+ condition.preserve = typeof comments !== "undefined" ? comments : "some";
300
+ condition.extract = false;
301
+ } // Ensure that both conditions are functions
302
+
303
+
304
+ ["preserve", "extract"].forEach(key => {
305
+ /** @type {undefined | string} */
306
+ let regexStr;
307
+ /** @type {undefined | RegExp} */
308
+
309
+ let regex;
310
+
311
+ switch (typeof condition[key]) {
312
+ case "boolean":
313
+ condition[key] = condition[key] ? () => true : () => false;
314
+ break;
315
+
316
+ case "function":
317
+ break;
318
+
319
+ case "string":
320
+ if (condition[key] === "all") {
321
+ condition[key] = () => true;
322
+
323
+ break;
324
+ }
325
+
326
+ if (condition[key] === "some") {
327
+ condition[key] = (astNode, comment) => (comment.type === "comment2" || comment.type === "comment1") && /@preserve|@lic|@cc_on|^\**!/i.test(comment.value);
328
+
329
+ break;
330
+ }
331
+
332
+ regexStr = condition[key];
333
+
334
+ condition[key] = (astNode, comment) => new RegExp(regexStr).test(comment.value);
335
+
336
+ break;
337
+
338
+ default:
339
+ regex = condition[key];
340
+
341
+ condition[key] = (astNode, comment) =>
342
+ /** @type {RegExp} */
343
+ regex.test(comment.value);
344
+
345
+ }
346
+ }); // Redefine the comments function to extract and preserve
347
+ // comments according to the two conditions
348
+
349
+ return (astNode, comment) => {
350
+ if (
351
+ /** @type {{ extract: ExtractCommentsFunction }} */
352
+ condition.extract(astNode, comment)) {
353
+ const commentText = comment.type === "comment2" ? `/*${comment.value}*/` : `//${comment.value}`; // Don't include duplicate comments
354
+
355
+ if (!extractedComments.includes(commentText)) {
356
+ extractedComments.push(commentText);
357
+ }
358
+ }
359
+
360
+ return (
361
+ /** @type {{ preserve: ExtractCommentsFunction }} */
362
+ condition.preserve(astNode, comment)
363
+ );
364
+ };
365
+ };
366
+ /**
367
+ * @param {PredefinedOptions & import("uglify-js").MinifyOptions} [uglifyJsOptions={}]
368
+ * @returns {import("uglify-js").MinifyOptions & { sourceMap: undefined } & { output: import("uglify-js").OutputOptions & { beautify: boolean }}}
369
+ */
370
+
371
+
372
+ const buildUglifyJsOptions = (uglifyJsOptions = {}) => {
373
+ // eslint-disable-next-line no-param-reassign
374
+ delete minimizerOptions.ecma; // eslint-disable-next-line no-param-reassign
375
+
376
+ delete minimizerOptions.module; // Need deep copy objects to avoid https://github.com/terser/terser/issues/366
377
+
378
+ return { ...uglifyJsOptions,
379
+ // warnings: uglifyJsOptions.warnings,
380
+ parse: { ...uglifyJsOptions.parse
381
+ },
382
+ compress: typeof uglifyJsOptions.compress === "boolean" ? uglifyJsOptions.compress : { ...uglifyJsOptions.compress
383
+ },
384
+ mangle: uglifyJsOptions.mangle == null ? true : typeof uglifyJsOptions.mangle === "boolean" ? uglifyJsOptions.mangle : { ...uglifyJsOptions.mangle
385
+ },
386
+ output: {
387
+ beautify: false,
388
+ ...uglifyJsOptions.output
389
+ },
390
+ // Ignoring sourceMap from options
391
+ // eslint-disable-next-line no-undefined
392
+ sourceMap: undefined // toplevel: uglifyJsOptions.toplevel
393
+ // nameCache: { ...uglifyJsOptions.toplevel },
394
+ // ie8: uglifyJsOptions.ie8,
395
+ // keep_fnames: uglifyJsOptions.keep_fnames,
396
+
397
+ };
398
+ }; // eslint-disable-next-line global-require, import/no-extraneous-dependencies
399
+
400
+
401
+ const {
402
+ minify
403
+ } = require('uglify-js'); // Copy `uglify-js` options
404
+
405
+
406
+ const uglifyJsOptions = buildUglifyJsOptions(minimizerOptions); // Let terser generate a SourceMap
407
+
408
+ if (sourceMap) {
409
+ // @ts-ignore
410
+ uglifyJsOptions.sourceMap = true;
411
+ }
412
+ /** @type {ExtractedComments} */
413
+
414
+
415
+ const extractedComments = []; // @ts-ignore
416
+
417
+ uglifyJsOptions.output.comments = buildComments(uglifyJsOptions, extractedComments);
418
+ const [[filename, code]] = Object.entries(input);
419
+ const result = await minify({
420
+ [filename]: code
421
+ }, uglifyJsOptions);
422
+ return {
423
+ code: result.code,
424
+ // eslint-disable-next-line no-undefined
425
+ map: result.map ? JSON.parse(result.map) : undefined,
426
+ errors: result.error ? [result.error] : [],
427
+ warnings: result.warnings || [],
428
+ extractedComments
429
+ };
430
+ }
431
+ /**
432
+ * @returns {string | undefined}
433
+ */
434
+
435
+
436
+ uglifyJsMinify.getMinimizerVersion = () => {
437
+ let packageJson;
438
+
439
+ try {
440
+ // eslint-disable-next-line global-require, import/no-extraneous-dependencies
441
+ packageJson = require('uglify-js/package.json');
442
+ } catch (error) {// Ignore
443
+ }
444
+
445
+ return packageJson && packageJson.version;
446
+ };
447
+ /* istanbul ignore next */
448
+
449
+ /**
450
+ * @param {Input} input
451
+ * @param {RawSourceMap | undefined} sourceMap
452
+ * @param {PredefinedOptions & CustomOptions} minimizerOptions
453
+ * @return {Promise<MinimizedResult>}
454
+ */
455
+
456
+
457
+ async function swcMinify(input, sourceMap, minimizerOptions) {
458
+ /**
459
+ * @param {PredefinedOptions & import("@swc/core").JsMinifyOptions} [swcOptions={}]
460
+ * @returns {import("@swc/core").JsMinifyOptions & { sourceMap: undefined }}
461
+ */
462
+ const buildSwcOptions = (swcOptions = {}) => {
463
+ // Need deep copy objects to avoid https://github.com/terser/terser/issues/366
464
+ return { ...swcOptions,
465
+ compress: typeof swcOptions.compress === "boolean" ? swcOptions.compress : { ...swcOptions.compress
466
+ },
467
+ mangle: swcOptions.mangle == null ? true : typeof swcOptions.mangle === "boolean" ? swcOptions.mangle : { ...swcOptions.mangle
468
+ },
469
+ // ecma: swcOptions.ecma,
470
+ // keep_classnames: swcOptions.keep_classnames,
471
+ // keep_fnames: swcOptions.keep_fnames,
472
+ // module: swcOptions.module,
473
+ // safari10: swcOptions.safari10,
474
+ // toplevel: swcOptions.toplevel
475
+ // eslint-disable-next-line no-undefined
476
+ sourceMap: undefined
477
+ };
478
+ }; // eslint-disable-next-line import/no-extraneous-dependencies, global-require
479
+
480
+
481
+ const swc = require('@swc/core'); // Copy `swc` options
482
+
483
+
484
+ const swcOptions = buildSwcOptions(minimizerOptions); // Let `swc` generate a SourceMap
485
+
486
+ if (sourceMap) {
487
+ // @ts-ignore
488
+ swcOptions.sourceMap = true;
489
+ }
490
+
491
+ const [[filename, code]] = Object.entries(input);
492
+ const result = await swc.minify(code, swcOptions);
493
+ let map;
494
+
495
+ if (result.map) {
496
+ map = JSON.parse(result.map); // TODO workaround for swc because `filename` is not preset as in `swc` signature as for `terser`
497
+
498
+ map.sources = [filename];
499
+ delete map.sourcesContent;
500
+ }
501
+
502
+ return {
503
+ code: result.code,
504
+ map
505
+ };
506
+ }
507
+ /**
508
+ * @returns {string | undefined}
509
+ */
510
+
511
+
512
+ swcMinify.getMinimizerVersion = () => {
513
+ let packageJson;
514
+
515
+ try {
516
+ // eslint-disable-next-line global-require, import/no-extraneous-dependencies
517
+ packageJson = require('@swc/core/package.json');
518
+ } catch (error) {// Ignore
519
+ }
520
+
521
+ return packageJson && packageJson.version;
522
+ };
523
+ /* istanbul ignore next */
524
+
525
+ /**
526
+ * @param {Input} input
527
+ * @param {RawSourceMap | undefined} sourceMap
528
+ * @param {PredefinedOptions & CustomOptions} minimizerOptions
529
+ * @return {Promise<MinimizedResult>}
530
+ */
531
+
532
+
533
+ async function esbuildMinify(input, sourceMap, minimizerOptions) {
534
+ /**
535
+ * @param {PredefinedOptions & import("esbuild").TransformOptions} [esbuildOptions={}]
536
+ * @returns {import("esbuild").TransformOptions}
537
+ */
538
+ const buildEsbuildOptions = (esbuildOptions = {}) => {
539
+ // eslint-disable-next-line no-param-reassign
540
+ delete esbuildOptions.ecma;
541
+
542
+ if (esbuildOptions.module) {
543
+ // eslint-disable-next-line no-param-reassign
544
+ esbuildOptions.format = "esm";
545
+ } // eslint-disable-next-line no-param-reassign
546
+
547
+
548
+ delete esbuildOptions.module; // Need deep copy objects to avoid https://github.com/terser/terser/issues/366
549
+
550
+ return {
551
+ minify: true,
552
+ legalComments: "inline",
553
+ ...esbuildOptions,
554
+ sourcemap: false
555
+ };
556
+ }; // eslint-disable-next-line import/no-extraneous-dependencies, global-require
557
+
558
+
559
+ const esbuild = require('@umijs/bundler-utils/compiled/esbuild'); // Copy `swc` options
560
+
561
+
562
+ const esbuildOptions = buildEsbuildOptions(minimizerOptions); // Let `swc` generate a SourceMap
563
+
564
+ if (sourceMap) {
565
+ esbuildOptions.sourcemap = true;
566
+ esbuildOptions.sourcesContent = false;
567
+ }
568
+
569
+ const [[filename, code]] = Object.entries(input);
570
+ esbuildOptions.sourcefile = filename;
571
+ const result = await esbuild.transform(code, esbuildOptions);
572
+ return {
573
+ code: result.code,
574
+ // eslint-disable-next-line no-undefined
575
+ map: result.map ? JSON.parse(result.map) : undefined,
576
+ warnings: result.warnings ? result.warnings.map(item => item.toString()) : []
577
+ };
578
+ }
579
+ /**
580
+ * @returns {string | undefined}
581
+ */
582
+
583
+
584
+ esbuildMinify.getMinimizerVersion = () => {
585
+ let packageJson;
586
+
587
+ try {
588
+ // eslint-disable-next-line global-require, import/no-extraneous-dependencies
589
+ packageJson = require('@umijs/bundler-utils/compiled/esbuild/package.json');
590
+ } catch (error) {// Ignore
591
+ }
592
+
593
+ return packageJson && packageJson.version;
594
+ };
@@ -0,0 +1,20 @@
1
+ Copyright JS Foundation and other contributors
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ 'Software'), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.