@zohodesk/client_build_tool 0.0.1-0.exp.0.0.3

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 (259) hide show
  1. package/.babelrc +12 -0
  2. package/.lintstagedrc +3 -0
  3. package/.vscode/settings.json +5 -0
  4. package/CHANGELOG.md +84 -0
  5. package/ConfigurationDocumentation.md +567 -0
  6. package/ContributionGuide.md +2 -0
  7. package/NOTES-Dec12.md +12 -0
  8. package/README.md +184 -0
  9. package/README_backup.md +100 -0
  10. package/TODO.md +35 -0
  11. package/cli.js +31 -0
  12. package/docs/BabelCustomizations.md +55 -0
  13. package/docs/CSSCustomPluginsDocumentation.md +71 -0
  14. package/docs/CustomChunksConfiguration.md +0 -0
  15. package/docs/EFCFileTemplate.md +0 -0
  16. package/docs/MockApi.md +61 -0
  17. package/docs/NameTemplateUtility.md +93 -0
  18. package/docs/ServiseWorkerTemplate.md +0 -0
  19. package/docs/SupportedBrowserVersions.md +61 -0
  20. package/helpDocs/check.js +7 -0
  21. package/helpDocs/commmands/build.md +0 -0
  22. package/helpDocs/commmands/start.md +0 -0
  23. package/helpDocs/examples/buildWithContentHash.md +0 -0
  24. package/helpDocs/examples/startDevServer.md +0 -0
  25. package/helpDocs/examples/startWithMockAPI.md +0 -0
  26. package/helpDocs/node18-env.md +30 -0
  27. package/helpDocs/troubleshootings/NewMachineSetup.md +71 -0
  28. package/helpDocs/troubleshootings/README.md +9 -0
  29. package/helpDocs/troubleshootings/hg_install.sh +18 -0
  30. package/helpDocs/troubleshootings/newMachineMac.sh +86 -0
  31. package/helpDocs/troubleshootings/newMachineUbundu.bash +84 -0
  32. package/lib/allCommandsConfigs.js +25 -0
  33. package/lib/commands/build/commandExecutor.js +17 -0
  34. package/lib/commands/build/config.js +12 -0
  35. package/lib/commands/build/optionsProcessor.js +35 -0
  36. package/lib/commands/build/preProcessor.js +12 -0
  37. package/lib/commands/buildEs/commandExecutor.js +33 -0
  38. package/lib/commands/buildEs/config.js +12 -0
  39. package/lib/commands/buildEs/preProcessor.js +17 -0
  40. package/lib/commands/buildLib/commandExecutor.js +33 -0
  41. package/lib/commands/buildLib/config.js +12 -0
  42. package/lib/commands/buildLib/preProcessor.js +17 -0
  43. package/lib/commands/mockserver/commandExecutor.js +43 -0
  44. package/lib/commands/mockserver/config.js +12 -0
  45. package/lib/commands/pre_process/commandExecutor.js +18 -0
  46. package/lib/commands/pre_process/config.js +12 -0
  47. package/lib/commands/start/commandExecutor.js +12 -0
  48. package/lib/commands/start/config.js +12 -0
  49. package/lib/commands/start/optionsProcessor.js +30 -0
  50. package/lib/commands/start/preProcessor.js +12 -0
  51. package/lib/commands/template/commandExecutor.js +28 -0
  52. package/lib/commands/template/config.js +12 -0
  53. package/lib/commands/version/commandExecutor.js +14 -0
  54. package/lib/commands/version/config.js +12 -0
  55. package/lib/commandsRouter.js +74 -0
  56. package/lib/index.js +12 -0
  57. package/lib/logger.js +34 -0
  58. package/lib/schemas/applyValuesToSchema/index.js +34 -0
  59. package/lib/schemas/applyValuesToSchema/isObject.js +10 -0
  60. package/lib/schemas/applyValuesToSchema/isValid.js +14 -0
  61. package/lib/schemas/cliArgsToObject.js +39 -0
  62. package/lib/schemas/defaultConfigValues.js +393 -0
  63. package/lib/schemas/defaultConfigValuesOnly.js +200 -0
  64. package/lib/schemas/deprecatedOptionsHandler.js +67 -0
  65. package/lib/schemas/getNpmVersion.js +22 -0
  66. package/lib/schemas/giveDefaultValue.js +18 -0
  67. package/lib/schemas/npmConfigToObject.js +35 -0
  68. package/lib/schemas/readOptions.js +87 -0
  69. package/lib/schemas/readOptionsForConfigFile.js +42 -0
  70. package/lib/shared/babel/addDefaultPlugins.js +15 -0
  71. package/lib/shared/babel/babelWebConfig.js +54 -0
  72. package/lib/shared/babel/babel_plugins/removeAttributesPlugin.js +23 -0
  73. package/lib/shared/babel/getBabelPlugin.js +42 -0
  74. package/lib/shared/babel/runBabelForJSFile.js +24 -0
  75. package/lib/shared/babel/runBabelForTsFile.js +30 -0
  76. package/lib/shared/bundler/webpack/common/decidePublicPath.js +57 -0
  77. package/lib/shared/bundler/webpack/common/hashUtils.js +20 -0
  78. package/lib/shared/bundler/webpack/common/libAlias.js +31 -0
  79. package/lib/shared/bundler/webpack/common/modeUtils.js +39 -0
  80. package/lib/shared/bundler/webpack/common/nameTemplates.js +105 -0
  81. package/lib/shared/bundler/webpack/common/resourceBasedPublicPath.js +21 -0
  82. package/lib/shared/bundler/webpack/configCustomLoaders.js +10 -0
  83. package/lib/shared/bundler/webpack/cssLoaders.js +16 -0
  84. package/lib/shared/bundler/webpack/custom_plugins/BundleIntegrityReport/index.js +83 -0
  85. package/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/index.js +119 -0
  86. package/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/webpackCustomJsUrlLoader.js +46 -0
  87. package/lib/shared/bundler/webpack/custom_plugins/CustomScriptLoadingPlugin.js +109 -0
  88. package/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
  89. package/lib/shared/bundler/webpack/custom_plugins/I18nNumericIndexPlugin/I18nNumericIndexHtmlInjectorPlugin.js +47 -0
  90. package/lib/shared/bundler/webpack/custom_plugins/I18nNumericIndexPlugin/I18nNumericIndexPlugin.js +190 -0
  91. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +11 -0
  92. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +174 -0
  93. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +76 -0
  94. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +223 -0
  95. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -0
  96. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
  97. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
  98. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -0
  99. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/constants.js +29 -0
  100. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +24 -0
  101. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +76 -0
  102. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +39 -0
  103. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
  104. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +68 -0
  105. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/pathCreator.js +23 -0
  106. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/readI18nValues.js +29 -0
  107. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +43 -0
  108. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +77 -0
  109. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectAstKeys.js +98 -0
  110. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +66 -0
  111. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
  112. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/hashUtils.js +19 -0
  113. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/index.js +31 -0
  114. package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +129 -0
  115. package/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +60 -0
  116. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +30 -0
  117. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +23 -0
  118. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
  119. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
  120. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +46 -0
  121. package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
  122. package/lib/shared/bundler/webpack/custom_plugins/RTLSplitPlugin.js +1 -0
  123. package/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +193 -0
  124. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +62 -0
  125. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +84 -0
  126. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -0
  127. package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +27 -0
  128. package/lib/shared/bundler/webpack/custom_plugins/RuntimeResourceCleanup/index.js +73 -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 +120 -0
  134. package/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPluginUtils.js +13 -0
  135. package/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +71 -0
  136. package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/addHashToFilePath.js +22 -0
  137. package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/index.js +55 -0
  138. package/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/index.js.js +49 -0
  139. package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
  140. package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +362 -0
  141. package/lib/shared/bundler/webpack/custom_plugins/custom_attribute_plugin/index.js +80 -0
  142. package/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
  143. package/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
  144. package/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
  145. package/lib/shared/bundler/webpack/defaultVendorPatternList.js +13 -0
  146. package/lib/shared/bundler/webpack/devtoolConfig.js +13 -0
  147. package/lib/shared/bundler/webpack/entryConfig.js +28 -0
  148. package/lib/shared/bundler/webpack/externals.js +17 -0
  149. package/lib/shared/bundler/webpack/getCSSLoaders.js +29 -0
  150. package/lib/shared/bundler/webpack/getFilenameFromModule.js +24 -0
  151. package/lib/shared/bundler/webpack/jsLoaders.js +30 -0
  152. package/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +12 -0
  153. package/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +18 -0
  154. package/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +56 -0
  155. package/lib/shared/bundler/webpack/loaderConfigs/configHtmlTemplateLoader.js +18 -0
  156. package/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
  157. package/lib/shared/bundler/webpack/loaderConfigs/configWebWorkerLoader.js +21 -0
  158. package/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +86 -0
  159. package/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +65 -0
  160. package/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +21 -0
  161. package/lib/shared/bundler/webpack/loaderConfigs/i18nIdReplaceLoaderConfig.js +94 -0
  162. package/lib/shared/bundler/webpack/loaders/i18nIdReplaceLoader.js +201 -0
  163. package/lib/shared/bundler/webpack/loaders/miniCssFallBackLoader.js +7 -0
  164. package/lib/shared/bundler/webpack/loaders/workerLoader.js +133 -0
  165. package/lib/shared/bundler/webpack/optimizationConfig.js +56 -0
  166. package/lib/shared/bundler/webpack/outputConfig.js +38 -0
  167. package/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
  168. package/lib/shared/bundler/webpack/pluginConfigs/configBundleIntegrityReport.js +36 -0
  169. package/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +28 -0
  170. package/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +27 -0
  171. package/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +63 -0
  172. package/lib/shared/bundler/webpack/pluginConfigs/configCustomAttributesPlugin.js +20 -0
  173. package/lib/shared/bundler/webpack/pluginConfigs/configCustomScriptLoadingStrategyPlugin.js +76 -0
  174. package/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
  175. package/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +51 -0
  176. package/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +56 -0
  177. package/lib/shared/bundler/webpack/pluginConfigs/configI18nNumericIndexPlugin.js +113 -0
  178. package/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +41 -0
  179. package/lib/shared/bundler/webpack/pluginConfigs/configIgnorePlugin.js +16 -0
  180. package/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +44 -0
  181. package/lib/shared/bundler/webpack/pluginConfigs/configMiniCSSExtractPlugin.js +24 -0
  182. package/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +24 -0
  183. package/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +21 -0
  184. package/lib/shared/bundler/webpack/pluginConfigs/configRtlCssPlugin.js +27 -0
  185. package/lib/shared/bundler/webpack/pluginConfigs/configRuntimeResourceCleanup.js +31 -0
  186. package/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
  187. package/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +40 -0
  188. package/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
  189. package/lib/shared/bundler/webpack/pluginConfigs/configTPHashMappingPlugin.js +32 -0
  190. package/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
  191. package/lib/shared/bundler/webpack/plugins.js +77 -0
  192. package/lib/shared/bundler/webpack/resolvers.js +82 -0
  193. package/lib/shared/bundler/webpack/splitChunksConfig.js +116 -0
  194. package/lib/shared/bundler/webpack/statsConfig.js +30 -0
  195. package/lib/shared/bundler/webpack/tsLoaders.js +17 -0
  196. package/lib/shared/bundler/webpack/utils/index.js +31 -0
  197. package/lib/shared/bundler/webpack/utils/object-manipulation.js +87 -0
  198. package/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +34 -0
  199. package/lib/shared/bundler/webpack/webpackBuild.js +27 -0
  200. package/lib/shared/bundler/webpack/webpackConfig.js +58 -0
  201. package/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
  202. package/lib/shared/commands-utils/getCliPath.js +39 -0
  203. package/lib/shared/commands-utils/index.js +29 -0
  204. package/lib/shared/commands-utils/log.js +13 -0
  205. package/lib/shared/commands-utils/readArgsFormCommandLine.js +11 -0
  206. package/lib/shared/commands-utils/readOptionFormCommandLine.js +11 -0
  207. package/lib/shared/commands-utils/spawnSyncIO.js +38 -0
  208. package/lib/shared/constants.js +48 -0
  209. package/lib/shared/fileUtils/copyFile.js +38 -0
  210. package/lib/shared/fileUtils/directoryIterator.js +21 -0
  211. package/lib/shared/fileUtils/watchRun.js +112 -0
  212. package/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
  213. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
  214. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
  215. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
  216. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
  217. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
  218. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
  219. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
  220. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
  221. package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
  222. package/lib/shared/postcss/custom_postcss_plugins/RTLSplitPlugin.js +139 -0
  223. package/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
  224. package/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
  225. package/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +347 -0
  226. package/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
  227. package/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
  228. package/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
  229. package/lib/shared/postcss/runPostCssForCssFile.js +37 -0
  230. package/lib/shared/pre_process/runPreProcess.js +58 -0
  231. package/lib/shared/server/configWebpackDevMiddleware.js +41 -0
  232. package/lib/shared/server/corsHandling.js +30 -0
  233. package/lib/shared/server/getIp.js +30 -0
  234. package/lib/shared/server/getServerURL.js +36 -0
  235. package/lib/shared/server/httpsOptions.js +46 -0
  236. package/lib/shared/server/initExpressApp.js +19 -0
  237. package/lib/shared/server/initialHTMLHandling.js +99 -0
  238. package/lib/shared/server/mockApiHandler.js +67 -0
  239. package/lib/shared/server/mockServer.js +41 -0
  240. package/lib/shared/server/serveContextFiles.js +27 -0
  241. package/lib/shared/server/serverBywebpackDevMiddleware.js +35 -0
  242. package/lib/shared/server/startHttpServer.js +26 -0
  243. package/lib/shared/server/startHttpsServer.js +38 -0
  244. package/lib/shared/server/unwanted/addHttp2Server.js +41 -0
  245. package/lib/shared/server/unwanted/configWebpackDevMiddleware.js +44 -0
  246. package/lib/shared/server/unwanted/mockApiSupport.js +19 -0
  247. package/lib/shared/server/unwanted/websocketMockSetup.js +48 -0
  248. package/lib/shared/server/urlConcat.js +32 -0
  249. package/lib/shared/utils/requireLocalOrGlobal.js +81 -0
  250. package/lib/shared/utils/utils.js +1 -0
  251. package/lib/shared/utils/versionPrint.js +20 -0
  252. package/npm-shrinkwrap.json +5657 -0
  253. package/package.json +64 -0
  254. package/polyfillForOldNodeVersion.js +10 -0
  255. package/templates/app/README.MD +30 -0
  256. package/templates/app/package.json +12 -0
  257. package/templates/library/README.MD +28 -0
  258. package/templates/library/package.json +11 -0
  259. package/templates/wms/index.html +43 -0
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+
3
+ const fs = require('fs');
4
+
5
+ const path = require('path');
6
+
7
+ const parser = require('@babel/parser');
8
+
9
+ const generator = require('@babel/generator').default;
10
+
11
+ const {
12
+ walk
13
+ } = require('estree-walker');
14
+
15
+ const {
16
+ getOptions
17
+ } = require('loader-utils');
18
+
19
+ let collectAndCategorizeUsedI18nKeys, generateShortHash;
20
+
21
+ try {
22
+ collectAndCategorizeUsedI18nKeys = require('../custom_plugins/I18nSplitPlugin/utils/collectAstKeys').collectAndCategorizeUsedI18nKeys;
23
+ generateShortHash = require('../common/hashUtils').generateShortHash;
24
+ } catch (e) {
25
+ collectAndCategorizeUsedI18nKeys = () => ({
26
+ literalKeys: new Set(),
27
+ commentKeys: new Set()
28
+ });
29
+
30
+ generateShortHash = key => key;
31
+ }
32
+
33
+ const LOADER_PREFIX = '[i18nIdReplaceLoader]';
34
+ let numericIdMapDataCache = null;
35
+ let mapLoadAttemptedForPath = {};
36
+
37
+ function loadNumericIdMap(loaderContext, mapPath) {
38
+ if (!mapPath) {
39
+ loaderContext.emitWarning(new Error(`${LOADER_PREFIX} Numeric map path not provided in loader options.`));
40
+ return null;
41
+ }
42
+
43
+ if (numericIdMapDataCache && mapLoadAttemptedForPath[mapPath]) {
44
+ return numericIdMapDataCache;
45
+ }
46
+
47
+ mapLoadAttemptedForPath[mapPath] = true;
48
+
49
+ try {
50
+ if (fs.existsSync(mapPath)) {
51
+ const fileContent = fs.readFileSync(mapPath, 'utf-8');
52
+ const parsedData = JSON.parse(fileContent);
53
+
54
+ if (parsedData && parsedData.originalKeyToNumericId && typeof parsedData.originalKeyToNumericId === 'object') {
55
+ numericIdMapDataCache = parsedData.originalKeyToNumericId;
56
+ } else {
57
+ loaderContext.emitError(new Error(`${LOADER_PREFIX} Pre-generated map file (${mapPath}) is invalid or does not contain 'originalKeyToNumericId'.`));
58
+ numericIdMapDataCache = null;
59
+ }
60
+ } else {
61
+ loaderContext.emitError(new Error(`${LOADER_PREFIX} Pre-generated i18n numeric map file NOT FOUND at: ${mapPath}.`));
62
+ numericIdMapDataCache = null;
63
+ }
64
+ } catch (err) {
65
+ loaderContext.emitError(new Error(`${LOADER_PREFIX} Error loading or parsing pre-generated i18n map from ${mapPath}: ${err.message}`));
66
+ numericIdMapDataCache = null;
67
+ }
68
+
69
+ return numericIdMapDataCache;
70
+ }
71
+
72
+ module.exports = function i18nIdReplaceLoader(source, map, meta) {
73
+ const resourcePath = this.resourcePath;
74
+ this.cacheable && this.cacheable();
75
+ const options = getOptions(this) || {};
76
+ const callback = this.async();
77
+ const loaderContext = this;
78
+
79
+ if (!options.allI18nData || typeof options.allI18nData !== 'object' || Object.keys(options.allI18nData).length === 0) {
80
+ this.emitWarning(new Error(`${LOADER_PREFIX} [${resourcePath}] 'allI18nData' option is missing or empty. No replacements will be made.`));
81
+ return callback(null, source, map);
82
+ }
83
+
84
+ let useNumericIndexing = options.useNumericIndexing !== undefined ? options.useNumericIndexing : true;
85
+ let localOriginalKeyToNumericIdMap = null;
86
+
87
+ if (useNumericIndexing) {
88
+ localOriginalKeyToNumericIdMap = loadNumericIdMap(this, options.numericMapPath);
89
+ }
90
+
91
+ const fallbackToHash = options.fallbackToHash !== undefined ? options.fallbackToHash : true;
92
+
93
+ try {
94
+ const parserOptions = {
95
+ sourceType: 'module',
96
+ plugins: ['jsx', 'typescript', 'classProperties', 'optionalChaining', 'nullishCoalescingOperator'],
97
+ attachComment: true,
98
+ sourceFilename: resourcePath
99
+ };
100
+ const astFile = parser.parse(source, parserOptions);
101
+ const astProgram = astFile.program;
102
+ const comments = astFile.comments || [];
103
+ const {
104
+ literalKeys,
105
+ commentKeys
106
+ } = collectAndCategorizeUsedI18nKeys(astProgram, comments, options.allI18nData, options.isDebug);
107
+
108
+ if (this._module) {
109
+ if (!this._module.buildInfo) {
110
+ this._module.buildInfo = {};
111
+ }
112
+
113
+ if (literalKeys.size > 0) {
114
+ this._module.buildInfo.loaderIdentifiedLiteralI18nKeys = Array.from(literalKeys);
115
+ }
116
+
117
+ if (commentKeys.size > 0) {
118
+ this._module.buildInfo.loaderIdentifiedCommentI18nKeys = Array.from(commentKeys);
119
+ }
120
+ }
121
+
122
+ const keysToReplaceInLiterals = literalKeys;
123
+
124
+ if (keysToReplaceInLiterals.size === 0) {
125
+ return callback(null, source, map);
126
+ }
127
+
128
+ let replacementMade = false;
129
+ walk(astProgram, {
130
+ enter: function (node, parent, prop, index) {
131
+ const walkerControl = this;
132
+
133
+ if ((node.type === 'Literal' || node.type === 'StringLiteral') && typeof node.value === 'string') {
134
+ const originalValue = node.value;
135
+
136
+ if (keysToReplaceInLiterals.has(originalValue)) {
137
+ let replaced = false;
138
+
139
+ if (useNumericIndexing && localOriginalKeyToNumericIdMap) {
140
+ const numericId = localOriginalKeyToNumericIdMap[originalValue];
141
+
142
+ if (numericId !== undefined) {
143
+ const numericLiteralNode = {
144
+ type: 'NumericLiteral',
145
+ value: numericId
146
+ };
147
+ let replacementNode = numericLiteralNode;
148
+
149
+ if (parent && parent.type === 'JSXAttribute' && parent.value === node) {
150
+ replacementNode = {
151
+ type: 'JSXExpressionContainer',
152
+ expression: numericLiteralNode
153
+ };
154
+ }
155
+
156
+ walkerControl.replace(replacementNode);
157
+ replacementMade = true;
158
+ replaced = true;
159
+ }
160
+ }
161
+
162
+ if (!replaced && fallbackToHash) {
163
+ try {
164
+ const hashValue = generateShortHash(originalValue);
165
+ const hashedStringLiteralNode = {
166
+ type: 'StringLiteral',
167
+ value: hashValue
168
+ };
169
+ walkerControl.replace(hashedStringLiteralNode);
170
+ replacementMade = true;
171
+ } catch (hashError) {
172
+ loaderContext.emitError(new Error(`${LOADER_PREFIX} [${resourcePath}] Error hashing key "${originalValue}": ${hashError.message}`));
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+ });
179
+
180
+ if (replacementMade) {
181
+ const generateOptions = {
182
+ sourceMaps: options.sourceMaps,
183
+ sourceFileName: resourcePath,
184
+ retainLines: false,
185
+ comments: true
186
+ };
187
+ const output = generator(astFile, generateOptions, source);
188
+ callback(null, output.code, options.sourceMaps && output.map ? output.map : map);
189
+ } else {
190
+ callback(null, source, map);
191
+ }
192
+ } catch (err) {
193
+ const detailedError = new Error(`${LOADER_PREFIX} [${resourcePath}] AST Processing Error: ${err.message} (Stack: ${err.stack})`);
194
+
195
+ if (err.loc) {
196
+ detailedError.message += ` at line ${err.loc.line}, column ${err.loc.column}`;
197
+ }
198
+
199
+ callback(detailedError);
200
+ }
201
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ module.exports = function miniCssFallBackLoader(source) {
4
+ const replacedStr = source.replace('export default ', 'module.exports = '); // console.log('src/loaders/docsLoader.js', replacedStr);
5
+
6
+ return replacedStr;
7
+ };
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = loader;
7
+ exports.pitch = pitch;
8
+
9
+ var _path = _interopRequireDefault(require("path"));
10
+
11
+ var _SingleEntryPlugin = _interopRequireDefault(require("webpack/lib/SingleEntryPlugin"));
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ // import { getOptions } from 'loader-utils';
16
+ // import validateOptions from 'schema-utils';
17
+ const schema = {
18
+ 'type': 'object',
19
+ 'properties': {
20
+ 'publicPath': {
21
+ 'anyOf': [{
22
+ 'type': 'string'
23
+ }, {
24
+ 'instanceof': 'Function'
25
+ }]
26
+ },
27
+ 'filename': {
28
+ 'anyOf': [{
29
+ 'type': 'string',
30
+ 'minLength': 1
31
+ }, {
32
+ 'instanceof': 'Function'
33
+ }]
34
+ },
35
+ 'chunkFilename': {
36
+ 'type': 'string',
37
+ 'minLength': 1
38
+ },
39
+ 'esModule': {
40
+ 'type': 'boolean'
41
+ }
42
+ },
43
+ 'additionalProperties': false
44
+ }; // eslint-disable-next-line
45
+
46
+ function loader() {}
47
+
48
+ function getDefaultFilename(filename) {
49
+ if (typeof filename === 'function') {
50
+ return filename;
51
+ }
52
+
53
+ return filename.replace(/\.([a-z]+)(\?.+)?$/i, '.worker.$1$2');
54
+ }
55
+
56
+ function getDefaultChunkFilename(chunkFilename) {
57
+ return chunkFilename.replace(/\.([a-z]+)(\?.+)?$/i, '.worker.$1$2');
58
+ }
59
+
60
+ function pitch(request) {
61
+ this.cacheable(false);
62
+ const options = this.getOptions(); // console.log(this.getOptions());
63
+ // validateOptions(schema, options, {
64
+ // name: 'Worker Loader',
65
+ // baseDataPath: 'options'
66
+ // });
67
+
68
+ const workerContext = {};
69
+ const compilerOptions = this._compiler.options || {};
70
+ const filename = options.filename ? options.filename : getDefaultFilename(compilerOptions.output.filename);
71
+ const chunkFilename = options.chunkFilename ? options.chunkFilename : getDefaultChunkFilename(compilerOptions.output.chunkFilename);
72
+ const publicPath = options.publicPath ? options.publicPath : compilerOptions.output.publicPath;
73
+ workerContext.options = {
74
+ filename,
75
+ chunkFilename,
76
+ publicPath,
77
+ globalObject: 'self'
78
+ };
79
+ workerContext.compiler = this._compilation.createChildCompiler(`worker-loader ${request}`, workerContext.options);
80
+ /*
81
+ new WebWorkerTemplatePlugin().apply(workerContext.compiler);
82
+
83
+ if (compilerOptions.externals) {
84
+ new ExternalsPlugin(
85
+ getExternalsType(compilerOptions),
86
+ compilerOptions.externals
87
+ ).apply(workerContext.compiler);
88
+ } */
89
+
90
+ new _SingleEntryPlugin.default(this.context, `!!${request}`, _path.default.parse(this.resourcePath).name).apply(workerContext.compiler);
91
+ workerContext.request = request;
92
+ const cb = this.async();
93
+ workerContext.compiler.runAsChild((errorArg, entries, compilation) => {
94
+ let error = errorArg;
95
+
96
+ if (!error && compilation.errors && compilation.errors.length) {
97
+ // eslint-disable-next-line
98
+ error = compilation.errors[0];
99
+ }
100
+
101
+ const entry = entries && entries[0] && entries[0].files.values().next().value;
102
+
103
+ if (!error && !entry) {
104
+ error = Error(`WorkerPlugin: no entry for ${request}`);
105
+ }
106
+
107
+ if (error) {
108
+ return cb(error);
109
+ }
110
+
111
+ function workerCode() {
112
+ let blob;
113
+
114
+ try {
115
+ blob = new Blob([`importScripts('${this.workerUrl}');`], {
116
+ 'type': 'application/javascript'
117
+ });
118
+ } catch (e1) {
119
+ throw new Error(e1);
120
+ }
121
+
122
+ let url = window.URL || window.webkitURL;
123
+ let blobUrl = url.createObjectURL(blob);
124
+ let worker = new Worker(blobUrl);
125
+ return worker;
126
+ }
127
+
128
+ return cb(null, `${options.esModule ? 'export default' : 'module.exports ='} {\n
129
+ workerUrl: __webpack_public_path__ + ${JSON.stringify(entry)}, \n
130
+ getInstance: ${workerCode} \n
131
+ }`);
132
+ });
133
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.optimizationConfig = optimizationConfig;
7
+
8
+ var _terserWebpackPlugin = _interopRequireDefault(require("terser-webpack-plugin"));
9
+
10
+ var _nameTemplates = require("./common/nameTemplates");
11
+
12
+ var _hashUtils = require("./custom_plugins/I18nSplitPlugin/utils/hashUtils");
13
+
14
+ var _configCSSMinifierPlugin = require("./pluginConfigs/configCSSMinifierPlugin");
15
+
16
+ var _splitChunksConfig = require("./splitChunksConfig");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function optimizationConfig(options) {
21
+ const {
22
+ changeRuntimeChunkChar
23
+ } = options;
24
+ const {
25
+ chunkSplitEnable
26
+ } = options.i18nChunkSplit;
27
+ const i18nChunkFilename = (0, _nameTemplates.nameTemplates)('i18njs', options);
28
+ const chunkFilenameHasContentHash = (0, _hashUtils.hasContentHash)(i18nChunkFilename);
29
+ /**
30
+ * NOTE: we only need multiple runtime files when we use contentHash
31
+ * other wise we don't need multiple runtime files based locale
32
+ * that's why we added chunkSplitEnable && chunkFilenameHasContentHash logic
33
+ */
34
+
35
+ const suffix = // chunkSplitEnable ? '_[locale]' : '';
36
+ chunkSplitEnable && chunkFilenameHasContentHash ? '_[locale]' : '';
37
+ const char = changeRuntimeChunkChar;
38
+ const excludeList = options.optimization.jsExcludePath;
39
+ return {
40
+ splitChunks: (0, _splitChunksConfig.splitChunksConfig)(options),
41
+ minimizer: [// For webpack@5 you can use the `...` syntax to extend existing minimizers (i.e. `terser-webpack-plugin`), uncomment the next line
42
+ // '...',
43
+ excludeList !== '' ? new _terserWebpackPlugin.default({
44
+ exclude: excludeList,
45
+ extractComments: false // Do not extract comments to .LICENSE.txt files
46
+
47
+ }) : new _terserWebpackPlugin.default({
48
+ extractComments: false // Do not extract comments to .LICENSE.txt files
49
+
50
+ }), (0, _configCSSMinifierPlugin.configCSSMinifierPlugin)(options)].filter(Boolean),
51
+ moduleIds: 'named',
52
+ runtimeChunk: {
53
+ name: entrypoint => `runtime${char}${entrypoint.name}${suffix}`
54
+ }
55
+ };
56
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.outputConfig = outputConfig;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ var _constants = require("../../constants");
11
+
12
+ var _nameTemplates = require("./common/nameTemplates");
13
+
14
+ var _modeUtils = require("./common/modeUtils");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function outputConfig(options) {
19
+ const {
20
+ output,
21
+ publicPath,
22
+ htmlTemplate
23
+ } = options;
24
+ const outputO = {
25
+ filename: (0, _nameTemplates.nameTemplates)('js', options),
26
+ chunkFilename: (0, _nameTemplates.nameTemplates)('chunkjs', options),
27
+ chunkLoadingGlobal: (0, _modeUtils.getGlobalCacheStorageName)(options),
28
+ publicPath,
29
+ // clean: true,
30
+ path: _path.default.resolve(_constants.appPath, output)
31
+ };
32
+
33
+ if (htmlTemplate.crossorigin) {
34
+ outputO.crossOriginLoading = 'anonymous';
35
+ }
36
+
37
+ return outputO;
38
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.configBundleAnalyzer = configBundleAnalyzer;
7
+
8
+ var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
9
+
10
+ var _modeUtils = require("../common/modeUtils");
11
+
12
+ /* eslint-disable no-use-before-define */
13
+ function configBundleAnalyzer(options) {
14
+ const mode = (0, _modeUtils.getWebpackMode)(options);
15
+
16
+ if ((0, _modeUtils.isProductionMode)(mode) && options.bundleAnalyze) {
17
+ const bundleAnalyzerOptions = getBundleAnalyzerOptions(options);
18
+ return new _webpackBundleAnalyzer.BundleAnalyzerPlugin(bundleAnalyzerOptions);
19
+ }
20
+
21
+ return null;
22
+ } // eslint-disable-next-line no-unused-vars
23
+
24
+
25
+ function getBundleAnalyzerOptions(options) {
26
+ return {
27
+ analyzerMode: 'static',
28
+ // generateStatsFile: false,
29
+ openAnalyzer: false // statsOptions: {
30
+ // source: false,
31
+ // normal: true,
32
+ // chunks: false,
33
+ // chunkGroups: false,
34
+ // module: false,
35
+ // assets: true,
36
+ // assetsSort: 'name'
37
+ // }
38
+
39
+ };
40
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.configBundleIntegrityReport = configBundleIntegrityReport;
7
+
8
+ var _modeUtils = require("../common/modeUtils");
9
+
10
+ var _BundleIntegrityReport = require("../custom_plugins/BundleIntegrityReport");
11
+
12
+ function configBundleIntegrityReport(options) {
13
+ const webpackMode = (0, _modeUtils.getWebpackMode)(options);
14
+ const isProduction = (0, _modeUtils.isProductionMode)(webpackMode);
15
+ const {
16
+ enable: statsEnable
17
+ } = options.stats;
18
+
19
+ if (isProduction && statsEnable) {
20
+ return new _BundleIntegrityReport.BundleIntegrityReport({
21
+ fileName: options.stats.fileName || 'bundle-report-integrity.json',
22
+ excludeKeysInReport: options.stats.excludeKeys || [],
23
+ options: {
24
+ preset: 'verbose',
25
+ ...options.stats.options,
26
+ assets: true,
27
+ chunks: true,
28
+ modules: true,
29
+ builtAt: true,
30
+ hash: true
31
+ }
32
+ });
33
+ }
34
+
35
+ return null;
36
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.configCSSMinifierPlugin = configCSSMinifierPlugin;
7
+
8
+ var _cssMinimizerWebpackPlugin = _interopRequireDefault(require("css-minimizer-webpack-plugin"));
9
+
10
+ var _modeUtils = require("../common/modeUtils");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ // import UglifyCSSPlugin from '../custom_plugins/UglifyCSSPlugin';
15
+ // eslint-disable-next-line no-unused-vars
16
+ function configCSSMinifierPlugin(options) {
17
+ const excludeList = options.optimization.cssExcludePath;
18
+
19
+ if ((0, _modeUtils.isNotProduction)(options)) {
20
+ return null;
21
+ } // return null;
22
+ // return new UglifyCSSPlugin();
23
+
24
+
25
+ return excludeList !== '' ? new _cssMinimizerWebpackPlugin.default({
26
+ exclude: excludeList
27
+ }) : new _cssMinimizerWebpackPlugin.default();
28
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.configCdnChangePlugin = configCdnChangePlugin;
7
+
8
+ var _modeUtils = require("../common/modeUtils");
9
+
10
+ var _CdnChangePlugin = _interopRequireDefault(require("../custom_plugins/CdnChangePlugin"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ function configCdnChangePlugin(options) {
15
+ const {
16
+ cdnMapping,
17
+ mode
18
+ } = options;
19
+
20
+ if (!cdnMapping.isCdnEnabled || (0, _modeUtils.isDevelopmentMode)(mode)) {
21
+ return null;
22
+ }
23
+
24
+ return new _CdnChangePlugin.default({ ...cdnMapping,
25
+ createSeparateSMap: options.createSeparateSMap
26
+ });
27
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.configCopyPublicFolders = configCopyPublicFolders;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ var _copyWebpackPlugin = _interopRequireDefault(require("copy-webpack-plugin"));
11
+
12
+ var _fs = require("fs");
13
+
14
+ var _updateArrayWithDefault = require("../utils/updateArrayWithDefault");
15
+
16
+ var _constants = require("../../../constants");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ const defaultPublicFolders = [{
21
+ // source must be relative path not absolute path
22
+ source: 'public',
23
+ // target is the path that this copied file output path
24
+ target: 'public',
25
+ toType: 'dir'
26
+ }];
27
+
28
+ function folderPatterns(publicFolders) {
29
+ return publicFolders.map(conf => {
30
+ const publicFolderActualPath = (0, _constants.joinWithAppPath)(conf.source);
31
+
32
+ if (!conf.source || !conf.target || _path.default.isAbsolute(conf.source) || !(0, _fs.existsSync)(publicFolderActualPath)) {
33
+ return null;
34
+ }
35
+
36
+ return {
37
+ from: publicFolderActualPath,
38
+ to: conf.target,
39
+ toType: conf.toType || 'dir'
40
+ };
41
+ }).filter(Boolean);
42
+ }
43
+
44
+ function configCopyPublicFolders(options) {
45
+ let {
46
+ publicFolders
47
+ } = options;
48
+ publicFolders = (0, _updateArrayWithDefault.updateArrayWithDefault)(publicFolders, defaultPublicFolders);
49
+
50
+ if (publicFolders.length === 0) {
51
+ return null;
52
+ }
53
+
54
+ const patterns = folderPatterns(publicFolders);
55
+
56
+ if (patterns.length === 0) {
57
+ return null;
58
+ }
59
+
60
+ return new _copyWebpackPlugin.default({
61
+ patterns
62
+ });
63
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.configCustomAttributesPlugin = configCustomAttributesPlugin;
7
+
8
+ var _custom_attribute_plugin = require("../custom_plugins/custom_attribute_plugin");
9
+
10
+ function configCustomAttributesPlugin(options) {
11
+ const {
12
+ customAttributes
13
+ } = options;
14
+
15
+ if (customAttributes.enable) {
16
+ return new _custom_attribute_plugin.CustomAttributesPlugin(customAttributes);
17
+ }
18
+
19
+ return null;
20
+ }