@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,362 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _postcss = _interopRequireDefault(require("postcss"));
9
+
10
+ var _fs = _interopRequireDefault(require("fs"));
11
+
12
+ var _checkIsPatternsMatchFilename = require("../../loaderConfigs/checkIsPatternsMatchFilename");
13
+
14
+ var _ErrorHandler = require("./ErrorHandler");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ // import { RawSource } from 'webpack-sources';
19
+ const ignoreVals = ['--zd_size', '--zd_font_size', '--size', '--size_'];
20
+ let variablesRead = {};
21
+ const supportedProps = ['font-size', 'margin', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'padding', 'padding-top', 'padding-bottom', 'padding-left', 'padding-right', '^top', '^right', '^bottom', '^left', '^width', 'min-width', 'max-width', '^height', 'min-height', 'max-height', 'text-indent', 'clip', 'flex-basis', 'row-gap', 'gap', 'column-gap', 'flex']; // const avoidProps = [];
22
+ // -- is issue IO --
23
+
24
+ /*
25
+ issues eg :
26
+ issues = ['--zd_size', '--zd_font_size', '--size', '--size_'];
27
+ input :
28
+ --zd_size
29
+ output :
30
+ true
31
+ comment :
32
+ do not execute when --zd_size comes as prop
33
+ */
34
+
35
+ function isIgnoreValuePresent(ignoreVals, prop) {
36
+ let present = false;
37
+ ignoreVals.forEach(issue => {
38
+ if (prop && prop.includes(issue)) {
39
+ present = true;
40
+ }
41
+ });
42
+ return present;
43
+ } // -- to convert the hyphen values to values --
44
+
45
+ /*
46
+ input :
47
+ var(--zdt_uploadlist_default_width)
48
+ output :
49
+ --zdt_uploadlist_default_width
50
+
51
+ comment :
52
+ to make the variable object using the output as key and decl.prop such as font-size as value
53
+ */
54
+
55
+
56
+ function extractVariableName(val) {
57
+ return val.replace(/calc\((.+)\)/gi, '$1').replace(/var\((.+)\)/gi, '$1').replace('-1', '').replace('*', '').replace('\n', '').trim();
58
+ }
59
+
60
+ function variableConvertor(rootOriginal, variables, settingsObject) {
61
+ rootOriginal.walkRules(rule => {
62
+ rule.nodes.forEach((decl, index) => {
63
+ const prevNode = rule.nodes[index - 1];
64
+ const currentNode = rule.nodes[index];
65
+
66
+ if (decl.prop && decl.prop.includes('--')) {
67
+ if (prevNode && prevNode.type === 'comment' && prevNode.text.toLowerCase() === 'variable:ignore') {
68
+ return;
69
+ }
70
+
71
+ if (isIgnoreValuePresent(ignoreVals, decl.prop)) {
72
+ return;
73
+ }
74
+
75
+ if (settingsObject[variables[decl.prop]]) {
76
+ /* if there is no value for property, set it to default so that undefined doesn't get called as key */
77
+ if (!variables[decl.prop]) {
78
+ // eslint-disable-next-line no-param-reassign
79
+ variables[decl.prop] = 'default';
80
+ }
81
+
82
+ const pxReplacement = settingsObject[variables[decl.prop]].replacements.px;
83
+ const valArr = decl.value.split(' '); // single values are considered in the above array and converted below
84
+
85
+ valArr.forEach((value, index) => {
86
+ if (value.includes('px')) {
87
+ const num = value.replace('px', '');
88
+ valArr[index] = pxReplacement.replace('$$', num);
89
+ }
90
+ });
91
+ currentNode.value = valArr.join(' ');
92
+ }
93
+ }
94
+ });
95
+ });
96
+ return rootOriginal;
97
+ }
98
+
99
+ function createFolderIfNonExistent(path) {
100
+ if (!_fs.default.existsSync(path)) {
101
+ _fs.default.mkdirSync(path, {
102
+ recursive: true
103
+ });
104
+ }
105
+ }
106
+
107
+ function createFileIfNonExistent(path, content) {
108
+ if (_fs.default.existsSync(path)) {
109
+ _fs.default.writeFileSync(path, content, 'utf-8');
110
+ }
111
+ }
112
+
113
+ class VariableConversionCollector {
114
+ constructor(options = {}) {
115
+ this.configFile = options.configFile;
116
+ this.patterns = options.patterns;
117
+ this.initializeFiles();
118
+ } // eslint-disable-next-line class-methods-use-this
119
+
120
+
121
+ initializeFiles() {
122
+ createFolderIfNonExistent('./.cli/logs/');
123
+ createFolderIfNonExistent('./.cli/config/variables/');
124
+ createFolderIfNonExistent('./.cli/config/selectorWeight/');
125
+ createFileIfNonExistent('./.cli/logs/unassignedVariables.log', '{}');
126
+ createFileIfNonExistent('./.cli/logs/css_error.log', '{}');
127
+ }
128
+
129
+ apply(compiler) {
130
+ const {
131
+ patterns
132
+ } = this;
133
+ const variables = {};
134
+ const unassigned = {}; // console.log(windowsModification([this.filename])[0]);
135
+
136
+ const rawdata = _fs.default.readFileSync(this.configFile);
137
+
138
+ const data = JSON.parse(rawdata);
139
+ const {
140
+ settings: settingsObject,
141
+ errorLog: errorLogStatus,
142
+ errorInConsole: errorConsoleStatus,
143
+ errorsAllowed,
144
+ strictMode
145
+ } = data; // If theres is no setting for default prop in settingsObject, set one.
146
+
147
+ if (!settingsObject.default) {
148
+ settingsObject.default = {
149
+ allowed: ['px', 'em', 'fit-content', 'auto', '%', 'inherit', '-moz-fit-content', 'vh', '0', 'initial', 'vw'],
150
+ replacements: {
151
+ px: 'var(--zd_size$$)'
152
+ },
153
+ range: {
154
+ start: -99999,
155
+ end: 99999
156
+ }
157
+ };
158
+ }
159
+ /*
160
+ purpose of tap : to create a variable object such as:
161
+ {
162
+ --zdt_uploadlist_default_width : width,
163
+ --zdt_uploadlist_default_height : height,
164
+ }
165
+ which will help in the conversion further
166
+ */
167
+
168
+
169
+ if (_fs.default.existsSync('./.cli/config/variables/variableMapping.json')) {
170
+ variablesRead = JSON.parse(_fs.default.readFileSync('./.cli/config/variables/variableMapping.json', 'utf-8'));
171
+ Object.keys(variablesRead.changes).forEach(key => {
172
+ variables[key] = variablesRead.changes[key];
173
+ });
174
+ }
175
+
176
+ compiler.hooks.compilation.tap('VariableConversionCollector', compilation => {
177
+ compilation.hooks.optimizeModules.tap('VariableConversionCollector', modulesIterable => {
178
+ const modules = Array.from(modulesIterable);
179
+ const mods = modules.filter(x => x.type.includes('css'));
180
+ mods.forEach(module => {
181
+ const rootOriginal = _postcss.default.parse(module.content);
182
+
183
+ const filename = module.issuer.resource;
184
+
185
+ if (!filename.includes('node_modules')) {
186
+ rootOriginal.walkRules(rule => {
187
+ rule.walkDecls(decl => {
188
+ decl.value.split(' ').forEach(val => {
189
+ if (val && val.includes('--') && !new RegExp(ignoreVals.join('|'), 'gi').test(val) && decl.prop) {
190
+ const extractedValue = extractVariableName(val);
191
+
192
+ if (!variables[extractedValue]) {
193
+ variables[extractedValue] = decl.prop;
194
+ } else if (new RegExp(supportedProps.join('|'), 'gi').test(decl.prop)) {
195
+ // console.log(
196
+ // `${extractedValue} : ${variables[extractedValue]} already exists please check!`
197
+ // );
198
+ if (errorsAllowed.MULTIPLE_OCCURANCES) {
199
+ const errObj = {
200
+ decl,
201
+ type: 'MULTIPLE_OCCURANCES',
202
+ filename,
203
+ message: `${extractedValue} : ${variables[extractedValue]} already exists please check!`
204
+ };
205
+
206
+ _ErrorHandler.errHandler.errorTable.push(errObj);
207
+
208
+ _ErrorHandler.errHandler.errorFunction(errObj);
209
+ }
210
+ } // console.log(decl.prop);
211
+
212
+ } else if (/^--/gi.test(decl.prop) && val.trim() !== '' && !variables[decl.prop]) {
213
+ if (!Object.keys(variablesRead.ignore).includes(decl.prop)) {
214
+ unassigned[decl.prop] = variables[decl.prop];
215
+ }
216
+ }
217
+ });
218
+ });
219
+ });
220
+ /*
221
+ current value example:
222
+ {
223
+ --zdt_uploadlist_default_width : --zd_upload_width,
224
+ --zd_upload_width : width
225
+ }
226
+ expected value :
227
+ {
228
+ --zdt_uploadlist_default_width : width,
229
+ --zd_upload_width : width
230
+ }
231
+
232
+ conversion is done in the while loop below
233
+ */
234
+
235
+ Object.keys(variables).forEach(key => {
236
+ while (variables[variables[key]]) {
237
+ variables[key] = variables[variables[key]];
238
+ }
239
+ });
240
+ }
241
+ });
242
+ }); // -- conversion for the root using variableConvertor --
243
+
244
+ /*
245
+ input :
246
+ .a{
247
+ padding : 20px
248
+ }
249
+ output :
250
+ // on settingObject file :
251
+ { padding : { replacements : { px : 'zd_size$$' }}}
252
+ .a{
253
+ padding : zd_size20;
254
+ }
255
+ */
256
+
257
+ compilation.hooks.optimizeModules.tap('VariableConversionCollector', modules => {
258
+ const mods = Array.from(modules).filter(x => x.type.includes('css'));
259
+ mods.forEach(module => {
260
+ const filename = module.issuer.resource;
261
+ /*
262
+ input :
263
+ filename : 'D:/MyWork/..../desk_client_app/supportapp/src/components/Avatar/Avatar.module.css,
264
+
265
+ patterns.cssVariableReplacement:
266
+ // include src folder, include deskapp folder, exclude node modules
267
+ [
268
+ "src",
269
+ "deskapp",
270
+ "!node_modules"
271
+ ]
272
+
273
+ output :
274
+ true or false
275
+ */
276
+
277
+ if ((0, _checkIsPatternsMatchFilename.checkIsPatternsMatchFilename)(patterns, filename) === false) {
278
+ return;
279
+ }
280
+
281
+ const rootOriginal = _postcss.default.parse(module.content); // eslint-disable-next-line no-param-reassign
282
+
283
+
284
+ module.content = variableConvertor(rootOriginal, variables, settingsObject).toString();
285
+ });
286
+ });
287
+ });
288
+ /*
289
+ purpose of tap : to display the errors encountered so far
290
+ input :
291
+ all css files
292
+ output :
293
+ all errors that are present in the errTable arr
294
+ */
295
+
296
+ compiler.hooks.afterEmit.tap('error-display', () => {
297
+ const {
298
+ errors,
299
+ errorTable: errTable
300
+ } = _ErrorHandler.errHandler;
301
+
302
+ if (Object.keys(unassigned).length > 0 && strictMode) {
303
+ console.log();
304
+ console.log(unassigned);
305
+ console.log();
306
+ let str = '{\n';
307
+ Object.keys(unassigned).forEach(key => {
308
+ str += `"${key}" : "${unassigned[key]}",\n`;
309
+ });
310
+ str += '}';
311
+
312
+ _fs.default.writeFileSync('./.cli/logs/unassignedVariables.log', str, 'utf-8');
313
+
314
+ throw new Error('^^^ Variables above have not been assigned! ^^^');
315
+ }
316
+
317
+ const avlTypes = new Set([]); // eslint-disable-next-line array-callback-return, consistent-return
318
+
319
+ const srtArr = errTable.sort((a, b) => {
320
+ avlTypes.add(a.type);
321
+ avlTypes.add(b.type);
322
+
323
+ if (a.type < b.type) {
324
+ return -1;
325
+ }
326
+ });
327
+
328
+ if (errorConsoleStatus) {
329
+ const errorHandler = new _ErrorHandler.ErrorHandler();
330
+ avlTypes.forEach(type => {
331
+ console.log('---------------------------------------------------------------------------------------------------------------------------');
332
+ console.log(`Error Type : ${type}`);
333
+ console.log('---------------------------------------------------------------------------------------------------------------------------');
334
+ srtArr.forEach(err => {
335
+ if (err.decl.prop && err.decl.value && err.type === type) {
336
+ errorHandler.printError(err);
337
+ }
338
+ });
339
+ console.log('---------------------------------------------------------------------------------------------------------------------------');
340
+ });
341
+ }
342
+
343
+ if (errorLogStatus) {
344
+ _fs.default.writeFileSync('./.cli/logs/css_error.log', '');
345
+
346
+ console.log('writing to logFile...');
347
+
348
+ if (errors.length > 0) {
349
+ errors.forEach((err, index) => {
350
+ if (errTable[index].decl.prop && errTable[index].decl.value) {
351
+ _fs.default.appendFileSync('./.cli/logs/css_error.log', err);
352
+ }
353
+ });
354
+ }
355
+ }
356
+ });
357
+ }
358
+
359
+ }
360
+
361
+ var _default = VariableConversionCollector;
362
+ exports.default = _default;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.emitAsset = emitAsset;
7
+
8
+ function emitAsset(compilation, outputFile, content) {
9
+ const {
10
+ RawSource
11
+ } = compilation.compiler.webpack.sources;
12
+ const source = new RawSource(content);
13
+ compilation.emitAsset(outputFile, source);
14
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.cssDirTemplate = void 0;
7
+ exports.getInitialAssetsFuncTemplate = getInitialAssetsFuncTemplate;
8
+ exports.localeTemplate = void 0;
9
+
10
+ var _utils = require("../utils");
11
+
12
+ var _replaceCssDirTemplate = require("./RtlSplitPlugin/replaceCssDirTemplate");
13
+
14
+ var _getInitialI18nAssetsArrayStr = require("./getInitialI18nAssetsArrayStr");
15
+
16
+ const cssDirTemplate = '@dir@';
17
+ exports.cssDirTemplate = cssDirTemplate;
18
+ const localeTemplate = '@locale@';
19
+ exports.localeTemplate = localeTemplate;
20
+
21
+ function getInitialAssetsFuncTemplate({
22
+ entryPoint,
23
+ enableRTLSplit,
24
+ compilation,
25
+ i18nStore,
26
+ chunkSplitEnable,
27
+ i18nFileNameTemplate,
28
+ functionName = 'getInitialAssets'
29
+ }) {
30
+ const initialFiles = entryPoint.getFiles();
31
+ let initialJsFiles = initialFiles.filter(_utils.isJsFile);
32
+ let initialCssFiles = initialFiles.filter(_utils.isCssFile);
33
+
34
+ if (enableRTLSplit) {
35
+ initialCssFiles = (0, _replaceCssDirTemplate.replaceCssDirTemplateMapper)(initialCssFiles, cssDirTemplate);
36
+ }
37
+
38
+ if (chunkSplitEnable) {
39
+ initialJsFiles = (0, _replaceCssDirTemplate.replaceI18nLocaleTemplateMapper)(initialJsFiles, localeTemplate);
40
+ }
41
+
42
+ const initialI18nAssets = (0, _getInitialI18nAssetsArrayStr.getInitialI18nAssetsArrayStr)({
43
+ entryPoint,
44
+ compilation,
45
+ i18nStore,
46
+ chunkSplitEnable,
47
+ i18nFileNameTemplate
48
+ });
49
+ const initialAssetsFuncTemplate = `function ${functionName}({ lang, dir}) {
50
+ return {
51
+ js: ${JSON.stringify(initialJsFiles)}.map(urlPath => urlPath.replace(/@locale@/g, lang)),
52
+ css: ${JSON.stringify(initialCssFiles)}${enableRTLSplit ? '.map(urlPath => urlPath.replace(/@dir@/g, dir))' : ''},
53
+ i18n: ${initialI18nAssets},
54
+ }
55
+ }`;
56
+ return initialAssetsFuncTemplate;
57
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getI18nAssetForChunkAsStr = getI18nAssetForChunkAsStr;
7
+ exports.getI18nAssetsForChunkAsArrayStr = getI18nAssetsForChunkAsArrayStr;
8
+ exports.getInitialI18nAssetsArrayStr = getInitialI18nAssetsArrayStr;
9
+
10
+ var _I18nFilesEmitPlugin = require("./I18nSplitPlugin/I18nFilesEmitPlugin");
11
+
12
+ /* eslint-disable no-use-before-define */
13
+ // for SMap relate changes
14
+ // CdnChangePlugin
15
+ // SourceMapHookPlugin
16
+ function getInitialI18nAssetsArrayStr({
17
+ entryPoint,
18
+ compilation,
19
+ i18nStore,
20
+ chunkSplitEnable,
21
+ i18nFileNameTemplate
22
+ }) {
23
+ return getI18nAssetsForChunkAsArrayStr({
24
+ chunks: entryPoint.chunks,
25
+ compilation,
26
+ i18nStore,
27
+ chunkSplitEnable,
28
+ i18nFileNameTemplate
29
+ });
30
+ }
31
+
32
+ function getI18nAssetsForChunkAsArrayStr({
33
+ chunks,
34
+ compilation,
35
+ i18nStore,
36
+ chunkSplitEnable,
37
+ i18nFileNameTemplate
38
+ }) {
39
+ if (!chunkSplitEnable) {
40
+ // NOTE: we have used lang variable inside
41
+ // NOTE: below code for full i18n for now it is not implemented
42
+ // if (!chunkSplitEnable) {
43
+ // let i18nAssets = {};
44
+ // const i18nFiles = Object.keys(compilation.assets).filter(
45
+ // assert => assert.indexOf(`i18n${path.sep}`) !== -1
46
+ // );
47
+ // // hook for i18n url contains i18n/ may cause problem
48
+ // i18nAssets = i18nFiles.reduce((res, i18nFilePath) => {
49
+ // const fileName = i18nFilePath.replace(`i18n${path.sep}`, '');
50
+ // const splittedFileName = fileName.split('.');
51
+ // res[splittedFileName[0]] = i18nFilePath;
52
+ // return res;
53
+ // }, {});
54
+ // return `[${JSON.stringify(i18nAssets)}[lang]]`;
55
+ // }
56
+ return '[]';
57
+ }
58
+
59
+ const i18nAssetsUrlTemplates = [...chunks].map(chunk => getI18nAssetForChunkAsStr({
60
+ chunk,
61
+ compilation,
62
+ i18nStore,
63
+ i18nFileNameTemplate
64
+ })).filter(Boolean);
65
+ return `${JSON.stringify(i18nAssetsUrlTemplates)}.map(urlPath => urlPath.replace(/@locale@/g, lang))`;
66
+ }
67
+
68
+ function getI18nAssetForChunkAsStr({
69
+ chunk,
70
+ compilation,
71
+ i18nStore,
72
+ i18nFileNameTemplate
73
+ }) {
74
+ if (!i18nStore.isChunkHasI18n(chunk)) {
75
+ return '';
76
+ }
77
+
78
+ const i18nAssetsUrlTemplates = _I18nFilesEmitPlugin.I18nFilesEmitPlugin.createFilenameWithHash({
79
+ compilation,
80
+ fileNameTemplate: i18nFileNameTemplate,
81
+ chunk,
82
+ locale: '@locale@',
83
+ contentHash: 'contentHash'
84
+ }).filename;
85
+
86
+ return i18nAssetsUrlTemplates;
87
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.reactBundleIncludeList = exports.defaultVendorPatternList = void 0;
7
+
8
+ var _checkIsPatternsMatchFilename = require("./loaderConfigs/checkIsPatternsMatchFilename");
9
+
10
+ const reactBundleIncludeList = ['**/node_modules/react/**/*.js', '**/node_modules/react-dom/**/*.js', '**/node_modules/react-redux/**/*.js', '**/node_modules/react-transition-group/**/*.js', '**/node_modules/scheduler/**/*.js', '**/node_modules/prop-types/**/*.js'];
11
+ exports.reactBundleIncludeList = reactBundleIncludeList;
12
+ const defaultVendorPatternList = ['**/node_modules/**/*.js', '!*.css', '!**/publicPathConfig.js', ...(0, _checkIsPatternsMatchFilename.modifyAsExclude)(['**/node_modules/script-loader/**/*.js', '**/node_modules/raw-loader/**/*.js']), ...(0, _checkIsPatternsMatchFilename.modifyAsExclude)(reactBundleIncludeList)];
13
+ exports.defaultVendorPatternList = defaultVendorPatternList;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.entryConfig = entryConfig;
7
+
8
+ var _constants = require("../../constants");
9
+
10
+ function entryConfig(options) {
11
+ const {
12
+ hasEFC,
13
+ entryFile,
14
+ entryPointName
15
+ } = options.efc;
16
+ const {
17
+ entryFile: mainEntry
18
+ } = options.app;
19
+ const entry = {
20
+ main: (0, _constants.joinWithAppPath)(mainEntry)
21
+ };
22
+
23
+ if (hasEFC && entryFile) {
24
+ entry[entryPointName] = (0, _constants.joinWithAppPath)(entryFile);
25
+ }
26
+
27
+ return entry;
28
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.externals = externals;
7
+
8
+ // eslint-disable-next-line no-unused-vars
9
+ function externals(options) {
10
+ return {
11
+ ZC: '$ZC'
12
+ };
13
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getCSSLoaders = getCSSLoaders;
7
+
8
+ var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
9
+
10
+ var _configPostCssLoader = require("./loaderConfigs/configPostCssLoader");
11
+
12
+ var _getCssLoaderOptions = require("./loaderConfigs/getCssLoaderOptions");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ function getCSSLoaders(options) {
17
+ const cssLoaderOptions = (0, _getCssLoaderOptions.getCssLoaderOptions)(options);
18
+ return [{
19
+ loader: _miniCssExtractPlugin.default.loader,
20
+ options: {
21
+ publicPath: '../'
22
+ }
23
+ }, {
24
+ loader: 'css-loader',
25
+ options: cssLoaderOptions
26
+ }, (0, _configPostCssLoader.configPostCssLoader)(options)].filter(Boolean);
27
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CSS_MODULE_TYPE = void 0;
7
+ exports.getFilenameFromModule = getFilenameFromModule;
8
+ const CSS_MODULE_TYPE = 'css/mini-extract';
9
+ exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
10
+
11
+ function getFilenameFromModule(webpackModule) {
12
+ const {
13
+ userRequest
14
+ } = webpackModule;
15
+
16
+ if (webpackModule.type === CSS_MODULE_TYPE) {
17
+ const {
18
+ _identifier: identifier = ''
19
+ } = webpackModule;
20
+ return identifier.slice(identifier.lastIndexOf('!') + 1);
21
+ }
22
+
23
+ return userRequest;
24
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.devtoolConfig = devtoolConfig;
7
+
8
+ function devtoolConfig(options) {
9
+ return options.devtool;
10
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.jsLoaders = jsLoaders;
7
+
8
+ var _babelLoaderConfig = require("./loaderConfigs/babelLoaderConfig");
9
+
10
+ function jsLoaders(options) {
11
+ return [{
12
+ test: /\.js$/,
13
+ exclude: /node_modules/,
14
+ use: [(0, _babelLoaderConfig.babelLoaderConfig)(options)] // include: path.join(appPath, folder)
15
+
16
+ }];
17
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.assetLoaders = assetLoaders;
7
+
8
+ var _configsAssetsLoaders = require("./configsAssetsLoaders");
9
+
10
+ function assetLoaders(options) {
11
+ return [(0, _configsAssetsLoaders.configImageLoader)(options), (0, _configsAssetsLoaders.configFontLoader)(options), (0, _configsAssetsLoaders.configSVGLoader)(options), (0, _configsAssetsLoaders.configAudioLoader)(options), (0, _configsAssetsLoaders.configVideoLoader)(options)];
12
+ }