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

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -44,6 +44,14 @@ Now to run app
44
44
 
45
45
  # Change Logs
46
46
 
47
+ # 1.1.19 (27-5-2024)
48
+
49
+ **Feature**
50
+
51
+ - enhancedReactLiveConverter.js added and imported in docLoader file
52
+
53
+ - stats.json file creation deleted, if `enable_stats` option is false.
54
+
47
55
  # 1.1.19 (5-2-2024)
48
56
 
49
57
  **Feature:-**
package/bin/cli.js CHANGED
@@ -300,8 +300,6 @@ switch (option) {
300
300
  'src',
301
301
  '-d',
302
302
  'lib',
303
- '--extensions',
304
- '.js,.ts,.tsx',
305
303
  `--presets=${require.resolve('../lib/babel/cmjs-plugins-presets.js')}`,
306
304
  '--copy-files'
307
305
  ].concat(args),
@@ -318,8 +316,6 @@ switch (option) {
318
316
  'src',
319
317
  '--out-dir',
320
318
  'es',
321
- '--extensions',
322
- '.js,.ts,.tsx',
323
319
  `--presets=${require.resolve('../lib/babel/es-plugins-presets.js')}`,
324
320
  '--copy-files'
325
321
  ].concat(args),
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
@@ -11,25 +11,20 @@ var _babelPresetReactOption = _interopRequireDefault(require("./babel-option-uti
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- const {
14
+ let {
15
15
  module: {
16
16
  mode
17
- },
18
- babelCustomizationForLibrary: {
19
- babelPlugins
20
17
  }
21
18
  } = (0, _utils.getOptions)();
22
- const isProd = mode.toLowerCase() === 'prod';
23
- const defaultPlugins = [[require.resolve('babel-plugin-transform-define'), isProd ? {
24
- __DOCS__: false
25
- } : {}], require.resolve('@babel/plugin-syntax-dynamic-import'), require.resolve('@babel/plugin-proposal-optional-chaining'), require.resolve('@babel/plugin-proposal-class-properties')];
26
- const plugins = [...babelPlugins, ...defaultPlugins];
19
+ let isProd = mode.toLowerCase() === 'prod';
27
20
 
28
21
  var _default = () => ({
29
22
  presets: [require.resolve('@babel/preset-env'), (0, _babelPresetReactOption.default)({
30
23
  disableES5Transpile: false
31
- }), require.resolve('@babel/preset-typescript')],
32
- plugins: plugins
24
+ })],
25
+ plugins: [[require.resolve('babel-plugin-transform-define'), isProd ? {
26
+ __DOCS__: false
27
+ } : {}]]
33
28
  });
34
29
 
35
30
  exports.default = _default;
@@ -11,21 +11,13 @@ var _babelPresetReactOption = _interopRequireDefault(require("./babel-option-uti
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- const {
14
+ let {
15
15
  module: {
16
16
  mode,
17
17
  disableES5Transpile
18
- },
19
- babelCustomizationForLibrary: {
20
- babelPlugins
21
18
  }
22
19
  } = (0, _utils.getOptions)();
23
- const isProd = mode.toLowerCase() === 'prod';
24
- const defaultPlugins = [[require.resolve('babel-plugin-transform-define'), isProd ? {
25
- __DOCS__: false
26
- } : {}], require.resolve('@babel/plugin-syntax-dynamic-import'), require.resolve('@babel/plugin-proposal-optional-chaining'), require.resolve('@babel/plugin-proposal-class-properties')];
27
- const plugins = [...babelPlugins, ...defaultPlugins];
28
- console.log(disableES5Transpile);
20
+ let isProd = mode.toLowerCase() === 'prod';
29
21
 
30
22
  var _default = () => ({
31
23
  presets: [[require.resolve('@babel/preset-env'), disableES5Transpile ? {
@@ -39,8 +31,10 @@ var _default = () => ({
39
31
  modules: false
40
32
  }], (0, _babelPresetReactOption.default)({
41
33
  disableES5Transpile
42
- }), require.resolve('@babel/preset-typescript')],
43
- plugins: plugins
34
+ })],
35
+ plugins: [[require.resolve('babel-plugin-transform-define'), isProd ? {
36
+ __DOCS__: false
37
+ } : {}], require.resolve('@babel/plugin-syntax-dynamic-import')]
44
38
  });
45
39
 
46
40
  exports.default = _default;
@@ -28,7 +28,7 @@ const commonConfig = {
28
28
  // },
29
29
  transformIgnorePatterns: ['/node_modules/(?!(@zohodesk)/)'],
30
30
  // transformIgnorePatterns: ['/node_modules.*?.js$'],
31
- moduleFileExtensions: ['js', 'ts', 'tsx'],
31
+ moduleFileExtensions: ['js'],
32
32
  setupFiles: [(0, _fs.existsSync)(appGlobals) && appGlobals, _path.default.resolve(__dirname, '..', 'jest', 'setup.js')].filter(Boolean),
33
33
  globals: {
34
34
  __DEVELOPMENT__: true,
@@ -52,7 +52,7 @@ module.exports = (...args) => {
52
52
  testPathIgnorePatterns: ['/node_modules/', 'docs'],
53
53
  unmockedModulePathPatterns: ['__tests__', 'node_modules', '.*'],
54
54
  roots: [`<rootDir>/${appFolder}/`],
55
- testRegex: '(/__tests__/.*|\\.(test|spec))\\.(jsx|js|json|node|ts|tsx)$',
55
+ testRegex: '(/__tests__/.*|\\.(test|spec))\\.(jsx|js|json|node)$',
56
56
  testResultsProcessor: _path.default.resolve(__dirname, '..', 'jest', 'result.js')
57
57
  });
58
58
  };
@@ -146,10 +146,6 @@ module.exports = {
146
146
  minimize: true
147
147
  }
148
148
  }]
149
- }, {
150
- test: /\.ts$/,
151
- use: 'ts-loader',
152
- include: _path.default.join(appPath, folder)
153
149
  }, {
154
150
  test: /\.worker.js$/,
155
151
  use: {
@@ -131,7 +131,7 @@ module.exports = {
131
131
  modules: false
132
132
  }], (0, _babelPresetReactOption.default)({
133
133
  disableES5Transpile
134
- }), require.resolve('@babel/preset-typescript')],
134
+ })],
135
135
  plugins: disableES5Transpile ? [removeAttribute ? require.resolve('../utils/removeAttributes') : false, require.resolve('@babel/plugin-syntax-dynamic-import'), require.resolve('babel-plugin-lodash'), // require.resolve(
136
136
  // '@babel/plugin-proposal-object-rest-spread'
137
137
  // ), REMOVING IT, BECAUSE WE ALREADY SUPPORT SPREAD SYNTAX FROM LIBRARIES.
@@ -237,10 +237,6 @@ module.exports = {
237
237
  minimize: false
238
238
  }
239
239
  }]
240
- }, {
241
- test: /\.ts$/,
242
- use: 'ts-loader',
243
- include: _path.default.join(appPath, folder)
244
240
  }, {
245
241
  test: /\.worker.js$/,
246
242
  use: {
@@ -44,7 +44,7 @@ let getDevJsLoaders = options => {
44
44
  modules: false
45
45
  }], (0, _babelPresetReactOption.default)({
46
46
  disableES5Transpile
47
- }), require.resolve('@babel/preset-typescript')],
47
+ })],
48
48
  plugins: disableES5Transpile ? [require.resolve('@babel/plugin-syntax-dynamic-import'), require.resolve('babel-plugin-lodash'), // require.resolve('@babel/plugin-proposal-object-rest-spread'),
49
49
  devConsoleExculde ? [require.resolve('babel-plugin-transform-remove-console'), {
50
50
  exclude: ['error', 'log']
@@ -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
+ }
@@ -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: !enableStats,
240
+ generateStatsFile: false,
241
241
  openAnalyzer: false,
242
242
  statsOptions: enableStats ? null : {
243
243
  source: false,
@@ -738,9 +738,6 @@ var _default = {
738
738
  fileName: null,
739
739
  options: null,
740
740
  excludeKeys: null
741
- },
742
- babelCustomizationForLibrary: {
743
- babelPlugins: []
744
741
  }
745
742
  };
746
743
  exports.default = _default;