@zohodesk/client_build_tool 0.0.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 (248) hide show
  1. package/.babelrc +12 -0
  2. package/.lintstagedrc +3 -0
  3. package/.vscode/settings.json +5 -0
  4. package/CHANGELOG.md +9 -0
  5. package/ConfigurationDocumentation.md +401 -0
  6. package/ContributionGuide.md +2 -0
  7. package/NOTES-Dec12.md +12 -0
  8. package/README.md +91 -0
  9. package/README_backup.md +82 -0
  10. package/TODO.md +35 -0
  11. package/cli.js +31 -0
  12. package/coverage/base.css +224 -0
  13. package/coverage/block-navigation.js +87 -0
  14. package/coverage/coverage-final.json +2 -0
  15. package/coverage/coverage-summary.json +3 -0
  16. package/coverage/favicon.png +0 -0
  17. package/coverage/index.html +116 -0
  18. package/coverage/prettify.css +1 -0
  19. package/coverage/prettify.js +2 -0
  20. package/coverage/sort-arrow-sprite.png +0 -0
  21. package/coverage/sorter.js +196 -0
  22. package/coverage/updateArrayWithDefault.js.html +196 -0
  23. package/docs/CSSCustomPluginsDocumentation.md +71 -0
  24. package/docs/CustomChunksConfiguration.md +0 -0
  25. package/docs/EFCFileTemplate.md +0 -0
  26. package/docs/MockApi.md +61 -0
  27. package/docs/NameTemplateUtility.md +93 -0
  28. package/docs/ServiseWorkerTemplate.md +0 -0
  29. package/docs/SupportedBrowserVersions.md +61 -0
  30. package/helpDocs/check.js +7 -0
  31. package/helpDocs/commmands/build.md +0 -0
  32. package/helpDocs/commmands/start.md +0 -0
  33. package/helpDocs/examples/buildWithContentHash.md +0 -0
  34. package/helpDocs/examples/startDevServer.md +0 -0
  35. package/helpDocs/examples/startWithMockAPI.md +0 -0
  36. package/helpDocs/node18-env.md +30 -0
  37. package/helpDocs/troubleshootings/NewMachineSetup.md +71 -0
  38. package/helpDocs/troubleshootings/README.md +9 -0
  39. package/helpDocs/troubleshootings/hg_install.sh +18 -0
  40. package/helpDocs/troubleshootings/newMachineMac.sh +86 -0
  41. package/helpDocs/troubleshootings/newMachineUbundu.bash +84 -0
  42. package/lib/allCommandsConfigs.js +25 -0
  43. package/lib/commands/build/commandExecutor.js +17 -0
  44. package/lib/commands/build/config.js +12 -0
  45. package/lib/commands/build/errorHander.js +10 -0
  46. package/lib/commands/build/optionsProcessor.js +35 -0
  47. package/lib/commands/buildEs/commandExecutor.js +33 -0
  48. package/lib/commands/buildEs/config.js +12 -0
  49. package/lib/commands/buildLib/commandExecutor.js +33 -0
  50. package/lib/commands/buildLib/config.js +12 -0
  51. package/lib/commands/mockserver/commandExecutor.js +43 -0
  52. package/lib/commands/mockserver/config.js +12 -0
  53. package/lib/commands/start/commandExecutor.js +12 -0
  54. package/lib/commands/start/config.js +12 -0
  55. package/lib/commands/start/deprecationHandler.js +10 -0
  56. package/lib/commands/start/errorHander.js +10 -0
  57. package/lib/commands/start/optionsProcessor.js +30 -0
  58. package/lib/commands/start/postProcessor.js +10 -0
  59. package/lib/commands/start/preProcessor.js +10 -0
  60. package/lib/commands/template/commandExecutor.js +28 -0
  61. package/lib/commands/template/config.js +12 -0
  62. package/lib/commands/version/commandExecutor.js +14 -0
  63. package/lib/commands/version/config.js +12 -0
  64. package/lib/commands/version/errorHander.js +10 -0
  65. package/lib/commandsRouter.js +74 -0
  66. package/lib/index.js +12 -0
  67. package/lib/logger.js +34 -0
  68. package/lib/schemas/applyValuesToSchema/index.js +34 -0
  69. package/lib/schemas/applyValuesToSchema/isObject.js +10 -0
  70. package/lib/schemas/applyValuesToSchema/isValid.js +14 -0
  71. package/lib/schemas/cliArgsToObject.js +39 -0
  72. package/lib/schemas/defaultConfigValues.js +276 -0
  73. package/lib/schemas/defaultConfigValuesOnly.js +161 -0
  74. package/lib/schemas/deprecatedOptionsHandler.js +67 -0
  75. package/lib/schemas/getNpmVersion.js +22 -0
  76. package/lib/schemas/giveDefaultValue.js +18 -0
  77. package/lib/schemas/npmConfigToObject.js +35 -0
  78. package/lib/schemas/readOptions.js +54 -0
  79. package/lib/schemas/readOptionsForConfigFile.js +42 -0
  80. package/lib/shared/babel/babelWebConfig.js +51 -0
  81. package/lib/shared/babel/babel_plugins/removeAttributesPlugin.js +23 -0
  82. package/lib/shared/babel/defaultBabelPlugins.js +26 -0
  83. package/lib/shared/babel/runBabelForJSFile.js +24 -0
  84. package/lib/shared/bundler/webpack/common/decidePublicPath.js +52 -0
  85. package/lib/shared/bundler/webpack/common/libAlias.js +31 -0
  86. package/lib/shared/bundler/webpack/common/modeUtils.js +31 -0
  87. package/lib/shared/bundler/webpack/common/nameTemplates.js +78 -0
  88. package/lib/shared/bundler/webpack/common/resourceBasedPublicPath.js +21 -0
  89. package/lib/shared/bundler/webpack/configCustomLoaders.js +10 -0
  90. package/lib/shared/bundler/webpack/cssLoaders.js +16 -0
  91. package/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin.js +95 -0
  92. package/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
  93. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +11 -0
  94. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +172 -0
  95. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +76 -0
  96. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +203 -0
  97. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -0
  98. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
  99. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
  100. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -0
  101. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/constants.js +29 -0
  102. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +24 -0
  103. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +76 -0
  104. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +39 -0
  105. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
  106. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +68 -0
  107. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/pathCreator.js +23 -0
  108. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/readI18nValues.js +29 -0
  109. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +43 -0
  110. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +77 -0
  111. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +66 -0
  112. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
  113. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/hashUtils.js +19 -0
  114. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/index.js +31 -0
  115. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +129 -0
  116. package/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +54 -0
  117. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +24 -0
  118. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +17 -0
  119. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
  120. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
  121. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +44 -0
  122. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
  123. package/lib/shared/bundler/webpack/custom_plugins/RTLSplitPlugin.js +1 -0
  124. package/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +191 -0
  125. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +62 -0
  126. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +84 -0
  127. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -0
  128. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +27 -0
  129. package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/classHandling.js +20 -0
  130. package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/index.js +78 -0
  131. package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/selectorWeightPrefixAdder.js +51 -0
  132. package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/windowsModification.js +16 -0
  133. package/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPlugin.js +110 -0
  134. package/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +38 -0
  135. package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/addHashToFilePath.js +22 -0
  136. package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/index.js +55 -0
  137. package/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/index.js.js +49 -0
  138. package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
  139. package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +362 -0
  140. package/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
  141. package/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
  142. package/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
  143. package/lib/shared/bundler/webpack/defaultVendorPatternList.js +13 -0
  144. package/lib/shared/bundler/webpack/entryConfig.js +28 -0
  145. package/lib/shared/bundler/webpack/externals.js +13 -0
  146. package/lib/shared/bundler/webpack/getCSSLoaders.js +27 -0
  147. package/lib/shared/bundler/webpack/getFilenameFromModule.js +24 -0
  148. package/lib/shared/bundler/webpack/getSourceMapType.js +10 -0
  149. package/lib/shared/bundler/webpack/jsLoaders.js +17 -0
  150. package/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +12 -0
  151. package/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +18 -0
  152. package/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +56 -0
  153. package/lib/shared/bundler/webpack/loaderConfigs/configHtmlTemplateLoader.js +18 -0
  154. package/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
  155. package/lib/shared/bundler/webpack/loaderConfigs/configWebWorkerLoader.js +21 -0
  156. package/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +138 -0
  157. package/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +60 -0
  158. package/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +21 -0
  159. package/lib/shared/bundler/webpack/loaders/workerLoader.js +133 -0
  160. package/lib/shared/bundler/webpack/optimizationConfig.js +43 -0
  161. package/lib/shared/bundler/webpack/outputConfig.js +28 -0
  162. package/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
  163. package/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +24 -0
  164. package/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +27 -0
  165. package/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +63 -0
  166. package/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
  167. package/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +36 -0
  168. package/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +56 -0
  169. package/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +41 -0
  170. package/lib/shared/bundler/webpack/pluginConfigs/configIgnorePlugin.js +16 -0
  171. package/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +32 -0
  172. package/lib/shared/bundler/webpack/pluginConfigs/configMiniCSSExtractPlugin.js +23 -0
  173. package/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +24 -0
  174. package/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +21 -0
  175. package/lib/shared/bundler/webpack/pluginConfigs/configRtlCssPlugin.js +27 -0
  176. package/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
  177. package/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +40 -0
  178. package/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
  179. package/lib/shared/bundler/webpack/pluginConfigs/configTPHashMappingPlugin.js +32 -0
  180. package/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
  181. package/lib/shared/bundler/webpack/plugins.js +50 -0
  182. package/lib/shared/bundler/webpack/resolvers.js +81 -0
  183. package/lib/shared/bundler/webpack/splitChunksConfig.js +113 -0
  184. package/lib/shared/bundler/webpack/statsConfig.js +21 -0
  185. package/lib/shared/bundler/webpack/utils/index.js +26 -0
  186. package/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +34 -0
  187. package/lib/shared/bundler/webpack/webpackBuild.js +27 -0
  188. package/lib/shared/bundler/webpack/webpackConfig.js +56 -0
  189. package/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
  190. package/lib/shared/commands-utils/getCliPath.js +39 -0
  191. package/lib/shared/commands-utils/index.js +29 -0
  192. package/lib/shared/commands-utils/log.js +13 -0
  193. package/lib/shared/commands-utils/readArgsFormCommandLine.js +11 -0
  194. package/lib/shared/commands-utils/readOptionFormCommandLine.js +11 -0
  195. package/lib/shared/commands-utils/spawnSyncIO.js +38 -0
  196. package/lib/shared/constants.js +45 -0
  197. package/lib/shared/fileUtils/copyFile.js +38 -0
  198. package/lib/shared/fileUtils/directoryIterator.js +21 -0
  199. package/lib/shared/fileUtils/watchRun.js +100 -0
  200. package/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
  201. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
  202. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
  203. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
  204. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
  205. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
  206. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
  207. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
  208. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
  209. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
  210. package/lib/shared/postcss/custom_postcss_plugins/RTLSplitPlugin.js +139 -0
  211. package/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
  212. package/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
  213. package/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +343 -0
  214. package/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
  215. package/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
  216. package/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
  217. package/lib/shared/postcss/runPostCssForCssFile.js +37 -0
  218. package/lib/shared/server/configWebpackDevMiddleware.js +41 -0
  219. package/lib/shared/server/corsHandling.js +21 -0
  220. package/lib/shared/server/getIp.js +30 -0
  221. package/lib/shared/server/getServerURL.js +29 -0
  222. package/lib/shared/server/httpsOptions.js +46 -0
  223. package/lib/shared/server/initExpressApp.js +19 -0
  224. package/lib/shared/server/initialHTMLHandling.js +99 -0
  225. package/lib/shared/server/mockApiHandler.js +60 -0
  226. package/lib/shared/server/mockServer.js +41 -0
  227. package/lib/shared/server/serveContextFiles.js +27 -0
  228. package/lib/shared/server/serverBywebpackDevMiddleware.js +35 -0
  229. package/lib/shared/server/startHttpServer.js +26 -0
  230. package/lib/shared/server/startHttpsServer.js +38 -0
  231. package/lib/shared/server/unwanted/addHttp2Server.js +41 -0
  232. package/lib/shared/server/unwanted/configWebpackDevMiddleware.js +44 -0
  233. package/lib/shared/server/unwanted/mockApiSupport.js +19 -0
  234. package/lib/shared/server/unwanted/websocketMockSetup.js +48 -0
  235. package/lib/shared/server/urlConcat.js +32 -0
  236. package/lib/shared/utils/requireLocalOrGlobal.js +81 -0
  237. package/lib/shared/utils/utils.js +1 -0
  238. package/lib/shared/utils/versionPrint.js +20 -0
  239. package/npm-shrinkwrap.json +14102 -0
  240. package/package.json +54 -0
  241. package/polyfillForOldNodeVersion.js +10 -0
  242. package/result.json +1 -0
  243. package/templates/app/README.MD +30 -0
  244. package/templates/app/package.json +12 -0
  245. package/templates/library/README.MD +28 -0
  246. package/templates/library/package.json +11 -0
  247. package/templates/wms/index.html +43 -0
  248. package/unittest/index.html +37 -0
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.iterateModulesInChunk = iterateModulesInChunk;
7
+
8
+ var _ConcatenatedModule = _interopRequireDefault(require("webpack/lib/optimize/ConcatenatedModule"));
9
+
10
+ var _getChunkModules = require("./utils/getChunkModules");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ function iterateModulesInChunk({
15
+ chunk,
16
+ cb,
17
+ compilation
18
+ }) {
19
+ let canStopLoop = false;
20
+
21
+ function stopLoop() {
22
+ canStopLoop = true;
23
+ }
24
+
25
+ function iterateNestedModules(mod) {
26
+ if (mod.resource) {
27
+ cb({
28
+ module: mod,
29
+ stop: stopLoop
30
+ });
31
+ return canStopLoop;
32
+ }
33
+
34
+ if (mod instanceof _ConcatenatedModule.default) {
35
+ const {
36
+ modules
37
+ } = mod;
38
+ return Array.from(modules).some(mod => iterateNestedModules(mod));
39
+ }
40
+
41
+ return canStopLoop;
42
+ } // eslint-disable-next-line no-restricted-syntax
43
+
44
+
45
+ for (const mod of (0, _getChunkModules.getChunkModules)(chunk, compilation)) {
46
+ if (iterateNestedModules(mod)) {
47
+ return;
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.optionsHandler = optionsHandler;
7
+
8
+ var _constants = require("./constants");
9
+
10
+ var _readI18nValues = require("./readI18nValues");
11
+
12
+ /* eslint-disable no-use-before-define */
13
+ function optionsHandler(options) {
14
+ const {
15
+ disableDefault,
16
+ jsResource,
17
+ propertiesFolder
18
+ } = options;
19
+ const {
20
+ jsResourceI18nKeys,
21
+ allI18nObject,
22
+ locales
23
+ } = (0, _readI18nValues.readI18nValues)({
24
+ jsResource,
25
+ propertiesFolder,
26
+ disableDefault
27
+ });
28
+ return {
29
+ filename: options.filename || _constants.DEFAULT_FILENAME,
30
+ chunkFilename: options.chunkFilename || chunkNameDecider(options.filename),
31
+ mainChunkName: options.mainChunkName,
32
+ templateLabel: options.templateLabel,
33
+ publicPath: options.publicPath,
34
+ disableDefault: options.disableDefault,
35
+ i18nManifestFileName: options.i18nManifestFileName,
36
+ jsonpFunc: options.jsonpFunc,
37
+ localeVarName: options.localeVarName,
38
+ jsResource: options.jsResource,
39
+ propertiesFolder: options.propertiesFolder,
40
+ jsResourceI18nKeys,
41
+ allI18nObject,
42
+ locales,
43
+ // template: (object, locale) => `window.loadI18n(${JSON.stringify(object)}, ${JSON.stringify(locale)})`,
44
+ runtime: true,
45
+ runtimeOptions: {
46
+ insert: options.insert,
47
+ scriptType: typeof options.scriptType === 'boolean' && options.scriptType === true || typeof options.scriptType === 'undefined' ? 'text/javascript' : options.scriptType,
48
+ attributes: options.attributes
49
+ }
50
+ };
51
+ }
52
+
53
+ function chunkNameDecider(filename) {
54
+ if (typeof filename !== 'function') {
55
+ const hasName = filename.includes('[name]');
56
+ const hasId = filename.includes('[id]');
57
+ const hasChunkHash = filename.includes('[chunkhash]');
58
+ const hasContentHash = filename.includes('[contenthash]');
59
+
60
+ if (hasChunkHash || hasContentHash || hasName || hasId) {
61
+ return filename;
62
+ }
63
+
64
+ return filename.replace(/(^|\/)([^/]*(?:\?|$))/, '$1[id].$2');
65
+ }
66
+
67
+ return _constants.DEFAULT_CHUNK_FILENAME;
68
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pathCreator = pathCreator;
7
+
8
+ var _constants = require("./constants");
9
+
10
+ function pathCreator(filenameTemplate, compilation, data) {
11
+ return compilation.getAssetPath(filenameTemplate.replace(/\[locale\]/gi, data.locale), {
12
+ hash: data.hash,
13
+ chunk: {
14
+ id: data.chunkId,
15
+ hash: data.chunkHash,
16
+ contentHash: {
17
+ [_constants.MODULE_TYPE]: data.contentHash
18
+ },
19
+ name: data.chunkName
20
+ },
21
+ contentHashType: _constants.MODULE_TYPE
22
+ });
23
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.readI18nValues = readI18nValues;
7
+
8
+ var _propertiesUtils = require("./utils/propertiesUtils");
9
+
10
+ // gethere i18n keys and values
11
+ function readI18nValues({
12
+ jsResource,
13
+ propertiesFolder,
14
+ disableDefault
15
+ }) {
16
+ const jsResourceI18nKeys = jsResource ? (0, _propertiesUtils.getPropertiesAsJSON)(jsResource) : {};
17
+ const allI18nObject = (0, _propertiesUtils.getAllI18n)({
18
+ folderPath: propertiesFolder,
19
+ disableDefault,
20
+ jsResourceI18nKeys
21
+ }); // initialize base data's and plugis
22
+
23
+ const locales = Object.keys(allI18nObject);
24
+ return {
25
+ jsResourceI18nKeys,
26
+ allI18nObject,
27
+ locales
28
+ };
29
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.templateFileName = templateFileName;
7
+
8
+ var _webpack = require("webpack");
9
+
10
+ var _templateHashHelpers = require("./templateHashHelpers");
11
+
12
+ function templateFileName({
13
+ compilation,
14
+ dynamicFilename,
15
+ localeVarName,
16
+ chunks,
17
+ contentHashes
18
+ }) {
19
+ const MODULE_TYPE = 'text/mini-i18n';
20
+ const {
21
+ mapExpr,
22
+ mapExprWithLength
23
+ } = (0, _templateHashHelpers.templateHashHelpers)(chunks); // "i18n-chunk/[locale]/[name].[chunkhash].js"
24
+
25
+ const i18nURLPathTemplate = compilation.getPath(JSON.stringify(dynamicFilename).replace(/\[locale\]/gi, '"+ locale +"'), {
26
+ hash: `" + ${_webpack.RuntimeGlobals.getFullHash}() + "`,
27
+ hashWithLength: length => `" + ${_webpack.RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
28
+ chunk: {
29
+ id: '" + chunkId + "',
30
+ hash: mapExpr(c => c.renderedHash),
31
+ hashWithLength: mapExprWithLength(c => c.renderedHash),
32
+ name: mapExpr(c => c.name || c.id),
33
+ contentHash: {
34
+ [MODULE_TYPE]: mapExpr(c => contentHashes[c.id])
35
+ },
36
+ contentHashWithLength: {
37
+ [MODULE_TYPE]: mapExprWithLength(c => contentHashes[c.id])
38
+ }
39
+ },
40
+ contentHashType: MODULE_TYPE
41
+ });
42
+ return _webpack.Template.asString([`${_webpack.RuntimeGlobals.require}.miniI18nF = function(chunkId){var locale = (${localeVarName});return (${i18nURLPathTemplate})}`]);
43
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.templateHashHelpers = templateHashHelpers;
7
+
8
+ /**
9
+ * this function will be used for chunk name, chunk hash, contentHash
10
+ * in these, sometime chunk name and chunk id same for some chunkss so below logic has little towek
11
+ * @param {Chunk} chunks
12
+ * @returns { mapExpr, mapExprWithLength }
13
+ */
14
+ function templateHashHelpers(chunks) {
15
+ /**
16
+ * @param {function(Chunk): string | number} fn function from chunk to value
17
+ * @returns {string} code with static mapping of results of fn
18
+ */
19
+ const createMap = fn => {
20
+ const obj = {};
21
+ let useId = false;
22
+ let lastKey;
23
+ let entries = 0; // eslint-disable-next-line no-restricted-syntax
24
+
25
+ for (const c of chunks) {
26
+ const value = fn(c);
27
+
28
+ if (value === c.id) {
29
+ useId = true;
30
+ } else {
31
+ obj[c.id] = value;
32
+ lastKey = c.id;
33
+ entries++;
34
+ }
35
+ }
36
+
37
+ if (entries === 0) {
38
+ return 'chunkId';
39
+ }
40
+
41
+ if (entries === 1) {
42
+ return useId ? `(chunkId === ${JSON.stringify(lastKey)} ? ${JSON.stringify(obj[lastKey])} : chunkId)` : JSON.stringify(obj[lastKey]);
43
+ }
44
+
45
+ return useId ? `(${JSON.stringify(obj)}[chunkId] || chunkId)` : `${JSON.stringify(obj)}[chunkId]`;
46
+ };
47
+ /**
48
+ * @param {function(Chunk): string | number} fn function from chunk to value
49
+ * @returns {string} code with static mapping of results of fn for including in quoted string
50
+ */
51
+
52
+
53
+ const mapExpr = fn => `" + ${createMap(fn)} + "`;
54
+ /**
55
+ * @param {function(Chunk): string | number} fn function from chunk to value
56
+ * @returns {function(number): string} function which generates code with static mapping of results of fn for including in quoted string for specific length
57
+ */
58
+
59
+
60
+ const mapExprWithLength = fn => length => // console.log('called with lentch', length),
61
+ `" + ${createMap(c => `${fn(c)}`.slice(0, length))} + "`;
62
+
63
+ return {
64
+ mapExpr,
65
+ mapExprWithLength
66
+ };
67
+ }
68
+ /**
69
+ function mapExpr(fn) {
70
+ const obj = {};
71
+ // eslint-disable-next-line no-restricted-syntax
72
+ for (const c of chunks) {
73
+ obj[c.id] = fn(c);
74
+ }
75
+ return `(${JSON.stringify(obj)})[chunkId]`;
76
+ }
77
+ */
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.collectI18nKeysfromAST = collectI18nKeysfromAST;
7
+ exports.collectI18nKeysfromComments = collectI18nKeysfromComments;
8
+
9
+ var _estreeWalker = require("estree-walker");
10
+
11
+ function collectI18nKeysfromAST(ast, allI18n) {
12
+ const i18nKeys = {};
13
+ (0, _estreeWalker.walk)(ast, {
14
+ enter(node) {
15
+ if (node.type === 'Literal') {
16
+ if ((node.raw[0] === '\'' || node.raw[0] === '"') && Object.hasOwnProperty.call(allI18n, node.value)) {
17
+ i18nKeys[node.value] = allI18n[node.value];
18
+ }
19
+ }
20
+ }
21
+
22
+ });
23
+ return Object.keys(i18nKeys);
24
+ }
25
+
26
+ const prefixI18nComment = 'I18N';
27
+ const prefixI18nComment1 = 'dynamic-i18n-key';
28
+
29
+ function getI18nKeysFromComment(comment) {
30
+ const commentString = comment.value.trim();
31
+ let i18nKeyStr;
32
+
33
+ if (commentString.startsWith(prefixI18nComment)) {
34
+ i18nKeyStr = commentString.slice(prefixI18nComment.length).trim();
35
+ } else if (commentString.startsWith(prefixI18nComment1)) {
36
+ i18nKeyStr = commentString.slice(prefixI18nComment1.length).trim();
37
+ }
38
+
39
+ if (!i18nKeyStr) {
40
+ return [];
41
+ }
42
+
43
+ const i18nKeys = i18nKeyStr.split(',');
44
+ return i18nKeys;
45
+ } // export function fromComments(comments, allI18n) {
46
+
47
+
48
+ function collectI18nKeysfromComments(comments, allI18n) {
49
+ // TODO: need to implement
50
+ const i18nKeys = {};
51
+ /* eslint-disable no-restricted-syntax */
52
+
53
+ for (const comment of comments) {
54
+ const keys = getI18nKeysFromComment(comment);
55
+
56
+ for (const key of keys) {
57
+ if (key && allI18n[key]) {
58
+ i18nKeys[key] = allI18n[key];
59
+ }
60
+ }
61
+ }
62
+ /* eslint-enable no-restricted-syntax */
63
+
64
+
65
+ return Object.keys(i18nKeys);
66
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getChunkModules = getChunkModules;
7
+
8
+ function getChunkModules(chunk, compilation) {
9
+ const {
10
+ chunkGraph
11
+ } = compilation || {};
12
+ return typeof chunkGraph !== 'undefined' ? chunkGraph.getChunkModules(chunk) : chunk.modulesIterable;
13
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.REGEXP_CONTENTHASH = void 0;
7
+ exports.hasContentHash = hasContentHash;
8
+ // export const REGEXP_CHUNKHASH = /\[chunkhash(?::(\d+))?\]/gi;
9
+ // export const REGEXP_HASH = /\[hash(?::(\d+))?\]/gi;
10
+ // export const REGEXP_NAME = /\[name\]/gi;
11
+ // export const REGEXP_PLACEHOLDERS = /\[(name|id|chunkhash)\]/gi;
12
+ // TODO: want to choose file type for i18n load
13
+ const REGEXP_CONTENTHASH = /\[contenthash(?::(\d+))?\]/gi;
14
+ exports.REGEXP_CONTENTHASH = REGEXP_CONTENTHASH;
15
+
16
+ function hasContentHash(filenameTemplate) {
17
+ REGEXP_CONTENTHASH.lastIndex = 0;
18
+ return REGEXP_CONTENTHASH.test(filenameTemplate);
19
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _collectI18nKeys = require("./collectI18nKeys");
8
+
9
+ Object.keys(_collectI18nKeys).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _collectI18nKeys[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _collectI18nKeys[key];
16
+ }
17
+ });
18
+ });
19
+
20
+ var _propertiesUtils = require("./propertiesUtils");
21
+
22
+ Object.keys(_propertiesUtils).forEach(function (key) {
23
+ if (key === "default" || key === "__esModule") return;
24
+ if (key in exports && exports[key] === _propertiesUtils[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _propertiesUtils[key];
29
+ }
30
+ });
31
+ });
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAllI18n = getAllI18n;
7
+ exports.getPropertiesAsJSON = getPropertiesAsJSON;
8
+ exports.jsonToString = jsonToString;
9
+
10
+ var _fs = require("fs");
11
+
12
+ var _path = require("path");
13
+
14
+ var _constants = require("../../../../../constants");
15
+
16
+ function isComment(line) {
17
+ return line[0] === '#';
18
+ }
19
+
20
+ function getPropertiesAsJSON(filePath) {
21
+ try {
22
+ const data = (0, _fs.readFileSync)(filePath);
23
+ const source = data.toString();
24
+ const i18nObj = {};
25
+ source.split(/\r?\n\r?/).forEach(fline => {
26
+ const line = fline.trim();
27
+
28
+ if (!line || isComment(line)) {
29
+ return;
30
+ }
31
+
32
+ const ind = line.indexOf('=');
33
+ const key = line.slice(0, ind).replace(/\\ /g, ' ');
34
+ const value = line.slice(ind + 1);
35
+
36
+ if (key && value) {
37
+ i18nObj[key] = value;
38
+ }
39
+ }, {});
40
+ return i18nObj;
41
+ } catch (err) {
42
+ return {};
43
+ }
44
+ } // TODO: need to make it as custom option and dynamic
45
+
46
+
47
+ function getLang(file) {
48
+ const underScoreIndex = file.indexOf('_');
49
+ let language = 'en_US';
50
+
51
+ if (underScoreIndex !== -1) {
52
+ language = file.substring(underScoreIndex + 1);
53
+ language = language.slice(0, language.indexOf('.'));
54
+ }
55
+
56
+ return language;
57
+ }
58
+
59
+ function getAllI18n({
60
+ folderPath,
61
+ disableDefault,
62
+ jsResourceI18nKeys,
63
+ exclude = /^[^_]+$/,
64
+ include = /\.properties$/
65
+ }) {
66
+ try {
67
+ const files = (0, _fs.readdirSync)(folderPath, 'utf8');
68
+ const allLangI18n = {};
69
+ const context = (0, _constants.joinWithAppPath)(folderPath);
70
+ files.forEach(file => {
71
+ const filePath = (0, _path.join)(context, file);
72
+
73
+ if (exclude.test(filePath) || !include.test(filePath)) {
74
+ return;
75
+ }
76
+
77
+ const i18n = getPropertiesAsJSON(filePath);
78
+ allLangI18n[getLang(file)] = disableDefault ? i18n : { ...jsResourceI18nKeys,
79
+ ...i18n
80
+ };
81
+ });
82
+ return allLangI18n;
83
+ } catch (err) {
84
+ console.log(err);
85
+ return {};
86
+ }
87
+ }
88
+
89
+ function jsonToString(json, keySeperator) {
90
+ let str = '{';
91
+ const keys = Object.keys(json);
92
+ keys.forEach((key, i) => {
93
+ const value = json[key];
94
+
95
+ if (!value) {
96
+ return;
97
+ }
98
+
99
+ str += `"${keySeperator ? key.replace(/(\.|\\(\s+))/g, keySeperator) : key}":"${value.replace(/.?"/g, match => {
100
+ if (match[0] === '\\') {
101
+ return match;
102
+ }
103
+
104
+ if (match.length === 2) {
105
+ return `${match[0]}\\${match[1]}`;
106
+ }
107
+
108
+ return `\\${match}`;
109
+ }).replace(/(\r\n|\n|\r)/g, '')}"`;
110
+
111
+ if (i !== keys.length - 1) {
112
+ str += ',';
113
+ }
114
+ });
115
+ str += '}';
116
+ return str;
117
+ }
118
+ /**
119
+ * not useable due to special charector
120
+ *
121
+ return `{${Object.keys(data).map(key => `"${key}": "${data[key]}"`).join(",")}}`
122
+ // return JSON.stringify(data);
123
+ let str = "{";
124
+ for (const key of Object.keys(data)) {
125
+ str+= `"${key}": "${data[key]}",`
126
+ }
127
+ str+="}";
128
+ return str;
129
+ */
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InitialHtmlPlugin = void 0;
7
+
8
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ class InitialHtmlPlugin {
13
+ constructor(options) {
14
+ this.options = options;
15
+ }
16
+
17
+ apply(compiler) {
18
+ const {
19
+ filename,
20
+ template,
21
+ minify,
22
+ inject,
23
+ mainChunkName
24
+ } = this.options;
25
+ new _htmlWebpackPlugin.default({
26
+ filename,
27
+ template,
28
+ minify,
29
+ chunks: [mainChunkName],
30
+ inject,
31
+ scriptLoading: 'defer'
32
+ }).apply(compiler);
33
+ compiler.hooks.thisCompilation.tap('InitialHtmlPlugin', compilation => {
34
+ _htmlWebpackPlugin.default.getHooks(compilation).alterAssetTagGroups.tapAsync('MyPlugin', (data, cb) => {
35
+ const headTags = [];
36
+ const bodyTags = [];
37
+ data.headTags.forEach(tag => {
38
+ if (tag.tagName === 'link') {
39
+ headTags.push(tag);
40
+ } else {
41
+ bodyTags.push(tag);
42
+ }
43
+ });
44
+ cb(null, { ...data,
45
+ headTags,
46
+ bodyTags
47
+ });
48
+ });
49
+ });
50
+ }
51
+
52
+ }
53
+
54
+ exports.InitialHtmlPlugin = InitialHtmlPlugin;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.addFilesNamesToManifestJson = addFilesNamesToManifestJson;
7
+
8
+ var _removeHashFromFileName = require("./removeHashFromFileName");
9
+
10
+ function addFilesNamesToManifestJson({
11
+ manifestJson,
12
+ option,
13
+ assets,
14
+ hashDigestLength
15
+ }) {
16
+ const json = manifestJson;
17
+ Object.keys(assets).forEach(filename => {
18
+ if (option.test(filename)) {
19
+ const filenameNameWithoutHash = (0, _removeHashFromFileName.removeHashFromFileName)(filename, hashDigestLength);
20
+ json[filenameNameWithoutHash] = filename;
21
+ }
22
+ });
23
+ return json;
24
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createInitialEntriesForManifestJson = createInitialEntriesForManifestJson;
7
+
8
+ var _removeHashFromFileName = require("./removeHashFromFileName");
9
+
10
+ function createInitialEntriesForManifestJson(initialFileNames, hashLength) {
11
+ const initialEntries = {};
12
+ initialFileNames.forEach(fileName => {
13
+ const filenameNameWithoutHash = (0, _removeHashFromFileName.removeHashFromFileName)(fileName, hashLength);
14
+ initialEntries[filenameNameWithoutHash] = fileName;
15
+ });
16
+ return initialEntries;
17
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createManifestJson = createManifestJson;
7
+
8
+ var _findInitialFileNames = require("./findInitialFileNames");
9
+
10
+ var _addFilesNamesToManifestJson = require("./addFilesNamesToManifestJson");
11
+
12
+ var _createInitialEntries = require("./createInitialEntries");
13
+
14
+ function createManifestJson({
15
+ option,
16
+ hashDigestLength,
17
+ compilation,
18
+ assets
19
+ }) {
20
+ const manifestJson = {};
21
+
22
+ if (option.needInitialEntries) {
23
+ const initialFileNames = (0, _findInitialFileNames.findInitialFileNames)(compilation);
24
+ const initialEntries = (0, _createInitialEntries.createInitialEntriesForManifestJson)(initialFileNames, hashDigestLength);
25
+ manifestJson.initialEntries = initialEntries;
26
+ }
27
+
28
+ const outputJson = (0, _addFilesNamesToManifestJson.addFilesNamesToManifestJson)({
29
+ manifestJson,
30
+ option,
31
+ assets,
32
+ hashDigestLength
33
+ });
34
+ return outputJson;
35
+ }