@zohodesk/react-cli 1.1.14-kubernetes → 1.1.15
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/.vscode/settings.json +25 -0
- package/README.md +294 -16
- package/bin/cli.js +30 -55
- package/docs/ComposeMinification.md +13 -0
- package/docs/CustomChunks.md +12 -9
- package/docs/MarkdownParser.md +18 -0
- package/docs/ReactLive.md +14 -0
- package/docs/SelectorWeight.md +3 -0
- package/docs/ValueReplacer.md +27 -0
- package/docs/VariableConversion.md +6 -1
- package/docs/patternFiltering.md +57 -0
- package/lib/common/buildEs.js +12 -0
- package/lib/common/runPreProcess.js +71 -0
- package/lib/common/splitChunks.js +65 -45
- package/lib/common/testPattern.js +9 -11
- package/lib/common/valueReplacer.js +1 -3
- package/lib/configs/resolvers.js +16 -5
- package/lib/configs/webpack.css.umd.config.js +3 -2
- package/lib/configs/webpack.dev.config.js +15 -5
- package/lib/configs/webpack.docs.config.js +17 -5
- package/lib/configs/webpack.impact.config.js +11 -4
- package/lib/configs/webpack.prod.config.js +15 -5
- package/lib/constants.js +3 -3
- package/lib/deprecationLogger.js +40 -0
- package/lib/loaderUtils/getCSSLoaders.js +98 -49
- package/lib/loaderUtils/tests/windowsModification.test.js +10 -0
- package/lib/loaderUtils/windowsModification.js +6 -1
- package/lib/loaders/__test__/markdownLoader.spec.js +145 -0
- package/lib/loaders/composeLoader.js +298 -0
- package/lib/loaders/docsLoader.js +18 -7
- package/lib/loaders/markdownLoader.js +71 -0
- package/lib/loaders/reactLiveConvertor.js +105 -0
- package/lib/loaders/selectorMappingLoader.js +9 -9
- package/lib/logger.js +27 -0
- package/lib/pluginUtils/getDevPlugins.js +25 -6
- package/lib/pluginUtils/getProdPlugins.js +32 -5
- package/lib/pluginUtils/getUMDCSSPlugins.js +1 -1
- package/lib/pluginUtils/getUMDComponentPlugins.js +1 -1
- package/lib/plugins/CustomAttributePlugin.js +82 -0
- package/lib/plugins/CustomAttributePlugin.md +35 -0
- package/lib/plugins/EFCPlugin.js +9 -9
- package/lib/plugins/EFCTemplatePlugin.js +10 -12
- package/lib/plugins/EfcResourceCleanupPlugin.js +43 -0
- package/lib/plugins/I18NInjectIntoIndexPlugin.js +8 -9
- package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +2 -3
- package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +2 -7
- package/lib/plugins/I18nSplitPlugin/index.js +1 -1
- package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +8 -8
- package/lib/plugins/{UglifyCSSPlugin.js → MinifyPlugin.js} +3 -3
- package/lib/plugins/ReportGeneratePlugin.js +8 -6
- package/lib/plugins/ResourceHintsPlugin.js +13 -3
- package/lib/plugins/SelectorPlugin.js +77 -37
- package/lib/plugins/StatsPlugin.js +82 -0
- package/lib/plugins/UnusedFilesFindPlugin.js +7 -5
- package/lib/plugins/VariableConversionCollector.js +40 -101
- package/lib/plugins/index.js +7 -7
- package/lib/plugins/utils/classHandling.js +35 -0
- package/lib/plugins/utils/fileHandling.js +92 -0
- package/lib/plugins/utils/tests/fileHandling.test.js +30 -0
- package/lib/plugins/variableConvertorUtils.js +133 -0
- package/lib/postcss-plugins/EmptyPlugin.js +8 -0
- package/lib/postcss-plugins/ExcludePlugin.js +1 -1
- package/lib/postcss-plugins/IncludePlugin.js +23 -0
- package/lib/postcss-plugins/RTLSplitPlugin.js +4 -10
- package/lib/postcss-plugins/SelectorReplace.js +80 -0
- package/lib/postcss-plugins/ValueReplacer.js +8 -29
- package/lib/postcss-plugins/__test__/selectorReplace.test.js +28 -0
- package/lib/postcss-plugins/__test__/valueReplacer.spec.js +43 -0
- package/lib/postcss-plugins/hoverActivePlugin.js +0 -6
- package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +0 -1
- package/lib/postcss-plugins/variableModificationPlugin/index.js +94 -38
- package/lib/schemas/index.js +95 -18
- package/lib/servers/devBuild.js +13 -11
- package/lib/servers/getCliPath.js +3 -5
- package/lib/servers/httpsOptions.js +12 -13
- package/lib/servers/nowatchserver.js +62 -55
- package/lib/servers/requireLocalOrGlobal.js +61 -0
- package/lib/servers/server.js +53 -52
- package/lib/utils/cssClassNameGenerate.js +70 -13
- package/lib/utils/deprecationSupport.js +134 -0
- package/lib/utils/getOptions.js +35 -28
- package/lib/utils/getServerURL.js +1 -9
- package/lib/utils/index.js +14 -12
- package/lib/utils/initPreCommitHook.js +5 -5
- package/lib/utils/log.js +11 -0
- package/lib/utils/object-manipulation.js +88 -0
- package/lib/utils/pullOrigin.js +3 -3
- package/lib/utils/reinstallDependencies.js +3 -3
- package/lib/utils/selectorReplacer.js +47 -0
- package/lib/utils/switchBranch.js +4 -2
- package/lib/utils/variableConverter.js +104 -0
- package/npm-shrinkwrap.json +33485 -0
- package/package.json +5 -3
- package/templates/docs/all.html +1 -0
- package/templates/docs/component.html +1 -0
- package/templates/docs/components.html +1 -0
- package/templates/docs/css/markdown.css +202 -0
- package/templates/docs/css/style.css +136 -169
- package/templates/docs/index.html +796 -632
- package/lib/plugins/composeCommonPlugin.js +0 -30
- package/lib/postcss-plugins/variableModifier.js +0 -244
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _path = _interopRequireDefault(require("path"));
|
|
4
|
+
|
|
5
|
+
var _postcss = _interopRequireDefault(require("postcss"));
|
|
6
|
+
|
|
7
|
+
var _classHandling = require("../../lib/plugins/utils/classHandling");
|
|
8
|
+
|
|
9
|
+
var _fileHandling = require("../plugins/utils/fileHandling");
|
|
10
|
+
|
|
11
|
+
var _utils = require("../utils");
|
|
12
|
+
|
|
13
|
+
var _ignore = _interopRequireDefault(require("ignore"));
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
|
|
17
|
+
const supportedProps = ['margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'margin', 'padding-top', 'padding-bottom', 'padding-left', 'padding-right', 'padding', 'top', 'bottom', 'left', 'right', 'height', 'width', 'min-height', 'min-width', 'max-height', 'max-width', 'float', 'overflow', 'position', 'display', 'text-align', 'white-space', 'visibility'];
|
|
18
|
+
const renameProps = {
|
|
19
|
+
position: {
|
|
20
|
+
cls: 'posn'
|
|
21
|
+
},
|
|
22
|
+
display: {
|
|
23
|
+
cls: 'disp'
|
|
24
|
+
},
|
|
25
|
+
float: {
|
|
26
|
+
cls: 'flo'
|
|
27
|
+
},
|
|
28
|
+
overflow: {
|
|
29
|
+
cls: 'over'
|
|
30
|
+
},
|
|
31
|
+
'text-align': {
|
|
32
|
+
cls: 'txtAlgn'
|
|
33
|
+
},
|
|
34
|
+
'white-space': {
|
|
35
|
+
cls: 'whSpc'
|
|
36
|
+
},
|
|
37
|
+
visibility: {
|
|
38
|
+
cls: 'vis'
|
|
39
|
+
},
|
|
40
|
+
'font-size': {
|
|
41
|
+
pos: 'fs',
|
|
42
|
+
neg: 'fs_'
|
|
43
|
+
},
|
|
44
|
+
'margin-top': {
|
|
45
|
+
pos: 'mt',
|
|
46
|
+
neg: 'mt_'
|
|
47
|
+
},
|
|
48
|
+
'margin-bottom': {
|
|
49
|
+
pos: 'mb',
|
|
50
|
+
neg: 'mb_'
|
|
51
|
+
},
|
|
52
|
+
'margin-left': {
|
|
53
|
+
pos: 'ml',
|
|
54
|
+
neg: 'ml_'
|
|
55
|
+
},
|
|
56
|
+
'margin-right': {
|
|
57
|
+
pos: 'mr',
|
|
58
|
+
neg: 'mr_'
|
|
59
|
+
},
|
|
60
|
+
margin: {
|
|
61
|
+
pos: 'm',
|
|
62
|
+
neg: 'm_'
|
|
63
|
+
},
|
|
64
|
+
'padding-top': {
|
|
65
|
+
pos: 'pt',
|
|
66
|
+
neg: 'pt_'
|
|
67
|
+
},
|
|
68
|
+
'padding-bottom': {
|
|
69
|
+
pos: 'pb',
|
|
70
|
+
neg: 'pb_'
|
|
71
|
+
},
|
|
72
|
+
'padding-left': {
|
|
73
|
+
pos: 'pl',
|
|
74
|
+
neg: 'pl_'
|
|
75
|
+
},
|
|
76
|
+
'padding-right': {
|
|
77
|
+
pos: 'pr',
|
|
78
|
+
neg: 'pr_'
|
|
79
|
+
},
|
|
80
|
+
padding: {
|
|
81
|
+
pos: 'p',
|
|
82
|
+
neg: 'p_'
|
|
83
|
+
},
|
|
84
|
+
top: {
|
|
85
|
+
pos: 'post',
|
|
86
|
+
neg: 'post_'
|
|
87
|
+
},
|
|
88
|
+
bottom: {
|
|
89
|
+
pos: 'posb',
|
|
90
|
+
neg: 'posb_'
|
|
91
|
+
},
|
|
92
|
+
left: {
|
|
93
|
+
pos: 'posl',
|
|
94
|
+
neg: 'posl_'
|
|
95
|
+
},
|
|
96
|
+
right: {
|
|
97
|
+
pos: 'posr',
|
|
98
|
+
neg: 'posr_'
|
|
99
|
+
},
|
|
100
|
+
height: {
|
|
101
|
+
pos: 'h',
|
|
102
|
+
neg: 'h_'
|
|
103
|
+
},
|
|
104
|
+
width: {
|
|
105
|
+
pos: 'w',
|
|
106
|
+
neg: 'w_'
|
|
107
|
+
},
|
|
108
|
+
'min-height': {
|
|
109
|
+
pos: 'minh',
|
|
110
|
+
neg: 'minh_'
|
|
111
|
+
},
|
|
112
|
+
'min-width': {
|
|
113
|
+
pos: 'minw',
|
|
114
|
+
neg: 'minw_'
|
|
115
|
+
},
|
|
116
|
+
'max-height': {
|
|
117
|
+
pos: 'maxh',
|
|
118
|
+
neg: 'maxh_'
|
|
119
|
+
},
|
|
120
|
+
'max-width': {
|
|
121
|
+
pos: 'maxw',
|
|
122
|
+
neg: 'maxw_'
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
function objToClassName(prop, data) {
|
|
127
|
+
return renameProps[prop] ? data < 0 ? renameProps[prop].neg ? `${renameProps[prop].neg}${data * -1}` : `undef${data * -1}` : renameProps[prop].pos ? `${renameProps[prop].pos}${data}` : `undef${data}` : `undef${data}`;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function objtoClassNameString(prop, data) {
|
|
131
|
+
let temp = data.toString().replace(/-/gi, '');
|
|
132
|
+
return `${renameProps[prop].cls}_${temp.replace(/\s*/gi, '')}`;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const multipleClassName = {
|
|
136
|
+
margin: ['margin-top', 'margin-right', 'margin-bottom', 'margin-left'],
|
|
137
|
+
padding: ['padding-top', 'padding-right', 'padding-bottom', 'padding-left']
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
function objToClassNameMultiple(prop, data) {
|
|
141
|
+
data = data.trim().replace(/\s+/gi, ' ');
|
|
142
|
+
let dataArr = data.split(' ');
|
|
143
|
+
|
|
144
|
+
if (dataArr.length === 3) {
|
|
145
|
+
dataArr[3] = dataArr[1];
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (dataArr.length === 2) {
|
|
149
|
+
dataArr[3] = dataArr[1];
|
|
150
|
+
dataArr[2] = dataArr[0];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (dataArr.length === 1) {
|
|
154
|
+
dataArr[3] = dataArr[0];
|
|
155
|
+
dataArr[2] = dataArr[0];
|
|
156
|
+
dataArr[1] = dataArr[0];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
let composeClasses = '';
|
|
160
|
+
dataArr.forEach((data, index) => composeClasses += `${objToClassName(multipleClassName[prop][index], parseInt(data, 10))} `);
|
|
161
|
+
composeClasses = composeClasses.substring(0, composeClasses.length - 1);
|
|
162
|
+
return composeClasses;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const commonFilePath = {
|
|
166
|
+
margin: 'src/common/css/margin.css',
|
|
167
|
+
'margin-left': 'src/common/css/margin.css',
|
|
168
|
+
'margin-right': 'src/common/css/margin.css',
|
|
169
|
+
'margin-top': 'src/common/css/margin.css',
|
|
170
|
+
'margin-bottom': 'src/common/css/margin.css',
|
|
171
|
+
padding: 'src/common/css/padding.css',
|
|
172
|
+
'padding-left': 'src/common/css/padding.css',
|
|
173
|
+
'padding-right': 'src/common/css/padding.css',
|
|
174
|
+
'padding-top': 'src/common/css/padding.css',
|
|
175
|
+
'padding-bottom': 'src/common/css/padding.css',
|
|
176
|
+
top: 'src/common/css/position.css',
|
|
177
|
+
bottom: 'src/common/css/position.css',
|
|
178
|
+
left: 'src/common/css/position.css',
|
|
179
|
+
right: 'src/common/css/position.css',
|
|
180
|
+
height: 'src/common/css/height.css',
|
|
181
|
+
width: 'src/common/css/width.css',
|
|
182
|
+
'min-height': 'src/common/css/height.css',
|
|
183
|
+
'min-width': 'src/common/css/width.css',
|
|
184
|
+
'max-height': 'src/common/css/height.css',
|
|
185
|
+
'max-width': 'src/common/css/width.css',
|
|
186
|
+
fontSize: 'src/common/css/fontSize.css',
|
|
187
|
+
textProps: 'src/common/css/textProps.css',
|
|
188
|
+
display: 'src/common/css/textProps.css',
|
|
189
|
+
float: 'src/common/css/textProps.css',
|
|
190
|
+
overflow: 'src/common/css/textProps.css',
|
|
191
|
+
position: 'src/common/css/position.css',
|
|
192
|
+
'text-align': 'src/common/css/textProps.css',
|
|
193
|
+
'white-space': 'src/common/css/textProps.css',
|
|
194
|
+
visibility: 'src/common/css/textProps.css'
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
function generateComposeString(resourcePath, prop, value) {
|
|
198
|
+
let composeString = `from "${_path.default.relative(_path.default.parse(resourcePath).dir, // resourcePath
|
|
199
|
+
commonFilePath[prop]).replace(/\\/gi, '/')}"`;
|
|
200
|
+
let cls = '';
|
|
201
|
+
|
|
202
|
+
if (/^position|^overflow|^display|^float|^text-align|^white-space|^visibility/gi.test(prop)) {
|
|
203
|
+
console.log(prop, value, 'textvals');
|
|
204
|
+
cls = objtoClassNameString(prop, value);
|
|
205
|
+
} else if (/^margin$|^padding$/gi.test(prop)) {
|
|
206
|
+
// console.log(prop, value, 'margin');
|
|
207
|
+
cls = objToClassNameMultiple(prop, value);
|
|
208
|
+
} else {
|
|
209
|
+
// console.log(prop, value, 'common');
|
|
210
|
+
cls = objToClassName(prop, parseInt(value));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
composeString = `${cls} ${composeString}`;
|
|
214
|
+
return composeString;
|
|
215
|
+
} // const preNames = {
|
|
216
|
+
// height: 'zd-height-',
|
|
217
|
+
// 'max-height': 'zd-height-',
|
|
218
|
+
// 'min-height': 'zd-height-',
|
|
219
|
+
// width: 'zd-width-',
|
|
220
|
+
// 'max-width': 'zd-width-',
|
|
221
|
+
// 'min-width': 'zd-width-',
|
|
222
|
+
// top: 'zd-position-',
|
|
223
|
+
// bottom: 'zd-position-',
|
|
224
|
+
// left: 'zd-position-',
|
|
225
|
+
// right: 'zd-position-',
|
|
226
|
+
// 'padding-top': 'zd-padding-',
|
|
227
|
+
// 'padding-bottom': 'zd-padding-',
|
|
228
|
+
// 'padding-left': 'zd-padding-',
|
|
229
|
+
// 'padding-right': 'zd-padding-',
|
|
230
|
+
// 'margin-top': 'zd-margin-',
|
|
231
|
+
// 'margin-bottom': 'zd-margin-',
|
|
232
|
+
// 'margin-left': 'zd-margin-',
|
|
233
|
+
// 'margin-right': 'zd-margin-'
|
|
234
|
+
// };
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
function allowParent(rule) {
|
|
238
|
+
return rule.parent.type === 'root' || rule.parent.type === 'atrule' && rule.parent.name === 'media';
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
module.exports = function (source) {
|
|
242
|
+
const {
|
|
243
|
+
resourcePath
|
|
244
|
+
} = this;
|
|
245
|
+
const options = (0, _utils.getOptions)(); // console.log(options.app.patterns.composeMinification);
|
|
246
|
+
// const ig = ignore({ allowRelativePaths: true }).add(options.app.patterns.composeMinification);
|
|
247
|
+
// const newFilename = path.relative(path.parse(process.cwd()).base, resourcePath);
|
|
248
|
+
// console.log(newFilename, ig.ignores(newFilename));
|
|
249
|
+
|
|
250
|
+
let root = _postcss.default.parse(source);
|
|
251
|
+
|
|
252
|
+
if (!(0, _fileHandling.isFileNameMatchingPluginPattern)({
|
|
253
|
+
filename: resourcePath,
|
|
254
|
+
filterArr: options.app.patterns.composeMinification
|
|
255
|
+
})) {
|
|
256
|
+
return root.toString();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
root.walkRules(rule => {
|
|
260
|
+
rule.walkDecls(decl => {
|
|
261
|
+
if (/^-ms|^-webkit|^moz/gi.test(decl.prop)) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
if (!allowParent(rule)) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if ((0, _classHandling.isInsideMediaQuery)(rule)) {
|
|
270
|
+
console.log('inside media query', rule.selector);
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (supportedProps.includes(decl.prop) && /^position$|^overflow|^float|^display|^text-align|^white-space|^visibility/gi.test(decl.prop) && !/[,\s+]+|(\w+)\.|:|::|body|(\d+)%|>/gi.test(rule.selector) && commonFilePath[decl.prop] && !decl.value.includes('var(--')) {
|
|
275
|
+
decl.value = generateComposeString(resourcePath, decl.prop, decl.value);
|
|
276
|
+
decl.prop = 'composes';
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (supportedProps.includes(decl.prop) && /px$/gi.test(decl.value) && !/^--/gi.test(decl.prop) && commonFilePath[decl.prop] && !decl.value.includes('calc') && !/[,\s+]+|(\w+)\.|:|(\d+)%/gi.test(rule.selector)) {
|
|
281
|
+
// n++ < 10 && console.log(composeString);
|
|
282
|
+
// if (!composeString.includes('src')) {
|
|
283
|
+
// if (/px$/gi.test(decl.value)) {
|
|
284
|
+
decl.value = generateComposeString(resourcePath, decl.prop, decl.value); // }
|
|
285
|
+
// if (/^position$|^display$|^overflow$|^float$/gi.test(decl.prop)) {
|
|
286
|
+
// console.log(decl.prop);
|
|
287
|
+
// }
|
|
288
|
+
|
|
289
|
+
decl.prop = 'composes'; // console.log(decl.prop, decl.value);
|
|
290
|
+
// n < 10 && console.log(rule.selector, decl.prop, decl.value);
|
|
291
|
+
// }
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
const output = root.toString(); // console.log(output);
|
|
296
|
+
|
|
297
|
+
return output;
|
|
298
|
+
};
|
|
@@ -2,21 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
var _fs = _interopRequireDefault(require("fs"));
|
|
4
4
|
|
|
5
|
+
var _getOptions = _interopRequireDefault(require("../utils/getOptions.js"));
|
|
6
|
+
|
|
5
7
|
var _path = _interopRequireDefault(require("path"));
|
|
6
8
|
|
|
9
|
+
var _reactLiveConvertor = require("./reactLiveConvertor");
|
|
10
|
+
|
|
11
|
+
var _markdownLoader = require("./markdownLoader.js");
|
|
12
|
+
|
|
7
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
14
|
|
|
9
15
|
module.exports = function (source) {
|
|
10
|
-
|
|
11
|
-
|
|
16
|
+
const comNameAry = this.resourcePath.split(_path.default.sep);
|
|
17
|
+
const filePath = this.resourcePath;
|
|
18
|
+
|
|
19
|
+
const appPath = _fs.default.realpathSync(process.cwd());
|
|
12
20
|
|
|
13
|
-
|
|
21
|
+
const changePath = filePath.replace('/lib/', '/src/');
|
|
22
|
+
const comName = comNameAry[comNameAry.length - 1];
|
|
23
|
+
const name = comName.substring(0, comName.lastIndexOf('.'));
|
|
24
|
+
const options = (0, _getOptions.default)();
|
|
25
|
+
const originalFilePath = filePath.startsWith(appPath) ? filePath : changePath;
|
|
14
26
|
|
|
15
|
-
|
|
16
|
-
let comName = comNameAry[comNameAry.length - 1];
|
|
17
|
-
let name = comName.substring(0, comName.lastIndexOf('.'));
|
|
27
|
+
const src = _fs.default.readFileSync(originalFilePath).toString();
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
options.docs.enableMDParser && (source = (0, _markdownLoader.markdownParser)(source));
|
|
30
|
+
options.docs.enableReactLive && (source = (0, _reactLiveConvertor.reactLiveConvertor)(source, originalFilePath)); //to Enable the ReactLive Converter
|
|
20
31
|
|
|
21
32
|
return `${source};${name}.source=${JSON.stringify(src)};${name}.filePath=${JSON.stringify(filePath)}`;
|
|
22
33
|
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.markdownParser = markdownParser;
|
|
7
|
+
|
|
8
|
+
const markdownIt = require('markdown-it'); // const md = new markdownIt({ linkify: true,breaks:true });
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
const md = new markdownIt({
|
|
12
|
+
html: false,
|
|
13
|
+
linkify: true,
|
|
14
|
+
typographer: true,
|
|
15
|
+
breaks: true,
|
|
16
|
+
xhtmlOut: true
|
|
17
|
+
}); //const md = new markdownIt();
|
|
18
|
+
|
|
19
|
+
function markdownParser(source) {
|
|
20
|
+
if (!source) {
|
|
21
|
+
return '';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const startTag = '/* MD:START';
|
|
25
|
+
const endTag = 'MD:END */'; // Iterate through all occurrences of the tags
|
|
26
|
+
|
|
27
|
+
let startIndex = source.indexOf(startTag);
|
|
28
|
+
|
|
29
|
+
while (startIndex !== -1) {
|
|
30
|
+
const endIndex = source.indexOf(endTag, startIndex);
|
|
31
|
+
|
|
32
|
+
if (endIndex !== -1) {
|
|
33
|
+
const extractedMarkdown = source.slice(startIndex + startTag.length, endIndex);
|
|
34
|
+
let lines = extractedMarkdown.split('\n');
|
|
35
|
+
lines = lines.filter(line => line.trim() !== '');
|
|
36
|
+
const firstLineIndentMatch = lines[0].match(/^\s+/);
|
|
37
|
+
const firstLineIndent = firstLineIndentMatch ? firstLineIndentMatch[0] : '';
|
|
38
|
+
const modifiedStr = lines.map(line => line.replace(new RegExp(`^${firstLineIndent}`), '')).join('\n').replace(/(:--)|(--:)/g, '---');
|
|
39
|
+
let html = md.render(modifiedStr); //html = html.replace(/"|<hr>|<img src=(".*?")>|<br>|:--|--:|{|}|\$/g, match => {
|
|
40
|
+
|
|
41
|
+
html = html.replace(/"|{|}|\$/g, match => {
|
|
42
|
+
// if (match === '<hr>') {
|
|
43
|
+
// return '<hr/>';
|
|
44
|
+
// } else if (match.startsWith('<img src=')) {
|
|
45
|
+
// return match.replace('>', '/>');
|
|
46
|
+
// } else if (match === '<br>') {
|
|
47
|
+
// return '<br/>';
|
|
48
|
+
if (match === '$') {
|
|
49
|
+
return '$';
|
|
50
|
+
} else if (match === '{') {
|
|
51
|
+
return '{';
|
|
52
|
+
} else if (match === '}') {
|
|
53
|
+
return '}';
|
|
54
|
+
} // else if (match === ':--' || match === '--:' ) {
|
|
55
|
+
// return '---';
|
|
56
|
+
// }
|
|
57
|
+
else if (match === '}') {
|
|
58
|
+
return '}';
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return match;
|
|
62
|
+
}); // console.log(html,"html");
|
|
63
|
+
|
|
64
|
+
source = source.replace(source.slice(startIndex, endIndex + endTag.length), '<><div class="markDown">' + html + '</div></>');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
startIndex = source.indexOf(startTag, startIndex + 1); // console.log(source)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return source;
|
|
71
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.reactLiveConvertor = reactLiveConvertor;
|
|
7
|
+
|
|
8
|
+
const parser = require('@babel/parser');
|
|
9
|
+
|
|
10
|
+
const traverse = require('@babel/traverse').default;
|
|
11
|
+
|
|
12
|
+
const path = require('path');
|
|
13
|
+
|
|
14
|
+
function getFilename(originalFilePath) {
|
|
15
|
+
const [fileName] = path.basename(originalFilePath).split('.');
|
|
16
|
+
return fileName;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function reactLiveConvertor(source, originalFilePath) {
|
|
20
|
+
const fileName = getFilename(originalFilePath);
|
|
21
|
+
|
|
22
|
+
if (!source) {
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let importBlock = '';
|
|
27
|
+
let docCode = '';
|
|
28
|
+
const packages = new Set();
|
|
29
|
+
const fileContent = source.replace(/[\s\r\n]*$/, '');
|
|
30
|
+
const ast = parser.parse(fileContent, {
|
|
31
|
+
sourceType: 'module',
|
|
32
|
+
plugins: ['jsx', 'classProperties']
|
|
33
|
+
}); // Traverse the AST and find the import and export blocks
|
|
34
|
+
|
|
35
|
+
let remainingCode = ast.program.body.filter(node => node.type !== 'ImportDeclaration').map(node => fileContent.substring(node.start, node.end)).join('').replace(/export default/, '').replace(/export /, '').trim();
|
|
36
|
+
traverse(ast, {
|
|
37
|
+
ImportDeclaration(path) {
|
|
38
|
+
importBlock += `${fileContent.slice(path.node.start, path.node.end)}\n`;
|
|
39
|
+
path.node.specifiers.forEach(specifier => {
|
|
40
|
+
if (specifier.type === 'ImportSpecifier') {
|
|
41
|
+
packages.add(specifier.imported.name);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (specifier.local.type === 'Identifier') {
|
|
45
|
+
packages.add(specifier.local.name);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
ExpressionStatement(path) {
|
|
51
|
+
const expression = path.get('expression');
|
|
52
|
+
const expressionLeft = expression.get('left');
|
|
53
|
+
|
|
54
|
+
if (path.isExpressionStatement() && expression.isAssignmentExpression() && expressionLeft.isMemberExpression()) {
|
|
55
|
+
const docCheck = expressionLeft.toString();
|
|
56
|
+
|
|
57
|
+
if (docCheck === `${fileName}.docs`) {
|
|
58
|
+
docCode = expression.toString();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
} // IfStatement(path){
|
|
62
|
+
// if(path.node.type == 'IfStatement'){
|
|
63
|
+
// if(path.node.test.name == '__DOCS__'){
|
|
64
|
+
// let final = fileContent.slice(path.node.start,path.node.end)
|
|
65
|
+
// fileContent = fileContent.replace(final,'')
|
|
66
|
+
// console.log(fileContent);
|
|
67
|
+
// }
|
|
68
|
+
// }
|
|
69
|
+
// }
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
});
|
|
73
|
+
remainingCode = remainingCode.replace(/__DOCS__/, true);
|
|
74
|
+
remainingCode = remainingCode.replace(/`/g, '\\`').replace(/\$\{/g, '$\\{');
|
|
75
|
+
const brcklets = `(function () {
|
|
76
|
+
|
|
77
|
+
${remainingCode}
|
|
78
|
+
|
|
79
|
+
return <${fileName} />
|
|
80
|
+
|
|
81
|
+
}) ()`;
|
|
82
|
+
const addBractick = `\`${brcklets}\``;
|
|
83
|
+
const template = `
|
|
84
|
+
|
|
85
|
+
${importBlock}
|
|
86
|
+
|
|
87
|
+
import { LiveProvider, LiveEditor, LiveError, LivePreview } from '@zohodesk-private/react-live/es/index'
|
|
88
|
+
|
|
89
|
+
export default class ${fileName} extends React.Component{
|
|
90
|
+
render(){
|
|
91
|
+
return(
|
|
92
|
+
<LiveProvider scope={{${Array.from(packages).join(', ')}}} code={${addBractick}}>
|
|
93
|
+
<LiveEditor />
|
|
94
|
+
<LiveError />
|
|
95
|
+
<LivePreview />
|
|
96
|
+
|
|
97
|
+
</LiveProvider>
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
${docCode}
|
|
103
|
+
`;
|
|
104
|
+
return template;
|
|
105
|
+
}
|
|
@@ -6,25 +6,25 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
|
6
6
|
|
|
7
7
|
var _utils = require("../utils");
|
|
8
8
|
|
|
9
|
+
var _logger = require("../logger");
|
|
10
|
+
|
|
9
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
const options = (0, _utils.getOptions)();
|
|
12
14
|
const {
|
|
13
15
|
cssSelectorZipPath
|
|
14
16
|
} = options.impactService;
|
|
15
17
|
|
|
16
|
-
const zipname = _path.default.parse(cssSelectorZipPath).name; //
|
|
17
|
-
// TODO:NOTE: need to check about .. path related files creation
|
|
18
|
+
const zipname = _path.default.parse(cssSelectorZipPath).name; // TODO:NOTE: need to check about .. path related files creation
|
|
18
19
|
// for now no css files have given form react-cli need to make sure about it.
|
|
19
20
|
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
const zippath = _path.default.join(process.cwd(), cssSelectorZipPath);
|
|
22
23
|
|
|
23
24
|
if (_fs.default.existsSync(_path.default.join(process.cwd(), cssSelectorZipPath))) {
|
|
24
25
|
_fs.default.rmSync(zippath);
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
// console.log('created folder ==> ', dpath);
|
|
27
|
+
(0, _logger.messageLogger)('zip file deleted', zippath); // fs.rmSync(zippath, {force:true})
|
|
28
28
|
} // const minicssComment =
|
|
29
29
|
// '// extracted by mini-css-extract-plugin\n';
|
|
30
30
|
|
|
@@ -39,15 +39,15 @@ module.exports = function (source) {
|
|
|
39
39
|
|
|
40
40
|
const relativePath = _path.default.relative(rootContext, resourcePath);
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
const fpath = _path.default.join(rootContext, zipname, relativePath);
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
const originalpath = _path.default.join(rootContext, relativePath);
|
|
45
45
|
|
|
46
46
|
if (relativePath.startsWith('..')) {
|
|
47
47
|
throw `unexpected path ${relativePath}`;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
const dpath = fpath.slice(0, fpath.lastIndexOf(_path.default.sep));
|
|
51
51
|
|
|
52
52
|
if (!_fs.default.existsSync(originalpath)) {
|
|
53
53
|
throw `originalpath not exixt ${originalpath}`;
|
package/lib/logger.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.errorLogger = errorLogger;
|
|
7
|
+
exports.messageLogger = messageLogger;
|
|
8
|
+
exports.verboseLogger = verboseLogger;
|
|
9
|
+
exports.warnLogger = warnLogger;
|
|
10
|
+
|
|
11
|
+
/* eslint-disable no-console */
|
|
12
|
+
function messageLogger(...args) {
|
|
13
|
+
console.log(...args);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function errorLogger(...args) {
|
|
17
|
+
console.error(...args);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function warnLogger(...args) {
|
|
21
|
+
console.warn(...args);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function verboseLogger(...args) {
|
|
25
|
+
// TODO: need to be remove when publish happens
|
|
26
|
+
process.env.VERBOSE === 'true' && console.log('\x1b[33m [verbose] \x1b[0m', ...args);
|
|
27
|
+
}
|
|
@@ -25,6 +25,8 @@ var _webpack = _interopRequireDefault(require("webpack"));
|
|
|
25
25
|
|
|
26
26
|
var _plugins = require("../plugins");
|
|
27
27
|
|
|
28
|
+
var _CustomAttributePlugin = require("../plugins/CustomAttributePlugin");
|
|
29
|
+
|
|
28
30
|
var _RtlCssPlugin = require("../plugins/RtlSplitPlugin/RtlCssPlugin");
|
|
29
31
|
|
|
30
32
|
var _VariableConversionCollector = _interopRequireDefault(require("../plugins/VariableConversionCollector"));
|
|
@@ -33,6 +35,8 @@ var _SelectorPlugin = _interopRequireDefault(require("../plugins/SelectorPlugin"
|
|
|
33
35
|
|
|
34
36
|
var _configHtmlWebpackPlugins = require("./configHtmlWebpackPlugins");
|
|
35
37
|
|
|
38
|
+
var _EfcResourceCleanupPlugin = _interopRequireDefault(require("../plugins/EfcResourceCleanupPlugin"));
|
|
39
|
+
|
|
36
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
41
|
|
|
38
42
|
// import { windowsModification } from '../loaderUtils/windowsModification';
|
|
@@ -42,13 +46,15 @@ const getDevPlugins = (options, publicPath) => {
|
|
|
42
46
|
tpFolder,
|
|
43
47
|
folder,
|
|
44
48
|
instrumentScript,
|
|
49
|
+
customAttributes,
|
|
45
50
|
devCssFileBountry,
|
|
46
51
|
context,
|
|
47
52
|
hasEFC: prevOptionForEnableEFC,
|
|
48
53
|
hasShadowDOM,
|
|
49
54
|
cssVariableReplacementConfig,
|
|
50
55
|
plugins: pluginObject,
|
|
51
|
-
|
|
56
|
+
patterns,
|
|
57
|
+
exclude,
|
|
52
58
|
selectorWeightConfig,
|
|
53
59
|
server: {
|
|
54
60
|
mode
|
|
@@ -68,7 +74,8 @@ const getDevPlugins = (options, publicPath) => {
|
|
|
68
74
|
enableRTLSplit
|
|
69
75
|
},
|
|
70
76
|
i18n,
|
|
71
|
-
unusedFiles
|
|
77
|
+
unusedFiles,
|
|
78
|
+
resourceHints
|
|
72
79
|
} = options;
|
|
73
80
|
const hasEFC = newOptionForEnableEFC || prevOptionForEnableEFC;
|
|
74
81
|
const cssLTRFileNameTempalte = enableRTLSplit ? 'css/[name].ltr.css' : 'css/[name].css';
|
|
@@ -86,10 +93,11 @@ const getDevPlugins = (options, publicPath) => {
|
|
|
86
93
|
NODE_ENV: JSON.stringify(mode === 'dev-no-warn' ? 'production' : 'development')
|
|
87
94
|
}
|
|
88
95
|
}), new _miniCssExtractPlugin.default({
|
|
96
|
+
attributes: customAttributes.cssAttributes,
|
|
89
97
|
filename: cssLTRFileNameTempalte,
|
|
90
98
|
// ignoreOrder: true,
|
|
91
99
|
chunkFilename: cssLTRFileNameTempalte
|
|
92
|
-
}), new _plugins.ResourceHintsPlugin()];
|
|
100
|
+
}), new _plugins.ResourceHintsPlugin(resourceHints)];
|
|
93
101
|
|
|
94
102
|
if (enableRTLSplit) {
|
|
95
103
|
pluginsArr.push(new _RtlCssPlugin.RtlCssPlugin({
|
|
@@ -184,6 +192,10 @@ const getDevPlugins = (options, publicPath) => {
|
|
|
184
192
|
mainChunkName: 'main'
|
|
185
193
|
}));
|
|
186
194
|
instrumentScript && pluginsArr.push(new _plugins.ScriptInstrumentPlugin());
|
|
195
|
+
customAttributes.enable && pluginsArr.push(new _CustomAttributePlugin.CustomAttributePlugin(customAttributes));
|
|
196
|
+
customAttributes.enable && pluginsArr.push(new _EfcResourceCleanupPlugin.default(Object.assign({}, customAttributes, {
|
|
197
|
+
globalCacheObj: context
|
|
198
|
+
})));
|
|
187
199
|
hasShadowDOM && pluginsArr.push(new _plugins.ShadowDOMSupportPlugin());
|
|
188
200
|
|
|
189
201
|
if (devCssFileBountry) {
|
|
@@ -194,15 +206,22 @@ const getDevPlugins = (options, publicPath) => {
|
|
|
194
206
|
|
|
195
207
|
if (pluginObject.cssVariableReplacement) {
|
|
196
208
|
pluginsArr.push(new _VariableConversionCollector.default({
|
|
197
|
-
cssVariableReplacementConfig
|
|
209
|
+
cssVariableReplacementConfig,
|
|
210
|
+
patterns
|
|
198
211
|
}));
|
|
199
212
|
}
|
|
200
213
|
|
|
201
214
|
if (pluginObject.selectorWeight) {
|
|
202
215
|
pluginsArr.push(new _SelectorPlugin.default({
|
|
203
|
-
selectorWeightConfig
|
|
216
|
+
selectorWeightConfig,
|
|
217
|
+
exclude: exclude.selectorWeight,
|
|
218
|
+
patterns
|
|
204
219
|
}));
|
|
205
|
-
}
|
|
220
|
+
} // if (pluginObject.minifier) {
|
|
221
|
+
// // console.log('minifier active');
|
|
222
|
+
// pluginsArr.push(new MinifierPlugin());
|
|
223
|
+
// }
|
|
224
|
+
|
|
206
225
|
|
|
207
226
|
return pluginsArr.filter(Boolean);
|
|
208
227
|
};
|