@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.
- package/.eslintignore +7 -7
- package/.eslintrc.js +180 -180
- package/.prettierrc +6 -6
- package/{CHANGELOG.md → CHANGELOG-fz.md} +0 -0
- package/Changelog.md +1019 -0
- package/README.md +1137 -1018
- package/bin/cli.js +482 -482
- package/docs/CustomChunks.md +26 -26
- package/docs/DevServerPort.md +39 -0
- package/docs/DevStart.md +18 -18
- package/docs/HoverActive.md +12 -12
- package/docs/InstallNode.md +28 -28
- package/docs/SelectorWeight.md +6 -6
- package/docs/TODOS.md +10 -10
- package/docs/ValueReplacer.md +60 -60
- package/docs/VariableConversion.md +724 -710
- package/docs/warnings_while_install.txt +35 -35
- package/files/eslintrc.js +62 -62
- package/files/prettierrc.js +3 -3
- package/lib/configs/resolvers.js +40 -0
- package/lib/configs/webpack.css.umd.config.js +4 -4
- package/lib/configs/webpack.dev.config.js +4 -11
- package/lib/configs/webpack.docs.config.js +4 -11
- package/lib/configs/webpack.impact.config.js +5 -7
- package/lib/configs/webpack.prod.config.js +9 -13
- package/lib/constants.js +31 -0
- package/lib/loaderUtils/configsAssetsLoaders.js +36 -36
- package/lib/loaders/workerLoader.js +9 -9
- package/lib/pluginUtils/getDevPlugins.js +5 -5
- package/lib/pluginUtils/getProdPlugins.js +5 -5
- package/lib/plugins/EFCPlugin.md +6 -6
- package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
- package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
- package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
- package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
- package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
- package/lib/plugins/I18nSplitPlugin/README.md +25 -25
- package/lib/plugins/I18nSplitPlugin/index.js +57 -57
- package/lib/plugins/ResourceHintsPlugin.js +17 -17
- package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
- package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
- package/lib/plugins/ServiceWorkerPlugin.js +9 -9
- package/lib/plugins/TPHashMappingPlugin.js +4 -4
- package/lib/plugins/VariableConversionCollector.js +198 -98
- package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
- package/lib/postcss-plugins/__test__/test1Input.css +38 -38
- package/lib/postcss-plugins/__test__/test1Output.css +38 -38
- package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
- package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +4 -2
- package/lib/postcss-plugins/variableModificationPlugin/index.js +2 -1
- package/lib/schemas/index.js +8 -0
- package/lib/servers/docsServerCore.js +13 -12
- package/lib/servers/httpsOptions.js +40 -9
- package/lib/servers/nowatchserver.js +12 -11
- package/lib/servers/server.js +23 -20
- package/lib/sh/pre-commit.sh +34 -34
- package/lib/sh/reportPublish.sh +45 -45
- package/lib/utils/buildstats.html +148 -148
- package/lib/utils/cssURLReplacer.js +30 -43
- package/lib/utils/getFileType.js +49 -0
- package/lib/utils/getOptions.js +13 -13
- package/lib/utils/resultSchema.json +73 -73
- package/npm8.md +9 -9
- package/package.json +121 -146
- package/postpublish.js +8 -6
- package/templates/app/.eslintrc.js +140 -140
- package/templates/app/README.md +12 -12
- package/templates/app/app/index.html +24 -24
- package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
- package/templates/app/app/properties/i18nkeys.json +3 -3
- package/templates/app/docs/all.html +69 -69
- package/templates/app/mockapi/index.js +18 -18
- package/templates/app/package.json +37 -37
- package/templates/app/src/actions/SampleActions/index.js +37 -37
- package/templates/app/src/actions/index.js +65 -65
- package/templates/app/src/appUrls.js +19 -19
- package/templates/app/src/components/Alert/Alert.js +134 -134
- package/templates/app/src/components/Alert/Alert.module.css +79 -79
- package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
- package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
- package/templates/app/src/components/Sample/Sample.module.css +11 -11
- package/templates/app/src/components/Sample/SampleList.js +61 -61
- package/templates/app/src/components/Slider/Slider.css +41 -41
- package/templates/app/src/components/Slider/Slider.js +55 -55
- package/templates/app/src/containers/AlertContainer/index.js +15 -15
- package/templates/app/src/containers/AppContainer/index.js +96 -96
- package/templates/app/src/containers/AppContainer/index.module.css +27 -27
- package/templates/app/src/containers/CustomMatch/index.js +65 -65
- package/templates/app/src/containers/DevTools/index.js +10 -10
- package/templates/app/src/containers/Header/index.js +67 -67
- package/templates/app/src/containers/Header/index.module.css +43 -43
- package/templates/app/src/containers/Redirect/index.js +63 -63
- package/templates/app/src/containers/Redirector/index.js +47 -47
- package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
- package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
- package/templates/app/src/historyChange.js +5 -5
- package/templates/app/src/index.html +10 -10
- package/templates/app/src/index.js +24 -24
- package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
- package/templates/app/src/reducers/alertData.js +11 -11
- package/templates/app/src/reducers/index.js +6 -6
- package/templates/app/src/reducers/samples.js +19 -19
- package/templates/app/src/store/configureStore.dev.js +51 -51
- package/templates/app/src/store/configureStore.js +5 -5
- package/templates/app/src/store/configureStore.prod.js +26 -26
- package/templates/app/src/util/Common.js +5 -5
- package/templates/app/src/util/RequestAPI.js +132 -132
- package/templates/docs/all.html +249 -249
- package/templates/docs/component.html +178 -178
- package/templates/docs/components.html +221 -221
- package/templates/docs/css/b.min.css +6 -6
- package/templates/docs/css/component.css +42 -42
- package/templates/docs/css/componentTest.css +6 -6
- package/templates/docs/css/hopscotch.css +585 -585
- package/templates/docs/css/style.css +1022 -1022
- package/templates/docs/impactReportTemplate.html +154 -154
- package/templates/docs/index.html +1501 -1501
- package/templates/docs/js/active-line.js +72 -72
- package/templates/docs/js/b.min.js +7 -7
- package/templates/docs/js/codemirror.js +9680 -9680
- package/templates/docs/js/designTokens.js +334 -334
- package/templates/docs/js/j.min.js +4 -4
- package/templates/docs/js/javascript.js +874 -874
- package/templates/docs/js/matchbrackets.js +145 -145
- package/cert/Tsicsezwild-22-23.crt +0 -37
- 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
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
59
|
-
|
|
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]
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
-
|
|
209
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
}
|