@zohodesk/react-cli 0.0.1-exp.175.1 → 0.0.1-exp.176.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 (250) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -180
  3. package/.prettierrc +6 -6
  4. package/README.md +1025 -1028
  5. package/bin/cli.js +482 -482
  6. package/cert/Tsicsezwild-22-23.crt +37 -37
  7. package/cert/Tsicsezwild-22-23.key +27 -27
  8. package/docs/CustomChunks.md +26 -26
  9. package/docs/DevStart.md +18 -18
  10. package/docs/HoverActive.md +12 -12
  11. package/docs/InstallNode.md +28 -28
  12. package/docs/SelectorWeight.md +6 -0
  13. package/docs/TODOS.md +10 -10
  14. package/docs/ValueReplacer.md +60 -60
  15. package/docs/VariableConversion.md +719 -678
  16. package/docs/warnings_while_install.txt +35 -35
  17. package/files/eslintrc.js +62 -62
  18. package/files/prettierrc.js +3 -3
  19. package/lib/babel/cmjs-plugins-presets.js +4 -0
  20. package/lib/babel/es-plugins-presets.js +4 -0
  21. package/lib/common/getEntries.js +10 -0
  22. package/lib/common/getPublicPathConfig.js +6 -0
  23. package/lib/common/index.js +5 -0
  24. package/lib/common/splitChunks.js +13 -2
  25. package/lib/common/sslcertUpdater.js +17 -6
  26. package/lib/common/templateParameters.js +2 -0
  27. package/lib/common/testPattern.js +21 -10
  28. package/lib/common/valueReplacer.js +15 -0
  29. package/lib/configs/jest.config.js +9 -0
  30. package/lib/configs/libAlias.js +2 -4
  31. package/lib/configs/webpack.component.umd.config.js +5 -0
  32. package/lib/configs/webpack.css.umd.config.js +13 -5
  33. package/lib/configs/webpack.dev.config.js +36 -2
  34. package/lib/configs/webpack.docs.config.js +21 -1
  35. package/lib/configs/webpack.impact.config.js +19 -1
  36. package/lib/configs/webpack.prod.config.js +37 -3
  37. package/lib/hooks/docsProptypeHook.js +7 -3
  38. package/lib/jest/commitedFilesResult.js +45 -3
  39. package/lib/jest/coverageCollector.js +11 -0
  40. package/lib/jest/jsonMaker.js +6 -0
  41. package/lib/jest/preProcessors/cssPreprocessor.js +8 -0
  42. package/lib/jest/preProcessors/jsPreprocessor.js +2 -0
  43. package/lib/jest/preProcessors/otherFilesPreprocessor.js +3 -0
  44. package/lib/jest/result.js +22 -0
  45. package/lib/jest/run.js +17 -6
  46. package/lib/jest/setup.js +57 -5
  47. package/lib/loaderUtils/configsAssetsLoaders.js +44 -34
  48. package/lib/loaderUtils/getCSSLoaders.js +35 -20
  49. package/lib/loaderUtils/getDevJsLoaders.js +8 -0
  50. package/lib/loaderUtils/index.js +3 -0
  51. package/lib/loaderUtils/windowsModification.js +11 -0
  52. package/lib/loaders/docsLoader.js +7 -0
  53. package/lib/loaders/docsPropsLoader.js +7 -3
  54. package/lib/loaders/fileBountryLoader.js +2 -0
  55. package/lib/loaders/fileLoader.js +22 -11
  56. package/lib/loaders/scriptInstrumentLoader.js +13 -5
  57. package/lib/loaders/selectorMappingLoader.js +25 -7
  58. package/lib/loaders/workerLoader.js +29 -13
  59. package/lib/middlewares/HMRMiddleware.js +26 -13
  60. package/lib/middlewares/SSTMiddleware.js +3 -0
  61. package/lib/pluginUtils/configHtmlWebpackPlugins.js +9 -3
  62. package/lib/pluginUtils/getDevPlugins.js +68 -22
  63. package/lib/pluginUtils/getDocsPlugins.js +10 -1
  64. package/lib/pluginUtils/getLibraryImactPlugins.js +5 -4
  65. package/lib/pluginUtils/getLibraryPlugins.js +5 -0
  66. package/lib/pluginUtils/getProdPlugins.js +77 -28
  67. package/lib/pluginUtils/getServerPlugins.js +5 -0
  68. package/lib/pluginUtils/getUMDCSSPlugins.js +7 -0
  69. package/lib/pluginUtils/getUMDComponentPlugins.js +7 -0
  70. package/lib/pluginUtils/index.js +8 -0
  71. package/lib/plugins/CdnChangePlugin.js +14 -0
  72. package/lib/plugins/CleanupStatsPlugin.js +5 -0
  73. package/lib/plugins/EFCPlugin.js +34 -23
  74. package/lib/plugins/EFCPlugin.md +6 -6
  75. package/lib/plugins/EFCTemplatePlugin.js +32 -23
  76. package/lib/plugins/I18NInjectIntoIndexPlugin.js +38 -12
  77. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +17 -12
  78. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +10 -4
  79. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +77 -46
  80. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +59 -44
  81. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +30 -21
  82. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  83. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  84. package/lib/plugins/I18nSplitPlugin/index.js +80 -70
  85. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +12 -2
  86. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +1 -0
  87. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +5 -0
  88. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +6 -0
  89. package/lib/plugins/I18nSplitPlugin/utils/index.js +4 -0
  90. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +20 -2
  91. package/lib/plugins/ManifestPlugin.js +17 -0
  92. package/lib/plugins/ModuleStatsPlugin.js +23 -0
  93. package/lib/plugins/OptimizeJSPlugin.js +7 -0
  94. package/lib/plugins/PublicPathCallbackPlugin.js +10 -0
  95. package/lib/plugins/PublicPathChangePlugin.js +36 -4
  96. package/lib/plugins/ReportGeneratePlugin.js +30 -4
  97. package/lib/plugins/RequireVariablePublicPlugin.js +6 -0
  98. package/lib/plugins/ResourceHintsPlugin.js +27 -20
  99. package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +17 -12
  100. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +22 -15
  101. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  102. package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +5 -2
  103. package/lib/plugins/ScriptInstrumentPlugin.js +7 -0
  104. package/lib/plugins/SelectorPlugin.js +97 -0
  105. package/lib/plugins/ServiceWorkerPlugin.js +29 -13
  106. package/lib/plugins/ShadowDOMSupportPlugin.js +40 -3
  107. package/lib/plugins/SourceMapHookPlugin.js +9 -0
  108. package/lib/plugins/TPHashMappingPlugin.js +19 -5
  109. package/lib/plugins/UglifyCSSPlugin.js +9 -0
  110. package/lib/plugins/UnusedFilesFindPlugin.js +35 -2
  111. package/lib/plugins/VariableConversionCollector.js +322 -0
  112. package/lib/plugins/composeCommonPlugin.js +30 -0
  113. package/lib/plugins/index.js +19 -0
  114. package/lib/plugins/libraryImpactPlugin.js +32 -0
  115. package/lib/plugins/webpackwatchrunplugin.js +5 -0
  116. package/lib/postcss-plugins/ExcludePlugin.js +4 -0
  117. package/lib/postcss-plugins/RTLSplitPlugin.js +37 -24
  118. package/lib/postcss-plugins/ValueReplacer.js +6 -9
  119. package/lib/postcss-plugins/__test__/hoverActivePlugin.spec.js +3 -0
  120. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  121. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  122. package/lib/postcss-plugins/hoverActivePlugin.js +69 -33
  123. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +42 -13
  124. package/lib/postcss-plugins/variableModificationPlugin/index.js +216 -141
  125. package/lib/postcss-plugins/variableModifier.js +20 -13
  126. package/lib/schemas/index.js +23 -4
  127. package/lib/servers/clusterHubServer.js +10 -0
  128. package/lib/servers/devBuild.js +24 -13
  129. package/lib/servers/docsServer.js +2 -0
  130. package/lib/servers/docsServerCore.js +21 -0
  131. package/lib/servers/getCliPath.js +9 -0
  132. package/lib/servers/helpServer.js +5 -0
  133. package/lib/servers/httpsOptions.js +4 -0
  134. package/lib/servers/impactServer.js +34 -2
  135. package/lib/servers/mockserver.js +9 -0
  136. package/lib/servers/nowatchserver.js +34 -12
  137. package/lib/servers/scrServer.js +20 -13
  138. package/lib/servers/server.js +35 -7
  139. package/lib/servers/ssServer.js +16 -0
  140. package/lib/sh/pre-commit.sh +34 -34
  141. package/lib/sh/reportPublish.sh +45 -45
  142. package/lib/templates/CoverageScriptTemplate.js +14 -0
  143. package/lib/templates/WMSTemplate.js +12 -6
  144. package/lib/utils/babelPresets.js +2 -0
  145. package/lib/utils/buildstats.html +148 -148
  146. package/lib/utils/clean.js +8 -2
  147. package/lib/utils/copy.js +6 -0
  148. package/lib/utils/copyTimezones.js +8 -0
  149. package/lib/utils/createEventStream.js +4 -0
  150. package/lib/utils/cssClassNameGenerate.js +19 -3
  151. package/lib/utils/cssURLReplacer.js +25 -0
  152. package/lib/utils/dependencyPostPublish.js +9 -0
  153. package/lib/utils/fileUtils.js +26 -0
  154. package/lib/utils/folderIterator.js +10 -0
  155. package/lib/utils/getComponents.js +21 -0
  156. package/lib/utils/getCurrentBranch.js +5 -0
  157. package/lib/utils/getDependenciesImpactList.js +21 -0
  158. package/lib/utils/getHash.js +7 -0
  159. package/lib/utils/getIp.js +2 -0
  160. package/lib/utils/getOptions.js +39 -14
  161. package/lib/utils/getServerURL.js +7 -0
  162. package/lib/utils/index.js +47 -2
  163. package/lib/utils/init.js +1 -0
  164. package/lib/utils/initPreCommitHook.js +29 -6
  165. package/lib/utils/jsonHelper.js +19 -2
  166. package/lib/utils/libraryImpactConfig.js +2 -0
  167. package/lib/utils/lint/addScripts.js +5 -2
  168. package/lib/utils/lint/checkExistingConfig.js +12 -3
  169. package/lib/utils/lint/copyConfigs.js +3 -0
  170. package/lib/utils/lint/index.js +9 -0
  171. package/lib/utils/lint/lintScripts.js +1 -0
  172. package/lib/utils/lint/lintSetup.js +4 -3
  173. package/lib/utils/lint/lintStagedPreCommitHook.js +1 -0
  174. package/lib/utils/lint/question.js +7 -0
  175. package/lib/utils/lintReporter.js +20 -0
  176. package/lib/utils/mailSender.js +7 -0
  177. package/lib/utils/pullOrigin.js +4 -0
  178. package/lib/utils/reinstallDependencies.js +28 -0
  179. package/lib/utils/removeAttributes.js +7 -0
  180. package/lib/utils/repoClone.js +27 -2
  181. package/lib/utils/request.js +12 -0
  182. package/lib/utils/resultSchema.json +73 -73
  183. package/lib/utils/rtl.js +16 -4
  184. package/lib/utils/setEnvVariables.js +2 -0
  185. package/lib/utils/ssTestHack.js +10 -0
  186. package/lib/utils/switchBranch.js +4 -0
  187. package/lib/utils/urlConcat.js +4 -0
  188. package/lib/utils/useExitCleanup.js +10 -9
  189. package/npm8.md +9 -9
  190. package/package.json +146 -146
  191. package/postpublish.js +6 -6
  192. package/templates/app/.eslintrc.js +140 -140
  193. package/templates/app/README.md +12 -12
  194. package/templates/app/app/index.html +24 -24
  195. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  196. package/templates/app/app/properties/i18nkeys.json +3 -3
  197. package/templates/app/docs/all.html +69 -69
  198. package/templates/app/mockapi/index.js +18 -18
  199. package/templates/app/package.json +37 -37
  200. package/templates/app/src/actions/SampleActions/index.js +37 -37
  201. package/templates/app/src/actions/index.js +65 -65
  202. package/templates/app/src/appUrls.js +19 -19
  203. package/templates/app/src/components/Alert/Alert.js +134 -134
  204. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  205. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  206. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  207. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  208. package/templates/app/src/components/Sample/SampleList.js +61 -61
  209. package/templates/app/src/components/Slider/Slider.css +41 -41
  210. package/templates/app/src/components/Slider/Slider.js +55 -55
  211. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  212. package/templates/app/src/containers/AppContainer/index.js +96 -96
  213. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  214. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  215. package/templates/app/src/containers/DevTools/index.js +10 -10
  216. package/templates/app/src/containers/Header/index.js +67 -67
  217. package/templates/app/src/containers/Header/index.module.css +43 -43
  218. package/templates/app/src/containers/Redirect/index.js +63 -63
  219. package/templates/app/src/containers/Redirector/index.js +47 -47
  220. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  221. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  222. package/templates/app/src/historyChange.js +5 -5
  223. package/templates/app/src/index.html +10 -10
  224. package/templates/app/src/index.js +24 -24
  225. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  226. package/templates/app/src/reducers/alertData.js +11 -11
  227. package/templates/app/src/reducers/index.js +6 -6
  228. package/templates/app/src/reducers/samples.js +19 -19
  229. package/templates/app/src/store/configureStore.dev.js +51 -51
  230. package/templates/app/src/store/configureStore.js +5 -5
  231. package/templates/app/src/store/configureStore.prod.js +26 -26
  232. package/templates/app/src/util/Common.js +5 -5
  233. package/templates/app/src/util/RequestAPI.js +132 -132
  234. package/templates/docs/all.html +249 -249
  235. package/templates/docs/component.html +178 -178
  236. package/templates/docs/components.html +221 -221
  237. package/templates/docs/css/b.min.css +6 -6
  238. package/templates/docs/css/component.css +42 -42
  239. package/templates/docs/css/componentTest.css +6 -6
  240. package/templates/docs/css/hopscotch.css +585 -585
  241. package/templates/docs/css/style.css +1022 -1022
  242. package/templates/docs/impactReportTemplate.html +154 -154
  243. package/templates/docs/index.html +1501 -1501
  244. package/templates/docs/js/active-line.js +72 -72
  245. package/templates/docs/js/b.min.js +7 -7
  246. package/templates/docs/js/codemirror.js +9680 -9680
  247. package/templates/docs/js/designTokens.js +334 -334
  248. package/templates/docs/js/j.min.js +4 -4
  249. package/templates/docs/js/javascript.js +874 -874
  250. package/templates/docs/js/matchbrackets.js +145 -145
@@ -1,24 +1,28 @@
1
1
  "use strict";
2
2
 
3
3
  var _postcss = _interopRequireDefault(require("postcss"));
4
+
4
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- /**
6
- * we have give support for ignore(exclude) comments
7
- * These are the comments' keyword
6
+
7
+ /**
8
+ * we have give support for ignore(exclude) comments
9
+ * These are the comments' keyword
8
10
  */
9
11
  const hoverIgnoreQuery = 'Hover:ignore',
10
- activeIgnoreQuery = 'Active:ignore',
11
- hoverActiveIgnoreQuery = 'HoverActive:ignore';
12
+ activeIgnoreQuery = 'Active:ignore',
13
+ hoverActiveIgnoreQuery = 'HoverActive:ignore';
12
14
  const medHoverIgnoreQuery = 'MedHover:ignore',
13
- medActiveIgnoreQuery = 'MedActive:ignore',
14
- medHoverActiveIgnoreQuery = 'MedHoverActive:ignore';
15
+ medActiveIgnoreQuery = 'MedActive:ignore',
16
+ medHoverActiveIgnoreQuery = 'MedHoverActive:ignore';
15
17
  let hoverMedQuerySuffix = '';
16
18
  let hoverNoneMedQuerySuffix = '';
17
19
  const ruleIgnoreCommentRegex = /(Hover:ignore|Active:ignore|HoverActive:ignore)/g;
18
20
  const mediaQueryIgnoreCommentRegex = /(MedHover:ignore|MedActive:ignore|MedHoverActive:ignore)/g;
21
+
19
22
  function isComment(node) {
20
23
  return node && node.type === 'comment' && node.text !== undefined;
21
24
  }
25
+
22
26
  function isHoverPresent(atrule) {
23
27
  let hoverPresent = false;
24
28
  atrule.walkRules(rule => {
@@ -28,6 +32,7 @@ function isHoverPresent(atrule) {
28
32
  });
29
33
  return hoverPresent;
30
34
  }
35
+
31
36
  function checkForUsualClass(root, sel) {
32
37
  let present = false;
33
38
  sel.split(',').forEach(value => {
@@ -42,24 +47,31 @@ function checkForUsualClass(root, sel) {
42
47
  });
43
48
  return present;
44
49
  }
50
+
45
51
  module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHoverActiveString => rootOriginal => {
46
52
  const hoverRules = [];
47
53
  const positionsObj = {};
48
54
  hoverMedQuerySuffix = mediaQueryHoverActiveString.hover;
49
55
  hoverNoneMedQuerySuffix = mediaQueryHoverActiveString.none;
56
+
50
57
  function isRuleHasIgnoreComment(index, type) {
51
58
  const prevNode = rootOriginal.nodes[index - 1];
59
+
52
60
  if (isComment(prevNode)) {
53
61
  return prevNode.text === type;
54
62
  }
63
+
55
64
  return false;
56
65
  }
66
+
57
67
  function isMediaQueryHasIgnoreComment(node, type) {
58
68
  if (isComment(node)) {
59
69
  return node.text === type;
60
70
  }
71
+
61
72
  return false;
62
73
  }
74
+
63
75
  function hasIgnoreComment({
64
76
  index,
65
77
  atrule,
@@ -68,11 +80,14 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
68
80
  if (type.match(mediaQueryIgnoreCommentRegex)) {
69
81
  return isMediaQueryHasIgnoreComment(atrule.nodes[index - 1], type.slice(3));
70
82
  }
83
+
71
84
  if (type.match(ruleIgnoreCommentRegex)) {
72
85
  return isRuleHasIgnoreComment(index, type);
73
86
  }
87
+
74
88
  return false;
75
89
  }
90
+
76
91
  function getPositionsOfHoverAndActiveMedQueries(parent) {
77
92
  const allNodes = rootOriginal.nodes;
78
93
  const hoverMediaQuery = `${parent.params} and ${hoverMedQuerySuffix}`;
@@ -83,6 +98,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
83
98
  };
84
99
  return positions;
85
100
  }
101
+
86
102
  function handleMedHoverAndHoverActiveIgnore(atrule, index) {
87
103
  return !hasIgnoreComment({
88
104
  atrule,
@@ -94,6 +110,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
94
110
  type: medHoverActiveIgnoreQuery
95
111
  });
96
112
  }
113
+
97
114
  function handleMedActiveAndHoverActiveIgnore(atrule, index) {
98
115
  return !hasIgnoreComment({
99
116
  atrule,
@@ -105,6 +122,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
105
122
  type: medHoverActiveIgnoreQuery
106
123
  });
107
124
  }
125
+
108
126
  function handleHoverAndHoverActiveIgnore(index) {
109
127
  return !hasIgnoreComment({
110
128
  index,
@@ -114,6 +132,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
114
132
  type: hoverActiveIgnoreQuery
115
133
  });
116
134
  }
135
+
117
136
  function handleActiveAndHoverActiveIgnore(index) {
118
137
  return !hasIgnoreComment({
119
138
  index,
@@ -123,6 +142,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
123
142
  type: hoverActiveIgnoreQuery
124
143
  });
125
144
  }
145
+
126
146
  function handleAllIgnoreCases(index) {
127
147
  return !hasIgnoreComment({
128
148
  index,
@@ -135,6 +155,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
135
155
  type: hoverActiveIgnoreQuery
136
156
  });
137
157
  }
158
+
138
159
  function mediaCommaQuery(rule, index) {
139
160
  if (rule.parent.params !== undefined && !rule.parent.params.includes('hover')) {
140
161
  //console.log(hovMed, actMed);
@@ -147,12 +168,16 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
147
168
  const actQueries = [];
148
169
  rule.selector.split(/\s*,\s*/).forEach(_subrule => {
149
170
  const subrule = _subrule.trim();
171
+
150
172
  const clone = rule.clone();
173
+
151
174
  if (subrule.includes('hover')) {
152
175
  clone.selector = subrule;
176
+
153
177
  if (handleMedHoverAndHoverActiveIgnore(rule.parent, index)) {
154
178
  hovQueries.push(subrule);
155
179
  }
180
+
156
181
  if (handleMedActiveAndHoverActiveIgnore(rule.parent, index)) {
157
182
  actQueries.push(subrule);
158
183
  }
@@ -160,11 +185,13 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
160
185
  newSelector += `${subrule}, `;
161
186
  }
162
187
  });
188
+
163
189
  if (hovQueries.length > 0) {
164
190
  const clone = rule.clone();
165
191
  clone.selector = hovQueries.join(',');
166
192
  hovMed.append(clone);
167
193
  }
194
+
168
195
  if (actQueries.length > 0) {
169
196
  const clone = rule.clone();
170
197
  clone.selector = actQueries.join(',');
@@ -172,24 +199,29 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
172
199
  selector: clone.selector.replace(/:hover/gi, ':active')
173
200
  }));
174
201
  }
202
+
175
203
  if (handleMedHoverAndHoverActiveIgnore(rule.parent, index)) {
176
204
  rule.selector = newSelector.substring(0, newSelector.length - 2);
177
205
  }
206
+
178
207
  if (rule.selector === '') {
179
208
  rule.remove();
180
209
  }
181
210
  }
182
211
  }
212
+
183
213
  function mediaQuery(rule, index) {
184
214
  if (rule.parent.params !== undefined && !rule.parent.params.includes('hover')) {
185
215
  const {
186
216
  hovMed,
187
217
  actMed
188
218
  } = getPositionsOfHoverAndActiveMedQueries(rule.parent);
219
+
189
220
  if (rule.selector.includes('hover') && hovMed !== undefined && rule.parent.type === 'atrule') {
190
221
  if (handleMedHoverAndHoverActiveIgnore(rule.parent, index)) {
191
222
  hovMed.append(rule);
192
223
  }
224
+
193
225
  if (handleMedActiveAndHoverActiveIgnore(rule.parent, index)) {
194
226
  actMed.append(rule.clone({
195
227
  selector: rule.selector.replace(/:hover/gi, ':active')
@@ -198,12 +230,14 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
198
230
  }
199
231
  }
200
232
  }
233
+
201
234
  function commaQuery(rule, index) {
202
235
  //console.log("comma" , rule.selector.split('\n'));
203
236
  let newSelector = '';
204
237
  const hovQueries = [];
205
238
  rule.selector.split(/\s*,\s*/).forEach(_subrule => {
206
239
  const subrule = _subrule.trim();
240
+
207
241
  if (subrule.includes('hover')) {
208
242
  // hoverRules.push({ rule: clone, index });
209
243
  hovQueries.push(subrule);
@@ -211,6 +245,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
211
245
  newSelector += `${subrule}, `;
212
246
  }
213
247
  });
248
+
214
249
  if (hovQueries.length > 0) {
215
250
  const clone = rule.clone();
216
251
  clone.selector = hovQueries.join(',');
@@ -219,20 +254,23 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
219
254
  index
220
255
  });
221
256
  }
257
+
222
258
  if (handleHoverAndHoverActiveIgnore(index)) {
223
259
  if (checkForUsualClass(rootOriginal, rule.selector)) {
224
260
  rule.selector = newSelector.substring(0, newSelector.length - 2).trim();
225
261
  }
226
262
  }
263
+
227
264
  if (rule.selector === '') {
228
265
  rule.remove();
229
266
  }
230
- }
267
+ } // Start by identifying all :hover rules
268
+
231
269
 
232
- // Start by identifying all :hover rules
233
270
  rootOriginal.walkAtRules(atrule => {
234
271
  const hoverQuery = `${atrule.params} and ${hoverMedQuerySuffix}`;
235
272
  const activeQuery = `${atrule.params} and ${hoverNoneMedQuerySuffix}`;
273
+
236
274
  if (isHoverPresent(atrule)) {
237
275
  if (!positionsObj[hoverQuery] && !positionsObj[activeQuery]) {
238
276
  rootOriginal.append({
@@ -258,17 +296,17 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
258
296
  // plus, space and other media queries
259
297
  //console.log("media", rule.selector)
260
298
  mediaQuery(rule, index);
261
- }
299
+ } // usual hover query
300
+
262
301
 
263
- // usual hover query
264
302
  if (!rule.selector.match(/,+| +|\++/g) && rule.parent !== undefined && rule.parent.name === undefined) {
265
303
  hoverRules.push({
266
304
  rule,
267
305
  index
268
306
  });
269
- }
307
+ } //usual hover query with ',' ' ' '+'
308
+
270
309
 
271
- //usual hover query with ',' ' ' '+'
272
310
  if (rule.selector.match(/,+| +|\++/g) && rule.parent.name === undefined) {
273
311
  if (rule.selector.includes(',')) {
274
312
  commaQuery(rule, index);
@@ -278,69 +316,66 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
278
316
  hoverRules.push({
279
317
  rule,
280
318
  index
281
- });
282
- //rule.remove();
319
+ }); //rule.remove();
283
320
  }
284
321
  }
285
322
  }
286
- });
287
- // If there are any :hover rules in the input, then create media queries
323
+ }); // If there are any :hover rules in the input, then create media queries
288
324
  // to automatically translate it into :active on touch-based devices
325
+
289
326
  if (hoverRules.length > 0) {
290
327
  // Create a media query targetting devices that actually support
291
328
  // hover
292
329
  const hoverQuery = rootOriginal.append({
293
330
  name: 'media',
294
331
  params: `${hoverMedQuerySuffix}`
295
- }).last;
296
- // Create a media query targetting devices that don't support hover
332
+ }).last; // Create a media query targetting devices that don't support hover
297
333
  // (ie. devices where we should fall back to :active instead)
334
+
298
335
  const activeQuery = rootOriginal.append({
299
336
  name: 'media',
300
337
  params: `${hoverNoneMedQuerySuffix}`
301
- }).last;
302
-
303
- // Loop through the hover rules and apply them to each of the media
338
+ }).last; // Loop through the hover rules and apply them to each of the media
304
339
  // queries
305
340
  // eslint-disable-next-line no-labels
341
+
306
342
  outerLoop: for (const hoverRule of hoverRules) {
307
343
  // determine if the rule has been nested inside another media
308
344
  // query; in that case bail out as we have no way of reliably
309
345
  // nesting these queries
310
346
  let parentRule = hoverRule.rule.parent;
347
+
311
348
  while (parentRule) {
312
349
  if (parentRule.type === 'atrule' && parentRule.name === 'media') {
313
350
  // eslint-disable-next-line no-labels
314
351
  continue outerLoop;
315
352
  }
316
- parentRule = parentRule.parent;
317
- }
318
353
 
319
- // Push a clone of the :hover rule 'as is' to queries where we
354
+ parentRule = parentRule.parent;
355
+ } // Push a clone of the :hover rule 'as is' to queries where we
320
356
  // expect the user's device to support hover
321
357
  // ieQuery.append(hoverRule.clone());
322
358
 
359
+
323
360
  if (handleHoverAndHoverActiveIgnore(hoverRule.index)) {
324
361
  hoverQuery.append(hoverRule.rule.clone());
325
- }
326
-
327
- // Push a clone of the :hover rule, where we transform the
362
+ } // Push a clone of the :hover rule, where we transform the
328
363
  // selector to :active to the query targetting devices that
329
364
  // don't support hover
365
+
366
+
330
367
  if (handleActiveAndHoverActiveIgnore(hoverRule.index)) {
331
368
  activeQuery.append(hoverRule.rule.clone({
332
369
  selector: hoverRule.rule.selector.replace(/:hover/gi, ':active')
333
370
  }));
334
- }
371
+ } // remove legacy rule from output
372
+
335
373
 
336
- // remove legacy rule from output
337
374
  if (handleAllIgnoreCases(hoverRule.index)) {
338
375
  hoverRule.rule.remove();
339
376
  }
340
377
  }
341
- }
342
-
343
- // rootOriginal.walkAtRules(atrule => {
378
+ } // rootOriginal.walkAtRules(atrule => {
344
379
  // if (
345
380
  // (atrule !== undefined &&
346
381
  // atrule.nodes !== undefined &&
@@ -350,4 +385,5 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
350
385
  // atrule.remove();
351
386
  // }
352
387
  // });
388
+
353
389
  });
@@ -4,28 +4,57 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ErrorHandler = void 0;
7
+
7
8
  class ErrorHandler {
8
9
  constructor(allowedErrs) {
9
10
  this.errors = [];
11
+ this.errorTable = [];
10
12
  this.allowedErrs = allowedErrs;
13
+ Object.assign(this, {
14
+ DECLARATION_IGNORED: errObj => this.addError(` prop: ${errObj.decl.prop} ,\n value : ${errObj.decl.value} ,\n filename : ${errObj.filename} ,\n filepath : ${errObj.path} ,\n line : ${errObj.decl.source.start.line} ,\n message : Declaration Ignored`),
15
+ DECIMAL_CHECK: errObj => this.addError(` prop: ${errObj.decl.prop} ,\n value : ${errObj.decl.value} ,\n filename : ${errObj.filename} ,\n filepath : ${errObj.path} ,\n line : ${errObj.decl.source.start.line} ,\n unit : ${errObj.unitErrorVal} ,\n message : ${errObj.message}`),
16
+ DECIMAL_REJECT: errObj => this.addError(` prop: ${errObj.decl.prop} ,\n value : ${errObj.decl.value} ,\n filename : ${errObj.filename} ,\n filepath : ${errObj.path} ,\n line : ${errObj.decl.source.start.line} ,\n unit : ${errObj.unitErrorVal} ,\n message : ${errObj.message}`),
17
+ UNIT_ERROR: errObj => this.addError(` prop: ${errObj.decl.prop} ,\n value : ${errObj.decl.value} ,\n filename : ${errObj.filename} ,\n filepath : ${errObj.path} ,\n line : ${errObj.decl.source.start.line} ,\n unit : ${errObj.unitErrorVal} ,\n message : ${errObj.message}`),
18
+ RANGE_ERROR: errObj => this.addError(` prop: ${errObj.decl.prop} ,\n value : ${errObj.decl.value} ,\n filename : ${errObj.filename} ,\n filepath : ${errObj.path} ,\n line : ${errObj.decl.source.start.line} ,\n message : ${errObj.message}\r`),
19
+ VARIABLE_PRESENT: errObj => this.addError(` prop: ${errObj.decl.prop} ,\n value : ${errObj.decl.value} ,\n filename : ${errObj.filename} ,\n filepath : ${errObj.path} ,\n line : ${errObj.decl.source.start.line} ,\n message : ${errObj.message}`),
20
+ MULTIPLE_OCCURANCES: errObj => this.addError(` prop: ${errObj.decl.prop} ,\n value : ${errObj.decl.value} ,\n filename : ${errObj.filename} ,\n filepath : ${errObj.path} ,\n line : ${errObj.decl.source.start.line} ,\n message : ${errObj.message}`)
21
+ });
22
+ }
23
+
24
+ setAllowedErrs(allErrs) {
25
+ this.allowedErrs = allErrs;
26
+ ['DECLARATION_IGNORED', 'DECIMAL_CHECK', 'DECIMAL_REJECT', 'UNIT_ERROR', 'RANGE_ERROR', 'VARIABLE_PRESENT', 'MULTIPLE_OCCURANCES'].forEach(err => {
27
+ if (!this.allowedErrs[err]) {
28
+ this[err] = () => null;
29
+ }
30
+ });
11
31
  }
32
+
12
33
  addError(errstr) {
13
34
  this.errors.push(`{\n${errstr}\n}\n`);
14
35
  }
15
- errorFunction(errStr, type) {
16
- const {
17
- addError,
18
- allowedErrs
19
- } = this;
20
- if (type === 'DECLARATION_IGNORED' && allowedErrs.DECLARATION_IGNORED) {
21
- addError(errStr);
22
- } else if (type === 'UNIT_ERROR' && allowedErrs.UNIT_ERROR) {
23
- addError(errStr);
24
- } else if (type === 'RANGE_ERROR' && allowedErrs.RANGE_ERROR) {
25
- addError(errStr);
26
- } else if (type === 'VARIABLE_PRESENT' && allowedErrs.VARIABLE_PRESENT) {
27
- addError(errStr);
36
+
37
+ errorFunction(errObj) {
38
+ if (errObj.type && this.allowedErrs[errObj.type] && errObj.decl.prop && errObj.decl.value) {
39
+ console.log(this.allowedErrs[errObj.type]);
40
+ this[errObj.type](errObj);
28
41
  }
29
42
  }
43
+
44
+ printError(errObj) {
45
+ console.log('{');
46
+ Object.keys(errObj).sort().forEach(key => {
47
+ if (key !== 'decl') {
48
+ console.log(`${key} : ${errObj[key]}`);
49
+ } else {
50
+ console.log(`prop : ${errObj.decl.prop}`);
51
+ console.log(`value : ${errObj.decl.value}`);
52
+ console.log(`linenum : ${errObj.decl.source.start.line}`);
53
+ }
54
+ });
55
+ console.log('}\n');
56
+ }
57
+
30
58
  }
59
+
31
60
  exports.ErrorHandler = ErrorHandler;