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

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 (226) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +46 -3
  3. package/CHANGELOG.md +5 -0
  4. package/README.md +650 -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 +18 -28
  20. package/lib/configs/webpack.component.umd.config.js +31 -37
  21. package/lib/configs/webpack.css.umd.config.js +44 -44
  22. package/lib/configs/webpack.dev.config.js +113 -57
  23. package/lib/configs/webpack.docs.config.js +104 -98
  24. package/lib/configs/webpack.impact.config.js +116 -0
  25. package/lib/configs/webpack.prod.config.js +154 -86
  26. package/lib/hooks/docsProptypeHook.js +32 -38
  27. package/lib/jest/commitedFilesResult.js +144 -71
  28. package/lib/jest/coverageCollector.js +62 -29
  29. package/lib/jest/jsonMaker.js +54 -0
  30. package/lib/jest/preProcessors/cssPreprocessor.js +16 -18
  31. package/lib/jest/preProcessors/jsPreprocessor.js +5 -6
  32. package/lib/jest/preProcessors/otherFilesPreprocessor.js +5 -6
  33. package/lib/jest/result.js +91 -41
  34. package/lib/jest/run.js +74 -27
  35. package/lib/jest/setup.js +103 -102
  36. package/lib/loaderUtils/getCSSLoaders.js +77 -0
  37. package/lib/loaderUtils/getDevJsLoaders.js +30 -23
  38. package/lib/loaderUtils/index.js +14 -7
  39. package/lib/loaders/docsLoader.js +15 -15
  40. package/lib/loaders/docsPropsLoader.js +14 -17
  41. package/lib/loaders/fileBountryLoader.js +17 -0
  42. package/lib/loaders/fileLoader.js +47 -38
  43. package/lib/loaders/scriptInstrumentLoader.js +21 -20
  44. package/lib/loaders/selectorMappingLoader.js +75 -0
  45. package/lib/loaders/workerLoader.js +136 -0
  46. package/lib/middlewares/HMRMiddleware.js +59 -41
  47. package/lib/middlewares/SSTMiddleware.js +21 -0
  48. package/lib/pluginUtils/getDevPlugins.js +173 -26
  49. package/lib/pluginUtils/getDocsPlugins.js +32 -17
  50. package/lib/pluginUtils/getLibraryImactPlugins.js +23 -0
  51. package/lib/pluginUtils/getLibraryPlugins.js +8 -10
  52. package/lib/pluginUtils/getProdPlugins.js +238 -37
  53. package/lib/pluginUtils/getServerPlugins.js +8 -11
  54. package/lib/pluginUtils/getUMDCSSPlugins.js +11 -15
  55. package/lib/pluginUtils/getUMDComponentPlugins.js +11 -15
  56. package/lib/pluginUtils/index.js +36 -43
  57. package/lib/plugins/CdnChangePlugin.js +77 -0
  58. package/lib/plugins/CleanupStatsPlugin.js +28 -0
  59. package/lib/plugins/EFCPlugin.js +211 -0
  60. package/lib/plugins/EFCPlugin.md +6 -0
  61. package/lib/plugins/I18NInjectIntoIndexPlugin.js +141 -0
  62. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +60 -0
  63. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +44 -0
  64. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +266 -0
  65. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +183 -0
  66. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +100 -0
  67. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +86 -0
  68. package/lib/plugins/I18nSplitPlugin/README.md +25 -0
  69. package/lib/plugins/I18nSplitPlugin/index.js +185 -0
  70. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +64 -0
  71. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +13 -0
  72. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +26 -0
  73. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +40 -0
  74. package/lib/plugins/I18nSplitPlugin/utils/index.js +31 -0
  75. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +112 -0
  76. package/lib/plugins/ManifestPlugin.js +52 -63
  77. package/lib/plugins/ModuleStatsPlugin.js +98 -97
  78. package/lib/plugins/OptimizeJSPlugin.js +24 -41
  79. package/lib/plugins/PublicPathCallbackPlugin.js +63 -0
  80. package/lib/plugins/PublicPathChangePlugin.js +187 -174
  81. package/lib/plugins/ReportGeneratePlugin.js +181 -0
  82. package/lib/plugins/RequireVariablePublicPlugin.js +30 -0
  83. package/lib/plugins/ResourceHintsPlugin.js +53 -35
  84. package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +80 -0
  85. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +82 -0
  86. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -0
  87. package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +26 -0
  88. package/lib/plugins/ScriptInstrumentPlugin.js +22 -37
  89. package/lib/plugins/ServiceWorkerPlugin.js +107 -0
  90. package/lib/plugins/ShadowDOMSupportPlugin.js +270 -0
  91. package/lib/plugins/SourceMapHookPlugin.js +25 -31
  92. package/lib/plugins/TPHashMappingPlugin.js +67 -0
  93. package/lib/plugins/UglifyCSSPlugin.js +23 -30
  94. package/lib/plugins/UnusedFilesFindPlugin.js +150 -97
  95. package/lib/plugins/index.js +118 -55
  96. package/lib/plugins/libraryImpactPlugin.js +190 -0
  97. package/lib/plugins/webpackwatchrunplugin.js +26 -0
  98. package/lib/postcss-plugins/ExcludeRTLPlugin.js +23 -0
  99. package/lib/postcss-plugins/RTLSplitPlugin.js +138 -0
  100. package/lib/schemas/index.js +463 -52
  101. package/lib/servers/clusterHubServer.js +22 -26
  102. package/lib/servers/docsServer.js +3 -5
  103. package/lib/servers/docsServerCore.js +93 -85
  104. package/lib/servers/helpServer.js +19 -21
  105. package/lib/servers/httpsOptions.js +19 -0
  106. package/lib/servers/impactServer.js +99 -92
  107. package/lib/servers/mockserver.js +44 -0
  108. package/lib/servers/nowatchserver.js +275 -0
  109. package/lib/servers/scrServer.js +147 -0
  110. package/lib/servers/server.js +118 -124
  111. package/lib/servers/ssServer.js +107 -65
  112. package/lib/sh/reportPublish.sh +16 -10
  113. package/lib/templates/CoverageScriptTemplate.js +45 -18
  114. package/lib/templates/WMSTemplate.js +17 -18
  115. package/lib/templates/linterConstant.js +10 -0
  116. package/lib/utils/babelPresets.js +12 -5
  117. package/lib/utils/buildstats.html +148 -0
  118. package/lib/utils/clean.js +12 -11
  119. package/lib/utils/copy.js +13 -127
  120. package/lib/utils/copyTimezones.js +21 -0
  121. package/lib/utils/createEventStream.js +24 -19
  122. package/lib/utils/cssClassNameGenerate.js +70 -0
  123. package/lib/utils/cssURLReplacer.js +67 -54
  124. package/lib/utils/dependencyPostPublish.js +42 -0
  125. package/lib/utils/fileUtils.js +125 -0
  126. package/lib/utils/folderIterator.js +47 -0
  127. package/lib/utils/getComponents.js +126 -0
  128. package/lib/utils/getCurrentBranch.js +11 -17
  129. package/lib/utils/getDependenciesImpactList.js +151 -0
  130. package/lib/utils/getHash.js +26 -0
  131. package/lib/utils/getIp.js +20 -0
  132. package/lib/utils/getOptions.js +55 -30
  133. package/lib/utils/getServerURL.js +25 -8
  134. package/lib/utils/index.js +259 -82
  135. package/lib/utils/init.js +2 -2
  136. package/lib/utils/initPreCommitHook.js +40 -31
  137. package/lib/utils/jsonHelper.js +97 -0
  138. package/lib/utils/libraryImpactConfig.js +63 -0
  139. package/lib/utils/lint/addScripts.js +27 -0
  140. package/lib/utils/lint/checkExistingConfig.js +67 -0
  141. package/lib/utils/lint/copyConfigs.js +24 -0
  142. package/lib/utils/lint/index.js +54 -0
  143. package/lib/utils/lint/lintScripts.js +11 -0
  144. package/lib/utils/lint/lintSetup.js +31 -0
  145. package/lib/utils/lint/lintStagedPreCommitHook.js +7 -0
  146. package/lib/utils/lint/question.js +30 -0
  147. package/lib/utils/lintReporter.js +142 -0
  148. package/lib/utils/mailSender.js +16 -25
  149. package/lib/utils/pullOrigin.js +28 -0
  150. package/lib/utils/reinstallDependencies.js +133 -0
  151. package/lib/utils/removeAttributes.js +25 -23
  152. package/lib/utils/repoClone.js +56 -63
  153. package/lib/utils/request.js +64 -77
  154. package/lib/utils/resultSchema.json +73 -0
  155. package/lib/utils/rtl.js +42 -0
  156. package/lib/utils/setEnvVariables.js +5 -6
  157. package/lib/utils/ssTestHack.js +48 -0
  158. package/lib/utils/switchBranch.js +28 -0
  159. package/lib/utils/urlConcat.js +22 -0
  160. package/package.json +92 -64
  161. package/templates/app/.eslintrc.js +140 -0
  162. package/templates/app/README.md +12 -12
  163. package/templates/app/app/index.html +24 -8
  164. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  165. package/templates/app/app/properties/i18nkeys.json +3 -3
  166. package/templates/app/docs/all.html +69 -69
  167. package/templates/app/mockapi/index.js +18 -13
  168. package/templates/app/package.json +37 -17
  169. package/templates/app/src/actions/SampleActions/index.js +37 -0
  170. package/templates/app/src/actions/index.js +65 -0
  171. package/templates/app/src/appUrls.js +19 -0
  172. package/templates/app/src/components/Alert/Alert.js +134 -0
  173. package/templates/app/src/components/Alert/Alert.module.css +79 -0
  174. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -0
  175. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -0
  176. package/templates/app/src/components/Sample/Sample.module.css +11 -0
  177. package/templates/app/src/components/Sample/SampleList.js +61 -0
  178. package/templates/app/src/components/Slider/Slider.css +41 -0
  179. package/templates/app/src/components/Slider/Slider.js +55 -0
  180. package/templates/app/src/containers/AlertContainer/index.js +15 -0
  181. package/templates/app/src/containers/AppContainer/index.js +96 -0
  182. package/templates/app/src/containers/AppContainer/index.module.css +27 -0
  183. package/templates/app/src/containers/CustomMatch/index.js +65 -0
  184. package/templates/app/src/containers/DevTools/index.js +10 -0
  185. package/templates/app/src/containers/Header/index.js +67 -0
  186. package/templates/app/src/containers/Header/index.module.css +43 -0
  187. package/templates/app/src/containers/Redirect/index.js +63 -0
  188. package/templates/app/src/containers/Redirector/index.js +47 -0
  189. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -0
  190. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -0
  191. package/templates/app/src/historyChange.js +5 -0
  192. package/templates/app/src/index.html +10 -0
  193. package/templates/app/src/index.js +24 -0
  194. package/templates/app/src/middleware/PromiseMiddleware.js +59 -0
  195. package/templates/app/src/reducers/alertData.js +11 -0
  196. package/templates/app/src/reducers/index.js +6 -0
  197. package/templates/app/src/reducers/samples.js +19 -0
  198. package/templates/app/src/store/configureStore.dev.js +51 -0
  199. package/templates/app/src/store/configureStore.js +5 -0
  200. package/templates/app/src/store/configureStore.prod.js +26 -0
  201. package/templates/app/src/util/Common.js +5 -0
  202. package/templates/app/src/util/RequestAPI.js +132 -0
  203. package/templates/appold/README.md +12 -0
  204. package/templates/appold/app/index.html +8 -0
  205. package/templates/appold/app/properties/ApplicationResources_en_US.properties +1 -0
  206. package/templates/appold/app/properties/i18nkeys.json +3 -0
  207. package/templates/appold/docs/all.html +69 -0
  208. package/templates/appold/mockapi/index.js +13 -0
  209. package/templates/{app → appold}/mockapi/tickets.json +0 -0
  210. package/templates/appold/package.json +17 -0
  211. package/templates/appold/src/components/Text/Text.css +0 -0
  212. package/templates/appold/src/components/Text/Text.js +23 -0
  213. package/templates/appold/src/components/Text/__tests__/Text.spec.js +30 -0
  214. package/templates/appold/src/components/Text/docs/Text__default.docs.js +16 -0
  215. package/templates/appold/src/components/docs.js +1 -0
  216. package/templates/appold/src/components/index.js +5 -0
  217. package/templates/appold/src/index.js +13 -0
  218. package/templates/docs/all.html +1 -1
  219. package/templates/docs/component.html +110 -69
  220. package/templates/docs/components.html +221 -0
  221. package/templates/docs/css/component.css +12 -14
  222. package/templates/docs/css/componentTest.css +7 -0
  223. package/templates/docs/css/style.css +150 -206
  224. package/templates/docs/impactReportTemplate.html +154 -0
  225. package/templates/docs/index.html +1482 -1336
  226. package/templates/library/src/index.js +0 -0
@@ -1,21 +1,18 @@
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
-
11
- var _webpack = require('webpack');
12
-
13
- var _webpack2 = _interopRequireDefault(_webpack);
10
+ var _webpack = _interopRequireDefault(require("webpack"));
14
11
 
15
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
13
 
17
- var getLibraryPlugins = function getLibraryPlugins() {
18
- var plugins = [new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.DefinePlugin({
14
+ let getLibraryPlugins = () => {
15
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.DefinePlugin({
19
16
  __TEST__: false,
20
17
  __DEVELOPMENT__: false,
21
18
  __DOCS__: false,
@@ -27,4 +24,5 @@ var getLibraryPlugins = function getLibraryPlugins() {
27
24
  return plugins;
28
25
  };
29
26
 
30
- exports.default = getLibraryPlugins;
27
+ var _default = getLibraryPlugins;
28
+ exports.default = _default;
@@ -1,80 +1,281 @@
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
+ localeAttr: efcLocaleAttr
76
+ } = options.efc;
77
+ const hasEFC = newOptionForEnableEFC || prevOptionForEnableEFC;
78
+ const hashTempalate = enableChunkHash ? '.[chunkhash:20]_' : '';
79
+ const cssLTRFileNameTempalte = `css/[name]${hashTempalate}${enableRTLSplit ? '.ltr' : ''}.css`;
80
+ const cssRTLFileNameTempalte = `css/[name]${hashTempalate}.rtl.css`;
81
+ let isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
82
+ enableChunkHash = !isDevelopment && enableChunkHash;
83
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack.default.DefinePlugin({
45
84
  __TEST__: false,
46
85
  __DEVELOPMENT__: false,
47
- __LOCAL_PRODUCTION__: process.isDevelopment,
86
+ __LOCAL_PRODUCTION__: isDevelopment,
48
87
  __DOCS__: false,
49
88
  'process.env': {
50
89
  NODE_ENV: JSON.stringify('production')
51
90
  },
52
91
  __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'
92
+ }), new _miniCssExtractPlugin.default({
93
+ // ignoreOrder: true,
94
+ filename: cssLTRFileNameTempalte,
95
+ chunkFilename: cssLTRFileNameTempalte
56
96
  }), new _plugins.ResourceHintsPlugin(), new _plugins.UglifyCSSPlugin()];
57
97
 
58
- if (publicPaths) {
59
- plugins.push(new _plugins.PublicPathChangePlugin({ publicPaths: publicPaths }));
98
+ if (enableRTLSplit) {
99
+ plugins.push(new _RtlCssPlugin.RtlCssPlugin({
100
+ templateLabel: options.css.templateLabel,
101
+ disableMiniFiySelector: options.css.disableMiniFiySelector,
102
+ dirVarName: options.css.dirVarName,
103
+ // config: {},
104
+ // sourcemap: true,
105
+ filename: cssRTLFileNameTempalte
106
+ }));
60
107
  }
61
108
 
62
- if (!process.isDevelopment) {
63
- enableSMapHook && plugins.push(new _plugins.SourceMapHookPlugin());
64
- optimize && plugins.push(new _plugins.OptimizeJSPlugin());
109
+ const i18nManifestFileName = 'i18n-manifest.json';
110
+ /**
111
+ * NOTE:
112
+ * this file name ext .i18n.js added
113
+ * Because, in service worker they maintain cache as file name based
114
+ * So, to make differce we added .i18n.js ext.
115
+ */
116
+
117
+ const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].[chunkhash].i18n.js';
118
+ const i18nPublicPath = Array.isArray(publicPaths) && !cdnMapping.isCdnEnabled ? publicPaths['4'] : ''; // const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].[contentHash]_.js';
119
+ // const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name]_.js';
120
+
121
+ if (i18n.chunkSplitEnable) {
122
+ plugins.push(new _I18nSplitPlugin.default({
123
+ jsResource: i18n.jsResource,
124
+ localeVarName: i18n.localeVarName,
125
+ jsonpFunc: i18n.jsonpFunc,
126
+ disableDefault: i18n.disableDefault,
127
+ publicPath: i18nPublicPath,
128
+ i18nManifestFileName,
129
+ // template: (object, locale) => `window.loadI18n(${JSON.stringify(object)}, ${JSON.stringify(locale)})`,
130
+ filenameTemplate: i18nFileNameTemplate,
131
+ propertiesFolder: i18n.propertiesFolder
132
+ }));
133
+ } else {
134
+ let i18nPath = _path.default.join(process.cwd(), context, 'i18n');
135
+
136
+ if (_fs.default.existsSync(i18nPath)) {
137
+ plugins.push(new _copyWebpackPlugin.default([{
138
+ from: `${i18nPath}/`,
139
+ to: enableChunkHash ? './i18n/[name].[hash:20]_.[ext]' : './i18n/[name]_.[ext]',
140
+ toType: 'template'
141
+ }]));
142
+ }
143
+ }
144
+
145
+ tpFolder && plugins.push(new _copyWebpackPlugin.default([{
146
+ from: `${_path.default.join(process.cwd(), context, tpFolder)}/`,
147
+ to: `./${tpFolder}/`,
148
+ toType: 'dir'
149
+ }]));
150
+
151
+ if (hasEFC) {
152
+ plugins.push(new _htmlWebpackPlugin.default({
153
+ chunksSortMode: 'none',
154
+ filename: enableChunkHash ? 'index.[templatehash:20].html' : 'index.html',
155
+ template: _path.default.join(process.cwd(), folder, 'index.html'),
156
+ excludeChunks: ['efc', 'widget'],
157
+ minify: false,
158
+ templateParameters: _common.templateParameters,
159
+ scriptLoading: 'defer',
160
+ inject: inject
161
+ }));
162
+ crossorigin && plugins.push(new _htmlWebpackInjectAttributesPlugin.default({
163
+ crossorigin: 'anonymous'
164
+ }));
165
+ plugins.push(new _plugins.EFCPlugin({
166
+ isDevelopment,
167
+ serverUrl: publicPath,
168
+ i18nFileNameTemplate,
169
+ i18nManifestFileName,
170
+ entryPointName: 'efc',
171
+ // outputFile: 'zohodesk-efc-sdk-latest.js',
172
+ nameScope: efcNameSpace,
173
+ localeAttr: efcLocaleAttr,
174
+ cdnVariableName: cdnMapping.isCdnEnabled ? cdnMapping.variableName : null
175
+ }));
176
+ } else {
177
+ plugins.push(new _htmlWebpackPlugin.default({
178
+ chunksSortMode: 'none',
179
+ filename: enableChunkHash ? 'index.[templatehash:20].html' : 'index.html',
180
+ template: _path.default.join(process.cwd(), folder, 'index.html'),
181
+ minify: false,
182
+ templateParameters: _common.templateParameters,
183
+ scriptLoading: 'defer',
184
+ inject: inject
185
+ }));
186
+ crossorigin && plugins.push(new _htmlWebpackInjectAttributesPlugin.default({
187
+ crossorigin: 'anonymous'
188
+ }));
189
+ }
190
+
191
+ plugins.push(new _plugins.I18NInjectIntoIndexPlugin({
192
+ // Because we will handle cdn url in CdnChangePlugin
193
+ publicPath: cdnMapping.isCdnEnabled ? '' : i18nPublicPath,
194
+ isDevelopment,
195
+ templateLabel: i18n.templateLabel || '{{--user-locale}}',
196
+ i18nFileNameTemplate,
197
+ i18nManifestFileName,
198
+ mainChunkName: 'main'
199
+ }));
200
+
201
+ if (publicPaths && !isDevelopment && !cdnMapping.isCdnEnabled) {
202
+ let {
203
+ callback
204
+ } = publicPaths;
205
+ plugins.push(callback ? new _plugins.PublicPathCallbackPlugin({
206
+ callback
207
+ }) : new _plugins.PublicPathChangePlugin({
208
+ publicPaths,
209
+ resourceHints
210
+ }));
211
+ }
212
+
213
+ if (cdnMapping.isCdnEnabled) {
214
+ plugins.push(new _plugins.CdnChangePlugin(cdnMapping));
215
+ }
65
216
 
217
+ plugins.push(new _lodashWebpackPlugin.default({
218
+ collections: true,
219
+ shorthands: true
220
+ }));
221
+ hasShadowDOM && plugins.push(new _plugins.ShadowDOMSupportPlugin());
222
+
223
+ if (!isDevelopment) {
224
+ enableSMap && enableSMapHook && plugins.push(new _plugins.SourceMapHookPlugin());
225
+ optimize && plugins.push(new _plugins.OptimizeJSPlugin());
66
226
  plugins.push(new _plugins.ManifestPlugin({
67
227
  fileName: manifestFileName
68
228
  }));
69
229
 
70
230
  if (bundleAnalyze) {
71
231
  plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({
72
- analyzerMode: 'static'
232
+ analyzerMode: 'static',
233
+ generateStatsFile: true,
234
+ openAnalyzer: false,
235
+ statsOptions: {
236
+ source: false,
237
+ normal: true,
238
+ chunks: false,
239
+ chunkGroups: false,
240
+ module: false,
241
+ assets: true,
242
+ assetsSort: 'name'
243
+ }
244
+ })); // plugins.push(new ReportGeneratePlugin());
245
+ }
246
+
247
+ if (tpHashMapping && tpHashMapping.length > 0) {
248
+ plugins.push(new _plugins.TPHashMappingPlugin({
249
+ fileMappings: tpHashMapping,
250
+ tpFolder: `${_path.default.join(process.cwd(), context, tpFolder)}/`
73
251
  }));
74
252
  }
75
253
  }
76
254
 
255
+ if (!isDevelopment && serviceWorker.enableSw) {
256
+ let {
257
+ filePath,
258
+ fileName = 'sw.js',
259
+ exitPath = '/',
260
+ replaceText = '@@'
261
+ } = serviceWorker;
262
+
263
+ if (!filePath) {
264
+ throw new Error('File Path required for service worker plugin');
265
+ }
266
+
267
+ plugins.push(new _plugins.ServiceWorkerPlugin({
268
+ filePath: _path.default.join(process.cwd(), filePath),
269
+ i18nFileNameTemplate,
270
+ fileName: fileName,
271
+ exitPath: _path.default.join(outputFolder, exitPath),
272
+ replaceText,
273
+ publicPaths
274
+ }));
275
+ }
276
+
77
277
  return plugins;
78
278
  };
79
279
 
80
- exports.default = getProdPlugins;
280
+ var _default = getProdPlugins;
281
+ 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;