@zohodesk/react-cli 0.0.1-exp.169.2 → 0.0.1-exp.175.1

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 (245) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -179
  3. package/.prettierrc +6 -6
  4. package/README.md +1028 -951
  5. package/bin/cli.js +483 -483
  6. package/cert/Tsicsezwild-22-23.crt +37 -37
  7. package/cert/Tsicsezwild-22-23.key +27 -27
  8. package/docs/CustomChunks.md +26 -26
  9. package/docs/DevStart.md +18 -18
  10. package/docs/HoverActive.md +12 -12
  11. package/docs/InstallNode.md +28 -28
  12. package/docs/TODOS.md +10 -10
  13. package/docs/ValueReplacer.md +60 -60
  14. package/docs/VariableConversion.md +678 -0
  15. package/docs/warnings_while_install.txt +35 -35
  16. package/files/eslintrc.js +62 -62
  17. package/files/prettierrc.js +3 -3
  18. package/lib/babel/cmjs-plugins-presets.js +0 -4
  19. package/lib/babel/es-plugins-presets.js +0 -4
  20. package/lib/common/getEntries.js +0 -10
  21. package/lib/common/getPublicPathConfig.js +0 -6
  22. package/lib/common/index.js +0 -5
  23. package/lib/common/splitChunks.js +2 -13
  24. package/lib/common/sslcertUpdater.js +6 -17
  25. package/lib/common/templateParameters.js +0 -2
  26. package/lib/common/testPattern.js +10 -21
  27. package/lib/common/valueReplacer.js +0 -15
  28. package/lib/configs/jest.config.js +8 -21
  29. package/lib/configs/libAlias.js +11 -2
  30. package/lib/configs/webpack.component.umd.config.js +0 -5
  31. package/lib/configs/webpack.css.umd.config.js +5 -13
  32. package/lib/configs/webpack.dev.config.js +13 -24
  33. package/lib/configs/webpack.docs.config.js +6 -12
  34. package/lib/configs/webpack.impact.config.js +6 -10
  35. package/lib/configs/webpack.prod.config.js +15 -26
  36. package/lib/hooks/docsProptypeHook.js +3 -7
  37. package/lib/jest/commitedFilesResult.js +3 -45
  38. package/lib/jest/coverageCollector.js +0 -11
  39. package/lib/jest/jsonMaker.js +0 -6
  40. package/lib/jest/preProcessors/cssPreprocessor.js +14 -13
  41. package/lib/jest/preProcessors/jsPreprocessor.js +0 -2
  42. package/lib/jest/preProcessors/otherFilesPreprocessor.js +0 -3
  43. package/lib/jest/result.js +0 -22
  44. package/lib/jest/run.js +6 -17
  45. package/lib/jest/setup.js +5 -57
  46. package/lib/loaderUtils/configsAssetsLoaders.js +34 -44
  47. package/lib/loaderUtils/getCSSLoaders.js +41 -28
  48. package/lib/loaderUtils/getDevJsLoaders.js +0 -8
  49. package/lib/loaderUtils/index.js +0 -3
  50. package/lib/loaders/docsLoader.js +0 -7
  51. package/lib/loaders/docsPropsLoader.js +3 -7
  52. package/lib/loaders/fileBountryLoader.js +0 -2
  53. package/lib/loaders/fileLoader.js +11 -22
  54. package/lib/loaders/scriptInstrumentLoader.js +5 -13
  55. package/lib/loaders/selectorMappingLoader.js +7 -25
  56. package/lib/loaders/workerLoader.js +13 -29
  57. package/lib/middlewares/HMRMiddleware.js +13 -26
  58. package/lib/middlewares/SSTMiddleware.js +0 -3
  59. package/lib/pluginUtils/configHtmlWebpackPlugins.js +53 -0
  60. package/lib/pluginUtils/getDevPlugins.js +20 -64
  61. package/lib/pluginUtils/getDocsPlugins.js +1 -10
  62. package/lib/pluginUtils/getLibraryImactPlugins.js +4 -5
  63. package/lib/pluginUtils/getLibraryPlugins.js +0 -5
  64. package/lib/pluginUtils/getProdPlugins.js +32 -78
  65. package/lib/pluginUtils/getServerPlugins.js +0 -5
  66. package/lib/pluginUtils/getUMDCSSPlugins.js +0 -7
  67. package/lib/pluginUtils/getUMDComponentPlugins.js +0 -7
  68. package/lib/pluginUtils/index.js +0 -8
  69. package/lib/plugins/CdnChangePlugin.js +0 -14
  70. package/lib/plugins/CleanupStatsPlugin.js +0 -5
  71. package/lib/plugins/EFCPlugin.js +23 -34
  72. package/lib/plugins/EFCPlugin.md +6 -6
  73. package/lib/plugins/EFCTemplatePlugin.js +23 -32
  74. package/lib/plugins/I18NInjectIntoIndexPlugin.js +12 -38
  75. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +12 -17
  76. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +4 -10
  77. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +46 -77
  78. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +44 -59
  79. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +21 -30
  80. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  81. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  82. package/lib/plugins/I18nSplitPlugin/index.js +70 -80
  83. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +2 -12
  84. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +0 -1
  85. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +0 -5
  86. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +0 -6
  87. package/lib/plugins/I18nSplitPlugin/utils/index.js +0 -4
  88. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +2 -20
  89. package/lib/plugins/ManifestPlugin.js +0 -17
  90. package/lib/plugins/ModuleStatsPlugin.js +0 -23
  91. package/lib/plugins/OptimizeJSPlugin.js +0 -7
  92. package/lib/plugins/PublicPathCallbackPlugin.js +0 -10
  93. package/lib/plugins/PublicPathChangePlugin.js +4 -36
  94. package/lib/plugins/ReportGeneratePlugin.js +4 -30
  95. package/lib/plugins/RequireVariablePublicPlugin.js +0 -6
  96. package/lib/plugins/ResourceHintsPlugin.js +20 -27
  97. package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +12 -17
  98. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +23 -38
  99. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  100. package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +2 -5
  101. package/lib/plugins/ScriptInstrumentPlugin.js +0 -7
  102. package/lib/plugins/ServiceWorkerPlugin.js +13 -29
  103. package/lib/plugins/ShadowDOMSupportPlugin.js +3 -40
  104. package/lib/plugins/SourceMapHookPlugin.js +0 -9
  105. package/lib/plugins/TPHashMappingPlugin.js +5 -19
  106. package/lib/plugins/UglifyCSSPlugin.js +0 -9
  107. package/lib/plugins/UnusedFilesFindPlugin.js +2 -35
  108. package/lib/plugins/index.js +0 -19
  109. package/lib/plugins/libraryImpactPlugin.js +0 -32
  110. package/lib/plugins/webpackwatchrunplugin.js +0 -5
  111. package/lib/postcss-plugins/ExcludePlugin.js +0 -4
  112. package/lib/postcss-plugins/RTLSplitPlugin.js +24 -37
  113. package/lib/postcss-plugins/ValueReplacer.js +9 -6
  114. package/lib/postcss-plugins/__test__/hoverActivePlugin.spec.js +0 -3
  115. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  116. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  117. package/lib/postcss-plugins/hoverActivePlugin.js +80 -92
  118. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +31 -0
  119. package/lib/postcss-plugins/variableModificationPlugin/index.js +232 -0
  120. package/lib/postcss-plugins/variableModifier.js +14 -20
  121. package/lib/schemas/index.js +28 -13
  122. package/lib/servers/clusterHubServer.js +0 -10
  123. package/lib/servers/devBuild.js +13 -24
  124. package/lib/servers/docsServer.js +0 -2
  125. package/lib/servers/docsServerCore.js +0 -21
  126. package/lib/servers/getCliPath.js +1 -10
  127. package/lib/servers/helpServer.js +0 -5
  128. package/lib/servers/httpsOptions.js +0 -4
  129. package/lib/servers/impactServer.js +2 -34
  130. package/lib/servers/mockserver.js +0 -9
  131. package/lib/servers/nowatchserver.js +12 -34
  132. package/lib/servers/scrServer.js +13 -20
  133. package/lib/servers/server.js +7 -35
  134. package/lib/servers/ssServer.js +0 -16
  135. package/lib/sh/pre-commit.sh +34 -34
  136. package/lib/sh/reportPublish.sh +45 -45
  137. package/lib/templates/CoverageScriptTemplate.js +0 -14
  138. package/lib/templates/WMSTemplate.js +6 -12
  139. package/lib/utils/babelPresets.js +0 -2
  140. package/lib/utils/buildstats.html +148 -148
  141. package/lib/utils/clean.js +2 -8
  142. package/lib/utils/copy.js +0 -6
  143. package/lib/utils/copyTimezones.js +0 -8
  144. package/lib/utils/createEventStream.js +0 -4
  145. package/lib/utils/cssClassNameGenerate.js +3 -19
  146. package/lib/utils/cssURLReplacer.js +0 -25
  147. package/lib/utils/dependencyPostPublish.js +0 -9
  148. package/lib/utils/fileUtils.js +0 -26
  149. package/lib/utils/folderIterator.js +0 -10
  150. package/lib/utils/getComponents.js +0 -21
  151. package/lib/utils/getCurrentBranch.js +0 -5
  152. package/lib/utils/getDependenciesImpactList.js +0 -21
  153. package/lib/utils/getHash.js +0 -7
  154. package/lib/utils/getIp.js +0 -2
  155. package/lib/utils/getOptions.js +38 -35
  156. package/lib/utils/getServerURL.js +0 -7
  157. package/lib/utils/index.js +2 -47
  158. package/lib/utils/init.js +0 -1
  159. package/lib/utils/initPreCommitHook.js +6 -29
  160. package/lib/utils/jsonHelper.js +2 -19
  161. package/lib/utils/libraryImpactConfig.js +0 -2
  162. package/lib/utils/lint/addScripts.js +2 -5
  163. package/lib/utils/lint/checkExistingConfig.js +3 -12
  164. package/lib/utils/lint/copyConfigs.js +0 -3
  165. package/lib/utils/lint/index.js +0 -9
  166. package/lib/utils/lint/lintScripts.js +0 -1
  167. package/lib/utils/lint/lintSetup.js +3 -4
  168. package/lib/utils/lint/lintStagedPreCommitHook.js +0 -1
  169. package/lib/utils/lint/question.js +0 -7
  170. package/lib/utils/lintReporter.js +0 -20
  171. package/lib/utils/mailSender.js +0 -7
  172. package/lib/utils/pullOrigin.js +0 -4
  173. package/lib/utils/reinstallDependencies.js +0 -28
  174. package/lib/utils/removeAttributes.js +0 -7
  175. package/lib/utils/repoClone.js +2 -27
  176. package/lib/utils/request.js +0 -12
  177. package/lib/utils/resultSchema.json +73 -73
  178. package/lib/utils/rtl.js +4 -16
  179. package/lib/utils/setEnvVariables.js +0 -2
  180. package/lib/utils/ssTestHack.js +0 -10
  181. package/lib/utils/switchBranch.js +0 -4
  182. package/lib/utils/urlConcat.js +0 -4
  183. package/lib/utils/useExitCleanup.js +9 -10
  184. package/npm8.md +9 -9
  185. package/package.json +146 -148
  186. package/postpublish.js +6 -6
  187. package/templates/app/.eslintrc.js +140 -140
  188. package/templates/app/README.md +12 -12
  189. package/templates/app/app/index.html +24 -24
  190. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  191. package/templates/app/app/properties/i18nkeys.json +3 -3
  192. package/templates/app/docs/all.html +69 -69
  193. package/templates/app/mockapi/index.js +18 -18
  194. package/templates/app/package.json +37 -37
  195. package/templates/app/src/actions/SampleActions/index.js +37 -37
  196. package/templates/app/src/actions/index.js +65 -65
  197. package/templates/app/src/appUrls.js +19 -19
  198. package/templates/app/src/components/Alert/Alert.js +134 -134
  199. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  200. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  201. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  202. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  203. package/templates/app/src/components/Sample/SampleList.js +61 -61
  204. package/templates/app/src/components/Slider/Slider.css +41 -41
  205. package/templates/app/src/components/Slider/Slider.js +55 -55
  206. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  207. package/templates/app/src/containers/AppContainer/index.js +96 -96
  208. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  209. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  210. package/templates/app/src/containers/DevTools/index.js +10 -10
  211. package/templates/app/src/containers/Header/index.js +67 -67
  212. package/templates/app/src/containers/Header/index.module.css +43 -43
  213. package/templates/app/src/containers/Redirect/index.js +63 -63
  214. package/templates/app/src/containers/Redirector/index.js +47 -47
  215. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  216. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  217. package/templates/app/src/historyChange.js +5 -5
  218. package/templates/app/src/index.html +10 -10
  219. package/templates/app/src/index.js +24 -24
  220. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  221. package/templates/app/src/reducers/alertData.js +11 -11
  222. package/templates/app/src/reducers/index.js +6 -6
  223. package/templates/app/src/reducers/samples.js +19 -19
  224. package/templates/app/src/store/configureStore.dev.js +51 -51
  225. package/templates/app/src/store/configureStore.js +5 -5
  226. package/templates/app/src/store/configureStore.prod.js +26 -26
  227. package/templates/app/src/util/Common.js +5 -5
  228. package/templates/app/src/util/RequestAPI.js +132 -132
  229. package/templates/docs/all.html +249 -249
  230. package/templates/docs/component.html +178 -178
  231. package/templates/docs/components.html +221 -221
  232. package/templates/docs/css/b.min.css +6 -6
  233. package/templates/docs/css/component.css +42 -42
  234. package/templates/docs/css/componentTest.css +6 -6
  235. package/templates/docs/css/hopscotch.css +585 -585
  236. package/templates/docs/css/style.css +1022 -1022
  237. package/templates/docs/impactReportTemplate.html +154 -154
  238. package/templates/docs/index.html +1501 -1493
  239. package/templates/docs/js/active-line.js +72 -72
  240. package/templates/docs/js/b.min.js +7 -7
  241. package/templates/docs/js/codemirror.js +9680 -9680
  242. package/templates/docs/js/designTokens.js +334 -334
  243. package/templates/docs/js/j.min.js +4 -4
  244. package/templates/docs/js/javascript.js +874 -874
  245. package/templates/docs/js/matchbrackets.js +145 -145
@@ -4,24 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _webpackSources = require("webpack-sources");
9
-
10
8
  var _utils = require("../utils");
11
-
12
9
  var _path = _interopRequireDefault(require("path"));
13
-
14
10
  var _fs = require("fs");
15
-
16
11
  var _getI18nFileUrlPathTemplate = require("./I18nSplitPlugin/utils/getI18nFileUrlPathTemplate");
17
-
18
12
  var _I18nKeysIdentifer = _interopRequireDefault(require("./I18nSplitPlugin/I18nKeysIdentifer"));
19
-
20
13
  var _replaceCssDirTemplate = require("./RtlSplitPlugin/replaceCssDirTemplate");
21
-
22
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
15
  // import { getShortI18nAssets } from './I18nSplitPlugin/utils/hashUtils';
16
+
25
17
  const cliOptions = (0, _utils.getOptions)();
26
18
  const {
27
19
  i18n: {
@@ -34,25 +26,32 @@ const {
34
26
  } = cliOptions;
35
27
  const {
36
28
  createSDkFile
37
- } = efcOptios; // for smap relate changes
29
+ } = efcOptios;
30
+
31
+ // for smap relate changes
38
32
  // CdnChangePlugin
39
33
  // SourceMapHookPlugin
40
34
 
41
35
  class EFCTemplatePlugin {
42
36
  constructor(options = {}) {
43
37
  // console.log(' templateFilePath ', process.cwd(), options.templateFilePath, templateFilePath);
44
- this.templateFilePath = _path.default.join(process.cwd(), options.templateFilePath); // console.log(' templateFilePath ', this.templateFilePath);
45
-
38
+ this.templateFilePath = _path.default.join(process.cwd(), options.templateFilePath);
39
+ // console.log(' templateFilePath ', this.templateFilePath);
46
40
  this.i18nFileNameTemplate = options.i18nFileNameTemplate;
47
- this.publicPath = options.publicPath; // NOTE: this logic may be needed for i18n splited file name with contenthash cases
41
+ this.publicPath = options.publicPath;
42
+
43
+ // NOTE: this logic may be needed for i18n splited file name with contenthash cases
48
44
  // this.i18nManifestFileName = options.i18nManifestFileName;
45
+
49
46
  // IMPORTANT: here we mergeing optionds from pacakge.json and options via constructor
50
47
  // So when debugging consider this as well
51
48
  // this.options = Object.assign({}, efcOptios, options);
52
49
 
53
50
  this.entryPointName = options.entryPointName || 'efc';
54
51
  this.outputFile = efcOptios.outputFile.replace('[version]', efcOptios.version);
55
- } // NOTE: this logic may be needed for i18n splited file name with contenthash cases
52
+ }
53
+
54
+ // NOTE: this logic may be needed for i18n splited file name with contenthash cases
56
55
  // getI18nManifest(compilation) {
57
56
  // const i18nManifestFile =
58
57
  // compilation.assets[this.options.i18nManifestFileName];
@@ -63,13 +62,12 @@ class EFCTemplatePlugin {
63
62
  // return {};
64
63
  // }
65
64
 
66
-
67
65
  getI18nAssetsStr(entryPoint, compilation) {
68
66
  // NOTE: we have used lang variable inside
69
67
  if (!chunkSplitEnable) {
70
68
  let i18nAsstes = {};
71
- let i18nFiles = Object.keys(compilation.assets).filter(assert => assert.indexOf(`i18n${_path.default.sep}`) !== -1); //hook for i18n url contains i18n/ may cause problem
72
-
69
+ let i18nFiles = Object.keys(compilation.assets).filter(assert => assert.indexOf(`i18n${_path.default.sep}`) !== -1);
70
+ //hook for i18n url contains i18n/ may cause problem
73
71
  i18nAsstes = i18nFiles.reduce((res, i18nFilePath) => {
74
72
  let fileName = i18nFilePath.replace(`i18n${_path.default.sep}`, '');
75
73
  let splittedFileName = fileName.split('.');
@@ -78,30 +76,30 @@ class EFCTemplatePlugin {
78
76
  }, {});
79
77
  return `[${JSON.stringify(i18nAsstes)}[lang]]`;
80
78
  }
81
-
82
79
  let initalI18nAssets = entryPoint.chunks.filter(chunk => _I18nKeysIdentifer.default.isChunkHasI18n(chunk)).map(chunk => (0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, '@locale@'));
83
80
  return `${JSON.stringify(initalI18nAssets)}.map(urlpath => urlpath.replace(/@locale@/g, lang))`;
84
81
  }
85
-
86
82
  templateReplacer(entryPoint, compilation) {
87
- const cssDirTemplate = '@dir@'; // const i18nManifest = this.getI18nManifest(compilation);
83
+ const cssDirTemplate = '@dir@';
84
+ // const i18nManifest = this.getI18nManifest(compilation);
88
85
 
89
86
  const initialFiles = entryPoint.getFiles();
90
87
  const filteredInitialFiles = initialFiles.filter(file => /\.(css|js)$/.test(file));
91
88
  const initialJsFiles = filteredInitialFiles.filter(file => /\.js$/.test(file));
92
89
  let initialCssFiles = filteredInitialFiles.filter(file => /\.css$/.test(file));
93
-
94
90
  if (enableRTLSplit) {
95
91
  initialCssFiles = initialCssFiles.map(filePath => (0, _replaceCssDirTemplate.replaceCssDirTemplate)(filePath, cssDirTemplate));
96
- } // const i18nAssets = getShortI18nAssets(
92
+ }
93
+
94
+ // const i18nAssets = getShortI18nAssets(
97
95
  // entryPoint.chunks,
98
96
  // i18nManifest,
99
97
  // '' // i18nJsPath
100
98
  // );
101
99
 
102
-
103
100
  const initalI18nAssets = this.getI18nAssetsStr(entryPoint, compilation, '' // i18nJsPath
104
101
  );
102
+
105
103
  let templateStr = (0, _fs.readFileSync)(this.templateFilePath).toString();
106
104
  return templateStr.replace('((\'getInitalAssets\'))', `function getInitalAssets(assetsType, lang) {
107
105
  if (assetsType === "js") {
@@ -116,36 +114,29 @@ class EFCTemplatePlugin {
116
114
  return [];
117
115
  }`).replace('((\'@dir@\'))', '\'@dir@\'').replace('((\'publicPath\'))', this.publicPath).replace('((\'@locale@\'))', '\'@locale@\'');
118
116
  }
119
-
120
117
  apply(compiler) {
121
118
  if (!createSDkFile) {
122
119
  return;
123
120
  }
124
-
125
121
  compiler.hooks.emit.tap('EFCTemplatePlugin', compilation => {
126
122
  const {
127
123
  entryPointName,
128
124
  outputFile
129
125
  } = this;
130
126
  const entryPoint = compilation.entrypoints.get(entryPointName);
131
-
132
127
  if (!entryPoint) {
133
128
  return;
134
129
  }
135
-
136
130
  if (!(0, _fs.existsSync)(this.templateFilePath)) {
137
131
  console.error(`EFC Template file not exists ${this.templateFilePath}`);
138
132
  return;
139
133
  }
140
-
141
134
  const source = new _webpackSources.RawSource(this.templateReplacer(entryPoint, compilation));
142
- compilation.assets[outputFile] = source; // console.log('EFCTemplatePlugin working');
135
+ compilation.assets[outputFile] = source;
136
+ // console.log('EFCTemplatePlugin working');
143
137
  // eslint-disable-next-line no-console
144
-
145
138
  console.log('The EFC embedded code was created successfully..!!!');
146
139
  });
147
140
  }
148
-
149
141
  }
150
-
151
142
  exports.default = EFCTemplatePlugin;
@@ -4,34 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
9
-
10
8
  var _utils = require("../utils");
11
-
12
9
  var _urlConcat = require("../utils/urlConcat");
13
-
14
10
  var _path = _interopRequireDefault(require("path"));
15
-
16
11
  var _webpackSources = require("webpack-sources");
17
-
18
12
  var _hashUtils = require("./I18nSplitPlugin/utils/hashUtils");
19
-
20
13
  var _getI18nFileUrlPathTemplate = require("./I18nSplitPlugin/utils/getI18nFileUrlPathTemplate");
21
-
22
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
15
  let i18nObj = null;
25
16
  let options = (0, _utils.getOptions)();
26
-
27
17
  function newAssign(target, data) {
28
18
  return Object.assign({}, target, data);
29
19
  }
30
-
31
20
  const {
32
21
  i18n
33
22
  } = options;
34
-
35
23
  class I18NInjectIntoIndexPlugin {
36
24
  constructor(options) {
37
25
  this.isDevelopment = options.isDevelopment;
@@ -41,35 +29,30 @@ class I18NInjectIntoIndexPlugin {
41
29
  this.i18nManifestFileName = options.i18nManifestFileName;
42
30
  this.entryPointName = options.mainChunkName;
43
31
  }
44
-
45
32
  getI18nFileUrlPath(chunk, compilation) {
46
33
  let urlpath = (0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, this.templateLabel);
47
34
  return (0, _urlConcat.urlConcat)(this.publicPath, urlpath);
48
35
  }
49
-
50
36
  getI18nManifest(compilation) {
51
37
  const i18nManifestFile = compilation.assets[this.i18nManifestFileName];
52
-
53
38
  if (!i18nManifestFile) {
54
39
  return {};
55
40
  }
56
-
57
41
  const manifest = JSON.parse(i18nManifestFile.source());
58
42
  return manifest;
59
43
  }
60
-
61
44
  injectI18nURLsToHTML(compilation) {
62
45
  _htmlWebpackPlugin.default.getHooks(compilation).beforeAssetTagGeneration.tapAsync('I18NInjectIntoIndexPlugin', (data, cb) => {
63
46
  const {
64
47
  assets
65
- } = data; // Manipulate the content
66
-
48
+ } = data;
49
+ // Manipulate the content
67
50
  const i18nManifest = this.getI18nManifest(compilation);
68
51
  const entryPoint = compilation.entrypoints.get(this.entryPointName);
69
- const i18nScriptURLs = entryPoint.chunks.filter(c => !!i18nManifest[c.id]).map(c => this.getI18nFileUrlPath(c, compilation)); // .map(url => getI18nScriptTagObj(url));
52
+ const i18nScriptURLs = entryPoint.chunks.filter(c => !!i18nManifest[c.id]).map(c => this.getI18nFileUrlPath(c, compilation));
53
+ // .map(url => getI18nScriptTagObj(url));
70
54
  // .join('');
71
55
  // Tell webpack to move on
72
-
73
56
  cb(null, newAssign(data, {
74
57
  assets: newAssign(assets, {
75
58
  js: i18nScriptURLs.concat(assets.js)
@@ -77,7 +60,6 @@ class I18NInjectIntoIndexPlugin {
77
60
  }));
78
61
  });
79
62
  }
80
-
81
63
  withI18nSpitHandling(compiler) {
82
64
  compiler.hooks.make.tap('I18NInjectIntoIndexPlugin', compilation => {
83
65
  // let cdns = Object.keys(this.publicPaths);
@@ -86,19 +68,17 @@ class I18NInjectIntoIndexPlugin {
86
68
  this.injectI18nURLsToHTML(compilation);
87
69
  return;
88
70
  }
89
-
90
71
  _htmlWebpackPlugin.default.getHooks(compilation).beforeEmit.tapAsync('I18NInjectIntoIndexPlugin', (data, cb) => {
91
72
  // Manipulate the content
92
73
  const i18nManifest = this.getI18nManifest(compilation);
93
74
  const entryPoint = compilation.entrypoints.get(this.entryPointName);
94
75
  let i18nAssets = (0, _hashUtils.getShortI18nAssets)(entryPoint.chunks, i18nManifest, this.publicPath);
95
- data.html = data.html.replace(new RegExp('<!--I18nInfoToServer(.*?)I18nInfoToServer-->', 'g'), (match, arg) => match.replace(arg, JSON.stringify(i18nAssets))); // Tell webpack to move on
96
-
76
+ data.html = data.html.replace(new RegExp('<!--I18nInfoToServer(.*?)I18nInfoToServer-->', 'g'), (match, arg) => match.replace(arg, JSON.stringify(i18nAssets)));
77
+ // Tell webpack to move on
97
78
  cb(null, data);
98
79
  });
99
80
  });
100
81
  }
101
-
102
82
  apply(compiler) {
103
83
  if (i18n.chunkSplitEnable) {
104
84
  this.withI18nSpitHandling(compiler);
@@ -106,36 +86,30 @@ class I18NInjectIntoIndexPlugin {
106
86
  this.withoutI18nSpitHandling(compiler);
107
87
  }
108
88
  }
109
-
110
89
  withoutI18nSpitHandling(compiler) {
111
90
  compiler.hooks.emit.tap('I18NInjectIntoIndexPlugin', compilation => {
112
91
  // let cdns = Object.keys(this.publicPaths);
113
92
  if (i18nObj === null) {
114
- let i18nFiles = Object.keys(compilation.assets).filter(assert => assert.indexOf(`i18n${_path.default.sep}`) !== -1); //hook for i18n url contains i18n/ may cause problem
115
-
93
+ let i18nFiles = Object.keys(compilation.assets).filter(assert => assert.indexOf(`i18n${_path.default.sep}`) !== -1);
94
+ //hook for i18n url contains i18n/ may cause problem
116
95
  i18nObj = i18nFiles.reduce((res, next) => {
117
96
  let fileName = next.replace(`i18n${_path.default.sep}`, '');
118
97
  let splittedFileName = fileName.split('.');
119
- /* if (this.isDevelopment) {
120
- res[splittedFileName[0]] = `${this.publicPath}/i18n/${fileName}`;
121
- } else {
122
- res[splittedFileName[0]] = fileName;
98
+ /* if (this.isDevelopment) {
99
+ res[splittedFileName[0]] = `${this.publicPath}/i18n/${fileName}`;
100
+ } else {
101
+ res[splittedFileName[0]] = fileName;
123
102
  } */
124
-
125
103
  res[splittedFileName[0]] = `${this.publicPath}/i18n/${fileName}`;
126
104
  return res;
127
105
  }, {});
128
106
  }
129
-
130
107
  let [indexFile] = Object.keys(compilation.assets).filter(filename => /\.html$/g.test(filename));
131
-
132
108
  if (indexFile) {
133
109
  let source = compilation.assets[indexFile].source();
134
110
  compilation.assets[indexFile] = new _webpackSources.RawSource(source.replace(new RegExp('<!--I18nInfoToServer(.*)I18nInfoToServer-->', 'g'), (match, arg) => match.replace(arg, JSON.stringify(i18nObj))));
135
111
  }
136
112
  });
137
113
  }
138
-
139
114
  }
140
-
141
115
  exports.default = I18NInjectIntoIndexPlugin;
@@ -4,17 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("./utils");
9
-
10
- const pluginName = 'I18nDebugPlugin'; // this plugin only for debug related purpose
8
+ const pluginName = 'I18nDebugPlugin';
9
+ // this plugin only for debug related purpose
11
10
 
12
11
  class I18nDebugPlugin {
13
12
  constructor(jsResourceI18nKeys) {
14
13
  this.jsResourceI18nKeys = jsResourceI18nKeys;
15
14
  this.warnings = [];
16
15
  }
17
-
18
16
  apply(compiler) {
19
17
  compiler.hooks.thisCompilation.tap(pluginName, (compilation, compilationParams) => {
20
18
  // TEMP : only for debugging purpose
@@ -24,22 +22,21 @@ class I18nDebugPlugin {
24
22
  compiler.hooks.normalModuleFactory.tap(pluginName, factory => {
25
23
  if (!this.compilationParams || this.compilationParams.normalModuleFactory === factory) {
26
24
  return;
27
- } // console.log('skiped');
28
-
29
-
25
+ }
26
+ // console.log('skiped');
30
27
  let handler = parser => {
31
28
  parser.hooks.program.tap(pluginName, (ast, commmets) => {
32
29
  const {
33
30
  module
34
- } = parser.state; //
35
-
31
+ } = parser.state;
32
+ //
36
33
  if (!(module && /\.jsx?$/.test(module.resource))) {
37
34
  return;
38
- } // i18n grep proper contract regex
39
-
40
-
35
+ }
36
+ // i18n grep proper contract regex
41
37
  let i18nKeys = (0, _utils.collectI18nKeysfromAST)(ast, this.jsResourceI18nKeys);
42
- i18nKeys = i18nKeys.concat( // i18n grep proper contract regex
38
+ i18nKeys = i18nKeys.concat(
39
+ // i18n grep proper contract regex
43
40
  (0, _utils.collectI18nKeysfromComments)(commmets, this.jsResourceI18nKeys));
44
41
  i18nKeys.length && this.warnings.push({
45
42
  message: 'skiped i18n keys',
@@ -49,12 +46,10 @@ class I18nDebugPlugin {
49
46
  });
50
47
  });
51
48
  };
52
-
53
49
  factory.hooks.parser.for('javascript/auto').tap(pluginName, handler);
54
- factory.hooks.parser.for('javascript/dynamic').tap(pluginName, handler); // factory.hooks.parser.for('javascript/esm').tap(pluginName, handler);
50
+ factory.hooks.parser.for('javascript/dynamic').tap(pluginName, handler);
51
+ // factory.hooks.parser.for('javascript/esm').tap(pluginName, handler);
55
52
  });
56
53
  }
57
-
58
54
  }
59
-
60
55
  exports.default = I18nDebugPlugin;
@@ -4,10 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.I18nDependencyTemplate = exports.I18nDependency = void 0;
7
-
8
7
  var _webpack = require("webpack");
9
-
10
8
  // const webpack = require('webpack');
9
+
11
10
  class I18nDependency extends _webpack.Dependency {
12
11
  constructor({
13
12
  identifier,
@@ -19,26 +18,21 @@ class I18nDependency extends _webpack.Dependency {
19
18
  this.i18nKeys = i18nKeys;
20
19
  this.context = context;
21
20
  }
22
-
23
21
  getResourceIdentifier() {
24
22
  return `i18n-module-${this.identifier}-${this.identifierIndex}`;
25
23
  }
26
-
27
24
  }
28
-
29
25
  exports.I18nDependency = I18nDependency;
30
-
31
26
  class I18nDependencyTemplate {
32
27
  //eslint-disable-next-line no-empty-function
33
- apply() {} // apply(dep, source) {
28
+ apply() {}
29
+ // apply(dep, source) {
34
30
  // if (typeof dep.range === "number") {
35
31
  // source.insert(0, `/* comment by I18nSplitPlugin , i18n keys = ${JSON.stringify(dep.i18nKeys)} */`);
36
32
  // return;
37
33
  // }
34
+
38
35
  // source.replace(dep.range[0], dep.range[1] - 1, dep.expression);
39
36
  // }
40
-
41
-
42
37
  }
43
-
44
38
  exports.I18nDependencyTemplate = I18nDependencyTemplate;
@@ -4,59 +4,49 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _webpack = require("webpack");
9
-
10
8
  var _I18nKeysIdentifer = _interopRequireDefault(require("./I18nKeysIdentifer"));
11
-
12
9
  var _hashUtils = require("./utils/hashUtils");
13
-
14
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- /**
17
- * this plugin for the download i18n files
18
- * So, if need to downoad i18n in browser this plugin handle that
19
- *
20
- *
21
- * this plugin works
22
- * how it works?
23
- * this plugin hook the requireEnsure method and we write logic for current compiled file download logic
24
- *
25
- * hinds:-
26
- * requireEnsure method was loader for all js chunk's ,
27
- * which means if we use dynamic import then this function will create script tag for that dynamic resource
28
- * so every dynamic js chunk will load by this function,
29
- * So we update this function with when dynamic jschunk call the nour code also execute
30
- *
31
- * some thing missing in this definetion
32
- *
11
+ /**
12
+ * this plugin for the download i18n files
13
+ * So, if need to downoad i18n in browser this plugin handle that
14
+ *
15
+ *
16
+ * this plugin works
17
+ * how it works?
18
+ * this plugin hook the requireEnsure method and we write logic for current compiled file download logic
19
+ *
20
+ * hinds:-
21
+ * requireEnsure method was loader for all js chunk's ,
22
+ * which means if we use dynamic import then this function will create script tag for that dynamic resource
23
+ * so every dynamic js chunk will load by this function,
24
+ * So we update this function with when dynamic jschunk call the nour code also execute
25
+ *
26
+ * some thing missing in this definetion
27
+ *
33
28
  */
29
+
34
30
  // import { REGEXP_HASH, REGEXP_CHUNKHASH } from './utils/hashUtils';
35
- const pluginName = 'DownloadLogicOfI18n'; // const pluginName = 'i18n-plugin';
36
31
 
32
+ const pluginName = 'DownloadLogicOfI18n';
33
+ // const pluginName = 'i18n-plugin';
37
34
  const MODULE_TYPE = 'json/i18n';
38
-
39
35
  const ltype = locale => `${MODULE_TYPE}/${locale}`;
40
-
41
36
  function hashesWithLength(hashes, length) {
42
37
  const shortChunkHashMap = {};
43
-
44
38
  for (let key of Object.keys(hashes)) {
45
39
  if (typeof hashes[key] === 'string') {
46
40
  shortChunkHashMap[key] = hashes.slice(0, length);
47
41
  }
48
42
  }
49
-
50
43
  return shortChunkHashMap;
51
44
  }
52
-
53
45
  function getContentHashMaxLength(filenameTemplate) {
54
46
  let length = 0;
55
47
  let matches = filenameTemplate.match(_hashUtils.REGEXP_CONTENTHASH);
56
-
57
48
  for (let match of matches) {
58
49
  let tem = match.match(/\d+/);
59
-
60
50
  if (tem) {
61
51
  length = Math.max(parseInt(tem[0]), length);
62
52
  } else {
@@ -64,10 +54,8 @@ function getContentHashMaxLength(filenameTemplate) {
64
54
  break;
65
55
  }
66
56
  }
67
-
68
57
  return length;
69
58
  }
70
-
71
59
  class I18nDownlodLogic {
72
60
  constructor({
73
61
  filenameTemplate,
@@ -82,67 +70,53 @@ class I18nDownlodLogic {
82
70
  localeVarName
83
71
  };
84
72
  }
85
-
86
73
  getShortContentHashes(chunk, hashLength) {
87
74
  let allContenHashes = {};
88
75
  const chunkMaps = chunk.getChunkMaps();
89
76
  this.locales.forEach(locale => {
90
77
  allContenHashes[locale] = chunkMaps.contentHash[ltype(locale)];
91
78
  });
92
-
93
79
  if (!length) {
94
80
  return allContenHashes;
95
81
  }
96
-
97
82
  let shortContentHashMap = {};
98
-
99
83
  for (const locale of this.locales) {
100
84
  shortContentHashMap[locale] = hashesWithLength(allContenHashes[locale], hashLength);
101
85
  }
102
-
103
86
  return shortContentHashMap;
104
87
  }
105
-
106
88
  getI18nChunkObject(mainChunk) {
107
89
  const obj = {};
108
-
109
90
  for (const chunk of mainChunk.getAllAsyncChunks()) {
110
91
  if (_I18nKeysIdentifer.default.isChunkHasI18n(chunk)) {
111
92
  obj[chunk.id] = 1;
112
93
  }
113
94
  }
114
-
115
95
  return obj;
116
96
  }
117
-
118
97
  addDownloadLogicOfI18nInMainTemplate(mainTemplate) {
119
98
  mainTemplate.hooks.localVars.tap(pluginName, (source, mainChunk) => {
120
99
  const chunkMap = this.getI18nChunkObject(mainChunk);
121
-
122
100
  if (!Object.keys(chunkMap).length) {
123
101
  return source;
124
102
  }
125
-
126
103
  return _webpack.Template.asString([source, '', '// object to store loaded I18N chunks', 'var installedI18nChunks = {', _webpack.Template.indent(mainChunk.ids.map(id => `${JSON.stringify(id)}: 0`).join(',\n')), '};']);
127
104
  });
128
105
  mainTemplate.hooks.requireEnsure.tap(pluginName, (source, mainChunk, hash) => {
129
- /**
130
- * for Information this is tapped in mainTemplate ,
131
- * So this hooks argument chunk is main chunk means entry chunk mostly.
132
- * if any chunk has i18n then we must write our download i18n logic,
106
+ /**
107
+ * for Information this is tapped in mainTemplate ,
108
+ * So this hooks argument chunk is main chunk means entry chunk mostly.
109
+ * if any chunk has i18n then we must write our download i18n logic,
133
110
  */
134
111
  const chunkMap = this.getI18nChunkObject(mainChunk);
135
-
136
112
  if (!Object.keys(chunkMap).length) {
137
113
  return source;
138
114
  }
139
- /**
140
- * chunkMaps has
141
- * @property {Object} hash [it has key as chunk id and value as chunkHash ]
142
- * @property {Object} name [it has key as chunk id and value as chunk name ]
115
+ /**
116
+ * chunkMaps has
117
+ * @property {Object} hash [it has key as chunk id and value as chunkHash ]
118
+ * @property {Object} name [it has key as chunk id and value as chunk name ]
143
119
  */
144
-
145
-
146
120
  const chunkMaps = mainChunk.getChunkMaps();
147
121
  const {
148
122
  crossOriginLoading
@@ -151,19 +125,18 @@ class I18nDownlodLogic {
151
125
  filenameTemplate,
152
126
  localeVarName = 'document.documentElement.lang'
153
127
  } = this.options;
154
- const i18nSrcPath = mainTemplate.getAssetPath(JSON.stringify(filenameTemplate).replace(/\[locale\]/gi, '"+ locale +"'), // "i18n-chunk/[locale]/[name].[chunkhash].js"
128
+ const i18nSrcPath = mainTemplate.getAssetPath(JSON.stringify(filenameTemplate).replace(/\[locale\]/gi, '"+ locale +"'),
129
+ // "i18n-chunk/[locale]/[name].[chunkhash].js"
155
130
  {
156
131
  hash: `" + ${mainTemplate.renderCurrentHashCode(hash)} + "`,
157
132
  hashWithLength: length => `" + ${mainTemplate.renderCurrentHashCode(hash, length)} + "`,
158
133
  chunk: {
159
134
  id: '" + chunkId + "',
160
135
  hash: `" + ${JSON.stringify(chunkMaps.hash)}[chunkId] + "`,
161
-
162
136
  hashWithLength(length) {
163
137
  const shortChunkHashMap = hashesWithLength(chunkMaps.hash, length);
164
138
  return `" + ${JSON.stringify(shortChunkHashMap)}[chunkId] + "`;
165
139
  },
166
-
167
140
  // contentHash: contentHashMap,
168
141
  // contentHashWithLength: contentHashLengthMap,
169
142
  contentHash: {
@@ -176,33 +149,31 @@ class I18nDownlodLogic {
176
149
  },
177
150
  contentHashType: MODULE_TYPE
178
151
  });
179
- /** IDEA:
180
- * as my suggestion ignore this `jsop` approch,
181
- * Because json parse is faster then js parse.
182
- * my suggestion is make ajax or fetch request
152
+
153
+ /** IDEA:
154
+ * as my suggestion ignore this `jsop` approch,
155
+ * Because json parse is faster then js parse.
156
+ * my suggestion is make ajax or fetch request
183
157
  */
184
158
 
185
159
  const buf = [];
186
- /*
187
- if (REGEXP_HASH.test(filenameTemplate)) {
188
- buf.push(
189
- `var hash = ${mainTemplate.renderCurrentHashCode(hash)};`
190
- );
191
- }
192
- if (REGEXP_CHUNKHASH.test(filenameTemplate)) {
193
- buf.push(`var chunkHashes = ${JSON.stringify(chunkMaps.hash)};`);
194
- }
160
+ /*
161
+ if (REGEXP_HASH.test(filenameTemplate)) {
162
+ buf.push(
163
+ `var hash = ${mainTemplate.renderCurrentHashCode(hash)};`
164
+ );
165
+ }
166
+ if (REGEXP_CHUNKHASH.test(filenameTemplate)) {
167
+ buf.push(`var chunkHashes = ${JSON.stringify(chunkMaps.hash)};`);
168
+ }
195
169
  */
196
-
197
170
  if ((0, _hashUtils.hasContentHash)(filenameTemplate)) {
198
171
  const hashLength = getContentHashMaxLength(filenameTemplate);
199
172
  const contentHashes = this.getShortContentHashes(mainChunk, hashLength);
200
173
  buf.push(_webpack.Template.asString(['// all i18n files contentHash ', `var i18nContentHashes = ${JSON.stringify(contentHashes)};`, '', 'if (!i18nContentHashes[locale]) {', ' console.warn("this locale is "+locale + " not has support")', ' return;', '}', 'if (!i18nContentHashes[locale][chunkId]) {', ' console.warn("this chunkId is " + chunkId + " does not have \'"+locale+"\' locale chunk")', ' return;', '}']));
201
174
  buf.push('var contentHash = i18nContentHashes[locale][chunkId]');
202
175
  }
203
-
204
176
  const hashUtils = _webpack.Template.asString(buf);
205
-
206
177
  const publicPath = this.publicPath ? JSON.stringify(this.publicPath) : `${mainTemplate.requireFn}.p`;
207
178
  return _webpack.Template.asString([source, `
208
179
  (function() {
@@ -216,7 +187,8 @@ class I18nDownlodLogic {
216
187
  } else if(installedI18nChunks[chunkId] !== 0 && i18nChunks[chunkId]) {
217
188
  promises.push(installedI18nChunks[chunkId] = new Promise(function(resolve, reject) {
218
189
  var srcPath = (${i18nSrcPath});
219
- ${'' // TODO: I think this is the area for download chunk of i18n we can
190
+ ${''
191
+ // TODO: I think this is the area for download chunk of i18n we can
220
192
  // change mainTemplate.requireFn as our cdn server urls !!!
221
193
  // and we can change the i18n download logic here
222
194
  }
@@ -251,7 +223,6 @@ class I18nDownlodLogic {
251
223
  })()`]);
252
224
  });
253
225
  }
254
-
255
226
  apply(compiler) {
256
227
  compiler.hooks.thisCompilation.tap(pluginName, compilation => {
257
228
  const {
@@ -260,7 +231,5 @@ class I18nDownlodLogic {
260
231
  this.addDownloadLogicOfI18nInMainTemplate(mainTemplate);
261
232
  });
262
233
  }
263
-
264
234
  }
265
-
266
235
  exports.default = I18nDownlodLogic;