@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,80 +1,283 @@
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 _webpack = require('webpack');
8
+ var _path = _interopRequireDefault(require("path"));
8
9
 
9
- var _webpack2 = _interopRequireDefault(_webpack);
10
+ var _fs = _interopRequireDefault(require("fs"));
10
11
 
11
- var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
12
+ var _webpack = _interopRequireDefault(require("webpack"));
12
13
 
13
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
14
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
14
15
 
15
- var _webpackBundleAnalyzer = require('webpack-bundle-analyzer');
16
+ var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
16
17
 
17
- var _miniCssExtractPlugin = require('mini-css-extract-plugin');
18
+ var _lodashWebpackPlugin = _interopRequireDefault(require("lodash-webpack-plugin"));
18
19
 
19
- var _miniCssExtractPlugin2 = _interopRequireDefault(_miniCssExtractPlugin);
20
+ var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
20
21
 
21
- var _plugins = require('../plugins');
22
+ var _I18nSplitPlugin = _interopRequireDefault(require("../plugins/I18nSplitPlugin"));
22
23
 
23
- var _utils = require('../utils');
24
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
24
25
 
25
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ var _htmlWebpackInjectAttributesPlugin = _interopRequireDefault(require("html-webpack-inject-attributes-plugin"));
26
27
 
27
- var getProdPlugins = function getProdPlugins(options) {
28
- var _options$app = options.app,
29
- enableChunkHash = _options$app.enableChunkHash,
30
- manifestFileName = _options$app.manifestFileName,
31
- bundleAnalyze = _options$app.bundleAnalyze,
32
- optimize = _options$app.optimize,
33
- publicPaths = _options$app.publicPaths,
34
- enableSMapHook = _options$app.enableSMapHook;
35
- var _process = process,
36
- _process$isDevelopmen = _process.isDevelopment,
37
- isDevelopment = _process$isDevelopmen === undefined ? false : _process$isDevelopmen;
28
+ var _copyWebpackPlugin = _interopRequireDefault(require("copy-webpack-plugin"));
38
29
 
39
- enableChunkHash = !isDevelopment && enableChunkHash;
30
+ var _plugins = require("../plugins");
31
+
32
+ var _common = require("../common");
40
33
 
41
- var _getInfoFromPublicPat = (0, _utils.getInfoFromPublicPaths)(publicPaths),
42
- rootFolder = _getInfoFromPublicPat.rootFolder;
34
+ var _RtlCssPlugin = require("../plugins/RtlSplitPlugin/RtlCssPlugin");
35
+
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
37
 
44
- var plugins = [new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack2.default.DefinePlugin({
38
+ // eslint-disable-next-line no-unused-vars
39
+ let getProdPlugins = (options, publicPath = '') => {
40
+ let {
41
+ enableChunkHash,
42
+ manifestFileName,
43
+ bundleAnalyze,
44
+ optimize,
45
+ publicPaths,
46
+ hasEFC: prevOptionForEnableEFC,
47
+ enableSMapHook,
48
+ tpFolder,
49
+ folder,
50
+ outputFolder,
51
+ context,
52
+ enableSMap,
53
+ server: {
54
+ mode
55
+ },
56
+ hasShadowDOM,
57
+ resourceHints,
58
+ serviceWorker,
59
+ htmlTemplate: {
60
+ inject
61
+ },
62
+ tpHashMapping,
63
+ cdnMapping,
64
+ crossorigin
65
+ } = options.app;
66
+ const {
67
+ i18n
68
+ } = options;
69
+ const {
70
+ enableRTLSplit
71
+ } = options.css;
72
+ const {
73
+ hasEFC: newOptionForEnableEFC,
74
+ nameScope: efcNameSpace,
75
+ templateFilePath,
76
+ localeAttr: efcLocaleAttr
77
+ } = options.efc;
78
+ const hasEFC = newOptionForEnableEFC || prevOptionForEnableEFC;
79
+ const hashTempalate = enableChunkHash ? '.[chunkhash:20]_' : '';
80
+ const cssLTRFileNameTempalte = `css/[name]${hashTempalate}${enableRTLSplit ? '.ltr' : ''}.css`;
81
+ const cssRTLFileNameTempalte = `css/[name]${hashTempalate}.rtl.css`;
82
+ let isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
83
+ enableChunkHash = !isDevelopment && enableChunkHash;
84
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack.default.DefinePlugin({
45
85
  __TEST__: false,
46
86
  __DEVELOPMENT__: false,
47
- __LOCAL_PRODUCTION__: process.isDevelopment,
87
+ __LOCAL_PRODUCTION__: isDevelopment,
48
88
  __DOCS__: false,
49
89
  'process.env': {
50
90
  NODE_ENV: JSON.stringify('production')
51
91
  },
52
92
  __SERVER__: false
53
- }), new _miniCssExtractPlugin2.default({
54
- filename: enableChunkHash ? rootFolder + 'css/[name].[chunkhash:20].css' : rootFolder + 'css/[name].css',
55
- chunkFilename: enableChunkHash ? rootFolder + 'css/[name].[chunkhash:20].css' : rootFolder + 'css/[name].css'
93
+ }), new _miniCssExtractPlugin.default({
94
+ // ignoreOrder: true,
95
+ filename: cssLTRFileNameTempalte,
96
+ chunkFilename: cssLTRFileNameTempalte
56
97
  }), new _plugins.ResourceHintsPlugin(), new _plugins.UglifyCSSPlugin()];
57
98
 
58
- if (publicPaths) {
59
- plugins.push(new _plugins.PublicPathChangePlugin({ publicPaths: publicPaths }));
99
+ if (enableRTLSplit) {
100
+ plugins.push(new _RtlCssPlugin.RtlCssPlugin({
101
+ templateLabel: options.css.templateLabel,
102
+ disableMiniFiySelector: options.css.disableMiniFiySelector,
103
+ dirVarName: options.css.dirVarName,
104
+ // config: {},
105
+ // sourcemap: true,
106
+ filename: cssRTLFileNameTempalte
107
+ }));
60
108
  }
61
109
 
62
- if (!process.isDevelopment) {
63
- enableSMapHook && plugins.push(new _plugins.SourceMapHookPlugin());
64
- optimize && plugins.push(new _plugins.OptimizeJSPlugin());
110
+ const i18nManifestFileName = 'i18n-manifest.json';
111
+ /**
112
+ * NOTE:
113
+ * this file name ext .i18n.js added
114
+ * Because, in service worker they maintain cache as file name based
115
+ * So, to make differce we added .i18n.js ext.
116
+ */
117
+
118
+ const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].[chunkhash].i18n.js';
119
+ const i18nPublicPath = Array.isArray(publicPaths) && !cdnMapping.isCdnEnabled ? publicPaths['4'] : ''; // const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].[contentHash]_.js';
120
+ // const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name]_.js';
121
+
122
+ if (i18n.chunkSplitEnable) {
123
+ plugins.push(new _I18nSplitPlugin.default({
124
+ jsResource: i18n.jsResource,
125
+ localeVarName: i18n.localeVarName,
126
+ jsonpFunc: i18n.jsonpFunc,
127
+ disableDefault: i18n.disableDefault,
128
+ publicPath: i18nPublicPath,
129
+ i18nManifestFileName,
130
+ // template: (object, locale) => `window.loadI18n(${JSON.stringify(object)}, ${JSON.stringify(locale)})`,
131
+ filenameTemplate: i18nFileNameTemplate,
132
+ propertiesFolder: i18n.propertiesFolder
133
+ }));
134
+ } else {
135
+ let i18nPath = _path.default.join(process.cwd(), context, 'i18n');
136
+
137
+ if (_fs.default.existsSync(i18nPath)) {
138
+ plugins.push(new _copyWebpackPlugin.default([{
139
+ from: `${i18nPath}/`,
140
+ to: enableChunkHash ? './i18n/[name].[hash:20]_.[ext]' : './i18n/[name]_.[ext]',
141
+ toType: 'template'
142
+ }]));
143
+ }
144
+ }
145
+
146
+ tpFolder && plugins.push(new _copyWebpackPlugin.default([{
147
+ from: `${_path.default.join(process.cwd(), context, tpFolder)}/`,
148
+ to: `./${tpFolder}/`,
149
+ toType: 'dir'
150
+ }]));
151
+
152
+ if (hasEFC) {
153
+ plugins.push(new _htmlWebpackPlugin.default({
154
+ chunksSortMode: 'none',
155
+ filename: enableChunkHash ? 'index.[templatehash:20].html' : 'index.html',
156
+ template: _path.default.join(process.cwd(), folder, 'index.html'),
157
+ excludeChunks: ['efc', 'widget'],
158
+ minify: false,
159
+ templateParameters: _common.templateParameters,
160
+ scriptLoading: 'defer',
161
+ inject: inject
162
+ }));
163
+ crossorigin && plugins.push(new _htmlWebpackInjectAttributesPlugin.default({
164
+ crossorigin: 'anonymous'
165
+ }));
166
+ plugins.push(new _plugins.EFCPlugin({
167
+ isDevelopment,
168
+ serverUrl: publicPath,
169
+ i18nFileNameTemplate,
170
+ templateFilePath,
171
+ i18nManifestFileName,
172
+ entryPointName: 'efc',
173
+ // outputFile: 'zohodesk-efc-sdk-latest.js',
174
+ nameScope: efcNameSpace,
175
+ localeAttr: efcLocaleAttr,
176
+ cdnVariableName: cdnMapping.isCdnEnabled ? cdnMapping.variableName : null
177
+ }));
178
+ } else {
179
+ plugins.push(new _htmlWebpackPlugin.default({
180
+ chunksSortMode: 'none',
181
+ filename: enableChunkHash ? 'index.[templatehash:20].html' : 'index.html',
182
+ template: _path.default.join(process.cwd(), folder, 'index.html'),
183
+ minify: false,
184
+ templateParameters: _common.templateParameters,
185
+ scriptLoading: 'defer',
186
+ inject: inject
187
+ }));
188
+ crossorigin && plugins.push(new _htmlWebpackInjectAttributesPlugin.default({
189
+ crossorigin: 'anonymous'
190
+ }));
191
+ }
192
+
193
+ plugins.push(new _plugins.I18NInjectIntoIndexPlugin({
194
+ // Because we will handle cdn url in CdnChangePlugin
195
+ publicPath: cdnMapping.isCdnEnabled ? '' : i18nPublicPath,
196
+ isDevelopment,
197
+ templateLabel: i18n.templateLabel || '{{--user-locale}}',
198
+ i18nFileNameTemplate,
199
+ i18nManifestFileName,
200
+ mainChunkName: 'main'
201
+ }));
202
+
203
+ if (publicPaths && !isDevelopment && !cdnMapping.isCdnEnabled) {
204
+ let {
205
+ callback
206
+ } = publicPaths;
207
+ plugins.push(callback ? new _plugins.PublicPathCallbackPlugin({
208
+ callback
209
+ }) : new _plugins.PublicPathChangePlugin({
210
+ publicPaths,
211
+ resourceHints
212
+ }));
213
+ }
214
+
215
+ if (cdnMapping.isCdnEnabled) {
216
+ plugins.push(new _plugins.CdnChangePlugin(cdnMapping));
217
+ }
65
218
 
219
+ plugins.push(new _lodashWebpackPlugin.default({
220
+ collections: true,
221
+ shorthands: true
222
+ }));
223
+ hasShadowDOM && plugins.push(new _plugins.ShadowDOMSupportPlugin());
224
+
225
+ if (!isDevelopment) {
226
+ enableSMap && enableSMapHook && plugins.push(new _plugins.SourceMapHookPlugin());
227
+ optimize && plugins.push(new _plugins.OptimizeJSPlugin());
66
228
  plugins.push(new _plugins.ManifestPlugin({
67
229
  fileName: manifestFileName
68
230
  }));
69
231
 
70
232
  if (bundleAnalyze) {
71
233
  plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({
72
- analyzerMode: 'static'
234
+ analyzerMode: 'static',
235
+ generateStatsFile: true,
236
+ openAnalyzer: false,
237
+ statsOptions: {
238
+ source: false,
239
+ normal: true,
240
+ chunks: false,
241
+ chunkGroups: false,
242
+ module: false,
243
+ assets: true,
244
+ assetsSort: 'name'
245
+ }
246
+ })); // plugins.push(new ReportGeneratePlugin());
247
+ }
248
+
249
+ if (tpHashMapping && tpHashMapping.length > 0) {
250
+ plugins.push(new _plugins.TPHashMappingPlugin({
251
+ fileMappings: tpHashMapping,
252
+ tpFolder: `${_path.default.join(process.cwd(), context, tpFolder)}/`
73
253
  }));
74
254
  }
75
255
  }
76
256
 
257
+ if (!isDevelopment && serviceWorker.enableSw) {
258
+ let {
259
+ filePath,
260
+ fileName = 'sw.js',
261
+ exitPath = '/',
262
+ replaceText = '@@'
263
+ } = serviceWorker;
264
+
265
+ if (!filePath) {
266
+ throw new Error('File Path required for service worker plugin');
267
+ }
268
+
269
+ plugins.push(new _plugins.ServiceWorkerPlugin({
270
+ filePath: _path.default.join(process.cwd(), filePath),
271
+ i18nFileNameTemplate,
272
+ fileName: fileName,
273
+ exitPath: _path.default.join(outputFolder, exitPath),
274
+ replaceText,
275
+ publicPaths
276
+ }));
277
+ }
278
+
77
279
  return plugins;
78
280
  };
79
281
 
80
- exports.default = getProdPlugins;
282
+ var _default = getProdPlugins;
283
+ exports.default = _default;
@@ -1,28 +1,25 @@
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 _webpack = require('webpack');
8
+ var _webpack = _interopRequireDefault(require("webpack"));
8
9
 
9
- var _webpack2 = _interopRequireDefault(_webpack);
10
-
11
- var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
12
-
13
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
10
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
14
11
 
15
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
13
 
17
- var getProdPlugins = function getProdPlugins() {
18
- var plugins = [new _webpack2.default.optimize.ModuleConcatenationPlugin(), new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.IgnorePlugin(/^\.\/domain$/, /moment$/), new _webpack2.default.DefinePlugin({
14
+ let getProdPlugins = () => {
15
+ let plugins = [new _webpack.default.optimize.ModuleConcatenationPlugin(), new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.IgnorePlugin(/^\.\/domain$/, /moment$/), new _webpack.default.DefinePlugin({
19
16
  __TEST__: false,
20
17
  __DEVELOPMENT__: true,
21
18
  __DOCS__: false,
22
19
  __SERVER__: true
23
20
  })];
24
-
25
21
  return plugins;
26
22
  };
27
23
 
28
- exports.default = getProdPlugins;
24
+ var _default = getProdPlugins;
25
+ exports.default = _default;
@@ -1,27 +1,22 @@
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 _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
8
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
8
9
 
9
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
10
+ var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
10
11
 
11
- var _miniCssExtractPlugin = require('mini-css-extract-plugin');
12
+ var _plugins = require("../plugins");
12
13
 
13
- var _miniCssExtractPlugin2 = _interopRequireDefault(_miniCssExtractPlugin);
14
-
15
- var _plugins = require('../plugins');
16
-
17
- var _webpack = require('webpack');
18
-
19
- var _webpack2 = _interopRequireDefault(_webpack);
14
+ var _webpack = _interopRequireDefault(require("webpack"));
20
15
 
21
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
17
 
23
- var getUMDCSSPlugins = function getUMDCSSPlugins() {
24
- var plugins = [new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.DefinePlugin({
18
+ let getUMDCSSPlugins = () => {
19
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.DefinePlugin({
25
20
  __TEST__: false,
26
21
  __DEVELOPMENT__: false,
27
22
  __DOCS__: false,
@@ -29,11 +24,12 @@ var getUMDCSSPlugins = function getUMDCSSPlugins() {
29
24
  NODE_ENV: JSON.stringify('production')
30
25
  },
31
26
  __SERVER__: false
32
- }), new _miniCssExtractPlugin2.default({
27
+ }), new _miniCssExtractPlugin.default({
33
28
  filename: 'css/[name].css',
34
29
  chunkFilename: 'css/[id].css'
35
30
  }), new _plugins.UglifyCSSPlugin()];
36
31
  return plugins;
37
32
  };
38
33
 
39
- exports.default = getUMDCSSPlugins;
34
+ var _default = getUMDCSSPlugins;
35
+ exports.default = _default;
@@ -1,27 +1,22 @@
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 _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
8
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
8
9
 
9
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
10
+ var _webpack = _interopRequireDefault(require("webpack"));
10
11
 
11
- var _webpack = require('webpack');
12
+ var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
12
13
 
13
- var _webpack2 = _interopRequireDefault(_webpack);
14
-
15
- var _miniCssExtractPlugin = require('mini-css-extract-plugin');
16
-
17
- var _miniCssExtractPlugin2 = _interopRequireDefault(_miniCssExtractPlugin);
18
-
19
- var _plugins = require('../plugins');
14
+ var _plugins = require("../plugins");
20
15
 
21
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
17
 
23
- var getUMDComponentPlugins = function getUMDComponentPlugins(isDocs) {
24
- var plugins = [new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.DefinePlugin({
18
+ let getUMDComponentPlugins = isDocs => {
19
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.DefinePlugin({
25
20
  __TEST__: false,
26
21
  __DEVELOPMENT__: false,
27
22
  __DOCS__: isDocs ? true : false,
@@ -29,11 +24,12 @@ var getUMDComponentPlugins = function getUMDComponentPlugins(isDocs) {
29
24
  NODE_ENV: JSON.stringify('production')
30
25
  },
31
26
  __SERVER__: false
32
- }), new _miniCssExtractPlugin2.default({
27
+ }), new _miniCssExtractPlugin.default({
33
28
  filename: 'css/[name].css',
34
29
  chunkFilename: 'css/[name].css'
35
30
  }), new _plugins.UglifyCSSPlugin()];
36
31
  return plugins;
37
32
  };
38
33
 
39
- exports.default = getUMDComponentPlugins;
34
+ var _default = getUMDComponentPlugins;
35
+ exports.default = _default;
@@ -1,70 +1,63 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
- var _getDevPlugins = require('./getDevPlugins');
8
-
9
- Object.defineProperty(exports, 'getDevPlugins', {
6
+ Object.defineProperty(exports, "getDevPlugins", {
10
7
  enumerable: true,
11
- get: function get() {
12
- return _interopRequireDefault(_getDevPlugins).default;
8
+ get: function () {
9
+ return _getDevPlugins.default;
13
10
  }
14
11
  });
15
-
16
- var _getProdPlugins = require('./getProdPlugins');
17
-
18
- Object.defineProperty(exports, 'getProdPlugins', {
12
+ Object.defineProperty(exports, "getProdPlugins", {
19
13
  enumerable: true,
20
- get: function get() {
21
- return _interopRequireDefault(_getProdPlugins).default;
14
+ get: function () {
15
+ return _getProdPlugins.default;
22
16
  }
23
17
  });
24
-
25
- var _getDocsPlugins = require('./getDocsPlugins');
26
-
27
- Object.defineProperty(exports, 'getDocsPlugins', {
18
+ Object.defineProperty(exports, "getDocsPlugins", {
28
19
  enumerable: true,
29
- get: function get() {
30
- return _interopRequireDefault(_getDocsPlugins).default;
20
+ get: function () {
21
+ return _getDocsPlugins.default;
31
22
  }
32
23
  });
33
-
34
- var _getServerPlugins = require('./getServerPlugins');
35
-
36
- Object.defineProperty(exports, 'getServerPlugins', {
24
+ Object.defineProperty(exports, "getServerPlugins", {
37
25
  enumerable: true,
38
- get: function get() {
39
- return _interopRequireDefault(_getServerPlugins).default;
26
+ get: function () {
27
+ return _getServerPlugins.default;
40
28
  }
41
29
  });
42
-
43
- var _getLibraryPlugins = require('./getLibraryPlugins');
44
-
45
- Object.defineProperty(exports, 'getLibraryPlugins', {
30
+ Object.defineProperty(exports, "getLibraryPlugins", {
46
31
  enumerable: true,
47
- get: function get() {
48
- return _interopRequireDefault(_getLibraryPlugins).default;
32
+ get: function () {
33
+ return _getLibraryPlugins.default;
49
34
  }
50
35
  });
51
-
52
- var _getUMDComponentPlugins = require('./getUMDComponentPlugins');
53
-
54
- Object.defineProperty(exports, 'getUMDComponentPlugins', {
36
+ Object.defineProperty(exports, "getUMDComponentPlugins", {
55
37
  enumerable: true,
56
- get: function get() {
57
- return _interopRequireDefault(_getUMDComponentPlugins).default;
38
+ get: function () {
39
+ return _getUMDComponentPlugins.default;
58
40
  }
59
41
  });
60
-
61
- var _getUMDCSSPlugins = require('./getUMDCSSPlugins');
62
-
63
- Object.defineProperty(exports, 'getUMDCSSPlugins', {
42
+ Object.defineProperty(exports, "getUMDCSSPlugins", {
64
43
  enumerable: true,
65
- get: function get() {
66
- return _interopRequireDefault(_getUMDCSSPlugins).default;
44
+ get: function () {
45
+ return _getUMDCSSPlugins.default;
67
46
  }
68
47
  });
69
48
 
49
+ var _getDevPlugins = _interopRequireDefault(require("./getDevPlugins"));
50
+
51
+ var _getProdPlugins = _interopRequireDefault(require("./getProdPlugins"));
52
+
53
+ var _getDocsPlugins = _interopRequireDefault(require("./getDocsPlugins"));
54
+
55
+ var _getServerPlugins = _interopRequireDefault(require("./getServerPlugins"));
56
+
57
+ var _getLibraryPlugins = _interopRequireDefault(require("./getLibraryPlugins"));
58
+
59
+ var _getUMDComponentPlugins = _interopRequireDefault(require("./getUMDComponentPlugins"));
60
+
61
+ var _getUMDCSSPlugins = _interopRequireDefault(require("./getUMDCSSPlugins"));
62
+
70
63
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
9
+
10
+ var _utils = require("../utils");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ const MODULE_TYPE = 'css/mini-extract';
15
+
16
+ const isI18nFile = url => url.endsWith('.i18n.js');
17
+
18
+ const {
19
+ app: {
20
+ enableSMap
21
+ }
22
+ } = (0, _utils.getOptions)();
23
+
24
+ class CdnChangePlugin {
25
+ constructor(options) {
26
+ this.i18nTemplate = options.i18nTemplate || '{{__I18N_CDN__}}';
27
+ this.variableName = options.variableName || '__CSS_CDN__';
28
+ this.cssTemplate = options.cssTemplate || '{{__CSS_CDN__}}';
29
+ this.jsTemplate = options.jsTemplate || '{{__JS_CDN__}}';
30
+ }
31
+
32
+ getCssChunkObject(mainChunk) {
33
+ const obj = {};
34
+
35
+ for (const chunk of mainChunk.getAllAsyncChunks()) {
36
+ for (const module of chunk.modulesIterable) {
37
+ if (module.type === MODULE_TYPE) {
38
+ obj[chunk.id] = 1;
39
+ break;
40
+ }
41
+ }
42
+ }
43
+
44
+ return obj;
45
+ }
46
+
47
+ apply(compiler) {
48
+ compiler.hooks.thisCompilation.tap('CdnChangePlugin', compilation => {
49
+ compilation.mainTemplate.hooks.requireEnsure.tap('CdnChangePlugin', (source, chunk) => {
50
+ const chunkMap = this.getCssChunkObject(chunk);
51
+
52
+ if (Object.keys(chunkMap).length > 0) {
53
+ return source.replace('__webpack_require__.p', `window['${this.variableName}']`);
54
+ }
55
+ });
56
+ });
57
+ compiler.hooks.make.tap('CdnChangePlugin', compilation => {
58
+ _htmlWebpackPlugin.default.getHooks(compilation).beforeAssetTagGeneration.tapAsync('CdnChangePlugin', (data, cb) => {
59
+ data.assets = Object.assign({}, data.assets, {
60
+ css: data.assets.css.map(css => `${this.cssTemplate}${css}`),
61
+ js: data.assets.js.map(js => {
62
+ if (enableSMap && !isI18nFile(js)) {
63
+ js = js.replace('js/', `{{--js-smap}}js/`); //eslint-disable-line
64
+ }
65
+
66
+ return `${isI18nFile(js) ? this.i18nTemplate : this.jsTemplate}${js}`;
67
+ })
68
+ });
69
+ cb(null, data);
70
+ });
71
+ });
72
+ }
73
+
74
+ }
75
+
76
+ var _default = CdnChangePlugin;
77
+ exports.default = _default;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ class CleanUpStatsPlugin {
9
+ shouldPickStatChild(child) {
10
+ return child.name.indexOf('mini-css-extract-plugin') !== 0;
11
+ }
12
+
13
+ apply(compiler) {
14
+ compiler.hooks.done.tap('CleanUpStatsPlugin', stats => {
15
+ const {
16
+ children
17
+ } = stats.compilation;
18
+
19
+ if (Array.isArray(children)) {
20
+ // eslint-disable-next-line no-param-reassign
21
+ stats.compilation.children = children.filter(child => this.shouldPickStatChild(child));
22
+ }
23
+ });
24
+ }
25
+
26
+ }
27
+
28
+ exports.default = CleanUpStatsPlugin;