@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.
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
  };