@zohodesk/react-cli 1.1.19-exp.16 → 1.1.19-exp.17

Sign up to get free protection for your applications and to get access to all the features.
package/docs/ReactLive.md CHANGED
@@ -11,8 +11,4 @@
11
11
 
12
12
  # v1.1.2 update:
13
13
 
14
- * ReactLiveConverter filepath changed to 'reactLiveConverter.js' in docLoader file
15
-
16
- # v1.1.20 update:
17
-
18
- * enhancedReactLiveConverter.js added and imported in docLoader file
14
+ * ReactLiveConverter filepath changed to 'reactLiveConverter.js' in docLoader file
@@ -6,7 +6,7 @@ var _getOptions = _interopRequireDefault(require("../utils/getOptions.js"));
6
6
 
7
7
  var _path = _interopRequireDefault(require("path"));
8
8
 
9
- var _enhancedReactLiveConverter = require("./enhancedReactLiveConverter.js");
9
+ var _reactLiveConvertor = require("./reactLiveConvertor");
10
10
 
11
11
  var _markdownLoader = require("./markdownLoader.js");
12
12
 
@@ -27,7 +27,7 @@ module.exports = function (source) {
27
27
  const src = _fs.default.readFileSync(originalFilePath).toString();
28
28
 
29
29
  options.docs.enableMDParser && (source = (0, _markdownLoader.markdownParser)(source));
30
- options.docs.enableReactLive && (source = (0, _enhancedReactLiveConverter.enhancedReactLiveConverter)(source, originalFilePath)); //to Enable the ReactLive Converter
30
+ options.docs.enableReactLive && (source = (0, _reactLiveConvertor.reactLiveConvertor)(source, originalFilePath)); //to Enable the ReactLive Converter
31
31
 
32
32
  return `${source};${name}.source=${JSON.stringify(src)};${name}.filePath=${JSON.stringify(filePath)}`;
33
33
  };
@@ -37,6 +37,8 @@ var _configHtmlWebpackPlugins = require("./configHtmlWebpackPlugins");
37
37
 
38
38
  var _EfcResourceCleanupPlugin = _interopRequireDefault(require("../plugins/EfcResourceCleanupPlugin"));
39
39
 
40
+ var _EventsHandlingPlugin = require("../plugins/EventsHandlingPlugin");
41
+
40
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
43
 
42
44
  // import { windowsModification } from '../loaderUtils/windowsModification';
@@ -191,11 +193,16 @@ const getDevPlugins = (options, publicPath) => {
191
193
  i18nManifestFileName,
192
194
  mainChunkName: 'main'
193
195
  }));
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
- })));
196
+ instrumentScript && pluginsArr.push(new _plugins.ScriptInstrumentPlugin()); // customAttributes.enable &&
197
+ // console.log('hello ')
198
+ // pluginsArr.push(new CustomAttributePlugin(customAttributes));
199
+ // customAttributes.enable &&
200
+ // pluginsArr.push(
201
+ // new EfcResouc eCleanupPlugin(
202
+ // Object.assign({}, customAttributes, { globalCacheObj: context })
203
+ // )
204
+ // );
205
+
199
206
  hasShadowDOM && pluginsArr.push(new _plugins.ShadowDOMSupportPlugin());
200
207
 
201
208
  if (devCssFileBountry) {
@@ -217,12 +224,13 @@ const getDevPlugins = (options, publicPath) => {
217
224
  exclude: exclude.selectorWeight,
218
225
  patterns
219
226
  }));
220
- } // if (pluginObject.minifier) {
227
+ }
228
+
229
+ pluginsArr.push(new _EventsHandlingPlugin.EventsHandlingPlugin()); // if (pluginObject.minifier) {
221
230
  // // console.log('minifier active');
222
231
  // pluginsArr.push(new MinifierPlugin());
223
232
  // }
224
233
 
225
-
226
234
  return pluginsArr.filter(Boolean);
227
235
  };
228
236
 
@@ -237,7 +237,7 @@ const getProdPlugins = (options, publicPath = '') => {
237
237
  if (bundleAnalyze) {
238
238
  pluginsArr.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({
239
239
  analyzerMode: 'static',
240
- generateStatsFile: false,
240
+ generateStatsFile: !enableStats,
241
241
  openAnalyzer: false,
242
242
  statsOptions: enableStats ? null : {
243
243
  source: false,
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EventsHandlingPlugin = void 0;
7
+
8
+ /* eslint-disable no-use-before-define */
9
+ class EventsHandlingPlugin {
10
+ constructor(options) {}
11
+
12
+ apply(compiler) {
13
+ console.log("hi"); // NOTE: we not using this, Reason currently this option is only need for EFC,
14
+ // So it do not needed.
15
+
16
+ compiler.hooks.thisCompilation.tap({
17
+ name: 'CustomAttributePlugin',
18
+ stage: 1,
19
+ fn: compilation => {
20
+ compilation.mainTemplate.hooks.requireEnsure.tap('CustomAttributePlugin', source => {
21
+ // const str = attributeSetTemplate(cssAttributes, 'linkTag');
22
+ const replacesourcedStr = source.replace('linkTag.onerror = function(event) {', 'linkTag.onerror = function(event) { linkTag.onerror = linkTag.onload = null');
23
+ const re = replacesourcedStr.replace('linkTag.onload = resolve', `linkTag.onload = () => {
24
+ resolve();
25
+ linkTag.onerror = linkTag.onload = null
26
+ };`); // console.log({ s: source, r: replacedStr });
27
+
28
+ return re;
29
+ });
30
+ }
31
+ });
32
+ }
33
+
34
+ }
35
+
36
+ exports.EventsHandlingPlugin = EventsHandlingPlugin;
@@ -228,8 +228,12 @@ class I18nDownlodLogic {
228
228
  if(dataSrc === srcPath || dataSrc === fullsrcPath){ return resolve();}
229
229
  }
230
230
  var scriptTag = document.createElement("script");
231
- scriptTag.onload = resolve;
231
+ scriptTag.onload = () => {
232
+ resolve();
233
+ scriptTag.onerror = scriptTag.onload = null;
234
+ };
232
235
  scriptTag.onerror = function(event) {
236
+ scriptTag.onerror = scriptTag.onload = null;
233
237
  var request = event && event.target && event.target.src || fullsrcPath;
234
238
  var err = new Error("Loading I18N chunk " + chunkId + " failed.\\n(" + request + ")");
235
239
  err.code = "I18N_CHUNK_LOAD_FAILED";
@@ -237,6 +241,7 @@ class I18nDownlodLogic {
237
241
  delete installedI18nChunks[chunkId];
238
242
  scriptTag.parentNode.removeChild(scriptTag);
239
243
  reject(err);
244
+ scriptTag.onerror = scriptTag.onload = null;
240
245
  };
241
246
  ${mainTemplate.requireFn}.nc && scriptTag.setAttribute("nonce", ${mainTemplate.requireFn}.nc);
242
247
  scriptTag.src = fullsrcPath;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/react-cli",
3
- "version": "1.1.19-exp.16",
3
+ "version": "1.1.19-exp.17",
4
4
  "description": "A CLI tool for build modern web application and libraries",
5
5
  "scripts": {
6
6
  "init": "node ./lib/utils/init.js",
@@ -1,151 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.enhancedReactLiveConverter = enhancedReactLiveConverter;
7
-
8
- const parser = require('@babel/parser');
9
-
10
- const traverse = require('@babel/traverse').default;
11
-
12
- const t = require("@babel/types");
13
-
14
- const path = require('path');
15
-
16
- function getFilename(originalFilePath) {
17
- const [fileName] = path.basename(originalFilePath).split('.');
18
- return fileName;
19
- }
20
-
21
- function convertKeyToValue(object = {}) {
22
- let keys = Object.keys(object);
23
- let values = Object.values(object);
24
- return keys.reduce((value, item, i) => {
25
- if (item.includes(',')) {
26
- item = item.replace(/{|}/g, "");
27
- item = '{ ' + item + ' }';
28
- }
29
-
30
- value = value + "'" + values[i] + "'" + ": " + item + ",";
31
- return value;
32
- }, '');
33
- }
34
-
35
- function mergeDuplicateValues(obj) {
36
- let mergedObj = {};
37
-
38
- for (let key in obj) {
39
- if (obj.hasOwnProperty(key)) {
40
- let value = obj[key];
41
- let existingKey = Object.keys(mergedObj).find(k => mergedObj[k] === value);
42
-
43
- if (existingKey) {
44
- mergedObj[existingKey + ' , ' + key] = value;
45
- delete mergedObj[existingKey];
46
- } else {
47
- mergedObj[key] = value;
48
- }
49
- }
50
- }
51
-
52
- return mergedObj;
53
- }
54
-
55
- function enhancedReactLiveConverter(source, originalFilePath) {
56
- const fileName = getFilename(originalFilePath);
57
-
58
- if (!source) {
59
- return '';
60
- }
61
-
62
- let docCode = '';
63
- const fileContent = source.replace(/[\s\r\n]*$/, '');
64
- const ast = parser.parse(fileContent, {
65
- sourceType: 'module',
66
- plugins: ['jsx', 'classProperties']
67
- });
68
-
69
- function createImportStatements(input) {
70
- let output = '';
71
-
72
- for (const key in input) {
73
- if (input.hasOwnProperty(key) && key !== 'React') {
74
- output += `import ${key} from '${input[key]}';\n`;
75
- }
76
- }
77
-
78
- return output;
79
- }
80
-
81
- const importBlock = {};
82
- const printableCode = {};
83
- let remainingBlock = ''; // Traverse the AST and find the import and export blocks
84
-
85
- let remainingCode = ast.program.body.filter(node => node.type !== 'ImportDeclaration').filter(node => node.type !== 'ExpressionStatement').map(node => fileContent.substring(node.start, node.end)).join('').trim();
86
- traverse(ast, {
87
- ImportDeclaration(path) {
88
- path.node.specifiers.map(specifier => {
89
- if (t.isImportSpecifier(specifier)) {
90
- importBlock[`{ ${specifier.local.name} }`] = path.node.source.value;
91
- printableCode[`{ ${specifier.local.name} }`] = path.node.source.value;
92
- return `{'${specifier.imported.name}': ${specifier.local.name}}`;
93
- } else if (t.isImportDefaultSpecifier(specifier)) {
94
- importBlock[`${specifier.local.name}`] = `${path.node.source.value}`;
95
- printableCode[`${specifier.local.name}`] = `${path.node.source.value} `;
96
- return specifier.local.name;
97
- }
98
- }).join(", ");
99
- },
100
-
101
- ExpressionStatement(path) {
102
- const expression = path.get('expression');
103
- const expressionLeft = expression.get('left');
104
-
105
- if (path.isExpressionStatement() && expression.isAssignmentExpression() && expressionLeft.isMemberExpression()) {
106
- const docCheck = expressionLeft.toString();
107
-
108
- if (docCheck === `${fileName}.docs`) {
109
- docCode = expression.toString();
110
- } else if (docCheck.includes(fileName)) {
111
- const startIndex = path.node.start;
112
- const endIndex = path.node.end;
113
- remainingBlock += fileContent.slice(startIndex, endIndex);
114
- }
115
- }
116
- }
117
-
118
- });
119
- remainingCode = remainingCode.replace(/__DOCS__/, true);
120
- remainingCode = remainingCode.replace(/`/g, '\\`').replace(/\$\{/g, '$\\{');
121
- remainingBlock = remainingBlock.replace(/`/g, '\\`').replace(/\$\{/g, '$\\{');
122
- const addBractick = `\`
123
- ${createImportStatements(printableCode)}
124
- ${remainingCode}
125
-
126
- ${remainingBlock}\`
127
- `;
128
- const template = `
129
-
130
- ${createImportStatements(importBlock)}
131
-
132
- import { LiveProviderv3, LiveEditorv3, LiveErrorv3, LivePreviewv3, Wrapper, EditorWrapper , ErrorWrapper, PreviewWrapper } from '@zohodesk-private/react-live/es/index'
133
-
134
- export default class ${fileName} extends React.Component{
135
- render(){
136
- return(
137
- <LiveProviderv3 needToolBox scope={{import: {${convertKeyToValue(mergeDuplicateValues(printableCode))}}}} code={${addBractick}}>
138
- <Wrapper>
139
- <EditorWrapper><LiveEditorv3 /></EditorWrapper>
140
- <PreviewWrapper><LivePreviewv3 /></PreviewWrapper>
141
- <LiveErrorv3 needStyle />
142
- </Wrapper>
143
- </LiveProviderv3>
144
- )
145
- }
146
- }
147
-
148
- ${docCode}
149
- `;
150
- return template;
151
- }