@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,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.findInitialFileNames = findInitialFileNames;
7
+
8
+ function findInitialFileNames(compilation) {
9
+ const initialEntries = [];
10
+ compilation.entrypoints.forEach(element => {
11
+ element.chunks.forEach(chunk => {
12
+ Array.from(chunk.files).forEach(filename => {
13
+ initialEntries.push(filename);
14
+ });
15
+ });
16
+ });
17
+ return initialEntries;
18
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AddFileToManifestJson = void 0;
7
+
8
+ var _webpack = require("webpack");
9
+
10
+ var _createManifestJson = require("./createManifestJson");
11
+
12
+ class AddFileToManifestJson {
13
+ constructor(options) {
14
+ this.options = options;
15
+ }
16
+
17
+ apply(compiler) {
18
+ const {
19
+ RawSource
20
+ } = compiler.webpack.sources;
21
+ compiler.hooks.thisCompilation.tap('MyWebpackPlugin', compilation => {
22
+ compilation.hooks.processAssets.tap({
23
+ name: 'MyPlugin',
24
+ stage: _webpack.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE
25
+ }, assets => {
26
+ const {
27
+ hashDigestLength
28
+ } = compilation.outputOptions;
29
+ this.options.forEach(option => {
30
+ const manifestJson = (0, _createManifestJson.createManifestJson)({
31
+ option,
32
+ hashDigestLength,
33
+ compilation,
34
+ assets
35
+ });
36
+ compilation.emitAsset(option.outputJsonFileName, new RawSource(JSON.stringify(manifestJson)));
37
+ });
38
+ });
39
+ });
40
+ }
41
+
42
+ }
43
+
44
+ exports.AddFileToManifestJson = AddFileToManifestJson;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeHashFromFileName = removeHashFromFileName;
7
+
8
+ function removeHashFromFileName(fileName, hashDigestLength) {
9
+ let outputFileName = '';
10
+ fileName.split('.').forEach(iterateValue => {
11
+ if (outputFileName === '') {
12
+ outputFileName += iterateValue;
13
+ } else if (iterateValue.length < hashDigestLength) {
14
+ outputFileName += `.${iterateValue}`;
15
+ }
16
+ });
17
+ return outputFileName;
18
+ }
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _webpack = require("webpack");
9
+
10
+ const pluginName = 'prefetch-preload-chunk-plugin';
11
+ /**
12
+ * NOTE: below functions are useable in webpack 5.79.0 as per day 28 Apr 2023
13
+ * Please checkout for future changes
14
+ * Here List of functions that take chunkId as Argument and return url without publicPath
15
+ * `__webpack_require__.u(chunkId)` - return's JS script urlPath
16
+ * `__webpack_require__.miniCssF(chunkId)` - return's CSS script urlPath
17
+ * `__webpack_require__.miniI18nF(chunkId)` - return's I18N script urlPath
18
+ *
19
+ *
20
+ * if url has .undefined. then chunk or url not valid or that file nt available
21
+ */
22
+
23
+ class ResourceHintsPlugin {
24
+ constructor({
25
+ publicPath,
26
+ resourceHints
27
+ }) {
28
+ this.resourceHints = resourceHints;
29
+ this.allowPrefetchingMultipleChunks = resourceHints.allowPrefetchingMultipleChunks;
30
+ this.publicPathsTemplateObj = {
31
+ js: publicPath,
32
+ css: publicPath,
33
+ i18n: publicPath
34
+ };
35
+ } // eslint-disable-next-line class-methods-use-this
36
+
37
+
38
+ apply(compiler) {
39
+ compiler.hooks.thisCompilation.tap(pluginName, compilation => {
40
+ const enabledChunks = new WeakSet();
41
+
42
+ const handler = (entryRuntimeChunk, set) => {
43
+ if (enabledChunks.has(entryRuntimeChunk)) {
44
+ return;
45
+ }
46
+
47
+ enabledChunks.add(entryRuntimeChunk);
48
+ set.add(_webpack.RuntimeGlobals.getFullHash);
49
+ set.add(_webpack.RuntimeGlobals.getChunkCssFilename);
50
+ const {
51
+ publicPathsTemplateObj
52
+ } = this;
53
+ compilation.addRuntimeModule(entryRuntimeChunk, // eslint-disable-next-line no-use-before-define
54
+ new ResourceHintsRuntimePlugin(set, {
55
+ compiler,
56
+ chunk: entryRuntimeChunk,
57
+ allowPrefetchingMultipleChunks: this.allowPrefetchingMultipleChunks,
58
+ publicPathsTemplateObj
59
+ }));
60
+ };
61
+
62
+ compilation.hooks.runtimeRequirementInTree.for(_webpack.RuntimeGlobals.ensureChunkHandlers).tap(pluginName, handler);
63
+ });
64
+ }
65
+
66
+ }
67
+
68
+ exports.default = ResourceHintsPlugin;
69
+
70
+ class ResourceHintsRuntimePlugin extends _webpack.RuntimeModule {
71
+ constructor(compiler, {
72
+ chunk,
73
+ publicPathsTemplateObj,
74
+ allowPrefetchingMultipleChunks
75
+ }) {
76
+ super('ResourceHintsRuntimePlugin loading', 10);
77
+ this.compiler = compiler;
78
+ this.publicPathsTemplateObj = publicPathsTemplateObj;
79
+ this.allowPrefetchingMultipleChunks = allowPrefetchingMultipleChunks;
80
+ this.chunk = chunk;
81
+ }
82
+
83
+ generate() {
84
+ const {
85
+ chunk
86
+ } = this;
87
+ const idNameMap = chunk.getChunkMaps().name;
88
+ const nameIdMap = {};
89
+ let needsMap = this.allowPrefetchingMultipleChunks;
90
+ Object.keys(idNameMap).forEach(key => {
91
+ const value = idNameMap[key];
92
+ nameIdMap[value] = key;
93
+
94
+ if (key !== value) {
95
+ needsMap = true;
96
+ }
97
+ });
98
+ const {
99
+ js: jsPP = '',
100
+ css: cssPP = '',
101
+ i18n: i18nPP = ''
102
+ } = this.publicPathsTemplateObj;
103
+ return _webpack.Template.asString([`
104
+ const preloadedChunks = {};
105
+ const nameToChunkIdMap = ${JSON.stringify(needsMap ? nameIdMap : {})};
106
+ const chunkNames = Object.keys(nameToChunkIdMap);
107
+
108
+ function createLinkTag(href, rel) {
109
+ let link = document.createElement("link");
110
+ link.href = href;
111
+ link.rel = rel;
112
+ if(href.endsWith(".css")) {
113
+ link.as="style";
114
+ } else if (href.endsWith(".js")) {
115
+ link.as="script";
116
+ }
117
+ document.head.appendChild(link);
118
+ }
119
+ function isValidUrl(url) {
120
+ //return !url.includes(".undefined.");
121
+ return url.indexOf(".undefined.") === -1;
122
+ }
123
+ function loadAsPreloadOrPrefetch(_chunkId, rel) {
124
+ let chunkId = ${_webpack.RuntimeGlobals.require}.getChunkId(_chunkId);
125
+ // ${_webpack.RuntimeGlobals.require}.e(chunkId);
126
+ if(__webpack_require__.O.j(chunkId) || preloadedChunks[chunkId]) {
127
+ preloadedChunks[chunkId] = true;
128
+ // console.log("skipped loadAsPreloadOrPrefetch", _chunkId, chunkId, rel);
129
+ return;
130
+ }
131
+ const jsUrl = ${jsPP} + __webpack_require__.u(chunkId);
132
+ const cssUrl = ${cssPP} + __webpack_require__.miniCssF(chunkId);
133
+ isValidUrl(jsUrl) && createLinkTag(jsUrl, rel);
134
+ isValidUrl(cssUrl) && createLinkTag(cssUrl, rel);
135
+ if(__webpack_require__.miniI18nF) {
136
+ const i18nUrl = ${i18nPP} + __webpack_require__.miniI18nF(chunkId);
137
+ isValidUrl(i18nUrl) && createLinkTag(i18nUrl, rel);
138
+ }
139
+ }
140
+
141
+ ${_webpack.RuntimeGlobals.require}.getChunkId = function getChunkId(chunkId) {
142
+ ${needsMap ? 'chunkId = nameToChunkIdMap[chunkId]||chunkId;' : ''}
143
+ return chunkId;
144
+ }
145
+ ${_webpack.RuntimeGlobals.require}.getChunkIds = function getChunkIds(chunkId) {
146
+ ${// eslint-disable-next-line no-nested-ternary
147
+ this.allowPrefetchingMultipleChunks ? `
148
+ const isRegExAsChunkId = chunkId instanceof RegExp;
149
+ if(isRegExAsChunkId) {
150
+ return chunkNames.filter(chunkName => chunkId.test(chunkName)).map(chunkName => nameToChunkIdMap[chunkName]);
151
+ }` : ''}
152
+ return [${_webpack.RuntimeGlobals.require}.getChunkId(chunkId)];
153
+ }
154
+ // Prefetch a chunk (${pluginName})
155
+ ${_webpack.RuntimeGlobals.require}.pfc = function prefetchChunk(chunkId) {
156
+ loadAsPreloadOrPrefetch(chunkId, "prefetch");
157
+ ${this.allowPrefetchingMultipleChunks ? `
158
+ let chunkIds = ${_webpack.RuntimeGlobals.require}.getChunkIds(chunkId)
159
+ chunkIds.forEach(idOfAChunk => {
160
+ // ${_webpack.RuntimeGlobals.require}.e(idOfAChunk);
161
+ loadAsPreloadOrPrefetch(idOfAChunk, "prefetch");
162
+ })` : 'loadAsPreloadOrPrefetch(chunkId, "prefetch");'}
163
+ };
164
+
165
+ // Preload a chunk (${pluginName})
166
+ ${_webpack.RuntimeGlobals.require}.plc = function preloadChunk(chunkId) {
167
+ ${this.allowPrefetchingMultipleChunks ? `
168
+ let chunkIds = ${_webpack.RuntimeGlobals.require}.getChunkIds(chunkId)
169
+ chunkIds.forEach(idOfAChunk => {
170
+ // ${_webpack.RuntimeGlobals.require}.e(idOfAChunk);
171
+ loadAsPreloadOrPrefetch(idOfAChunk, "preload");
172
+ })` : 'loadAsPreloadOrPrefetch(chunkId, "preload");'}
173
+ };
174
+ ` // `// Prefetch a chunk (${pluginName})`,
175
+ // `${RuntimeGlobals.require}.pfc = function prefetchChunk(chunkId) {`,
176
+ // Template.indent([
177
+ // `chunkId = ${RuntimeGlobals.require}.getChunkId(chunkId)`,
178
+ // `${RuntimeGlobals.require}.e(chunkId);`
179
+ // ]),
180
+ // '};',
181
+ // `// Preload a chunk (${pluginName})`,
182
+ // `${RuntimeGlobals.require}.pfc = function prefetchChunk(chunkId) {`,
183
+ // Template.indent([
184
+ // `chunkId = ${RuntimeGlobals.require}.getChunkId(chunkId)`,
185
+ // `${RuntimeGlobals.require}.e(chunkId);`
186
+ // ]),
187
+ // '};'
188
+ ]);
189
+ }
190
+
191
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
9
+
10
+ var _JavascriptModulesPlugin = _interopRequireDefault(require("webpack/lib/javascript/JavascriptModulesPlugin"));
11
+
12
+ var _replaceCssDirTemplate = require("./replaceCssDirTemplate");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ // import { JavascriptModulesPlugin } from 'webpack';
17
+ const pluginName = 'OverwriteCssPathForRTL';
18
+
19
+ class OverwriteCssPathForRTL {
20
+ constructor(options = {
21
+ dirVarName: 'document.dir'
22
+ }) {
23
+ this.dirVarName = options.dirVarName || 'document.dir';
24
+ this.templateLabel = options.templateLabel || '{{--dir}}';
25
+ }
26
+
27
+ overwriteCssPathinHTML(compilation) {
28
+ // NOTE: need to reconsider It is not working as expected
29
+ _htmlWebpackPlugin.default.getHooks(compilation).beforeAssetTagGeneration.tap(pluginName, data => {
30
+ const {
31
+ assets
32
+ } = data;
33
+ return { ...data,
34
+ assets: { ...assets,
35
+ css: assets.css && (0, _replaceCssDirTemplate.replaceCssDirTemplateMapper)(assets.css, this.templateLabel)
36
+ }
37
+ };
38
+ });
39
+ }
40
+
41
+ overwriteCssPathinRequireEnsure(compilation, compiler) {
42
+ const {
43
+ RawSource
44
+ } = compiler.webpack.sources;
45
+
46
+ _JavascriptModulesPlugin.default.getCompilationHooks(compilation).renderMain.tap(pluginName, source => {
47
+ const templateText = `"+(${this.dirVarName} === "rtl" ? "rtl": "ltr")+"`;
48
+ const replacedStr = source.source().replace(/\[dir\]/g, templateText);
49
+ return new RawSource(replacedStr);
50
+ });
51
+ }
52
+
53
+ apply(compiler) {
54
+ compiler.hooks.thisCompilation.tap(pluginName, compilation => {
55
+ this.overwriteCssPathinHTML(compilation);
56
+ this.overwriteCssPathinRequireEnsure(compilation, compiler);
57
+ });
58
+ }
59
+
60
+ }
61
+
62
+ exports.default = OverwriteCssPathForRTL;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RtlCssPlugin = void 0;
7
+
8
+ var _webpack = require("webpack");
9
+
10
+ var _OverwriteCssPathForRTL = _interopRequireDefault(require("./OverwriteCssPathForRTL"));
11
+
12
+ var _RTLSplitPlugin = require("../../../../postcss/custom_postcss_plugins/RTLSplitPlugin");
13
+
14
+ var _utils = require("../../utils");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ // import HtmlWebpackPlugin from 'html-webpack-plugin';
19
+ // import rtlcss from 'rtlcss';
20
+ const pluginName = 'RtlCssPlugin';
21
+
22
+ class RtlCssPlugin {
23
+ constructor(options = {}) {
24
+ /**
25
+ * @typedef {Object} Options
26
+ * @property {String} dirVarName
27
+ * @property {Boolean} sourcemap
28
+ * @property {Object} config
29
+ */
30
+ this.options = {
31
+ // dirVarName: options.dirVarName || 'document.dir',
32
+ sourcemap: options.sourcemap,
33
+ config: options.config
34
+ };
35
+ this.templateLabel = options.templateLabel || '{{--dir}}';
36
+ this.dirVarName = options.dirVarName || 'document.dir';
37
+ this.rtlSplitOptions = {
38
+ disableMinifySelector: options.disableMinifySelector
39
+ };
40
+ }
41
+
42
+ apply(compiler) {
43
+ const {
44
+ RawSource
45
+ } = compiler.webpack.sources;
46
+ new _OverwriteCssPathForRTL.default({
47
+ templateLabel: this.templateLabel,
48
+ dirVarName: this.dirVarName
49
+ }).apply(compiler); // const { filename, sourcemap, config } = this.options;
50
+ // const { devtool } = compiler.options;
51
+ // const postcssOptions = {
52
+ // map: (sourcemap === undefined && !!devtool) || !!sourcemap
53
+ // };
54
+
55
+ compiler.hooks.compilation.tap(pluginName, compilation => {
56
+ // compilation.hooks.shouldGenerateChunkAssets.tap(pluginName, (...args) => {
57
+ // console.log('shouldGenerateChunkAssets', args);
58
+ // });
59
+ compilation.hooks.processAssets.tap({
60
+ name: pluginName,
61
+ stage: _webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COMPATIBILITY
62
+ }, assets => {
63
+ Object.keys(assets).filter(_utils.isCss).filter(_utils.isDirRelatedCss).forEach(chunkFilename => {
64
+ const {
65
+ source: asset
66
+ } = compilation.getAsset(chunkFilename);
67
+ const sourceStr = asset.source();
68
+ const {
69
+ ltr,
70
+ rtl
71
+ } = (0, _RTLSplitPlugin.separateRtlAndLtr)(sourceStr, this.rtlSplitOptions);
72
+ const ltrFilename = chunkFilename.replace('[dir]', 'ltr');
73
+ const rtlFilename = chunkFilename.replace('[dir]', 'rtl');
74
+ compilation.renameAsset(chunkFilename, ltrFilename);
75
+ compilation.updateAsset(ltrFilename, new RawSource(ltr));
76
+ compilation.emitAsset(rtlFilename, new RawSource(rtl));
77
+ });
78
+ });
79
+ });
80
+ }
81
+
82
+ }
83
+
84
+ exports.RtlCssPlugin = RtlCssPlugin;
@@ -0,0 +1,34 @@
1
+ # RTL Split
2
+
3
+ we are doing in build time generating rtl related css code by using @zohodesk/postcss-rt npm.
4
+ It was automated, That postcss plugin create rtl reacted css and put them into same file, with css selector [dir=rtl] and ltr realted css with [dir=ltr].
5
+ Here is problem mostly no one need rtl and ltr related css at the same time in browser,
6
+ we are try to split them by [dir] and load which type of css is needed.
7
+ For this purpose we created RTL Split Plugin
8
+
9
+ # To Try it out rtl-ltr split
10
+
11
+ ### how to use this feature?
12
+
13
+ to use this feature use have give the below oprtions
14
+ `package.json`
15
+
16
+ ```json
17
+ {
18
+ /// ...some things
19
+ "react-cli": {
20
+ // ...some things
21
+ "css": {
22
+ "plugins": {
23
+ "rtlSplit": {
24
+ "enableRTLSplit": true,
25
+ "templateLabel": "{{--dir}}", // this is for html template css file path dir template
26
+ "disableMinifySelector": false,
27
+ "dirVarName": "document.dir" // this will be used for download css based on dir
28
+ }
29
+ }
30
+ }
31
+ // ...some things
32
+ }
33
+ }
34
+ ```
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.replaceCssDirTemplate = replaceCssDirTemplate;
7
+ exports.replaceCssDirTemplateMapper = replaceCssDirTemplateMapper;
8
+ exports.replaceI18nLocalTemplate = replaceI18nLocalTemplate;
9
+ exports.replaceI18nLocaleTemplateMapper = replaceI18nLocaleTemplateMapper;
10
+
11
+ function replaceCssDirTemplate(filePath, cssDirTemplate) {
12
+ return filePath // added for efc and service worker handling
13
+ .replaceAll('[dir]', cssDirTemplate).replace('.ltr.css', `.${cssDirTemplate}.css`);
14
+ }
15
+
16
+ function replaceCssDirTemplateMapper(assets, cssDirTemplate) {
17
+ return assets.map(filePath => replaceCssDirTemplate(filePath, cssDirTemplate));
18
+ }
19
+
20
+ function replaceI18nLocalTemplate(filePath, localeTemplate) {
21
+ return filePath // added for efc and service worker handling
22
+ .replaceAll('[locale]', localeTemplate);
23
+ }
24
+
25
+ function replaceI18nLocaleTemplateMapper(assets, localeTemplate) {
26
+ return assets.map(filePath => replaceI18nLocalTemplate(filePath, localeTemplate));
27
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hasPrevNodeIgnore = hasPrevNodeIgnore;
7
+ exports.isAtRule = isAtRule;
8
+ exports.isInsideMediaQuery = isInsideMediaQuery;
9
+
10
+ function hasPrevNodeIgnore(index, prevNode, ignoreComment) {
11
+ return index !== 0 && prevNode && prevNode.type && prevNode.type === 'comment' && prevNode.text.toLowerCase() === ignoreComment;
12
+ }
13
+
14
+ function isAtRule(rule) {
15
+ return rule.parent && rule.parent.type === 'atrule';
16
+ }
17
+
18
+ function isInsideMediaQuery(rule) {
19
+ return !!(isAtRule(rule) && rule.parent.name === 'media');
20
+ }
@@ -0,0 +1,78 @@
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 _selectorWeightPrefixAdder = require("./selectorWeightPrefixAdder");
13
+
14
+ var _checkIsPatternsMatchFilename = require("../../loaderConfigs/checkIsPatternsMatchFilename");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ class SelectorWeightPlugin {
19
+ constructor(options = {}) {
20
+ this.options = {
21
+ selectorWeightConfig: options.configFile,
22
+ defaultSelector: options.defaultSelector,
23
+ customFileDetails: options.customFileDetails,
24
+ excludeStrings: options.excludeStrings,
25
+ patterns: options.patterns
26
+ };
27
+ }
28
+
29
+ apply(compiler) {
30
+ const {
31
+ defaultSelector,
32
+ customFileDetails,
33
+ excludeStrings,
34
+ patterns
35
+ } = this.options;
36
+
37
+ const rawdata = _fs.default.readFileSync(customFileDetails);
38
+
39
+ const data = JSON.parse(rawdata);
40
+ compiler.hooks.compilation.tap('selector-weight-rewrite', compilation => {
41
+ compilation.hooks.optimizeModules.tap('selector-weight-rewrite', modules => {
42
+ const mods = Array.from(modules).filter(x => x.type.includes('css'));
43
+ mods.forEach(module => {
44
+ const filename = module.issuer.resource;
45
+
46
+ if (!(0, _checkIsPatternsMatchFilename.checkIsPatternsMatchFilename)(patterns, filename)) {
47
+ return;
48
+ }
49
+ /*
50
+
51
+ filename : Deskapp.module.css ?
52
+ data :
53
+ {
54
+ "DeskApp.module.css": {"defaultSelector" : ".desk_app_ui "}
55
+ }
56
+ selectorWeightConfig :
57
+ defaultSelector : .zoho_desk_ui
58
+
59
+ case filename = 'DeskApp.module.css' ?
60
+ data[filename].defaultSelector = '.desk_app_ui'
61
+ case filename is different ?
62
+ defaultSelector = '.zoho_desk_ui'
63
+ */
64
+
65
+
66
+ const rootOriginal = _postcss.default.parse(module.content); // eslint-disable-next-line no-param-reassign
67
+
68
+
69
+ module.content = (0, _selectorWeightPrefixAdder.selectorWeightPrefixAdder)(rootOriginal, data[filename] ? data[filename].defaultSelector : defaultSelector, excludeStrings).toString();
70
+ });
71
+ });
72
+ });
73
+ }
74
+
75
+ }
76
+
77
+ var _default = SelectorWeightPlugin;
78
+ exports.default = _default;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.selectorWeightPrefixAdder = selectorWeightPrefixAdder;
7
+
8
+ var _classHandling = require("./classHandling");
9
+
10
+ function selectorWeightPrefixAdder(rootOriginal, selector, excludeStrings) {
11
+ rootOriginal.walkRules((rule, index) => {
12
+ const prevNode = rootOriginal.nodes[index - 1];
13
+
14
+ if ((0, _classHandling.hasPrevNodeIgnore)(index, prevNode, 'updateselector:ignore')) {
15
+ return;
16
+ } // TODO: need to verify cases
17
+ // if (!isInsideMediaQuery(rule)) {
18
+ // return;
19
+ // }
20
+
21
+
22
+ const selectorArr = rule.selector.split(',');
23
+ selectorArr.forEach((singleSelectorStr, index) => {
24
+ if (excludeStrings.includes(singleSelectorStr.trim())) {
25
+ return;
26
+ }
27
+
28
+ if (singleSelectorStr.includes(']')) {
29
+ if (singleSelectorStr.slice(singleSelectorStr.lastIndexOf(']') + 2).trim() === '') {
30
+ return;
31
+ }
32
+
33
+ selectorArr[index] = `${singleSelectorStr.slice(0, singleSelectorStr.lastIndexOf(']') + 1).trim()} ${selector}${singleSelectorStr.slice(singleSelectorStr.lastIndexOf(']') + 2).trim()}`;
34
+ return;
35
+ }
36
+
37
+ selectorArr[index] = `${selector}${singleSelectorStr}`;
38
+ }); // eslint-disable-next-line no-param-reassign
39
+
40
+ rule.selector = selectorArr.join(',\n');
41
+ });
42
+ return rootOriginal;
43
+ } // function convertSelectorWithoutAttribute (selector, conjunction) {
44
+ // const front = selector
45
+ // .slice(0, selector.lastIndexOf(']') + 1)
46
+ // .trim();
47
+ // const back = selector
48
+ // .slice(selector.lastIndexOf(']') + 2)
49
+ // .trim();
50
+ // return `${front} ${conjunction}${back}`;
51
+ // }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.windowsModification = windowsModification;
7
+ exports.windowsModificationFile = windowsModificationFile;
8
+ const isWin = process.platform === 'win32';
9
+
10
+ function windowsModification(array) {
11
+ return isWin ? array && Array.isArray(array) && array.map(r => r.replace(/\//g, '\\')) : array;
12
+ }
13
+
14
+ function windowsModificationFile(filename) {
15
+ return isWin ? filename.replace(/\//g, '\\') : filename;
16
+ } // module.exports = { windowsModification, windowsModificationFile };