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

Sign up to get free protection for your applications and to get access to all the features.
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;