@zohodesk/react-cli 0.0.1-beta.16 → 0.0.1-beta.162

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/.eslintignore +1 -0
  2. package/.eslintrc.js +46 -3
  3. package/CHANGELOG.md +5 -0
  4. package/README.md +708 -0
  5. package/bin/cli.js +134 -27
  6. package/cert/cert.pem +37 -129
  7. package/cert/key.pem +27 -27
  8. package/cert/passphrase.pem +1 -0
  9. package/files/eslintrc.js +62 -0
  10. package/files/prettierrc.js +3 -0
  11. package/lib/babel/cmjs-plugins-presets.js +16 -9
  12. package/lib/babel/es-plugins-presets.js +26 -14
  13. package/lib/common/getEntries.js +33 -24
  14. package/lib/common/getPublicPathConfig.js +40 -0
  15. package/lib/common/index.js +27 -13
  16. package/lib/common/splitChunks.js +64 -26
  17. package/lib/common/sslcertUpdater.js +59 -0
  18. package/lib/common/templateParameters.js +25 -0
  19. package/lib/configs/jest.config.js +26 -27
  20. package/lib/configs/libAlias.js +31 -0
  21. package/lib/configs/webpack.component.umd.config.js +31 -37
  22. package/lib/configs/webpack.css.umd.config.js +44 -44
  23. package/lib/configs/webpack.dev.config.js +96 -56
  24. package/lib/configs/webpack.docs.config.js +104 -98
  25. package/lib/configs/webpack.impact.config.js +116 -0
  26. package/lib/configs/webpack.prod.config.js +137 -85
  27. package/lib/hooks/docsProptypeHook.js +32 -38
  28. package/lib/jest/commitedFilesResult.js +144 -71
  29. package/lib/jest/coverageCollector.js +62 -29
  30. package/lib/jest/jsonMaker.js +54 -0
  31. package/lib/jest/preProcessors/cssPreprocessor.js +16 -18
  32. package/lib/jest/preProcessors/jsPreprocessor.js +5 -6
  33. package/lib/jest/preProcessors/otherFilesPreprocessor.js +5 -6
  34. package/lib/jest/result.js +91 -41
  35. package/lib/jest/run.js +74 -27
  36. package/lib/jest/setup.js +103 -102
  37. package/lib/loaderUtils/getCSSLoaders.js +77 -0
  38. package/lib/loaderUtils/getDevJsLoaders.js +30 -23
  39. package/lib/loaderUtils/index.js +14 -7
  40. package/lib/loaders/docsLoader.js +15 -15
  41. package/lib/loaders/docsPropsLoader.js +14 -17
  42. package/lib/loaders/fileBountryLoader.js +17 -0
  43. package/lib/loaders/fileLoader.js +47 -38
  44. package/lib/loaders/scriptInstrumentLoader.js +21 -20
  45. package/lib/loaders/selectorMappingLoader.js +75 -0
  46. package/lib/loaders/workerLoader.js +136 -0
  47. package/lib/middlewares/HMRMiddleware.js +59 -41
  48. package/lib/middlewares/SSTMiddleware.js +21 -0
  49. package/lib/pluginUtils/getDevPlugins.js +175 -26
  50. package/lib/pluginUtils/getDocsPlugins.js +32 -17
  51. package/lib/pluginUtils/getLibraryImactPlugins.js +23 -0
  52. package/lib/pluginUtils/getLibraryPlugins.js +8 -10
  53. package/lib/pluginUtils/getProdPlugins.js +240 -37
  54. package/lib/pluginUtils/getServerPlugins.js +8 -11
  55. package/lib/pluginUtils/getUMDCSSPlugins.js +11 -15
  56. package/lib/pluginUtils/getUMDComponentPlugins.js +11 -15
  57. package/lib/pluginUtils/index.js +36 -43
  58. package/lib/plugins/CdnChangePlugin.js +77 -0
  59. package/lib/plugins/CleanupStatsPlugin.js +28 -0
  60. package/lib/plugins/EFCPlugin.js +241 -0
  61. package/lib/plugins/EFCPlugin.md +6 -0
  62. package/lib/plugins/EFCTemplatePlugin.js +151 -0
  63. package/lib/plugins/I18NInjectIntoIndexPlugin.js +141 -0
  64. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +60 -0
  65. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +44 -0
  66. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +266 -0
  67. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +183 -0
  68. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +100 -0
  69. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +86 -0
  70. package/lib/plugins/I18nSplitPlugin/README.md +25 -0
  71. package/lib/plugins/I18nSplitPlugin/index.js +185 -0
  72. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +64 -0
  73. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +13 -0
  74. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +26 -0
  75. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +40 -0
  76. package/lib/plugins/I18nSplitPlugin/utils/index.js +31 -0
  77. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +112 -0
  78. package/lib/plugins/ManifestPlugin.js +59 -62
  79. package/lib/plugins/ModuleStatsPlugin.js +98 -97
  80. package/lib/plugins/OptimizeJSPlugin.js +24 -41
  81. package/lib/plugins/PublicPathCallbackPlugin.js +63 -0
  82. package/lib/plugins/PublicPathChangePlugin.js +187 -174
  83. package/lib/plugins/ReportGeneratePlugin.js +181 -0
  84. package/lib/plugins/RequireVariablePublicPlugin.js +30 -0
  85. package/lib/plugins/ResourceHintsPlugin.js +53 -35
  86. package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +80 -0
  87. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +82 -0
  88. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -0
  89. package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +26 -0
  90. package/lib/plugins/ScriptInstrumentPlugin.js +22 -37
  91. package/lib/plugins/ServiceWorkerPlugin.js +107 -0
  92. package/lib/plugins/ShadowDOMSupportPlugin.js +270 -0
  93. package/lib/plugins/SourceMapHookPlugin.js +25 -31
  94. package/lib/plugins/TPHashMappingPlugin.js +67 -0
  95. package/lib/plugins/UglifyCSSPlugin.js +23 -30
  96. package/lib/plugins/UnusedFilesFindPlugin.js +150 -97
  97. package/lib/plugins/index.js +118 -55
  98. package/lib/plugins/libraryImpactPlugin.js +190 -0
  99. package/lib/plugins/webpackwatchrunplugin.js +26 -0
  100. package/lib/postcss-plugins/ExcludeRTLPlugin.js +23 -0
  101. package/lib/postcss-plugins/RTLSplitPlugin.js +138 -0
  102. package/lib/schemas/index.js +466 -52
  103. package/lib/servers/clusterHubServer.js +22 -26
  104. package/lib/servers/docsServer.js +3 -5
  105. package/lib/servers/docsServerCore.js +93 -85
  106. package/lib/servers/helpServer.js +19 -21
  107. package/lib/servers/httpsOptions.js +19 -0
  108. package/lib/servers/impactServer.js +99 -92
  109. package/lib/servers/mockserver.js +44 -0
  110. package/lib/servers/nowatchserver.js +275 -0
  111. package/lib/servers/scrServer.js +147 -0
  112. package/lib/servers/server.js +118 -124
  113. package/lib/servers/ssServer.js +107 -65
  114. package/lib/sh/reportPublish.sh +16 -10
  115. package/lib/templates/CoverageScriptTemplate.js +45 -18
  116. package/lib/templates/WMSTemplate.js +17 -18
  117. package/lib/templates/linterConstant.js +10 -0
  118. package/lib/utils/babelPresets.js +12 -5
  119. package/lib/utils/buildstats.html +148 -0
  120. package/lib/utils/clean.js +12 -11
  121. package/lib/utils/copy.js +13 -127
  122. package/lib/utils/copyTimezones.js +21 -0
  123. package/lib/utils/createEventStream.js +24 -19
  124. package/lib/utils/cssClassNameGenerate.js +77 -0
  125. package/lib/utils/cssURLReplacer.js +67 -54
  126. package/lib/utils/dependencyPostPublish.js +42 -0
  127. package/lib/utils/fileUtils.js +125 -0
  128. package/lib/utils/folderIterator.js +47 -0
  129. package/lib/utils/getComponents.js +126 -0
  130. package/lib/utils/getCurrentBranch.js +11 -17
  131. package/lib/utils/getDependenciesImpactList.js +151 -0
  132. package/lib/utils/getHash.js +26 -0
  133. package/lib/utils/getIp.js +20 -0
  134. package/lib/utils/getOptions.js +55 -30
  135. package/lib/utils/getServerURL.js +25 -8
  136. package/lib/utils/index.js +259 -82
  137. package/lib/utils/init.js +2 -2
  138. package/lib/utils/initPreCommitHook.js +40 -31
  139. package/lib/utils/jsonHelper.js +97 -0
  140. package/lib/utils/libraryImpactConfig.js +63 -0
  141. package/lib/utils/lint/addScripts.js +27 -0
  142. package/lib/utils/lint/checkExistingConfig.js +67 -0
  143. package/lib/utils/lint/copyConfigs.js +24 -0
  144. package/lib/utils/lint/index.js +54 -0
  145. package/lib/utils/lint/lintScripts.js +11 -0
  146. package/lib/utils/lint/lintSetup.js +31 -0
  147. package/lib/utils/lint/lintStagedPreCommitHook.js +7 -0
  148. package/lib/utils/lint/question.js +30 -0
  149. package/lib/utils/lintReporter.js +142 -0
  150. package/lib/utils/mailSender.js +16 -25
  151. package/lib/utils/pullOrigin.js +28 -0
  152. package/lib/utils/reinstallDependencies.js +133 -0
  153. package/lib/utils/removeAttributes.js +25 -23
  154. package/lib/utils/repoClone.js +56 -63
  155. package/lib/utils/request.js +64 -77
  156. package/lib/utils/resultSchema.json +73 -0
  157. package/lib/utils/rtl.js +42 -0
  158. package/lib/utils/setEnvVariables.js +5 -6
  159. package/lib/utils/ssTestHack.js +48 -0
  160. package/lib/utils/switchBranch.js +28 -0
  161. package/lib/utils/urlConcat.js +22 -0
  162. package/package.json +92 -64
  163. package/templates/app/.eslintrc.js +140 -0
  164. package/templates/app/README.md +12 -12
  165. package/templates/app/app/index.html +24 -8
  166. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  167. package/templates/app/app/properties/i18nkeys.json +3 -3
  168. package/templates/app/docs/all.html +69 -69
  169. package/templates/app/mockapi/index.js +18 -13
  170. package/templates/app/package.json +37 -17
  171. package/templates/app/src/actions/SampleActions/index.js +37 -0
  172. package/templates/app/src/actions/index.js +65 -0
  173. package/templates/app/src/appUrls.js +19 -0
  174. package/templates/app/src/components/Alert/Alert.js +134 -0
  175. package/templates/app/src/components/Alert/Alert.module.css +79 -0
  176. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -0
  177. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -0
  178. package/templates/app/src/components/Sample/Sample.module.css +11 -0
  179. package/templates/app/src/components/Sample/SampleList.js +61 -0
  180. package/templates/app/src/components/Slider/Slider.css +41 -0
  181. package/templates/app/src/components/Slider/Slider.js +55 -0
  182. package/templates/app/src/containers/AlertContainer/index.js +15 -0
  183. package/templates/app/src/containers/AppContainer/index.js +96 -0
  184. package/templates/app/src/containers/AppContainer/index.module.css +27 -0
  185. package/templates/app/src/containers/CustomMatch/index.js +65 -0
  186. package/templates/app/src/containers/DevTools/index.js +10 -0
  187. package/templates/app/src/containers/Header/index.js +67 -0
  188. package/templates/app/src/containers/Header/index.module.css +43 -0
  189. package/templates/app/src/containers/Redirect/index.js +63 -0
  190. package/templates/app/src/containers/Redirector/index.js +47 -0
  191. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -0
  192. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -0
  193. package/templates/app/src/historyChange.js +5 -0
  194. package/templates/app/src/index.html +10 -0
  195. package/templates/app/src/index.js +24 -0
  196. package/templates/app/src/middleware/PromiseMiddleware.js +59 -0
  197. package/templates/app/src/reducers/alertData.js +11 -0
  198. package/templates/app/src/reducers/index.js +6 -0
  199. package/templates/app/src/reducers/samples.js +19 -0
  200. package/templates/app/src/store/configureStore.dev.js +51 -0
  201. package/templates/app/src/store/configureStore.js +5 -0
  202. package/templates/app/src/store/configureStore.prod.js +26 -0
  203. package/templates/app/src/util/Common.js +5 -0
  204. package/templates/app/src/util/RequestAPI.js +132 -0
  205. package/templates/appold/README.md +12 -0
  206. package/templates/appold/app/index.html +8 -0
  207. package/templates/appold/app/properties/ApplicationResources_en_US.properties +1 -0
  208. package/templates/appold/app/properties/i18nkeys.json +3 -0
  209. package/templates/appold/docs/all.html +69 -0
  210. package/templates/appold/mockapi/index.js +13 -0
  211. package/templates/{app → appold}/mockapi/tickets.json +0 -0
  212. package/templates/appold/package.json +17 -0
  213. package/templates/appold/src/components/Text/Text.css +0 -0
  214. package/templates/appold/src/components/Text/Text.js +23 -0
  215. package/templates/appold/src/components/Text/__tests__/Text.spec.js +30 -0
  216. package/templates/appold/src/components/Text/docs/Text__default.docs.js +16 -0
  217. package/templates/appold/src/components/docs.js +1 -0
  218. package/templates/appold/src/components/index.js +5 -0
  219. package/templates/appold/src/index.js +13 -0
  220. package/templates/docs/all.html +1 -1
  221. package/templates/docs/component.html +110 -69
  222. package/templates/docs/components.html +221 -0
  223. package/templates/docs/css/component.css +12 -14
  224. package/templates/docs/css/componentTest.css +7 -0
  225. package/templates/docs/css/style.css +150 -206
  226. package/templates/docs/impactReportTemplate.html +154 -0
  227. package/templates/docs/index.html +1482 -1336
  228. package/templates/library/src/index.js +0 -0
@@ -1,123 +1,124 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
+ var _path = _interopRequireDefault(require("path"));
8
9
 
9
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
+ var _webpackSources = require("webpack-sources");
10
11
 
11
- var ModuleStatsPlugin = function () {
12
- function ModuleStatsPlugin() {
13
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
13
 
15
- _classCallCheck(this, ModuleStatsPlugin);
14
+ let isValidModule = name => {
15
+ if (name.includes('node_modules') && (name.includes(`@zohodesk${_path.default.sep}components`) || name.includes(`@zohodesk${_path.default.sep}dot`) || name.includes(`@zohodesk${_path.default.sep}icons`) || name.includes(`@zohodesk${_path.default.sep}svg`)) && !name.endsWith('docs.js')) {
16
+ return true;
17
+ }
16
18
 
17
- this.options = options;
18
- this.options.filename = options.filename || 'moduleStats.js';
19
+ return !name.includes('index.js') && !name.endsWith('.css') && !name.endsWith('.png') && !name.includes('node_modules') && name.includes('src');
20
+ };
21
+
22
+ let getModuleName = modulePath => {
23
+ let [name] = _path.default.parse(modulePath).name.split('.');
24
+
25
+ if (modulePath.includes(`@zohodesk${_path.default.sep}components`)) {
26
+ name = `@zohodesk/components/${name}`;
27
+ } else if (modulePath.includes(`@zohodesk${_path.default.sep}dot`)) {
28
+ name = `@zohodesk/dot/${name}`;
19
29
  }
20
30
 
21
- _createClass(ModuleStatsPlugin, [{
22
- key: 'apply',
23
- value: function apply(compiler) {
24
- var _this = this;
25
-
26
- compiler.hooks.emit.tap('ModuleStatsPlugin', function (compilation) {
27
- var stats = compilation.getStats().toJson();
28
-
29
- var modules = stats.modules;
30
-
31
- var moduleName = '';
32
- var rModuleName = '';
33
- var rReferencesArray = [];
34
- var rReferencedByArray = [];
35
- var data = { results: [] };
36
- var moduleDetails = {};
37
- var references = '';
38
- var referencedBy = '';
39
- // let normalizedData = '';
40
- var dre = void 0;
41
-
42
- // eslint-disable-next-line guard-for-in
43
- for (var i in modules) {
44
- moduleName = modules[i].name;
45
- if (moduleName.startsWith('./src') && !(moduleName.indexOf('index.js') > -1) && !moduleName.endsWith('css')) {
46
- rModuleName = moduleName.substring(moduleName.lastIndexOf('/') + 1, moduleName.lastIndexOf('.'));
47
- if (rModuleName.endsWith('docs')) {
48
- rModuleName = rModuleName.substring(0, rModuleName.lastIndexOf('.'));
49
- }
31
+ return name;
32
+ };
50
33
 
51
- if (modules[i].reasons.length > 0) {
52
- // eslint-disable-next-line guard-for-in
53
- for (var l in modules[i].reasons) {
54
- referencedBy = modules[i].reasons[l].moduleName;
55
- if (!referencedBy.endsWith('index.js')) {
56
- var referencedby = referencedBy.substring(referencedBy.lastIndexOf('/') + 1, referencedBy.lastIndexOf('.'));
57
- if (referencedby.endsWith('docs')) {
58
- rReferencedByArray.push(referencedby.substring(0, referencedby.lastIndexOf('.')));
59
- } else {
60
- rReferencedByArray.push(referencedBy.substring(referencedBy.lastIndexOf('/') + 1, referencedBy.lastIndexOf('.')));
61
- }
62
- }
63
- }
64
- }
34
+ class ModuleStatsPlugin {
35
+ constructor(options = {}) {
36
+ this.options = options;
37
+ this.options.filename = options.filename || 'js/moduleStats.js';
38
+ }
65
39
 
66
- for (var module in modules) {
67
- if (modules[module].name.startsWith('./src')) {
68
- for (var reason in modules[module].reasons) {
69
- if (moduleName === modules[module].reasons[reason].moduleName && !(modules[module].name.indexOf('css') > -1)) {
70
- if (!modules[module].name.endsWith('react.js') && !(modules[module].name.indexOf('react-dom') > -1) && !modules[module].name.endsWith('.png')) {
71
- references = modules[module].name;
72
- rReferencesArray.push(references.substring(references.lastIndexOf('/') + 1, references.lastIndexOf('.')));
73
- }
74
- }
40
+ apply(compiler) {
41
+ compiler.hooks.emit.tap('ModuleStatsPlugin', compilation => {
42
+ let stats = compilation.getStats().toJson();
43
+ let results = {};
44
+ let {
45
+ modules
46
+ } = stats;
47
+
48
+ for (let module of modules) {
49
+ let {
50
+ name,
51
+ reasons
52
+ } = module;
53
+
54
+ if (isValidModule(name)) {
55
+ let references = new Set();
56
+ let referencedby = new Set();
57
+ let docsName;
58
+ let fileName;
59
+ compilation.modules.forEach(module => {
60
+ module.reasons.forEach(reason => {
61
+ let exportedValue = reason.dependency;
62
+
63
+ if (exportedValue.type === 'harmony export imported specifier') {
64
+ if (exportedValue.module.userRequest.includes(name.replace('.', ''))) {
65
+ docsName = exportedValue.name;
75
66
  }
76
67
  }
77
- }
78
-
79
- rReferencesArray = rReferencesArray.filter(function (item, index, inputArray) {
80
- return inputArray.indexOf(item) === index;
81
68
  });
69
+ });
70
+ let currentModuleName = name;
71
+
72
+ if (Array.isArray(reasons)) {
73
+ for (let reason of reasons) {
74
+ let {
75
+ moduleName
76
+ } = reason;
77
+
78
+ if (isValidModule(moduleName)) {
79
+ let reasonedModuleName = moduleName;
80
+ referencedby.add(reasonedModuleName);
81
+ }
82
+ }
83
+ }
82
84
 
83
- moduleDetails = {
84
- name: rModuleName,
85
- references: rReferencesArray,
86
- referencedby: rReferencedByArray
87
- };
85
+ for (let subModule of modules) {
86
+ let {
87
+ name: subModuleName,
88
+ reasons
89
+ } = subModule;
88
90
 
89
- dre = '';
91
+ if (isValidModule(subModuleName)) {
92
+ let currentModuleName = subModuleName;
90
93
 
91
- data.results.push(moduleDetails);
92
- moduleDetails = {};
93
- rReferencesArray = [];
94
- rReferencedByArray = [];
95
- referencedBy = '';
96
- references = '';
94
+ if (Array.isArray(reasons)) {
95
+ for (let reason of reasons) {
96
+ let {
97
+ moduleName: reasonedModuleName
98
+ } = reason;
97
99
 
98
- //eslint-disable-next-line no-loop-func
99
- data.results.forEach(function (mod) {
100
- dre += '\'' + mod.name + '\':' + JSON.stringify(mod) + ',';
101
- });
100
+ if (name === reasonedModuleName) {
101
+ references.add(currentModuleName);
102
+ }
103
+ }
104
+ }
105
+ }
102
106
  }
103
- }
104
107
 
105
- var dataResult = '{' + dre + '}';
106
- var mResult = 'let mdata = ' + dataResult;
108
+ results[currentModuleName] = {
109
+ name: currentModuleName,
110
+ references: Array.from(references),
111
+ referencedby: Array.from(referencedby),
112
+ docsName: docsName ? docsName : '',
113
+ fileName: name ? name : currentModuleName
114
+ };
115
+ }
116
+ }
107
117
 
108
- compilation.assets[_this.options.filename] = {
109
- source: function source() {
110
- return mResult;
111
- },
112
- size: function size() {
113
- return mResult.length;
114
- }
115
- };
116
- });
117
- }
118
- }]);
118
+ compilation.assets[this.options.filename] = new _webpackSources.RawSource(JSON.stringify(results));
119
+ });
120
+ }
119
121
 
120
- return ModuleStatsPlugin;
121
- }();
122
+ }
122
123
 
123
124
  exports.default = ModuleStatsPlugin;
@@ -1,58 +1,41 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
+ var _optimizeJs = _interopRequireDefault(require("optimize-js"));
8
9
 
9
- var _optimizeJs = require('optimize-js');
10
-
11
- var _optimizeJs2 = _interopRequireDefault(_optimizeJs);
12
-
13
- var _webpackSources = require('webpack-sources');
10
+ var _webpackSources = require("webpack-sources");
14
11
 
15
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
13
 
17
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18
-
19
- var OptimizeJSPlugin = function () {
20
- function OptimizeJSPlugin() {
21
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
-
23
- _classCallCheck(this, OptimizeJSPlugin);
24
-
14
+ class OptimizeJSPlugin {
15
+ constructor(options = {}) {
25
16
  this.optimize = options.optimize;
26
17
  }
27
18
 
28
- _createClass(OptimizeJSPlugin, [{
29
- key: 'apply',
30
- value: function apply(compiler) {
31
- compiler.hooks.compilation.tap('OptimizeJSPlugin', function (compilation) {
32
- compilation.hooks.afterOptimizeChunks.tap('OptimizeJSPlugin', function (chunks) {
33
- chunks.forEach(function (chunk) {
34
- var files = chunk.files.map(function (file) {
35
- return file;
36
- });
37
- files.filter(function (file) {
38
- return (/\.js$/.test(file)
39
- );
40
- }).forEach(function (file) {
41
- try {
42
- var asset = compilation.assets[file].source();
43
- var result = (0, _optimizeJs2.default)(asset);
44
- compilation.assets[file] = new _webpackSources.RawSource(result);
45
- } catch (e) {
46
- compilation.errors.push(e);
47
- }
48
- });
19
+ apply(compiler) {
20
+ compiler.hooks.compilation.tap('OptimizeJSPlugin', compilation => {
21
+ compilation.hooks.afterOptimizeChunks.tap('OptimizeJSPlugin', chunks => {
22
+ chunks.forEach(chunk => {
23
+ const files = chunk.files.map(file => file);
24
+ files.filter(file => /\.js$/.test(file)).forEach(file => {
25
+ try {
26
+ const asset = compilation.assets[file].source();
27
+ const result = (0, _optimizeJs.default)(asset);
28
+ compilation.assets[file] = new _webpackSources.RawSource(result);
29
+ } catch (e) {
30
+ compilation.errors.push(e);
31
+ }
49
32
  });
50
33
  });
51
34
  });
52
- }
53
- }]);
35
+ });
36
+ }
54
37
 
55
- return OptimizeJSPlugin;
56
- }();
38
+ }
57
39
 
58
- exports.default = OptimizeJSPlugin;
40
+ var _default = OptimizeJSPlugin;
41
+ exports.default = _default;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ const MODULE_TYPE = 'css/mini-extract';
8
+
9
+ class PublicPathCallbackPlugin {
10
+ constructor({
11
+ callback
12
+ }) {
13
+ this.publicPathCallback = callback;
14
+ }
15
+
16
+ getCssChunkObject(mainChunk) {
17
+ const obj = {};
18
+
19
+ for (const chunk of mainChunk.getAllAsyncChunks()) {
20
+ for (const module of chunk.modulesIterable) {
21
+ if (module.type === MODULE_TYPE) {
22
+ obj[chunk.id] = 1;
23
+ break;
24
+ }
25
+ }
26
+ }
27
+
28
+ return obj;
29
+ }
30
+
31
+ needChunkOnDemandLoadingCode(chunk) {
32
+ for (const chunkGroup of chunk.groupsIterable) {
33
+ if (chunkGroup.getNumberOfChildren() > 0) {
34
+ return true;
35
+ }
36
+ }
37
+
38
+ return false;
39
+ }
40
+
41
+ apply(compiler) {
42
+ compiler.hooks.thisCompilation.tap('PublicPathCallbackPlugin', compilation => {
43
+ compilation.mainTemplate.hooks.requireEnsure.tap('PublicPathCallbackPlugin', (source, chunk) => {
44
+ const chunkMap = this.getCssChunkObject(chunk);
45
+
46
+ if (Object.keys(chunkMap).length > 0) {
47
+ return source.replace('__webpack_require__.p', `${this.publicPathCallback}("css")`);
48
+ }
49
+ });
50
+ });
51
+ compiler.hooks.compilation.tap('PublicPathCallbackPlugin', compilation => {
52
+ compilation.mainTemplate.hooks.localVars.tap('PublicPathCallbackPlugin', (source, chunk) => {
53
+ if (this.needChunkOnDemandLoadingCode(chunk)) {
54
+ return source.replace('__webpack_require__.p', `${this.publicPathCallback}("js")`);
55
+ }
56
+ });
57
+ });
58
+ }
59
+
60
+ }
61
+
62
+ var _default = PublicPathCallbackPlugin;
63
+ exports.default = _default;