@zohodesk/react-cli 1.1.14-kubernetes → 1.1.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. package/.vscode/settings.json +25 -0
  2. package/README.md +294 -16
  3. package/bin/cli.js +30 -55
  4. package/docs/ComposeMinification.md +13 -0
  5. package/docs/CustomChunks.md +12 -9
  6. package/docs/MarkdownParser.md +18 -0
  7. package/docs/ReactLive.md +14 -0
  8. package/docs/SelectorWeight.md +3 -0
  9. package/docs/ValueReplacer.md +27 -0
  10. package/docs/VariableConversion.md +6 -1
  11. package/docs/patternFiltering.md +57 -0
  12. package/lib/common/buildEs.js +12 -0
  13. package/lib/common/runPreProcess.js +71 -0
  14. package/lib/common/splitChunks.js +65 -45
  15. package/lib/common/testPattern.js +9 -11
  16. package/lib/common/valueReplacer.js +1 -3
  17. package/lib/configs/resolvers.js +16 -5
  18. package/lib/configs/webpack.css.umd.config.js +3 -2
  19. package/lib/configs/webpack.dev.config.js +15 -5
  20. package/lib/configs/webpack.docs.config.js +17 -5
  21. package/lib/configs/webpack.impact.config.js +11 -4
  22. package/lib/configs/webpack.prod.config.js +15 -5
  23. package/lib/constants.js +3 -3
  24. package/lib/deprecationLogger.js +40 -0
  25. package/lib/loaderUtils/getCSSLoaders.js +98 -49
  26. package/lib/loaderUtils/tests/windowsModification.test.js +10 -0
  27. package/lib/loaderUtils/windowsModification.js +6 -1
  28. package/lib/loaders/__test__/markdownLoader.spec.js +145 -0
  29. package/lib/loaders/composeLoader.js +298 -0
  30. package/lib/loaders/docsLoader.js +18 -7
  31. package/lib/loaders/markdownLoader.js +71 -0
  32. package/lib/loaders/reactLiveConvertor.js +105 -0
  33. package/lib/loaders/selectorMappingLoader.js +9 -9
  34. package/lib/logger.js +27 -0
  35. package/lib/pluginUtils/getDevPlugins.js +25 -6
  36. package/lib/pluginUtils/getProdPlugins.js +32 -5
  37. package/lib/pluginUtils/getUMDCSSPlugins.js +1 -1
  38. package/lib/pluginUtils/getUMDComponentPlugins.js +1 -1
  39. package/lib/plugins/CustomAttributePlugin.js +82 -0
  40. package/lib/plugins/CustomAttributePlugin.md +35 -0
  41. package/lib/plugins/EFCPlugin.js +9 -9
  42. package/lib/plugins/EFCTemplatePlugin.js +10 -12
  43. package/lib/plugins/EfcResourceCleanupPlugin.js +43 -0
  44. package/lib/plugins/I18NInjectIntoIndexPlugin.js +8 -9
  45. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +2 -3
  46. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +2 -7
  47. package/lib/plugins/I18nSplitPlugin/index.js +1 -1
  48. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +8 -8
  49. package/lib/plugins/{UglifyCSSPlugin.js → MinifyPlugin.js} +3 -3
  50. package/lib/plugins/ReportGeneratePlugin.js +8 -6
  51. package/lib/plugins/ResourceHintsPlugin.js +13 -3
  52. package/lib/plugins/SelectorPlugin.js +77 -37
  53. package/lib/plugins/StatsPlugin.js +82 -0
  54. package/lib/plugins/UnusedFilesFindPlugin.js +7 -5
  55. package/lib/plugins/VariableConversionCollector.js +40 -101
  56. package/lib/plugins/index.js +7 -7
  57. package/lib/plugins/utils/classHandling.js +35 -0
  58. package/lib/plugins/utils/fileHandling.js +92 -0
  59. package/lib/plugins/utils/tests/fileHandling.test.js +30 -0
  60. package/lib/plugins/variableConvertorUtils.js +133 -0
  61. package/lib/postcss-plugins/EmptyPlugin.js +8 -0
  62. package/lib/postcss-plugins/ExcludePlugin.js +1 -1
  63. package/lib/postcss-plugins/IncludePlugin.js +23 -0
  64. package/lib/postcss-plugins/RTLSplitPlugin.js +4 -10
  65. package/lib/postcss-plugins/SelectorReplace.js +80 -0
  66. package/lib/postcss-plugins/ValueReplacer.js +8 -29
  67. package/lib/postcss-plugins/__test__/selectorReplace.test.js +28 -0
  68. package/lib/postcss-plugins/__test__/valueReplacer.spec.js +43 -0
  69. package/lib/postcss-plugins/hoverActivePlugin.js +0 -6
  70. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +0 -1
  71. package/lib/postcss-plugins/variableModificationPlugin/index.js +94 -38
  72. package/lib/schemas/index.js +95 -18
  73. package/lib/servers/devBuild.js +13 -11
  74. package/lib/servers/getCliPath.js +3 -5
  75. package/lib/servers/httpsOptions.js +12 -13
  76. package/lib/servers/nowatchserver.js +62 -55
  77. package/lib/servers/requireLocalOrGlobal.js +61 -0
  78. package/lib/servers/server.js +53 -52
  79. package/lib/utils/cssClassNameGenerate.js +70 -13
  80. package/lib/utils/deprecationSupport.js +134 -0
  81. package/lib/utils/getOptions.js +35 -28
  82. package/lib/utils/getServerURL.js +1 -9
  83. package/lib/utils/index.js +14 -12
  84. package/lib/utils/initPreCommitHook.js +5 -5
  85. package/lib/utils/log.js +11 -0
  86. package/lib/utils/object-manipulation.js +88 -0
  87. package/lib/utils/pullOrigin.js +3 -3
  88. package/lib/utils/reinstallDependencies.js +3 -3
  89. package/lib/utils/selectorReplacer.js +47 -0
  90. package/lib/utils/switchBranch.js +4 -2
  91. package/lib/utils/variableConverter.js +104 -0
  92. package/npm-shrinkwrap.json +33485 -0
  93. package/package.json +5 -3
  94. package/templates/docs/all.html +1 -0
  95. package/templates/docs/component.html +1 -0
  96. package/templates/docs/components.html +1 -0
  97. package/templates/docs/css/markdown.css +202 -0
  98. package/templates/docs/css/style.css +136 -169
  99. package/templates/docs/index.html +796 -632
  100. package/lib/plugins/composeCommonPlugin.js +0 -30
  101. 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
- let comNameAry = this.resourcePath.split(_path.default.sep);
11
- let filePath = this.resourcePath;
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
- let appPath = _fs.default.realpathSync(process.cwd());
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
- let changePath = filePath.replace('/lib/', '/src/');
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
- let src = _fs.default.readFileSync(filePath.startsWith(appPath) ? filePath : changePath).toString();
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 '&#36;';
50
+ } else if (match === '{') {
51
+ return '&#123;';
52
+ } else if (match === '}') {
53
+ return '&#125;';
54
+ } // else if (match === ':--' || match === '--:' ) {
55
+ // return '---';
56
+ // }
57
+ else if (match === '}') {
58
+ return '&#125;';
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
- let options = (0, _utils.getOptions)();
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; // console.log({ cssSelectorZipPath, zipname });
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
- let zippath = _path.default.join(process.cwd(), cssSelectorZipPath);
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
- console.log('zip file deleted', zippath); // fs.rmSync(zippath, {force:true})
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
- let fpath = _path.default.join(rootContext, zipname, relativePath);
42
+ const fpath = _path.default.join(rootContext, zipname, relativePath);
43
43
 
44
- let originalpath = _path.default.join(rootContext, relativePath);
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
- let dpath = fpath.slice(0, fpath.lastIndexOf(_path.default.sep));
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
- // exclude,
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
  };