@zohodesk/react-cli 0.0.1-test.148.2 → 1.0.0

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 (174) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -183
  3. package/.prettierrc +6 -0
  4. package/{CHANGELOG.md → CHANGELOG-fz.md} +0 -0
  5. package/Changelog.md +1019 -0
  6. package/README.md +1152 -678
  7. package/bin/cli.js +483 -392
  8. package/docs/CustomChunks.md +26 -0
  9. package/docs/DevServerPort.md +39 -0
  10. package/docs/DevStart.md +18 -0
  11. package/docs/HoverActive.md +12 -0
  12. package/docs/InstallNode.md +28 -0
  13. package/docs/SelectorWeight.md +6 -0
  14. package/docs/TODOS.md +10 -0
  15. package/docs/ValueReplacer.md +60 -0
  16. package/docs/VariableConversion.md +724 -0
  17. package/docs/warnings_while_install.txt +35 -0
  18. package/files/eslintrc.js +62 -62
  19. package/files/prettierrc.js +3 -3
  20. package/lib/common/index.js +6 -6
  21. package/lib/common/splitChunks.js +60 -12
  22. package/lib/common/sslcertUpdater.js +59 -0
  23. package/lib/common/testPattern.js +69 -0
  24. package/lib/common/valueReplacer.js +55 -0
  25. package/lib/configs/jest.config.js +18 -8
  26. package/lib/configs/libAlias.js +38 -0
  27. package/lib/configs/resolvers.js +40 -0
  28. package/lib/configs/webpack.css.umd.config.js +4 -4
  29. package/lib/configs/webpack.dev.config.js +59 -54
  30. package/lib/configs/webpack.docs.config.js +56 -53
  31. package/lib/configs/webpack.impact.config.js +54 -50
  32. package/lib/configs/webpack.prod.config.js +72 -47
  33. package/lib/constants.js +31 -0
  34. package/lib/jest/preProcessors/cssPreprocessor.js +16 -7
  35. package/lib/loaderUtils/configsAssetsLoaders.js +117 -0
  36. package/lib/loaderUtils/getCSSLoaders.js +89 -21
  37. package/lib/loaderUtils/index.js +4 -4
  38. package/lib/loaderUtils/windowsModification.js +11 -0
  39. package/lib/loaders/fileBountryLoader.js +17 -0
  40. package/lib/loaders/scriptInstrumentLoader.js +2 -2
  41. package/lib/loaders/selectorMappingLoader.js +75 -0
  42. package/lib/loaders/workerLoader.js +9 -9
  43. package/lib/pluginUtils/configHtmlWebpackPlugins.js +59 -0
  44. package/lib/pluginUtils/getDevPlugins.js +69 -45
  45. package/lib/pluginUtils/getDocsPlugins.js +6 -8
  46. package/lib/pluginUtils/getLibraryImactPlugins.js +23 -0
  47. package/lib/pluginUtils/getProdPlugins.js +73 -58
  48. package/lib/pluginUtils/index.js +12 -12
  49. package/lib/plugins/CdnChangePlugin.js +16 -2
  50. package/lib/plugins/EFCPlugin.js +52 -20
  51. package/lib/plugins/EFCPlugin.md +6 -0
  52. package/lib/plugins/EFCTemplatePlugin.js +151 -0
  53. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  54. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  55. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  56. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  57. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -86
  58. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  59. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  60. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +2 -2
  61. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +1 -1
  62. package/lib/plugins/ManifestPlugin.js +8 -0
  63. package/lib/plugins/RequireVariablePublicPlugin.js +30 -0
  64. package/lib/plugins/ResourceHintsPlugin.js +17 -17
  65. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +11 -7
  66. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -0
  67. package/lib/plugins/SelectorPlugin.js +97 -0
  68. package/lib/plugins/ServiceWorkerPlugin.js +13 -9
  69. package/lib/plugins/SourceMapHookPlugin.js +9 -3
  70. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  71. package/lib/plugins/VariableConversionCollector.js +352 -0
  72. package/lib/plugins/composeCommonPlugin.js +30 -0
  73. package/lib/plugins/index.js +36 -36
  74. package/lib/plugins/libraryImpactPlugin.js +14 -2
  75. package/lib/postcss-plugins/{ExcludeRTLPlugin.js → ExcludePlugin.js} +1 -1
  76. package/lib/postcss-plugins/RTLSplitPlugin.js +36 -32
  77. package/lib/postcss-plugins/ValueReplacer.js +46 -0
  78. package/lib/postcss-plugins/__test__/hoverActivePlugin.spec.js +22 -0
  79. package/lib/postcss-plugins/__test__/test1Input.css +39 -0
  80. package/lib/postcss-plugins/__test__/test1Output.css +39 -0
  81. package/lib/postcss-plugins/hoverActivePlugin.js +389 -0
  82. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +60 -0
  83. package/lib/postcss-plugins/variableModificationPlugin/index.js +307 -0
  84. package/lib/postcss-plugins/variableModifier.js +244 -0
  85. package/lib/schemas/index.js +166 -11
  86. package/lib/servers/devBuild.js +102 -0
  87. package/lib/servers/docsServerCore.js +16 -18
  88. package/lib/servers/getCliPath.js +28 -0
  89. package/lib/servers/httpsOptions.js +49 -0
  90. package/lib/servers/nowatchserver.js +206 -0
  91. package/lib/servers/server.js +114 -82
  92. package/lib/sh/pre-commit.sh +34 -34
  93. package/lib/sh/reportPublish.sh +45 -45
  94. package/lib/templates/linterConstant.js +1 -1
  95. package/lib/utils/buildstats.html +148 -148
  96. package/lib/utils/cssClassNameGenerate.js +9 -2
  97. package/lib/utils/cssURLReplacer.js +30 -43
  98. package/lib/utils/getCurrentBranch.js +1 -1
  99. package/lib/utils/getDependenciesImpactList.js +14 -12
  100. package/lib/utils/getFileType.js +49 -0
  101. package/lib/utils/getOptions.js +118 -10
  102. package/lib/utils/index.js +44 -20
  103. package/lib/utils/jsonHelper.js +12 -3
  104. package/lib/utils/reinstallDependencies.js +1 -1
  105. package/lib/utils/repoClone.js +16 -4
  106. package/lib/utils/resultSchema.json +73 -73
  107. package/lib/utils/rtl.js +19 -2
  108. package/lib/utils/useExitCleanup.js +55 -0
  109. package/npm8.md +9 -0
  110. package/package.json +121 -142
  111. package/postpublish.js +8 -0
  112. package/result.json +1 -0
  113. package/templates/app/.eslintrc.js +140 -140
  114. package/templates/app/README.md +12 -12
  115. package/templates/app/app/index.html +24 -24
  116. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  117. package/templates/app/app/properties/i18nkeys.json +3 -3
  118. package/templates/app/docs/all.html +69 -69
  119. package/templates/app/mockapi/index.js +18 -18
  120. package/templates/app/package.json +37 -37
  121. package/templates/app/src/actions/SampleActions/index.js +37 -37
  122. package/templates/app/src/actions/index.js +65 -65
  123. package/templates/app/src/appUrls.js +19 -19
  124. package/templates/app/src/components/Alert/Alert.js +134 -134
  125. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  126. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  127. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  128. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  129. package/templates/app/src/components/Sample/SampleList.js +61 -61
  130. package/templates/app/src/components/Slider/Slider.css +41 -41
  131. package/templates/app/src/components/Slider/Slider.js +55 -55
  132. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  133. package/templates/app/src/containers/AppContainer/index.js +96 -96
  134. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  135. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  136. package/templates/app/src/containers/DevTools/index.js +10 -10
  137. package/templates/app/src/containers/Header/index.js +67 -67
  138. package/templates/app/src/containers/Header/index.module.css +43 -43
  139. package/templates/app/src/containers/Redirect/index.js +63 -63
  140. package/templates/app/src/containers/Redirector/index.js +47 -47
  141. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  142. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  143. package/templates/app/src/historyChange.js +5 -5
  144. package/templates/app/src/index.html +10 -10
  145. package/templates/app/src/index.js +24 -24
  146. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  147. package/templates/app/src/reducers/alertData.js +11 -11
  148. package/templates/app/src/reducers/index.js +6 -6
  149. package/templates/app/src/reducers/samples.js +19 -19
  150. package/templates/app/src/store/configureStore.dev.js +51 -51
  151. package/templates/app/src/store/configureStore.js +5 -5
  152. package/templates/app/src/store/configureStore.prod.js +26 -26
  153. package/templates/app/src/util/Common.js +5 -5
  154. package/templates/app/src/util/RequestAPI.js +132 -132
  155. package/templates/docs/all.html +249 -249
  156. package/templates/docs/component.html +178 -178
  157. package/templates/docs/components.html +221 -221
  158. package/templates/docs/css/b.min.css +6 -6
  159. package/templates/docs/css/component.css +42 -42
  160. package/templates/docs/css/componentTest.css +6 -6
  161. package/templates/docs/css/hopscotch.css +585 -585
  162. package/templates/docs/css/style.css +1022 -1022
  163. package/templates/docs/impactReportTemplate.html +154 -154
  164. package/templates/docs/index.html +1501 -1493
  165. package/templates/docs/js/active-line.js +72 -72
  166. package/templates/docs/js/b.min.js +7 -7
  167. package/templates/docs/js/codemirror.js +9680 -9680
  168. package/templates/docs/js/designTokens.js +334 -334
  169. package/templates/docs/js/j.min.js +4 -4
  170. package/templates/docs/js/javascript.js +874 -874
  171. package/templates/docs/js/matchbrackets.js +145 -145
  172. package/unittest/index.html +37 -0
  173. package/cert/cert.pem +0 -105
  174. package/cert/key.pem +0 -30
@@ -3,88 +3,82 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "ModuleStatsPlugin", {
7
- enumerable: true,
8
- get: function () {
9
- return _ModuleStatsPlugin.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "SourceMapHookPlugin", {
6
+ Object.defineProperty(exports, "CdnChangePlugin", {
13
7
  enumerable: true,
14
8
  get: function () {
15
- return _SourceMapHookPlugin.default;
9
+ return _CdnChangePlugin.default;
16
10
  }
17
11
  });
18
- Object.defineProperty(exports, "UnusedFilesFindPlugin", {
12
+ Object.defineProperty(exports, "CleanUpStatsPlugin", {
19
13
  enumerable: true,
20
14
  get: function () {
21
- return _UnusedFilesFindPlugin.default;
15
+ return _CleanupStatsPlugin.default;
22
16
  }
23
17
  });
24
- Object.defineProperty(exports, "ScriptInstrumentPlugin", {
18
+ Object.defineProperty(exports, "EFCPlugin", {
25
19
  enumerable: true,
26
20
  get: function () {
27
- return _ScriptInstrumentPlugin.default;
21
+ return _EFCPlugin.default;
28
22
  }
29
23
  });
30
- Object.defineProperty(exports, "PublicPathChangePlugin", {
24
+ Object.defineProperty(exports, "I18NInjectIntoIndexPlugin", {
31
25
  enumerable: true,
32
26
  get: function () {
33
- return _PublicPathChangePlugin.default;
27
+ return _I18NInjectIntoIndexPlugin.default;
34
28
  }
35
29
  });
36
- Object.defineProperty(exports, "OptimizeJSPlugin", {
30
+ Object.defineProperty(exports, "ManifestPlugin", {
37
31
  enumerable: true,
38
32
  get: function () {
39
- return _OptimizeJSPlugin.default;
33
+ return _ManifestPlugin.default;
40
34
  }
41
35
  });
42
- Object.defineProperty(exports, "ResourceHintsPlugin", {
36
+ Object.defineProperty(exports, "ModuleStatsPlugin", {
43
37
  enumerable: true,
44
38
  get: function () {
45
- return _ResourceHintsPlugin.default;
39
+ return _ModuleStatsPlugin.default;
46
40
  }
47
41
  });
48
- Object.defineProperty(exports, "UglifyCSSPlugin", {
42
+ Object.defineProperty(exports, "OptimizeJSPlugin", {
49
43
  enumerable: true,
50
44
  get: function () {
51
- return _UglifyCSSPlugin.default;
45
+ return _OptimizeJSPlugin.default;
52
46
  }
53
47
  });
54
- Object.defineProperty(exports, "ManifestPlugin", {
48
+ Object.defineProperty(exports, "PublicPathCallbackPlugin", {
55
49
  enumerable: true,
56
50
  get: function () {
57
- return _ManifestPlugin.default;
51
+ return _PublicPathCallbackPlugin.default;
58
52
  }
59
53
  });
60
- Object.defineProperty(exports, "CleanUpStatsPlugin", {
54
+ Object.defineProperty(exports, "PublicPathChangePlugin", {
61
55
  enumerable: true,
62
56
  get: function () {
63
- return _CleanupStatsPlugin.default;
57
+ return _PublicPathChangePlugin.default;
64
58
  }
65
59
  });
66
- Object.defineProperty(exports, "EFCPlugin", {
60
+ Object.defineProperty(exports, "ReportGeneratePlugin", {
67
61
  enumerable: true,
68
62
  get: function () {
69
- return _EFCPlugin.default;
63
+ return _ReportGeneratePlugin.default;
70
64
  }
71
65
  });
72
- Object.defineProperty(exports, "PublicPathCallbackPlugin", {
66
+ Object.defineProperty(exports, "ResourceHintsPlugin", {
73
67
  enumerable: true,
74
68
  get: function () {
75
- return _PublicPathCallbackPlugin.default;
69
+ return _ResourceHintsPlugin.default;
76
70
  }
77
71
  });
78
- Object.defineProperty(exports, "I18NInjectIntoIndexPlugin", {
72
+ Object.defineProperty(exports, "ScriptInstrumentPlugin", {
79
73
  enumerable: true,
80
74
  get: function () {
81
- return _I18NInjectIntoIndexPlugin.default;
75
+ return _ScriptInstrumentPlugin.default;
82
76
  }
83
77
  });
84
- Object.defineProperty(exports, "ReportGeneratePlugin", {
78
+ Object.defineProperty(exports, "ServiceWorkerPlugin", {
85
79
  enumerable: true,
86
80
  get: function () {
87
- return _ReportGeneratePlugin.default;
81
+ return _ServiceWorkerPlugin.default;
88
82
  }
89
83
  });
90
84
  Object.defineProperty(exports, "ShadowDOMSupportPlugin", {
@@ -93,10 +87,10 @@ Object.defineProperty(exports, "ShadowDOMSupportPlugin", {
93
87
  return _ShadowDOMSupportPlugin.default;
94
88
  }
95
89
  });
96
- Object.defineProperty(exports, "ServiceWorkerPlugin", {
90
+ Object.defineProperty(exports, "SourceMapHookPlugin", {
97
91
  enumerable: true,
98
92
  get: function () {
99
- return _ServiceWorkerPlugin.default;
93
+ return _SourceMapHookPlugin.default;
100
94
  }
101
95
  });
102
96
  Object.defineProperty(exports, "TPHashMappingPlugin", {
@@ -105,10 +99,16 @@ Object.defineProperty(exports, "TPHashMappingPlugin", {
105
99
  return _TPHashMappingPlugin.default;
106
100
  }
107
101
  });
108
- Object.defineProperty(exports, "CdnChangePlugin", {
102
+ Object.defineProperty(exports, "UglifyCSSPlugin", {
109
103
  enumerable: true,
110
104
  get: function () {
111
- return _CdnChangePlugin.default;
105
+ return _UglifyCSSPlugin.default;
106
+ }
107
+ });
108
+ Object.defineProperty(exports, "UnusedFilesFindPlugin", {
109
+ enumerable: true,
110
+ get: function () {
111
+ return _UnusedFilesFindPlugin.default;
112
112
  }
113
113
  });
114
114
 
@@ -11,19 +11,26 @@ var _fs = _interopRequireDefault(require("fs"));
11
11
 
12
12
  var _webpackSources = require("webpack-sources");
13
13
 
14
+ var _jsonHelper = require("../utils/jsonHelper");
15
+
14
16
  var _utils = require("../utils");
15
17
 
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
20
+ let resultFileName = `${process.cwd()}/result.json`;
18
21
  let options = (0, _utils.getOptions)();
19
22
  let {
20
23
  ssTest: {
21
24
  referBranch,
22
25
  currentBranch,
23
26
  serviceName,
24
- tokenGit
27
+ tokenGit,
28
+ changesOnly
25
29
  }
26
30
  } = options;
31
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.libraryImpactOnSource.compareBranch', referBranch);
32
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.libraryImpactOnSource.TestBranch', currentBranch);
33
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.libraryImpactOnSource.isExecuted', true);
27
34
 
28
35
  let isValidModule = name => {
29
36
  if (name.includes('node_modules') && (name.includes(`@zohodesk${_path.default.sep}components`) || name.includes(`@zohodesk${_path.default.sep}dot`) || name.includes(`@zohodesk${_path.default.sep}icons`) || name.includes(`@zohodesk${_path.default.sep}svg`)) && !name.endsWith('docs.js')) {
@@ -57,6 +64,8 @@ class LibraryImpactPlugin {
57
64
  apply(compiler) {
58
65
  let loggedInfo = false;
59
66
  compiler.hooks.beforeCompile.tap('LibraryImpactPlugin', () => {
67
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.libraryImpactOnSource.startTime', Date.now());
68
+
60
69
  if (!loggedInfo) {
61
70
  (0, _utils.log)('\x1b[33m%s\x1b[0m', '************************************************************ \n ');
62
71
  (0, _utils.log)('\x1b[5m\x1b[44m%s\x1b[0m', 'Finding Impacted Source Files Please Wait ...');
@@ -141,7 +150,8 @@ class LibraryImpactPlugin {
141
150
  }
142
151
 
143
152
  (0, _utils.getDependenciesImpactList)(currentBranch, referBranch, tokenGit, serviceName).then(impactedList => {
144
- this.resultJson = (0, _utils.getLibraryConflict)(JSON.stringify(results), impactedList);
153
+ this.resultJson = (0, _utils.getLibraryConflict)(JSON.stringify(results), impactedList, changesOnly);
154
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.libraryImpactOnSource.result', this.resultJson);
145
155
 
146
156
  if (this.resultJson.result.status) {
147
157
  (0, _utils.log)(this.resultJson.response);
@@ -165,6 +175,8 @@ class LibraryImpactPlugin {
165
175
  } else {
166
176
  _fs.default.writeFileSync('./coverageTest/impactLibrary.html', this.topHtml + this.bottomHtml, 'utf8');
167
177
  }
178
+
179
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.libraryImpactOnSource.endTime', Date.now());
168
180
  });
169
181
  });
170
182
  compiler.hooks.done.tap('LibraryImpactPlugin', () => {
@@ -4,7 +4,7 @@ var _postcss = _interopRequireDefault(require("postcss"));
4
4
 
5
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
6
 
7
- module.exports = _postcss.default.plugin('postcss-exclude-rtl-files', opts => {
7
+ module.exports = _postcss.default.plugin('postcss-exclude-files', opts => {
8
8
  const {
9
9
  plugins
10
10
  } = opts;
@@ -3,14 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.separateSingleDir = separateSingleDir;
7
6
  exports.separateRtlAndLtr = separateRtlAndLtr;
7
+ exports.separateSingleDir = separateSingleDir;
8
8
 
9
9
  var postcss = _interopRequireWildcard(require("postcss"));
10
10
 
11
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
12
 
13
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
14
 
15
15
  const oppositeDir = {
16
16
  ltr: 'rtl',
@@ -30,11 +30,19 @@ const directionRegexs = {
30
30
  const getRegex = dir => directionRegexs[dir];
31
31
 
32
32
  const getOppositeRegex = dir => getRegex(oppositeDir[dir]);
33
- /**
34
- * this funtion will remove given rule,
35
- * if given selector and it's previous sibiling rule selector are same
36
- * current rule properties will move to previous sibiling rule.
37
- * @param {Rule} rule current rule
33
+
34
+ function selectorMinifySameDir(selector, direction) {
35
+ // NOTE: if this rule is same dir as current need
36
+ // then we can just remove that [dir=ltr] or [dir=rtl]
37
+ // it just for minimaze selector
38
+ const regex = getRegex(direction);
39
+ return selector.replace(regex, '').trim();
40
+ }
41
+ /**
42
+ * this funtion will remove given rule,
43
+ * if given selector and it's previous sibiling rule selector are same
44
+ * current rule properties will move to previous sibiling rule.
45
+ * @param {Rule} rule current rule
38
46
  */
39
47
 
40
48
 
@@ -49,30 +57,26 @@ function mergeIfSameSelector(rule) {
49
57
  rule.remove();
50
58
  }
51
59
  }
60
+ /**
61
+ * this funtion will remove given rule,
62
+ * if given selector and it's previous sibiling rule selector are same
63
+ * current rule properties will move to previous sibiling rule.
64
+ * @param {Rule} rule current rule
65
+ */
52
66
 
53
- function selectorClearify(selector, direction) {
54
- // NOTE: if this rule is same dir as current need
55
- // then we can just remove that [dir=ltr] or [dir=rtl]
56
- // it just for minimaze selector
57
- // NOTE: if we use opposite dir selector as custom override reason,
67
+
68
+ function removeIfOppsiteDirRule(rule, direction, rootOptions) {
69
+ // console.log({ rule, type: rule.type });
70
+ const selectors = rule.selector.split(/\s*,\s*/); // NOTE: if we use opposite dir selector as custom override reason,
58
71
  // and compain normal selector with it, In this case
59
72
  // we just a have to remove that selector only not full rule
60
- const regex = getRegex(direction);
61
- const oppositeDirRegex = getOppositeRegex(direction);
62
- return regex.test(selector) ? selector.replace(regex, '').trim() : oppositeDirRegex.test(selector) ? '' : selector;
63
- }
64
- /**
65
- * this funtion will remove given rule,
66
- * if given selector and it's previous sibiling rule selector are same
67
- * current rule properties will move to previous sibiling rule.
68
- * @param {Rule} rule current rule
69
- */
70
73
 
74
+ const oppositeDirRegex = getOppositeRegex(direction);
75
+ let remainingSelectors = selectors.filter(selector => !oppositeDirRegex.test(selector));
71
76
 
72
- function removeIfOppsiteDirRule(rule, direction) {
73
- // console.log({ rule, type: rule.type });
74
- const selectors = rule.selector.split(/\s*,\s*/);
75
- const remainingSelectors = selectors.map(selector => selectorClearify(selector, direction)).filter(Boolean);
77
+ if (!rootOptions.disableMiniFiySelector) {
78
+ remainingSelectors = remainingSelectors.map(selector => selectorMinifySameDir(selector, direction));
79
+ }
76
80
 
77
81
  if (remainingSelectors.length) {
78
82
  rule.selector = remainingSelectors.join(', ');
@@ -92,9 +96,9 @@ function removeIfOppsiteDirKeyframe(rule, direction) {
92
96
  }
93
97
  }
94
98
 
95
- function separateSingleDir(root, direction) {
99
+ function separateSingleDir(root, direction, rootOptions) {
96
100
  root.walkRules(rule => {
97
- removeIfOppsiteDirRule(rule, direction);
101
+ removeIfOppsiteDirRule(rule, direction, rootOptions);
98
102
  mergeIfSameSelector(rule);
99
103
  });
100
104
  root.walkAtRules(rule => {
@@ -103,15 +107,15 @@ function separateSingleDir(root, direction) {
103
107
  return root;
104
108
  }
105
109
 
106
- function separateRtlAndLtr(css) {
110
+ function separateRtlAndLtr(css, rootOptions) {
107
111
  // let processor = postcss([]).process(css);
108
112
  let root = postcss.parse(css); // let { root } = processor;
109
113
  // console.log(processor, root);
110
114
  // NOTE: I did first rtl then ltr , Because for ltr I use original root ref
111
115
 
112
- const rtlRoot = separateSingleDir(root.clone(), 'rtl'); // console.log('############################');
116
+ const rtlRoot = separateSingleDir(root.clone(), 'rtl', rootOptions); // console.log('############################');
113
117
 
114
- const ltrRoot = separateSingleDir(root, 'ltr');
118
+ const ltrRoot = separateSingleDir(root, 'ltr', rootOptions);
115
119
  return {
116
120
  ltrRoot,
117
121
  rtlRoot,
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _postcss = _interopRequireDefault(require("postcss"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ // module.exports = postcss.plugin('postcss-value-replacer', opts => {
8
+ // const { plugins } = opts;
9
+ // return (root, result) => {
10
+ // const inputFile = root.source.input.file;
11
+ // let isIgnoredFile= opts.ignore.some(file => inputFile.indexOf(file)!==-1);
12
+ // if (!isIgnoredFile) {
13
+ // const handler = response =>
14
+ // response.messages.forEach(msg => result.messages.push(msg));
15
+ // return postcss(plugins)
16
+ // .process(root, { from: undefined })
17
+ // .then(handler);
18
+ // }
19
+ // };
20
+ // });
21
+ // export default
22
+ module.exports = _postcss.default.plugin('postcss-value-replacer', (valueReplacer = {}) => // Work with options here
23
+ root => {
24
+ root.walkDecls(decl => {
25
+ valueReplacer.forEach(obj => {
26
+ if (obj.props.indexOf(decl.prop) !== -1) {
27
+ let ks = Object.keys(obj.values).sort((a, b) => b.length - a.length);
28
+ ks.forEach(k => {
29
+ decl.value = decl.value.replace(k, obj.values[k]);
30
+ }); //decl.value = obj.values[decl.value];
31
+ }
32
+ }); //console.log({root, roots:root+""}, root+"")
33
+ // Transform CSS AST here
34
+ }); // root.walkDecls(decl => {
35
+ // valueReplacer.forEach(obj => {
36
+ // if (
37
+ // obj.props.indexOf(decl.prop) !== -1 &&
38
+ // obj.values[decl.value] !== undefined
39
+ // ) {
40
+ // decl.value = obj.values[decl.value];
41
+ // }
42
+ // });
43
+ // //console.log({root, roots:root+""}, root+"")
44
+ // // Transform CSS AST here
45
+ // });
46
+ });
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ const fs = require('fs');
4
+
5
+ const postcss = require('postcss');
6
+
7
+ function expectRunPostCss(inputFile, outputfile, cb) {
8
+ const inputStr = fs.readFileSync(inputFile, 'utf-8');
9
+ postcss(plugins).process(inputStr, {
10
+ from,
11
+ to
12
+ }).then(result => {
13
+ expect(result.css).toBe(fs.readFileSync(outputfile, 'utf-8'));
14
+ cb();
15
+ });
16
+ }
17
+
18
+ describe('To Check Hover active postcss Plugin ', () => {
19
+ test('should handle normal rule hover', cb => {
20
+ expectRunPostCss('test1Input.css', 'test1Output.css', cb);
21
+ });
22
+ });
@@ -0,0 +1,39 @@
1
+ /*Hover_active:ignore*/
2
+ g,a:hover{
3
+ color : red
4
+ }
5
+ /*Hover:ignore*/
6
+ h:hover{
7
+ background : yellow
8
+ }
9
+
10
+ /* Hover_active:ignore */
11
+ g,d+e:hover{
12
+ color : black
13
+ }
14
+
15
+ g,d e:hover{
16
+ color : black
17
+ }
18
+
19
+ @media screen and (max-width:61.25em){
20
+ /* Hover_active:ignore */
21
+ a,b,a:hover, b:hover{
22
+ background-color : blue
23
+ }
24
+ a + b,a:hover + b:hover{
25
+ background-color : blue
26
+ }
27
+ a b:hover{
28
+ background-color : blue
29
+ }
30
+
31
+ .cc:hover {
32
+ color: red;
33
+ }
34
+
35
+ c:hover{
36
+ color : red
37
+ }
38
+
39
+ }
@@ -0,0 +1,39 @@
1
+ /*Hover_active:ignore*/
2
+ g,a:hover{
3
+ color : red
4
+ }
5
+ /*Hover:ignore*/
6
+ h:hover{
7
+ background : yellow
8
+ }
9
+
10
+ /* Hover_active:ignore */
11
+ g,d+e:hover{
12
+ color : black
13
+ }
14
+
15
+ g,d e:hover{
16
+ color : black
17
+ }
18
+
19
+ @media screen and (max-width:61.25em){
20
+ /* Hover_active:ignore */
21
+ a,b,a:hover, b:hover{
22
+ background-color : blue
23
+ }
24
+ a + b,a:hover + b:hover{
25
+ background-color : blue
26
+ }
27
+ a b:hover{
28
+ background-color : blue
29
+ }
30
+
31
+ .cc:hover {
32
+ color: red;
33
+ }
34
+
35
+ c:hover{
36
+ color : red
37
+ }
38
+
39
+ }