@zohodesk/react-cli 0.0.1-beta.176 → 0.0.1-beta.178

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 (126) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -180
  3. package/.prettierrc +6 -6
  4. package/{CHANGELOG.md → CHANGELOG-fz.md} +0 -0
  5. package/Changelog.md +1019 -0
  6. package/README.md +1137 -1018
  7. package/bin/cli.js +482 -482
  8. package/docs/CustomChunks.md +26 -26
  9. package/docs/DevServerPort.md +39 -0
  10. package/docs/DevStart.md +18 -18
  11. package/docs/HoverActive.md +12 -12
  12. package/docs/InstallNode.md +28 -28
  13. package/docs/SelectorWeight.md +6 -6
  14. package/docs/TODOS.md +10 -10
  15. package/docs/ValueReplacer.md +60 -60
  16. package/docs/VariableConversion.md +724 -710
  17. package/docs/warnings_while_install.txt +35 -35
  18. package/files/eslintrc.js +62 -62
  19. package/files/prettierrc.js +3 -3
  20. package/lib/configs/resolvers.js +40 -0
  21. package/lib/configs/webpack.css.umd.config.js +4 -4
  22. package/lib/configs/webpack.dev.config.js +4 -11
  23. package/lib/configs/webpack.docs.config.js +4 -11
  24. package/lib/configs/webpack.impact.config.js +5 -7
  25. package/lib/configs/webpack.prod.config.js +9 -13
  26. package/lib/constants.js +31 -0
  27. package/lib/loaderUtils/configsAssetsLoaders.js +36 -36
  28. package/lib/loaders/workerLoader.js +9 -9
  29. package/lib/pluginUtils/getDevPlugins.js +5 -5
  30. package/lib/pluginUtils/getProdPlugins.js +5 -5
  31. package/lib/plugins/EFCPlugin.md +6 -6
  32. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  33. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  34. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  35. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  36. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  37. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  38. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  39. package/lib/plugins/ResourceHintsPlugin.js +17 -17
  40. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  41. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  42. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  43. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  44. package/lib/plugins/VariableConversionCollector.js +198 -98
  45. package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
  46. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  47. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  48. package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
  49. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +4 -2
  50. package/lib/postcss-plugins/variableModificationPlugin/index.js +2 -1
  51. package/lib/schemas/index.js +8 -0
  52. package/lib/servers/docsServerCore.js +13 -12
  53. package/lib/servers/httpsOptions.js +40 -9
  54. package/lib/servers/nowatchserver.js +12 -11
  55. package/lib/servers/server.js +23 -20
  56. package/lib/sh/pre-commit.sh +34 -34
  57. package/lib/sh/reportPublish.sh +45 -45
  58. package/lib/utils/buildstats.html +148 -148
  59. package/lib/utils/cssURLReplacer.js +30 -43
  60. package/lib/utils/getFileType.js +49 -0
  61. package/lib/utils/getOptions.js +13 -13
  62. package/lib/utils/resultSchema.json +73 -73
  63. package/npm8.md +9 -9
  64. package/package.json +121 -146
  65. package/postpublish.js +8 -6
  66. package/templates/app/.eslintrc.js +140 -140
  67. package/templates/app/README.md +12 -12
  68. package/templates/app/app/index.html +24 -24
  69. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  70. package/templates/app/app/properties/i18nkeys.json +3 -3
  71. package/templates/app/docs/all.html +69 -69
  72. package/templates/app/mockapi/index.js +18 -18
  73. package/templates/app/package.json +37 -37
  74. package/templates/app/src/actions/SampleActions/index.js +37 -37
  75. package/templates/app/src/actions/index.js +65 -65
  76. package/templates/app/src/appUrls.js +19 -19
  77. package/templates/app/src/components/Alert/Alert.js +134 -134
  78. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  79. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  80. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  81. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  82. package/templates/app/src/components/Sample/SampleList.js +61 -61
  83. package/templates/app/src/components/Slider/Slider.css +41 -41
  84. package/templates/app/src/components/Slider/Slider.js +55 -55
  85. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  86. package/templates/app/src/containers/AppContainer/index.js +96 -96
  87. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  88. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  89. package/templates/app/src/containers/DevTools/index.js +10 -10
  90. package/templates/app/src/containers/Header/index.js +67 -67
  91. package/templates/app/src/containers/Header/index.module.css +43 -43
  92. package/templates/app/src/containers/Redirect/index.js +63 -63
  93. package/templates/app/src/containers/Redirector/index.js +47 -47
  94. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  95. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  96. package/templates/app/src/historyChange.js +5 -5
  97. package/templates/app/src/index.html +10 -10
  98. package/templates/app/src/index.js +24 -24
  99. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  100. package/templates/app/src/reducers/alertData.js +11 -11
  101. package/templates/app/src/reducers/index.js +6 -6
  102. package/templates/app/src/reducers/samples.js +19 -19
  103. package/templates/app/src/store/configureStore.dev.js +51 -51
  104. package/templates/app/src/store/configureStore.js +5 -5
  105. package/templates/app/src/store/configureStore.prod.js +26 -26
  106. package/templates/app/src/util/Common.js +5 -5
  107. package/templates/app/src/util/RequestAPI.js +132 -132
  108. package/templates/docs/all.html +249 -249
  109. package/templates/docs/component.html +178 -178
  110. package/templates/docs/components.html +221 -221
  111. package/templates/docs/css/b.min.css +6 -6
  112. package/templates/docs/css/component.css +42 -42
  113. package/templates/docs/css/componentTest.css +6 -6
  114. package/templates/docs/css/hopscotch.css +585 -585
  115. package/templates/docs/css/style.css +1022 -1022
  116. package/templates/docs/impactReportTemplate.html +154 -154
  117. package/templates/docs/index.html +1501 -1501
  118. package/templates/docs/js/active-line.js +72 -72
  119. package/templates/docs/js/b.min.js +7 -7
  120. package/templates/docs/js/codemirror.js +9680 -9680
  121. package/templates/docs/js/designTokens.js +334 -334
  122. package/templates/docs/js/j.min.js +4 -4
  123. package/templates/docs/js/javascript.js +874 -874
  124. package/templates/docs/js/matchbrackets.js +145 -145
  125. package/cert/Tsicsezwild-22-23.crt +0 -37
  126. package/cert/Tsicsezwild-22-23.key +0 -27
@@ -24,12 +24,12 @@ const isCss = filename => _path.default.extname(filename) === '.css'; // this p
24
24
 
25
25
  class RtlCssPlugin {
26
26
  constructor(options = {}) {
27
- /**
28
- * @typedef {Object} Options
29
- * @property {String} filename [not used]
30
- * @property {String} dirVarName
31
- * @property {Boolean} sourcemap
32
- * @property {Object} config
27
+ /**
28
+ * @typedef {Object} Options
29
+ * @property {String} filename [not used]
30
+ * @property {String} dirVarName
31
+ * @property {Boolean} sourcemap
32
+ * @property {Object} config
33
33
  */
34
34
  this.options = {
35
35
  filename: options.filename || '[name].rtl.css',
@@ -1,30 +1,30 @@
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
-
10
- # To Try it out rtl-ltr split
11
- ### how to use this feature?
12
-
13
- to use this feature use have give the below oprtions
14
- `package.json`
15
- ```json
16
- {
17
- /// ...some things
18
- "react-cli": {
19
- // ...some things
20
- "css": {
21
- "enableRTLSplit": true,
22
- "templateLabel": "{{--dir}}",// this is for html template css file path dir template
23
- "disableMiniFiySelector": false,
24
- "dirVarName": "document.dir" // this will be used for download css based on dir
25
- },
26
- // ...some things
27
- }
28
- }
29
- ```
30
-
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
+
10
+ # To Try it out rtl-ltr split
11
+ ### how to use this feature?
12
+
13
+ to use this feature use have give the below oprtions
14
+ `package.json`
15
+ ```json
16
+ {
17
+ /// ...some things
18
+ "react-cli": {
19
+ // ...some things
20
+ "css": {
21
+ "enableRTLSplit": true,
22
+ "templateLabel": "{{--dir}}",// this is for html template css file path dir template
23
+ "disableMiniFiySelector": false,
24
+ "dirVarName": "document.dir" // this will be used for download css based on dir
25
+ },
26
+ // ...some things
27
+ }
28
+ }
29
+ ```
30
+
@@ -51,11 +51,11 @@ class ServiceWorkerPlugin {
51
51
  if (err) {
52
52
  throw new Error(err);
53
53
  } else {
54
- /* const extractedChunks = compilation.chunks.filter(chunk => {
55
- if ('canBeInitial' in chunk) {
56
- return chunk.canBeInitial();
57
- }
58
- return chunk.isInitial();
54
+ /* const extractedChunks = compilation.chunks.filter(chunk => {
55
+ if ('canBeInitial' in chunk) {
56
+ return chunk.canBeInitial();
57
+ }
58
+ return chunk.isInitial();
59
59
  }); */
60
60
  // let [js, css, , , i18nPublicPath] = this.publicPaths;
61
61
  // let initialChunkUrls = [];
@@ -64,10 +64,10 @@ class ServiceWorkerPlugin {
64
64
  let entrypoint = compilation.entrypoints.get('main');
65
65
  let initialChunkUrls = entrypoint.getFiles();
66
66
  const cssDirTemplate = '@dir@';
67
- /**
68
- * NOTE:
69
- * if chunkSplitEnable is false means,
70
- * serviceWorker will get i18n files path for html
67
+ /**
68
+ * NOTE:
69
+ * if chunkSplitEnable is false means,
70
+ * serviceWorker will get i18n files path for html
71
71
  */
72
72
 
73
73
  let initalI18nAssets = chunkSplitEnable ? entrypoint.chunks.filter(chunk => _I18nKeysIdentifer.default.isChunkHasI18n(chunk)).map(chunk => (0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, '@locale@')) : [];
@@ -15,10 +15,10 @@ var _crypto = _interopRequireDefault(require("crypto"));
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
- /**
19
- * Plugin that generates hash for the provided list of third party files
20
- * Map the provided key with the file hash and add it to the list of exisiting global constants.
21
- * Plugin in turn uses the defineplugin to generate global constants.
18
+ /**
19
+ * Plugin that generates hash for the provided list of third party files
20
+ * Map the provided key with the file hash and add it to the list of exisiting global constants.
21
+ * Plugin in turn uses the defineplugin to generate global constants.
22
22
  */
23
23
  class TPHashMappingPlugin {
24
24
  constructor(options) {
@@ -7,24 +7,34 @@ exports.default = void 0;
7
7
 
8
8
  var _postcss = _interopRequireDefault(require("postcss"));
9
9
 
10
- var _fs = _interopRequireDefault(require("fs"));
11
-
12
10
  var _ErrorHandler = require("../postcss-plugins/variableModificationPlugin/ErrorHandler");
13
11
 
14
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
13
 
16
14
  // import { RawSource } from 'webpack-sources';
17
- const ignoreVals = ['--zd_size', '--zd_font_size', '--size', '--size_']; // -- is issue IO --
18
-
19
- /*
20
- issues eg :
21
- issues = ['--zd_size', '--zd_font_size', '--size', '--size_'];
22
- input :
23
- --zd_size
24
- output :
25
- true
26
- comment :
27
- do not execute when --zd_size comes as prop
15
+ const fs = require('fs');
16
+
17
+ const ignoreVals = ['--zd_size', '--zd_font_size', '--size', '--size_'];
18
+ let variablesRead = {};
19
+
20
+ const {
21
+ errors,
22
+ errTable,
23
+ errHandler
24
+ } = require('../postcss-plugins/variableModificationPlugin/index');
25
+
26
+ const supportedProps = ['font-size', 'margin', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'padding', 'padding-top', 'padding-bottom', 'padding-left', 'padding-right', '^top', '^right', '^bottom', '^left', '^width', 'min-width', 'max-width', '^height', 'min-height', 'max-height', 'text-indent', 'clip', 'flex-basis', 'row-gap', 'gap', 'column-gap', 'flex']; // const avoidProps = [];
27
+ // -- is issue IO --
28
+
29
+ /*
30
+ issues eg :
31
+ issues = ['--zd_size', '--zd_font_size', '--size', '--size_'];
32
+ input :
33
+ --zd_size
34
+ output :
35
+ true
36
+ comment :
37
+ do not execute when --zd_size comes as prop
28
38
  */
29
39
 
30
40
  function isIgnoreValuePresent(ignoreVals, prop) {
@@ -35,16 +45,16 @@ function isIgnoreValuePresent(ignoreVals, prop) {
35
45
  }
36
46
  });
37
47
  return present;
38
- } // -- to convert the hyphen values to values --
39
-
40
- /*
41
- input :
42
- var(--zdt_uploadlist_default_width)
43
- output :
44
- --zdt_uploadlist_default_width
45
-
46
- comment :
47
- to make the variable object using the output as key and decl.prop such as font-size as value
48
+ } // -- to convert the hyphen values to values --
49
+
50
+ /*
51
+ input :
52
+ var(--zdt_uploadlist_default_width)
53
+ output :
54
+ --zdt_uploadlist_default_width
55
+
56
+ comment :
57
+ to make the variable object using the output as key and decl.prop such as font-size as value
48
58
  */
49
59
 
50
60
 
@@ -55,8 +65,8 @@ function extractVariableName(val) {
55
65
  function rootConvertor(rootOriginal, variables, settingsObject) {
56
66
  rootOriginal.walkRules(rule => {
57
67
  rule.nodes.forEach((decl, index) => {
58
- let prevNode = rule.nodes[index - 1];
59
- let currentNode = rule.nodes[index];
68
+ const prevNode = rule.nodes[index - 1];
69
+ const currentNode = rule.nodes[index];
60
70
 
61
71
  if (decl.prop && decl.prop.includes('--')) {
62
72
  if (prevNode && prevNode.type === 'comment' && prevNode.text.toLowerCase() === 'variable:ignore') {
@@ -69,16 +79,16 @@ function rootConvertor(rootOriginal, variables, settingsObject) {
69
79
 
70
80
  if (settingsObject[variables[decl.prop]]) {
71
81
  /* if there is no value for property, set it to default so that undefined doesn't get called as key */
72
- if (!variables[decl.prop] || !settingsObject[variables[decl.prop]]) {
82
+ if (!variables[decl.prop]) {
73
83
  variables[decl.prop] = 'default';
74
84
  }
75
85
 
76
86
  const pxReplacement = settingsObject[variables[decl.prop]].replacements.px;
77
- let valArr = decl.value.split(' '); // single values are considered in the above array and converted below
87
+ const valArr = decl.value.split(' '); // single values are considered in the above array and converted below
78
88
 
79
89
  valArr.forEach((value, index) => {
80
90
  if (value.includes('px')) {
81
- let num = value.replace('px', '');
91
+ const num = value.replace('px', '');
82
92
  valArr[index] = pxReplacement.replace('$$', num);
83
93
  }
84
94
  });
@@ -90,22 +100,46 @@ function rootConvertor(rootOriginal, variables, settingsObject) {
90
100
  return rootOriginal;
91
101
  }
92
102
 
103
+ function createFolderIfNonExistant(path) {
104
+ if (!fs.existsSync(path)) {
105
+ fs.mkdirSync(path, {
106
+ recursive: true
107
+ });
108
+ }
109
+ }
110
+
111
+ function createFileIfNonExistant(path, content) {
112
+ if (fs.existsSync(path)) {
113
+ fs.writeFileSync(path, content, 'utf-8');
114
+ }
115
+ }
116
+
93
117
  class VariableConversionCollector {
94
118
  constructor(options = {}) {
95
119
  this.optimize = options.optimize;
96
120
  this.filename = options.cssVariableReplacementConfig;
121
+ this.fileHandler();
97
122
  }
98
123
 
99
- apply(compiler) {
100
- let variables = {};
101
-
102
- const rawdata = _fs.default.readFileSync(this.filename);
124
+ fileHandler() {
125
+ createFolderIfNonExistant('./.cli/logs/');
126
+ createFolderIfNonExistant('./.cli/config/variables/');
127
+ createFolderIfNonExistant('./.cli/config/selectorWeight/');
128
+ createFileIfNonExistant('./.cli/logs/unassignedVariables.log', '{}');
129
+ createFileIfNonExistant('./.cli/logs/css_error.log', '{}');
130
+ }
103
131
 
132
+ apply(compiler) {
133
+ const variables = {};
134
+ const unassigned = {};
135
+ const rawdata = fs.readFileSync(this.filename);
104
136
  const data = JSON.parse(rawdata);
105
137
  const {
106
138
  settings: settingsObject,
107
139
  errorLog: errorLogStatus,
108
- errorInConsole: errorConsoleStatus
140
+ errorInConsole: errorConsoleStatus,
141
+ errorsAllowed,
142
+ strictMode
109
143
  } = data; // If theres is no setting for default prop in settingsObject, set one.
110
144
 
111
145
  if (!settingsObject.default) {
@@ -120,16 +154,23 @@ class VariableConversionCollector {
120
154
  }
121
155
  };
122
156
  }
123
- /*
124
- purpose of tap : to create a variable object such as:
125
- {
126
- --zdt_uploadlist_default_width : width,
127
- --zdt_uploadlist_default_height : height,
128
- }
129
- which will help in the conversion further
157
+ /*
158
+ purpose of tap : to create a variable object such as:
159
+ {
160
+ --zdt_uploadlist_default_width : width,
161
+ --zdt_uploadlist_default_height : height,
162
+ }
163
+ which will help in the conversion further
130
164
  */
131
165
 
132
166
 
167
+ if (fs.existsSync('./.cli/config/variables/variableMapping.json')) {
168
+ variablesRead = JSON.parse(fs.readFileSync('./.cli/config/variables/variableMapping.json', 'utf-8'));
169
+ Object.keys(variablesRead.changes).forEach(key => {
170
+ variables[key] = variablesRead.changes[key];
171
+ });
172
+ }
173
+
133
174
  compiler.hooks.compilation.tap('VariableConversionCollector', compilation => {
134
175
  compilation.hooks.optimizeModules.tap('VariableConversionCollector', modules => {
135
176
  const mods = modules.filter(x => x.type.includes('css'));
@@ -137,49 +178,79 @@ class VariableConversionCollector {
137
178
  const rootOriginal = _postcss.default.parse(module.content);
138
179
 
139
180
  const filename = module.issuer.resource;
140
- rootOriginal.walkRules(rule => {
141
- rule.walkDecls(decl => {
142
- decl.value.split(' ').forEach(val => {
143
- if (val && val.includes('--') && !new RegExp(ignoreVals.join('|'), 'gi').test(val)) {
144
- variables[extractVariableName(val)] = decl.prop;
145
- }
181
+
182
+ if (!filename.includes('node_modules')) {
183
+ rootOriginal.walkRules(rule => {
184
+ rule.walkDecls(decl => {
185
+ decl.value.split(' ').forEach(val => {
186
+ if (val && val.includes('--') && !new RegExp(ignoreVals.join('|'), 'gi').test(val) && decl.prop) {
187
+ const extractedValue = extractVariableName(val);
188
+
189
+ if (!variables[extractedValue]) {
190
+ variables[extractedValue] = decl.prop;
191
+ } else {
192
+ if (new RegExp(supportedProps.join('|'), 'gi').test(decl.prop)) {
193
+ // console.log(
194
+ // `${extractedValue} : ${variables[extractedValue]} already exists please check!`
195
+ // );
196
+ if (errorsAllowed.MULTIPLE_OCCURANCES) {
197
+ const errObj = {
198
+ decl,
199
+ type: 'MULTIPLE_OCCURANCES',
200
+ filename,
201
+ message: `${extractedValue} : ${variables[extractedValue]} already exists please check!`
202
+ };
203
+ errHandler.errorTable.push(errObj);
204
+ errHandler.errorFunction(errObj);
205
+ }
206
+ }
207
+ }
208
+ } else {
209
+ // console.log(decl.prop);
210
+ if (/^--/gi.test(decl.prop) && val.trim() !== '' && !variables[decl.prop]) {
211
+ if (!Object.keys(variablesRead.ignore).includes(decl.prop)) {
212
+ unassigned[decl.prop] = variables[decl.prop];
213
+ }
214
+ }
215
+ }
216
+ });
146
217
  });
147
218
  });
148
- });
149
- /*
150
- current value example:
151
- {
152
- --zdt_uploadlist_default_width : --zd_upload_width,
153
- --zd_upload_width : width
154
- }
155
- expected value :
156
- {
157
- --zdt_uploadlist_default_width : width,
158
- --zd_upload_width : width
159
- }
160
-
161
- conversion is done in the while loop below
162
- */
163
-
164
- Object.keys(variables).forEach(key => {
165
- while (variables[variables[key]]) {
166
- variables[key] = variables[variables[key]];
167
- }
168
- });
219
+ /*
220
+ current value example:
221
+ {
222
+ --zdt_uploadlist_default_width : --zd_upload_width,
223
+ --zd_upload_width : width
224
+ }
225
+ expected value :
226
+ {
227
+ --zdt_uploadlist_default_width : width,
228
+ --zd_upload_width : width
229
+ }
230
+
231
+ conversion is done in the while loop below
232
+ */
233
+
234
+ Object.keys(variables).forEach(key => {
235
+ while (variables[variables[key]]) {
236
+ variables[key] = variables[variables[key]];
237
+ }
238
+ });
239
+ }
169
240
  });
170
- }); // -- conversion for the root using rootConvertor --
171
-
172
- /*
173
- input :
174
- .a{
175
- padding : 20px
176
- }
177
- output :
178
- // on settingObject file :
179
- { padding : { replacements : { px : 'zd_size$$' }}}
180
- .a{
181
- padding : zd_size20;
182
- }
241
+ }); // -- conversion for the root using rootConvertor --
242
+
243
+ /*
244
+ input :
245
+ .a{
246
+ padding : 20px
247
+ }
248
+ output :
249
+ // on settingObject file :
250
+ { padding : { replacements : { px : 'zd_size$$' }}}
251
+ .a{
252
+ padding : zd_size20;
253
+ }
183
254
  */
184
255
 
185
256
  compilation.hooks.optimizeModules.tap('VariableConversionCollector', modules => {
@@ -191,39 +262,69 @@ class VariableConversionCollector {
191
262
  });
192
263
  });
193
264
  });
194
- /*
195
- purpose of tap : to display the errors encountered so far
196
- input :
197
- all css files
198
- output :
199
- all errors that are present in the errTable arr
265
+ /*
266
+ purpose of tap : to display the errors encountered so far
267
+ input :
268
+ all css files
269
+ output :
270
+ all errors that are present in the errTable arr
200
271
  */
201
272
 
202
273
  compiler.hooks.afterEmit.tap('error-display', () => {
203
- const {
204
- errors,
205
- errTable
206
- } = require('../postcss-plugins/variableModificationPlugin/index');
274
+ if (Object.keys(unassigned).length > 0 && strictMode) {
275
+ console.log();
276
+ console.log(unassigned);
277
+ console.log();
278
+ let str = '{\n';
279
+ Object.keys(unassigned).forEach(key => {
280
+ str += `"${key}" : "${unassigned[key]}",\n`;
281
+ });
282
+ str += '}';
283
+ fs.writeFileSync('./.cli/logs/unassignedVariables.log', str, 'utf-8');
284
+ throw new Error('^^^ Variables above have not been assigned! ^^^');
285
+ }
207
286
 
208
- let avlTypes = new Set([]);
209
- let srtArr = errTable.sort((a, b) => {
287
+ const avlTypes = new Set([]);
288
+ const srtArr = errTable.sort((a, b) => {
210
289
  avlTypes.add(a.type);
211
290
  avlTypes.add(b.type);
212
291
 
213
292
  if (a.type < b.type) {
214
293
  return -1;
215
294
  }
216
- });
295
+ }); // variable constructed now to be written in a json file
296
+ // const newVars = Object.keys(variables)
297
+ // //Filter Object with key contanis "NAME"
298
+ // .filter(key => variables[key].includes('--'))
299
+ // .reduce(
300
+ // (obj, key) =>
301
+ // Object.assign(obj, {
302
+ // [key]: variables[key]
303
+ // }),
304
+ // {}
305
+ // );
306
+ // console.log('new variables: ', newVars);
307
+ // try {
308
+ // fs.writeFileSync('./variableMapping.json', JSON.stringify(variables));
309
+ // } catch (err) {
310
+ // console.log(err);
311
+ // }
312
+ // fs.writeFile('./variableMapping.json', JSON.stringify(variables), err => {
313
+ // if (err) {
314
+ // throw err;
315
+ // }
316
+ // console.log('variable mapping file generated.');
317
+ // });
217
318
 
218
319
  if (errorConsoleStatus) {
219
- const errHandler = new _ErrorHandler.ErrorHandler();
320
+ const errorHandler = new _ErrorHandler.ErrorHandler();
220
321
  avlTypes.forEach(type => {
221
322
  console.log('---------------------------------------------------------------------------------------------------------------------------');
222
323
  console.log(`Error Type : ${type}`);
223
324
  console.log('---------------------------------------------------------------------------------------------------------------------------');
224
325
  srtArr.forEach(err => {
225
326
  if (err.decl.prop && err.decl.value && err.type === type) {
226
- errHandler.printError(err);
327
+ errorHandler.printError(err);
227
328
  }
228
329
  });
229
330
  console.log('---------------------------------------------------------------------------------------------------------------------------');
@@ -231,14 +332,13 @@ class VariableConversionCollector {
231
332
  }
232
333
 
233
334
  if (errorLogStatus) {
234
- _fs.default.writeFileSync('./css_error.log', '');
235
-
335
+ fs.writeFileSync('./.cli/logs/css_error.log', '');
236
336
  console.log('writing to logFile...');
237
337
 
238
338
  if (errors.length > 0) {
239
339
  errors.forEach((err, index) => {
240
340
  if (errTable[index].decl.prop && errTable[index].decl.value) {
241
- _fs.default.appendFileSync('./css_error.log', err);
341
+ fs.appendFileSync('./.cli/logs/css_error.log', err);
242
342
  }
243
343
  });
244
344
  }
@@ -38,11 +38,11 @@ function selectorMinifySameDir(selector, direction) {
38
38
  const regex = getRegex(direction);
39
39
  return selector.replace(regex, '').trim();
40
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
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
46
46
  */
47
47
 
48
48
 
@@ -57,11 +57,11 @@ function mergeIfSameSelector(rule) {
57
57
  rule.remove();
58
58
  }
59
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
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
65
  */
66
66
 
67
67
 
@@ -1,39 +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
-
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
39
  }