@zohodesk/react-cli 1.1.19 → 1.1.20-exp.1

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -44,6 +44,34 @@ Now to run app
44
44
 
45
45
  # Change Logs
46
46
 
47
+ # 1.1.20-exp.1
48
+
49
+ **Changes**
50
+
51
+ - Added memory leak fixes for script, links tags
52
+
53
+ **Feature**
54
+ - Custom Script loading strategy support for initial html script tags.
55
+
56
+ # 1.1.19-exp.18
57
+
58
+ **Changes**
59
+
60
+ - To do further build size optimization by utilizing webpack provided config.
61
+
62
+ ```
63
+ innerGraph: true,
64
+ usedExports: true,
65
+ sideEffects: true
66
+ ```
67
+ # 1.1.19 (27-5-2024)
68
+
69
+ **Feature**
70
+
71
+ - enhancedReactLiveConverter.js added and imported in docLoader file
72
+
73
+ - stats.json file creation deleted, if `enable_stats` option is false.
74
+
47
75
  # 1.1.19 (5-2-2024)
48
76
 
49
77
  **Feature:-**
package/docs/ReactLive.md CHANGED
@@ -11,4 +11,8 @@
11
11
 
12
12
  # v1.1.2 update:
13
13
 
14
- * ReactLiveConverter filepath changed to 'reactLiveConverter.js' in docLoader file
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
@@ -102,7 +102,10 @@ module.exports = {
102
102
  // exclude: /\/smap/
103
103
  // })
104
104
  // ],
105
- moduleIds: 'named'
105
+ moduleIds: 'named',
106
+ usedExports: true,
107
+ // innerGraph: true, // this property present on webpack 5
108
+ sideEffects: true
106
109
  },
107
110
  stats: {
108
111
  children: false,
@@ -6,7 +6,7 @@ var _getOptions = _interopRequireDefault(require("../utils/getOptions.js"));
6
6
 
7
7
  var _path = _interopRequireDefault(require("path"));
8
8
 
9
- var _reactLiveConvertor = require("./reactLiveConvertor");
9
+ var _enhancedReactLiveConverter = require("./enhancedReactLiveConverter.js");
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, _reactLiveConvertor.reactLiveConvertor)(source, originalFilePath)); //to Enable the ReactLive Converter
30
+ options.docs.enableReactLive && (source = (0, _enhancedReactLiveConverter.enhancedReactLiveConverter)(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
  };
@@ -0,0 +1,151 @@
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
+ }
@@ -19,32 +19,32 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
19
  /* import WebWorkerTemplatePlugin from 'webpack/lib/webworker/WebWorkerTemplatePlugin';
20
20
  import ExternalsPlugin from 'webpack/lib/ExternalsPlugin'; */
21
21
  const schema = {
22
- 'type': 'object',
23
- 'properties': {
24
- 'publicPath': {
25
- 'anyOf': [{
26
- 'type': 'string'
22
+ type: 'object',
23
+ properties: {
24
+ publicPath: {
25
+ anyOf: [{
26
+ type: 'string'
27
27
  }, {
28
- 'instanceof': 'Function'
28
+ instanceof: 'Function'
29
29
  }]
30
30
  },
31
- 'filename': {
32
- 'anyOf': [{
33
- 'type': 'string',
34
- 'minLength': 1
31
+ filename: {
32
+ anyOf: [{
33
+ type: 'string',
34
+ minLength: 1
35
35
  }, {
36
- 'instanceof': 'Function'
36
+ instanceof: 'Function'
37
37
  }]
38
38
  },
39
- 'chunkFilename': {
40
- 'type': 'string',
41
- 'minLength': 1
39
+ chunkFilename: {
40
+ type: 'string',
41
+ minLength: 1
42
42
  },
43
- 'esModule': {
44
- 'type': 'boolean'
43
+ esModule: {
44
+ type: 'boolean'
45
45
  }
46
46
  },
47
- 'additionalProperties': false
47
+ additionalProperties: false
48
48
  }; // eslint-disable-next-line
49
49
 
50
50
  function loader() {}
@@ -112,25 +112,40 @@ function pitch(request) {
112
112
  }
113
113
 
114
114
  function workerCode() {
115
+ if (this.workerInstance) {
116
+ return this.workerInstance;
117
+ }
118
+
115
119
  let blob;
116
120
 
117
121
  try {
118
122
  blob = new Blob([`importScripts('${this.workerUrl}');`], {
119
- 'type': 'application/javascript'
123
+ type: 'application/javascript'
120
124
  });
121
125
  } catch (e1) {
122
126
  throw new Error(e1);
123
127
  }
124
128
 
125
- let url = window.URL || window.webkitURL;
126
- let blobUrl = url.createObjectURL(blob);
127
- let worker = new Worker(blobUrl);
128
- return worker;
129
+ const url = window.URL || window.webkitURL;
130
+ const blobUrl = url.createObjectURL(blob);
131
+ this.workerInstance = new Worker(blobUrl);
132
+ return this.workerInstance;
129
133
  }
130
134
 
131
- return cb(null, `${options.esModule ? 'export default' : 'module.exports ='} {\n
135
+ return cb(null, `const workerObj ={\n
136
+ workerInstance: null, \n
132
137
  workerUrl: __webpack_public_path__ + ${JSON.stringify(entry)}, \n
133
138
  getInstance: ${workerCode} \n
134
- }`);
139
+ };\n
140
+ workerObj.getInstance();
141
+ ${options.esModule ? 'export default' : 'module.exports ='} workerObj;
142
+ `); // return cb(
143
+ // null,
144
+ // `${options.esModule ? 'export default' : 'module.exports ='} {\n
145
+ // workerInstance: null, \n
146
+ // workerUrl: __webpack_public_path__ + ${JSON.stringify(entry)}, \n
147
+ // getInstance: ${workerCode} \n
148
+ // }`
149
+ // );
135
150
  });
136
151
  }
@@ -13,6 +13,10 @@ var _htmlWebpackInjectAttributesPlugin = _interopRequireDefault(require("html-we
13
13
 
14
14
  var _common = require("../common");
15
15
 
16
+ var _utils = require("../utils");
17
+
18
+ var _CustomScriptLoadingStrategyPlugin = _interopRequireDefault(require("../plugins/CustomScriptLoadingStrategyPlugin"));
19
+
16
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
21
 
18
22
  const defaultHTMLMiniFyOption = {
@@ -26,6 +30,47 @@ const defaultHTMLMiniFyOption = {
26
30
  removeStyleLinkTypeAttributes: true,
27
31
  useShortDoctype: true
28
32
  };
33
+ const defaultScriptLoadingStrategy = 'defer';
34
+ const allowedScriptLoadingStrategies = ['blocking', 'defer', 'async', 'module'];
35
+
36
+ function isAllowedScriptLoadingStrategyUsed(scriptLoadingStategey) {
37
+ return allowedScriptLoadingStrategies.includes(scriptLoadingStategey);
38
+ }
39
+
40
+ function getScriptLoadingStrategyForStringType(scriptLoadingStategey) {
41
+ if (isAllowedScriptLoadingStrategyUsed(scriptLoadingStategey)) {
42
+ return scriptLoadingStategey;
43
+ }
44
+
45
+ return defaultScriptLoadingStrategy;
46
+ }
47
+
48
+ function getScriptLoadingStrategyForObject(scriptLoadingStategey) {
49
+ if (Object.keys(scriptLoadingStategey).length === 0) {
50
+ return defaultScriptLoadingStrategy;
51
+ }
52
+
53
+ const isAllowedScriptLoadingStrategy = Object.keys(scriptLoadingStategey).every(key => isAllowedScriptLoadingStrategyUsed(key));
54
+
55
+ if (isAllowedScriptLoadingStrategy) {
56
+ return Object.assign({}, scriptLoadingStategey);
57
+ }
58
+
59
+ console.warn('un supported script loading strategy used', scriptLoadingStategey);
60
+ return defaultScriptLoadingStrategy;
61
+ }
62
+
63
+ function getScriptLoadingStrategy(scriptLoadingStategey) {
64
+ if ((0, _utils.getTypeOf)(scriptLoadingStategey) === 'string') {
65
+ return getScriptLoadingStrategyForStringType(scriptLoadingStategey);
66
+ }
67
+
68
+ if ((0, _utils.getTypeOf)(scriptLoadingStategey) === 'object') {
69
+ return getScriptLoadingStrategyForObject(scriptLoadingStategey);
70
+ }
71
+
72
+ return 'defer';
73
+ }
29
74
 
30
75
  function configHtmlWebpackPlugins(plugins, {
31
76
  enableChunkHash = false,
@@ -33,7 +78,8 @@ function configHtmlWebpackPlugins(plugins, {
33
78
  inject,
34
79
  crossorigin,
35
80
  hasEFC,
36
- minify: minifyHtmlOptions = false
81
+ minify: minifyHtmlOptions = false,
82
+ customScriptLoadingStrategey
37
83
  }) {
38
84
  const optionsHtmlWebpack = {
39
85
  chunksSortMode: 'none',
@@ -56,4 +102,16 @@ function configHtmlWebpackPlugins(plugins, {
56
102
  crossorigin && plugins.push(new _htmlWebpackInjectAttributesPlugin.default({
57
103
  crossorigin: 'anonymous'
58
104
  }));
105
+
106
+ if (customScriptLoadingStrategey) {
107
+ console.log('script loading stategy', customScriptLoadingStrategey);
108
+ const currentScriptLoadingStrategy = getScriptLoadingStrategy(customScriptLoadingStrategey);
109
+ console.log('currentscriptloading strategy', currentScriptLoadingStrategy);
110
+
111
+ if ((0, _utils.getTypeOf)(currentScriptLoadingStrategy) === 'object') {
112
+ plugins.push(new _CustomScriptLoadingStrategyPlugin.default({
113
+ scriptLoadingStategey: currentScriptLoadingStrategy
114
+ }));
115
+ }
116
+ }
59
117
  }
@@ -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';
@@ -60,7 +62,8 @@ const getDevPlugins = (options, publicPath) => {
60
62
  mode
61
63
  },
62
64
  htmlTemplate: {
63
- inject
65
+ inject,
66
+ customScriptLoadingStrategey
64
67
  },
65
68
  crossorigin
66
69
  },
@@ -166,7 +169,8 @@ const getDevPlugins = (options, publicPath) => {
166
169
  minify: false,
167
170
  inject,
168
171
  crossorigin,
169
- hasEFC
172
+ hasEFC,
173
+ customScriptLoadingStrategey
170
174
  });
171
175
 
172
176
  if (hasEFC) {
@@ -217,12 +221,13 @@ const getDevPlugins = (options, publicPath) => {
217
221
  exclude: exclude.selectorWeight,
218
222
  patterns
219
223
  }));
220
- } // if (pluginObject.minifier) {
224
+ }
225
+
226
+ pluginsArr.push(new _EventsHandlingPlugin.EventsHandlingPlugin()); // if (pluginObject.minifier) {
221
227
  // // console.log('minifier active');
222
228
  // pluginsArr.push(new MinifierPlugin());
223
229
  // }
224
230
 
225
-
226
231
  return pluginsArr.filter(Boolean);
227
232
  };
228
233
 
@@ -27,6 +27,8 @@ var _VariableConversionCollector = _interopRequireDefault(require("../plugins/Va
27
27
 
28
28
  var _SelectorPlugin = _interopRequireDefault(require("../plugins/SelectorPlugin"));
29
29
 
30
+ var _EventsHandlingPlugin = require("../plugins/EventsHandlingPlugin");
31
+
30
32
  var _plugins = require("../plugins");
31
33
 
32
34
  var _CustomAttributePlugin = require("../plugins/CustomAttributePlugin");
@@ -78,7 +80,8 @@ const getProdPlugins = (options, publicPath = '') => {
78
80
  } = options.app;
79
81
  const {
80
82
  inject,
81
- minify: minifyHtmlOptions
83
+ minify: minifyHtmlOptions,
84
+ customScriptLoadingStrategey
82
85
  } = htmlTemplate;
83
86
  const {
84
87
  i18n
@@ -176,6 +179,7 @@ const getProdPlugins = (options, publicPath = '') => {
176
179
  folder,
177
180
  inject,
178
181
  minify: minifyHtmlOptions,
182
+ customScriptLoadingStrategey,
179
183
  crossorigin,
180
184
  hasEFC
181
185
  });
@@ -237,7 +241,7 @@ const getProdPlugins = (options, publicPath = '') => {
237
241
  if (bundleAnalyze) {
238
242
  pluginsArr.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({
239
243
  analyzerMode: 'static',
240
- generateStatsFile: !enableStats,
244
+ generateStatsFile: false,
241
245
  openAnalyzer: false,
242
246
  statsOptions: enableStats ? null : {
243
247
  source: false,
@@ -306,6 +310,7 @@ const getProdPlugins = (options, publicPath = '') => {
306
310
  statsOutputExcludeKeys,
307
311
  statsFileName
308
312
  }));
313
+ pluginsArr.push(new _EventsHandlingPlugin.EventsHandlingPlugin());
309
314
  return pluginsArr;
310
315
  };
311
316
 
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const pluginName = 'CustomScriptLoadingStrategyPlugin';
13
+
14
+ class CustomScriptLoadingStrategyPlugin {
15
+ constructor({
16
+ scriptLoadingStategey
17
+ } = {}) {
18
+ this.scriptLoadingStrategy = scriptLoadingStategey;
19
+ }
20
+
21
+ getFileNameFromTagSrc(src) {
22
+ const fileNameArr = src.split('/');
23
+ return fileNameArr[fileNameArr.length - 1];
24
+ }
25
+
26
+ addAttributestToTag(tag, attributes) {
27
+ tag.attributes = Object.assign({}, tag.attributes, attributes);
28
+ }
29
+
30
+ matchFileName(tag, fileName) {
31
+ return fileName.test(this.getFileNameFromTagSrc(tag.attributes.src));
32
+ }
33
+
34
+ blockingStrategy(tag) {
35
+ delete tag.attributes.defer;
36
+ delete tag.attributes.async;
37
+ }
38
+
39
+ deferStrategy(tag) {
40
+ delete tag.attributes.async;
41
+ }
42
+
43
+ asyncStrategy(tag) {
44
+ delete tag.attributes.defer;
45
+ }
46
+
47
+ moduleStrategy(tag) {
48
+ this.deferStrategy(tag);
49
+ }
50
+
51
+ matchStrategy(scriptLoadingStrategy, tag) {
52
+ if (scriptLoadingStrategy === 'blocking') {
53
+ this.blockingStrategy(tag);
54
+ }
55
+
56
+ if (scriptLoadingStrategy === 'defer') {
57
+ this.deferStrategy(tag);
58
+ }
59
+
60
+ if (scriptLoadingStrategy === 'async') {
61
+ this.asyncStrategy(tag);
62
+ }
63
+
64
+ if (scriptLoadingStrategy === 'module') {
65
+ this.moduleStrategy(tag);
66
+ }
67
+ }
68
+
69
+ matchAndApplyCustomLoadingStrategyToScripts(tags) {
70
+ Object.keys(this.scriptLoadingStrategy).forEach(scriptLoadingStrategy => {
71
+ console.log('sc', scriptLoadingStrategy);
72
+ const filesToMatch = this.scriptLoadingStrategy[scriptLoadingStrategy];
73
+ tags.forEach(tag => {
74
+ if (tag.attributes.src) {
75
+ const isFileMatch = filesToMatch.some(fileName => this.matchFileName(tag, fileName));
76
+
77
+ if (isFileMatch) {
78
+ this.matchStrategy(scriptLoadingStrategy, tag);
79
+ this.addAttributestToTag(tag, {
80
+ [scriptLoadingStrategy]: true
81
+ });
82
+ }
83
+ } // filesToMatch.forEach(fileName => {
84
+ // if (!this.matchFileName(tag, fileName)) {
85
+ // return;
86
+ // }
87
+ // this.matchStrategy(scriptLoadingStrategy, tag);
88
+ // this.addAttributestToTag(tag, fileName, {
89
+ // [scriptLoadingStrategy]: true
90
+ // });
91
+ // });
92
+
93
+ });
94
+ });
95
+ }
96
+
97
+ apply(compiler) {
98
+ compiler.hooks.compilation.tap(pluginName, compilation => {
99
+ _htmlWebpackPlugin.default.getHooks(compilation).alterAssetTagGroups.tapAsync(pluginName, (data, callback) => {
100
+ const tags = [...data.bodyTags, ...data.headTags];
101
+ console.log('tags', tags);
102
+ this.matchAndApplyCustomLoadingStrategyToScripts(tags);
103
+ console.log('tags after', tags);
104
+ callback(null, data);
105
+ });
106
+ });
107
+ }
108
+
109
+ }
110
+
111
+ exports.default = CustomScriptLoadingStrategyPlugin;
@@ -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
+ linkTag.onerror = linkTag.onload = null;
25
+ resolve();
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
+ scriptTag.onerror = scriptTag.onload = null;
233
+ resolve();
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";
@@ -322,7 +322,8 @@ var _default = {
322
322
  },
323
323
  htmlTemplate: {
324
324
  minify: null,
325
- inject: true
325
+ inject: true,
326
+ customScriptLoadingStrategey: null
326
327
  },
327
328
  removePropTypes: false,
328
329
  customChunksBaseConfig: null,
@@ -167,6 +167,20 @@ var _getComponents = _interopRequireDefault(require("./getComponents"));
167
167
 
168
168
  var _ssTestHack = _interopRequireDefault(require("./ssTestHack"));
169
169
 
170
+ var _typeCheck = require("./typeCheck");
171
+
172
+ Object.keys(_typeCheck).forEach(function (key) {
173
+ if (key === "default" || key === "__esModule") return;
174
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
175
+ if (key in exports && exports[key] === _typeCheck[key]) return;
176
+ Object.defineProperty(exports, key, {
177
+ enumerable: true,
178
+ get: function () {
179
+ return _typeCheck[key];
180
+ }
181
+ });
182
+ });
183
+
170
184
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
171
185
 
172
186
  // eslint-disable-next-line no-duplicate-imports
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getTypeOf = getTypeOf;
7
+
8
+ function getTypeOf(value) {
9
+ return Object.prototype.toString.call(value).split(/\s/)[1].replace(/\]/, '').toLowerCase();
10
+ }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zohodesk/react-cli",
3
- "version": "1.1.19",
3
+ "version": "1.1.20-exp.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@zohodesk/react-cli",
9
- "version": "1.1.19",
9
+ "version": "1.1.20-exp.1",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
12
  "@babel/cli": "7.10.5",
@@ -4554,6 +4554,7 @@
4554
4554
  "version": "2.7.1",
4555
4555
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
4556
4556
  "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
4557
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
4557
4558
  "dependencies": {
4558
4559
  "glob": "^7.1.3"
4559
4560
  },
@@ -5222,6 +5223,7 @@
5222
5223
  "version": "1.0.5",
5223
5224
  "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
5224
5225
  "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
5226
+ "deprecated": "This package is no longer supported.",
5225
5227
  "dependencies": {
5226
5228
  "aproba": "^1.1.1",
5227
5229
  "fs-write-stream-atomic": "^1.0.8",
@@ -5235,6 +5237,7 @@
5235
5237
  "version": "2.7.1",
5236
5238
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
5237
5239
  "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
5240
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
5238
5241
  "dependencies": {
5239
5242
  "glob": "^7.1.3"
5240
5243
  },
@@ -7584,6 +7587,7 @@
7584
7587
  "version": "2.6.3",
7585
7588
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
7586
7589
  "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
7590
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
7587
7591
  "dependencies": {
7588
7592
  "glob": "^7.1.3"
7589
7593
  },
@@ -7727,6 +7731,7 @@
7727
7731
  "version": "1.0.10",
7728
7732
  "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
7729
7733
  "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
7734
+ "deprecated": "This package is no longer supported.",
7730
7735
  "dependencies": {
7731
7736
  "graceful-fs": "^4.1.2",
7732
7737
  "iferr": "^0.1.5",
@@ -8070,6 +8075,7 @@
8070
8075
  "version": "7.2.3",
8071
8076
  "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
8072
8077
  "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
8078
+ "deprecated": "Glob versions prior to v9 are no longer supported",
8073
8079
  "dependencies": {
8074
8080
  "fs.realpath": "^1.0.0",
8075
8081
  "inflight": "^1.0.4",
@@ -8220,6 +8226,7 @@
8220
8226
  "version": "7.1.7",
8221
8227
  "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
8222
8228
  "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
8229
+ "deprecated": "Glob versions prior to v9 are no longer supported",
8223
8230
  "dependencies": {
8224
8231
  "fs.realpath": "^1.0.0",
8225
8232
  "inflight": "^1.0.4",
@@ -9101,6 +9108,7 @@
9101
9108
  "version": "1.0.6",
9102
9109
  "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
9103
9110
  "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
9111
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
9104
9112
  "dependencies": {
9105
9113
  "once": "^1.3.0",
9106
9114
  "wrappy": "1"
@@ -12738,6 +12746,7 @@
12738
12746
  "version": "1.0.1",
12739
12747
  "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
12740
12748
  "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
12749
+ "deprecated": "This package is no longer supported.",
12741
12750
  "dependencies": {
12742
12751
  "aproba": "^1.1.1",
12743
12752
  "copy-concurrently": "^1.0.0",
@@ -12751,6 +12760,7 @@
12751
12760
  "version": "2.7.1",
12752
12761
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
12753
12762
  "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
12763
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
12754
12764
  "dependencies": {
12755
12765
  "glob": "^7.1.3"
12756
12766
  },
@@ -15679,6 +15689,7 @@
15679
15689
  "version": "3.0.2",
15680
15690
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
15681
15691
  "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
15692
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
15682
15693
  "dependencies": {
15683
15694
  "glob": "^7.1.3"
15684
15695
  },
@@ -15800,7 +15811,8 @@
15800
15811
  "node_modules/safe-require": {
15801
15812
  "version": "1.0.4",
15802
15813
  "resolved": "https://registry.npmjs.org/safe-require/-/safe-require-1.0.4.tgz",
15803
- "integrity": "sha512-1elAbSH1u7HVMfbuqktLWAN0wMOeT+FnJVqMhBgEJLvL95m+KT433tiJdGMV1e3TstQXRt1YrKQDRBu0Kpk4WA=="
15814
+ "integrity": "sha512-1elAbSH1u7HVMfbuqktLWAN0wMOeT+FnJVqMhBgEJLvL95m+KT433tiJdGMV1e3TstQXRt1YrKQDRBu0Kpk4WA==",
15815
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."
15804
15816
  },
15805
15817
  "node_modules/safer-buffer": {
15806
15818
  "version": "2.1.2",
@@ -15917,6 +15929,7 @@
15917
15929
  "version": "2.7.1",
15918
15930
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
15919
15931
  "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
15932
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
15920
15933
  "dependencies": {
15921
15934
  "glob": "^7.1.3"
15922
15935
  },
@@ -18033,6 +18046,7 @@
18033
18046
  "version": "7.1.7",
18034
18047
  "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
18035
18048
  "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
18049
+ "deprecated": "Glob versions prior to v9 are no longer supported",
18036
18050
  "dependencies": {
18037
18051
  "fs.realpath": "^1.0.0",
18038
18052
  "inflight": "^1.0.4",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/react-cli",
3
- "version": "1.1.19",
3
+ "version": "1.1.20-exp.1",
4
4
  "description": "A CLI tool for build modern web application and libraries",
5
5
  "scripts": {
6
6
  "init": "node ./lib/utils/init.js",