@zohodesk/react-cli 0.0.1-exp.175.1 → 0.0.1-exp.176.1

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 (250) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -180
  3. package/.prettierrc +6 -6
  4. package/README.md +1025 -1028
  5. package/bin/cli.js +482 -482
  6. package/cert/Tsicsezwild-22-23.crt +37 -37
  7. package/cert/Tsicsezwild-22-23.key +27 -27
  8. package/docs/CustomChunks.md +26 -26
  9. package/docs/DevStart.md +18 -18
  10. package/docs/HoverActive.md +12 -12
  11. package/docs/InstallNode.md +28 -28
  12. package/docs/SelectorWeight.md +6 -0
  13. package/docs/TODOS.md +10 -10
  14. package/docs/ValueReplacer.md +60 -60
  15. package/docs/VariableConversion.md +719 -678
  16. package/docs/warnings_while_install.txt +35 -35
  17. package/files/eslintrc.js +62 -62
  18. package/files/prettierrc.js +3 -3
  19. package/lib/babel/cmjs-plugins-presets.js +4 -0
  20. package/lib/babel/es-plugins-presets.js +4 -0
  21. package/lib/common/getEntries.js +10 -0
  22. package/lib/common/getPublicPathConfig.js +6 -0
  23. package/lib/common/index.js +5 -0
  24. package/lib/common/splitChunks.js +13 -2
  25. package/lib/common/sslcertUpdater.js +17 -6
  26. package/lib/common/templateParameters.js +2 -0
  27. package/lib/common/testPattern.js +21 -10
  28. package/lib/common/valueReplacer.js +15 -0
  29. package/lib/configs/jest.config.js +9 -0
  30. package/lib/configs/libAlias.js +2 -4
  31. package/lib/configs/webpack.component.umd.config.js +5 -0
  32. package/lib/configs/webpack.css.umd.config.js +13 -5
  33. package/lib/configs/webpack.dev.config.js +36 -2
  34. package/lib/configs/webpack.docs.config.js +21 -1
  35. package/lib/configs/webpack.impact.config.js +19 -1
  36. package/lib/configs/webpack.prod.config.js +37 -3
  37. package/lib/hooks/docsProptypeHook.js +7 -3
  38. package/lib/jest/commitedFilesResult.js +45 -3
  39. package/lib/jest/coverageCollector.js +11 -0
  40. package/lib/jest/jsonMaker.js +6 -0
  41. package/lib/jest/preProcessors/cssPreprocessor.js +8 -0
  42. package/lib/jest/preProcessors/jsPreprocessor.js +2 -0
  43. package/lib/jest/preProcessors/otherFilesPreprocessor.js +3 -0
  44. package/lib/jest/result.js +22 -0
  45. package/lib/jest/run.js +17 -6
  46. package/lib/jest/setup.js +57 -5
  47. package/lib/loaderUtils/configsAssetsLoaders.js +44 -34
  48. package/lib/loaderUtils/getCSSLoaders.js +35 -20
  49. package/lib/loaderUtils/getDevJsLoaders.js +8 -0
  50. package/lib/loaderUtils/index.js +3 -0
  51. package/lib/loaderUtils/windowsModification.js +11 -0
  52. package/lib/loaders/docsLoader.js +7 -0
  53. package/lib/loaders/docsPropsLoader.js +7 -3
  54. package/lib/loaders/fileBountryLoader.js +2 -0
  55. package/lib/loaders/fileLoader.js +22 -11
  56. package/lib/loaders/scriptInstrumentLoader.js +13 -5
  57. package/lib/loaders/selectorMappingLoader.js +25 -7
  58. package/lib/loaders/workerLoader.js +29 -13
  59. package/lib/middlewares/HMRMiddleware.js +26 -13
  60. package/lib/middlewares/SSTMiddleware.js +3 -0
  61. package/lib/pluginUtils/configHtmlWebpackPlugins.js +9 -3
  62. package/lib/pluginUtils/getDevPlugins.js +68 -22
  63. package/lib/pluginUtils/getDocsPlugins.js +10 -1
  64. package/lib/pluginUtils/getLibraryImactPlugins.js +5 -4
  65. package/lib/pluginUtils/getLibraryPlugins.js +5 -0
  66. package/lib/pluginUtils/getProdPlugins.js +77 -28
  67. package/lib/pluginUtils/getServerPlugins.js +5 -0
  68. package/lib/pluginUtils/getUMDCSSPlugins.js +7 -0
  69. package/lib/pluginUtils/getUMDComponentPlugins.js +7 -0
  70. package/lib/pluginUtils/index.js +8 -0
  71. package/lib/plugins/CdnChangePlugin.js +14 -0
  72. package/lib/plugins/CleanupStatsPlugin.js +5 -0
  73. package/lib/plugins/EFCPlugin.js +34 -23
  74. package/lib/plugins/EFCPlugin.md +6 -6
  75. package/lib/plugins/EFCTemplatePlugin.js +32 -23
  76. package/lib/plugins/I18NInjectIntoIndexPlugin.js +38 -12
  77. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +17 -12
  78. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +10 -4
  79. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +77 -46
  80. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +59 -44
  81. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +30 -21
  82. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  83. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  84. package/lib/plugins/I18nSplitPlugin/index.js +80 -70
  85. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +12 -2
  86. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +1 -0
  87. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +5 -0
  88. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +6 -0
  89. package/lib/plugins/I18nSplitPlugin/utils/index.js +4 -0
  90. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +20 -2
  91. package/lib/plugins/ManifestPlugin.js +17 -0
  92. package/lib/plugins/ModuleStatsPlugin.js +23 -0
  93. package/lib/plugins/OptimizeJSPlugin.js +7 -0
  94. package/lib/plugins/PublicPathCallbackPlugin.js +10 -0
  95. package/lib/plugins/PublicPathChangePlugin.js +36 -4
  96. package/lib/plugins/ReportGeneratePlugin.js +30 -4
  97. package/lib/plugins/RequireVariablePublicPlugin.js +6 -0
  98. package/lib/plugins/ResourceHintsPlugin.js +27 -20
  99. package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +17 -12
  100. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +22 -15
  101. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  102. package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +5 -2
  103. package/lib/plugins/ScriptInstrumentPlugin.js +7 -0
  104. package/lib/plugins/SelectorPlugin.js +97 -0
  105. package/lib/plugins/ServiceWorkerPlugin.js +29 -13
  106. package/lib/plugins/ShadowDOMSupportPlugin.js +40 -3
  107. package/lib/plugins/SourceMapHookPlugin.js +9 -0
  108. package/lib/plugins/TPHashMappingPlugin.js +19 -5
  109. package/lib/plugins/UglifyCSSPlugin.js +9 -0
  110. package/lib/plugins/UnusedFilesFindPlugin.js +35 -2
  111. package/lib/plugins/VariableConversionCollector.js +322 -0
  112. package/lib/plugins/composeCommonPlugin.js +30 -0
  113. package/lib/plugins/index.js +19 -0
  114. package/lib/plugins/libraryImpactPlugin.js +32 -0
  115. package/lib/plugins/webpackwatchrunplugin.js +5 -0
  116. package/lib/postcss-plugins/ExcludePlugin.js +4 -0
  117. package/lib/postcss-plugins/RTLSplitPlugin.js +37 -24
  118. package/lib/postcss-plugins/ValueReplacer.js +6 -9
  119. package/lib/postcss-plugins/__test__/hoverActivePlugin.spec.js +3 -0
  120. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  121. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  122. package/lib/postcss-plugins/hoverActivePlugin.js +69 -33
  123. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +42 -13
  124. package/lib/postcss-plugins/variableModificationPlugin/index.js +216 -141
  125. package/lib/postcss-plugins/variableModifier.js +20 -13
  126. package/lib/schemas/index.js +23 -4
  127. package/lib/servers/clusterHubServer.js +10 -0
  128. package/lib/servers/devBuild.js +24 -13
  129. package/lib/servers/docsServer.js +2 -0
  130. package/lib/servers/docsServerCore.js +21 -0
  131. package/lib/servers/getCliPath.js +9 -0
  132. package/lib/servers/helpServer.js +5 -0
  133. package/lib/servers/httpsOptions.js +4 -0
  134. package/lib/servers/impactServer.js +34 -2
  135. package/lib/servers/mockserver.js +9 -0
  136. package/lib/servers/nowatchserver.js +34 -12
  137. package/lib/servers/scrServer.js +20 -13
  138. package/lib/servers/server.js +35 -7
  139. package/lib/servers/ssServer.js +16 -0
  140. package/lib/sh/pre-commit.sh +34 -34
  141. package/lib/sh/reportPublish.sh +45 -45
  142. package/lib/templates/CoverageScriptTemplate.js +14 -0
  143. package/lib/templates/WMSTemplate.js +12 -6
  144. package/lib/utils/babelPresets.js +2 -0
  145. package/lib/utils/buildstats.html +148 -148
  146. package/lib/utils/clean.js +8 -2
  147. package/lib/utils/copy.js +6 -0
  148. package/lib/utils/copyTimezones.js +8 -0
  149. package/lib/utils/createEventStream.js +4 -0
  150. package/lib/utils/cssClassNameGenerate.js +19 -3
  151. package/lib/utils/cssURLReplacer.js +25 -0
  152. package/lib/utils/dependencyPostPublish.js +9 -0
  153. package/lib/utils/fileUtils.js +26 -0
  154. package/lib/utils/folderIterator.js +10 -0
  155. package/lib/utils/getComponents.js +21 -0
  156. package/lib/utils/getCurrentBranch.js +5 -0
  157. package/lib/utils/getDependenciesImpactList.js +21 -0
  158. package/lib/utils/getHash.js +7 -0
  159. package/lib/utils/getIp.js +2 -0
  160. package/lib/utils/getOptions.js +39 -14
  161. package/lib/utils/getServerURL.js +7 -0
  162. package/lib/utils/index.js +47 -2
  163. package/lib/utils/init.js +1 -0
  164. package/lib/utils/initPreCommitHook.js +29 -6
  165. package/lib/utils/jsonHelper.js +19 -2
  166. package/lib/utils/libraryImpactConfig.js +2 -0
  167. package/lib/utils/lint/addScripts.js +5 -2
  168. package/lib/utils/lint/checkExistingConfig.js +12 -3
  169. package/lib/utils/lint/copyConfigs.js +3 -0
  170. package/lib/utils/lint/index.js +9 -0
  171. package/lib/utils/lint/lintScripts.js +1 -0
  172. package/lib/utils/lint/lintSetup.js +4 -3
  173. package/lib/utils/lint/lintStagedPreCommitHook.js +1 -0
  174. package/lib/utils/lint/question.js +7 -0
  175. package/lib/utils/lintReporter.js +20 -0
  176. package/lib/utils/mailSender.js +7 -0
  177. package/lib/utils/pullOrigin.js +4 -0
  178. package/lib/utils/reinstallDependencies.js +28 -0
  179. package/lib/utils/removeAttributes.js +7 -0
  180. package/lib/utils/repoClone.js +27 -2
  181. package/lib/utils/request.js +12 -0
  182. package/lib/utils/resultSchema.json +73 -73
  183. package/lib/utils/rtl.js +16 -4
  184. package/lib/utils/setEnvVariables.js +2 -0
  185. package/lib/utils/ssTestHack.js +10 -0
  186. package/lib/utils/switchBranch.js +4 -0
  187. package/lib/utils/urlConcat.js +4 -0
  188. package/lib/utils/useExitCleanup.js +10 -9
  189. package/npm8.md +9 -9
  190. package/package.json +146 -146
  191. package/postpublish.js +6 -6
  192. package/templates/app/.eslintrc.js +140 -140
  193. package/templates/app/README.md +12 -12
  194. package/templates/app/app/index.html +24 -24
  195. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  196. package/templates/app/app/properties/i18nkeys.json +3 -3
  197. package/templates/app/docs/all.html +69 -69
  198. package/templates/app/mockapi/index.js +18 -18
  199. package/templates/app/package.json +37 -37
  200. package/templates/app/src/actions/SampleActions/index.js +37 -37
  201. package/templates/app/src/actions/index.js +65 -65
  202. package/templates/app/src/appUrls.js +19 -19
  203. package/templates/app/src/components/Alert/Alert.js +134 -134
  204. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  205. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  206. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  207. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  208. package/templates/app/src/components/Sample/SampleList.js +61 -61
  209. package/templates/app/src/components/Slider/Slider.css +41 -41
  210. package/templates/app/src/components/Slider/Slider.js +55 -55
  211. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  212. package/templates/app/src/containers/AppContainer/index.js +96 -96
  213. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  214. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  215. package/templates/app/src/containers/DevTools/index.js +10 -10
  216. package/templates/app/src/containers/Header/index.js +67 -67
  217. package/templates/app/src/containers/Header/index.module.css +43 -43
  218. package/templates/app/src/containers/Redirect/index.js +63 -63
  219. package/templates/app/src/containers/Redirector/index.js +47 -47
  220. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  221. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  222. package/templates/app/src/historyChange.js +5 -5
  223. package/templates/app/src/index.html +10 -10
  224. package/templates/app/src/index.js +24 -24
  225. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  226. package/templates/app/src/reducers/alertData.js +11 -11
  227. package/templates/app/src/reducers/index.js +6 -6
  228. package/templates/app/src/reducers/samples.js +19 -19
  229. package/templates/app/src/store/configureStore.dev.js +51 -51
  230. package/templates/app/src/store/configureStore.js +5 -5
  231. package/templates/app/src/store/configureStore.prod.js +26 -26
  232. package/templates/app/src/util/Common.js +5 -5
  233. package/templates/app/src/util/RequestAPI.js +132 -132
  234. package/templates/docs/all.html +249 -249
  235. package/templates/docs/component.html +178 -178
  236. package/templates/docs/components.html +221 -221
  237. package/templates/docs/css/b.min.css +6 -6
  238. package/templates/docs/css/component.css +42 -42
  239. package/templates/docs/css/componentTest.css +6 -6
  240. package/templates/docs/css/hopscotch.css +585 -585
  241. package/templates/docs/css/style.css +1022 -1022
  242. package/templates/docs/impactReportTemplate.html +154 -154
  243. package/templates/docs/index.html +1501 -1501
  244. package/templates/docs/js/active-line.js +72 -72
  245. package/templates/docs/js/b.min.js +7 -7
  246. package/templates/docs/js/codemirror.js +9680 -9680
  247. package/templates/docs/js/designTokens.js +334 -334
  248. package/templates/docs/js/j.min.js +4 -4
  249. package/templates/docs/js/javascript.js +874 -874
  250. package/templates/docs/js/matchbrackets.js +145 -145
@@ -90,17 +90,29 @@ Object.defineProperty(exports, "switchBranch", {
90
90
  }
91
91
  });
92
92
  exports.writeFile = void 0;
93
+
93
94
  var _stream = require("stream");
95
+
94
96
  var _fs = _interopRequireDefault(require("fs"));
97
+
95
98
  var _getOptions = _interopRequireDefault(require("./getOptions"));
99
+
96
100
  var _createEventStream = _interopRequireDefault(require("./createEventStream"));
101
+
97
102
  var _getServerURL = _interopRequireDefault(require("./getServerURL"));
103
+
98
104
  var _getCurrentBranch = _interopRequireDefault(require("./getCurrentBranch"));
105
+
99
106
  var _switchBranch = _interopRequireDefault(require("./switchBranch"));
107
+
100
108
  var _pullOrigin = _interopRequireDefault(require("./pullOrigin"));
109
+
101
110
  var _request = _interopRequireDefault(require("./request"));
111
+
102
112
  var _jsonHelper = _interopRequireDefault(require("./jsonHelper"));
113
+
103
114
  var _reinstallDependencies = require("./reinstallDependencies");
115
+
104
116
  Object.keys(_reinstallDependencies).forEach(function (key) {
105
117
  if (key === "default" || key === "__esModule") return;
106
118
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -112,7 +124,9 @@ Object.keys(_reinstallDependencies).forEach(function (key) {
112
124
  }
113
125
  });
114
126
  });
127
+
115
128
  var _cssURLReplacer = require("./cssURLReplacer");
129
+
116
130
  Object.keys(_cssURLReplacer).forEach(function (key) {
117
131
  if (key === "default" || key === "__esModule") return;
118
132
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -124,7 +138,9 @@ Object.keys(_cssURLReplacer).forEach(function (key) {
124
138
  }
125
139
  });
126
140
  });
141
+
127
142
  var _initPreCommitHook = require("./initPreCommitHook");
143
+
128
144
  Object.keys(_initPreCommitHook).forEach(function (key) {
129
145
  if (key === "default" || key === "__esModule") return;
130
146
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -136,26 +152,38 @@ Object.keys(_initPreCommitHook).forEach(function (key) {
136
152
  }
137
153
  });
138
154
  });
155
+
139
156
  var _getDependenciesImpactList = _interopRequireDefault(require("./getDependenciesImpactList"));
157
+
140
158
  var _getComponents = _interopRequireDefault(require("./getComponents"));
159
+
141
160
  var _ssTestHack = _interopRequireDefault(require("./ssTestHack"));
161
+
142
162
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
163
+
143
164
  let log = (...info) => {
144
165
  let print = console;
145
166
  print.log(...info);
146
167
  };
168
+
147
169
  exports.log = log;
170
+
148
171
  let writeFile = (outputPath, src, isPath = false) => new Promise((resolve, reject) => {
149
172
  let inStr;
173
+
150
174
  if (isPath) {
151
175
  inStr = _fs.default.createReadStream(src);
152
176
  } else {
153
177
  inStr = new _stream.Readable();
178
+
154
179
  inStr._read = () => true;
180
+
155
181
  inStr.push(src);
156
182
  inStr.push(null);
157
183
  }
184
+
158
185
  let outStr = _fs.default.createWriteStream(outputPath);
186
+
159
187
  outStr.on('error', err => {
160
188
  reject(err);
161
189
  });
@@ -164,26 +192,33 @@ let writeFile = (outputPath, src, isPath = false) => new Promise((resolve, rejec
164
192
  });
165
193
  inStr.pipe(outStr);
166
194
  });
195
+
167
196
  exports.writeFile = writeFile;
197
+
168
198
  let makeDir = paths => {
169
199
  if (typeof paths === 'string') {
170
200
  //eslint-disable-next-line
171
201
  paths = [paths];
172
202
  }
203
+
173
204
  paths.forEach(path => {
174
205
  if (!_fs.default.existsSync(path)) {
175
206
  _fs.default.mkdirSync(path);
176
207
  }
177
208
  });
178
209
  };
210
+
179
211
  exports.makeDir = makeDir;
212
+
180
213
  let getInfoFromPublicPaths = publicPaths => {
181
214
  let rootFolder = '',
182
- image = '',
183
- font = '';
215
+ image = '',
216
+ font = '';
217
+
184
218
  if (publicPaths && !Array.isArray(publicPaths) && typeof publicPaths === 'object' && !publicPaths.callback) {
185
219
  let [cdn] = Object.keys(publicPaths);
186
220
  rootFolder = `${cdn}/`;
221
+
187
222
  if (publicPaths[cdn].font) {
188
223
  font = publicPaths[cdn].font; //eslint-disable-line
189
224
  }
@@ -199,7 +234,9 @@ let getInfoFromPublicPaths = publicPaths => {
199
234
  font
200
235
  };
201
236
  };
237
+
202
238
  exports.getInfoFromPublicPaths = getInfoFromPublicPaths;
239
+
203
240
  let getLibraryConflict = (moduleObject, impactObj, changesOnly) => {
204
241
  let srcChanges = [];
205
242
  let libraryChanges = [];
@@ -213,6 +250,7 @@ let getLibraryConflict = (moduleObject, impactObj, changesOnly) => {
213
250
  if (action !== 'REMOVED') {
214
251
  impactObj[library][action].forEach(srcObject => {
215
252
  let fileName = srcObject["FILEPATH"];
253
+
216
254
  if (library == "AppSource") {
217
255
  fileName = fileName.replace("jsapps/supportapp", ".");
218
256
  srcChanges.push(fileName);
@@ -224,8 +262,10 @@ let getLibraryConflict = (moduleObject, impactObj, changesOnly) => {
224
262
  }
225
263
  });
226
264
  });
265
+
227
266
  if (!changesOnly) {
228
267
  srcChanges = [];
268
+
229
269
  if (libraryChanges.length > 0) {
230
270
  libraryChanges.forEach(mdataLibKey => {
231
271
  if (moduleObject[mdataLibKey]) {
@@ -240,11 +280,13 @@ let getLibraryConflict = (moduleObject, impactObj, changesOnly) => {
240
280
  });
241
281
  } else {}
242
282
  }
283
+
243
284
  if (srcChanges.length > 0) {
244
285
  srcChanges.forEach(srcFile => {
245
286
  let cacheObject = {};
246
287
  cacheObject.sourceName = srcFile;
247
288
  let cacheLibraryList = [];
289
+
248
290
  if (libraryChanges.length > 0) {
249
291
  libraryChanges.forEach(mdataKey => {
250
292
  if (moduleObject[mdataKey]) {
@@ -258,6 +300,7 @@ let getLibraryConflict = (moduleObject, impactObj, changesOnly) => {
258
300
  impactThere = false;
259
301
  whichLibrary = 'No library file changes between target branch!';
260
302
  }
303
+
261
304
  if (cacheLibraryList.length > 0) {
262
305
  cacheObject.impactedBy = cacheLibraryList;
263
306
  allImpactArray.push(cacheObject);
@@ -270,6 +313,7 @@ let getLibraryConflict = (moduleObject, impactObj, changesOnly) => {
270
313
  impactThere = false;
271
314
  whichLibrary = "No component file changes!";
272
315
  }
316
+
273
317
  log('\n');
274
318
  log('You can see the HTML out at coverageTest/impactLibrary.html!');
275
319
  log('\x1b[33m%s\x1b[0m', '************************************************************ \n ');
@@ -281,4 +325,5 @@ let getLibraryConflict = (moduleObject, impactObj, changesOnly) => {
281
325
  }
282
326
  };
283
327
  };
328
+
284
329
  exports.getLibraryConflict = getLibraryConflict;
package/lib/utils/init.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  var _initPreCommitHook = require("./initPreCommitHook");
4
+
4
5
  (0, _initPreCommitHook.initPreCommitHook)(true);
@@ -4,51 +4,73 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.initPreCommitHook = exports.getGitRootDir = void 0;
7
+
7
8
  var _fs = _interopRequireDefault(require("fs"));
9
+
8
10
  var _path = _interopRequireDefault(require("path"));
11
+
9
12
  var _child_process = require("child_process");
13
+
10
14
  var _index = require("./index");
15
+
11
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
12
18
  let getGitRootDir = () => {
13
19
  try {
14
20
  return (0, _child_process.execSync)('git rev-parse --show-toplevel').toString();
15
21
  } catch (e) {
16
22
  return false;
17
23
  }
18
- };
24
+ }; //eslint-disable-next-line
25
+
19
26
 
20
- //eslint-disable-next-line
21
27
  exports.getGitRootDir = getGitRootDir;
28
+
22
29
  let copyEslintConfig = rootDir => {
23
30
  rootDir = rootDir.replace(/\r?\n|\r/g, ''); //eslint-disable-line
31
+
24
32
  let srcPath = _path.default.join(__dirname, '..', '..', '.eslintrc.js');
33
+
25
34
  let targetPath = _path.default.join(rootDir, '.eslintrc.js');
35
+
26
36
  if (!_fs.default.existsSync(targetPath)) {
27
37
  let src = _fs.default.readFileSync(srcPath).toString();
38
+
28
39
  _fs.default.writeFileSync(targetPath, src);
40
+
29
41
  (0, _index.log)('Eslint config added in project root path');
30
42
  }
31
43
  };
44
+
32
45
  let initPreCommitHook = (forReactCLI = false) => {
33
- let gitRootDir = getGitRootDir();
34
- //copyEslintConfig(gitRootDir || process.cwd());
46
+ let gitRootDir = getGitRootDir(); //copyEslintConfig(gitRootDir || process.cwd());
47
+
35
48
  if (gitRootDir) {
36
49
  let precommit = _fs.default.readFileSync(_path.default.join(__dirname, '../sh/pre-commit.sh')).toString();
50
+
37
51
  let targetPath = _path.default.join(gitRootDir, '.git', 'hooks', 'pre-commit').replace(/\s/g, '');
52
+
38
53
  if (_fs.default.existsSync(`${targetPath}.sample`)) {
39
- precommit = precommit.replace('${PREFIX_PATH}',
40
- //eslint-disable-line
54
+ precommit = precommit.replace('${PREFIX_PATH}', //eslint-disable-line
41
55
  process.cwd().replace(/\\/g, '/'));
56
+
42
57
  _fs.default.renameSync(`${targetPath}.sample`, targetPath);
58
+
43
59
  _fs.default.writeFileSync(targetPath, precommit);
60
+
44
61
  (0, _index.log)('pre-commit hook added');
45
62
  }
63
+
46
64
  let packagePath = _path.default.join(process.cwd(), 'package.json');
65
+
47
66
  try {
48
67
  let packageJson = require(packagePath);
68
+
49
69
  if (packageJson.scripts.lint !== 'react-cli lint') {
50
70
  packageJson.scripts.lint = forReactCLI ? 'eslint ./src' : 'react-cli lint';
71
+
51
72
  _fs.default.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2));
73
+
52
74
  (0, _index.log)('lint script added in your package.json');
53
75
  }
54
76
  } catch (e) {
@@ -56,4 +78,5 @@ let initPreCommitHook = (forReactCLI = false) => {
56
78
  }
57
79
  }
58
80
  };
81
+
59
82
  exports.initPreCommitHook = initPreCommitHook;
@@ -4,11 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.setTestInfoStatus = exports.jsonHelper = exports.jsonConcate = exports.getRunnerDetail = exports.fileHandler = void 0;
7
+
7
8
  let fs = require('fs');
9
+
8
10
  let os = require('os');
11
+
9
12
  let {
10
13
  getCurrentBranch
11
14
  } = require('./');
15
+
12
16
  let getRunnerDetail = () => {
13
17
  let defaultObj = {
14
18
  jobDetails: {
@@ -20,6 +24,7 @@ let getRunnerDetail = () => {
20
24
  };
21
25
  return defaultObj;
22
26
  };
27
+
23
28
  exports.getRunnerDetail = getRunnerDetail;
24
29
  let fileHandler = {
25
30
  readFile: (path, callback = null) => {
@@ -27,6 +32,7 @@ let fileHandler = {
27
32
  if (callback === null) {
28
33
  return fs.readFileSync(path);
29
34
  }
35
+
30
36
  callback(fs.readFileSync(path));
31
37
  } else {
32
38
  return fileHandler.writeFile(path, getRunnerDetail());
@@ -38,14 +44,16 @@ let fileHandler = {
38
44
  }
39
45
  };
40
46
  exports.fileHandler = fileHandler;
47
+
41
48
  const isObject = obj => obj && obj.constructor === {}.constructor;
42
- const isArray = obj => obj && obj.constructor === [].constructor;
43
49
 
44
- // In below funtion
50
+ const isArray = obj => obj && obj.constructor === [].constructor; // In below funtion
45
51
  // this function is for concat two json object like _.extend,
46
52
  // if botha array we concat them
47
53
  // if both object we use call this function recurcively
48
54
  // if both differend data type we will just assign it
55
+
56
+
49
57
  let jsonConcate = (receiverObj, senterObj) => {
50
58
  Object.keys(senterObj).map(key => {
51
59
  if (Object.prototype.hasOwnProperty.call(receiverObj, key)) {
@@ -59,13 +67,17 @@ let jsonConcate = (receiverObj, senterObj) => {
59
67
  } else {
60
68
  receiverObj[key] = senterObj[key];
61
69
  }
70
+
62
71
  return key;
63
72
  });
64
73
  return receiverObj;
65
74
  };
75
+
66
76
  exports.jsonConcate = jsonConcate;
77
+
67
78
  let jsonHelper = (path, pathArray, value) => {
68
79
  let tempObj = {};
80
+
69
81
  if (typeof pathArray === 'string') {
70
82
  pathArray = pathArray.split('.'); //eslint-disable-line no-param-reassign
71
83
  }
@@ -74,16 +86,21 @@ let jsonHelper = (path, pathArray, value) => {
74
86
  tempObj = {};
75
87
  tempObj[key] = value;
76
88
  value = tempObj; // eslint-disable-line no-param-reassign
89
+
77
90
  return key;
78
91
  });
79
92
  let overAllObj = jsonConcate(JSON.parse(fileHandler.readFile(path)), tempObj);
80
93
  fileHandler.writeFile(path, overAllObj);
81
94
  };
95
+
82
96
  exports.jsonHelper = jsonHelper;
97
+
83
98
  let setTestInfoStatus = (filepath, status) => {
84
99
  let buildObject = JSON.parse(fileHandler.readFile(filepath));
100
+
85
101
  if (!buildObject.testInfo || buildObject.testInfo.isBuildVerified !== false) {
86
102
  jsonHelper(filepath, 'testInfo.isBuildVerified', status);
87
103
  }
88
104
  };
105
+
89
106
  exports.setTestInfoStatus = setTestInfoStatus;
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
7
8
  var _utils = require("../utils");
9
+
8
10
  let options = (0, _utils.getOptions)();
9
11
  let {
10
12
  impactService: {
@@ -1,24 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  const fs = require('fs');
4
+
4
5
  const {
5
6
  log
6
7
  } = require('..');
8
+
7
9
  function addScripts(scripts) {
8
10
  fs.readFile('./package.json', 'utf8', (err, configFileString) => {
9
11
  if (err) log('[LINT SETUP] No package.json in the current directory');else {
10
- const configFile = JSON.parse(configFileString);
11
- // Still Object destructuring causes issue. 😐
12
+ const configFile = JSON.parse(configFileString); // Still Object destructuring causes issue. 😐
12
13
  // configFile.scripts = {
13
14
  // ...configFile.scripts,
14
15
  // ...scripts,
15
16
  // };
17
+
16
18
  configFile.scripts = Object.assign(configFile.scripts || {}, scripts);
17
19
  const data = JSON.stringify(configFile, undefined, 2);
18
20
  fs.writeFileSync('./package.json', data);
19
21
  }
20
22
  });
21
23
  }
24
+
22
25
  module.exports = {
23
26
  addScripts
24
27
  };
@@ -1,30 +1,35 @@
1
1
  "use strict";
2
2
 
3
3
  /* eslint-disable operator-linebreak */
4
+
4
5
  /* eslint-disable implicit-arrow-linebreak */
5
6
  const fs = require('fs');
7
+
6
8
  const {
7
9
  log
8
10
  } = require('..');
11
+
9
12
  const {
10
13
  question,
11
14
  rl
12
15
  } = require('./question');
16
+
13
17
  const eslintConfigFiles = ['.eslintrc.js', '.eslintrc.cjs', '.eslintrc.yaml', '.eslintrc.yml', '.eslintrc.json', '.eslintrc'];
14
18
  const prettierConfigFiles = ['.prettierrc.js', '.prettierrc.json', '.prettierrc', '.prettierrc.yml', '.prettierrc.yaml', '.prettierrc.json5', '.prettierrc.toml', '.prettierrc.cjs', '.prettier.config.js', '.prettier.config.cjs'];
19
+
15
20
  function isConfigExists(fileNames) {
16
21
  return fileNames.find(file => {
17
22
  if (fs.existsSync(file)) return true;
18
23
  return false;
19
24
  });
20
25
  }
26
+
21
27
  async function checkConflicts(files) {
22
28
  const conflictFile = isConfigExists(files);
29
+
23
30
  if (conflictFile) {
24
31
  log(`[LINT SETUP] There's already a config exists as named ${conflictFile}`);
25
- const res = await question('[LINT SETUP] Do you want to overwrite? (y/n): ');
26
-
27
- // TODO: Next cycle: Need to delete the current config file.
32
+ const res = await question('[LINT SETUP] Do you want to overwrite? (y/n): '); // TODO: Next cycle: Need to delete the current config file.
28
33
  // if (res === 'y') {
29
34
  // exec(`rm ${conflictFile}`, (err) => {
30
35
  // if (err) log(err);
@@ -36,12 +41,15 @@ async function checkConflicts(files) {
36
41
 
37
42
  return res;
38
43
  }
44
+
39
45
  return false;
40
46
  }
47
+
41
48
  async function promptForPreCommitHook() {
42
49
  const res = await question('[LINT SETUP] Do you need a pre-commit hook for formatting and check lint errors in cached files (newly changed)? (y/n): ');
43
50
  return res;
44
51
  }
52
+
45
53
  const getChoices = async () => {
46
54
  const eslint = await checkConflicts(eslintConfigFiles);
47
55
  const prettier = await checkConflicts(prettierConfigFiles);
@@ -51,6 +59,7 @@ const getChoices = async () => {
51
59
  rl.close();
52
60
  return [isESLintAllowed, isPrettierAllowed, isHookInstallEnabled];
53
61
  };
62
+
54
63
  module.exports = {
55
64
  eslintConfigFiles,
56
65
  prettierConfigFiles,
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  const fs = require('fs');
4
+
4
5
  const {
5
6
  log
6
7
  } = require('..');
8
+
7
9
  async function copyConfigs(file) {
8
10
  // copy the file in react-cli to current working directory
9
11
  fs.readFile(require.resolve(`../../../files/${file}.js`), (err, data) => {
@@ -18,4 +20,5 @@ async function copyConfigs(file) {
18
20
  }
19
21
  });
20
22
  }
23
+
21
24
  module.exports = copyConfigs;
@@ -7,29 +7,37 @@ const {
7
7
  runInstall,
8
8
  installLintStaged
9
9
  } = require('./lintSetup');
10
+
10
11
  const {
11
12
  log
12
13
  } = require('..');
14
+
13
15
  const {
14
16
  eslintConfigFiles,
15
17
  prettierConfigFiles,
16
18
  getChoices
17
19
  } = require('./checkExistingConfig');
20
+
18
21
  const copyConfigs = require('./copyConfigs');
22
+
19
23
  async function main() {
20
24
  const packages = [];
21
25
  const [isESLintAllowed, isPrettierAllowed, isHookInstallEnabled] = await getChoices();
26
+
22
27
  if (isESLintAllowed) {
23
28
  copyConfigs('eslintrc', eslintConfigFiles);
24
29
  packages.push(...eslintPackages);
25
30
  }
31
+
26
32
  if (isPrettierAllowed) {
27
33
  copyConfigs('prettierrc', prettierConfigFiles);
28
34
  packages.push(...prettierPackages);
29
35
  }
36
+
30
37
  if (isESLintAllowed && isPrettierAllowed) {
31
38
  packages.push(...eslintPrettierConfig);
32
39
  }
40
+
33
41
  if (packages.length) {
34
42
  const process = runInstall(packages);
35
43
  process.on('close', () => {
@@ -41,5 +49,6 @@ async function main() {
41
49
  installLintStaged();
42
50
  }
43
51
  }
52
+
44
53
  log('[LINT SETUP] Beginning configuration...');
45
54
  main();
@@ -3,6 +3,7 @@
3
3
  const {
4
4
  addScripts
5
5
  } = require('./addScripts');
6
+
6
7
  const scripts = {
7
8
  lintSetup: 'react-cli lint-setup && npm run lintExtInstall && echo "If changes not reflected kindly restart your VSCode."',
8
9
  lintExtInstall: 'code --install-extension dbaeumer.vscode-eslint && code --install-extension esbenp.prettier-vscode'
@@ -3,11 +3,10 @@
3
3
  const {
4
4
  spawn
5
5
  } = require('child_process');
6
+
6
7
  const eslintPackages = ['eslint@7.18.0', 'eslint-config-airbnb@18.2.1', 'eslint-plugin-import@2.22.1', 'eslint-plugin-jsx-a11y@6.4.1', 'eslint-plugin-react@7.22.0', 'eslint-plugin-css-modules@2.11.0', '@zohodesk/eslint-plugin-react-performance@1.0.3', '@zohodesk/eslint-plugin-zsecurity@0.0.1-beta.4', 'eslint-plugin-react-hooks@4.2.0'];
7
8
  const prettierPackages = ['prettier@2.2.1'];
8
- const eslintPrettierConfig = ['eslint-config-prettier@7.2.0'];
9
-
10
- // const npmInstall = `npm i --save-dev ${devDependencies.join(' ')}`;
9
+ const eslintPrettierConfig = ['eslint-config-prettier@7.2.0']; // const npmInstall = `npm i --save-dev ${devDependencies.join(' ')}`;
11
10
 
12
11
  function runInstall(packages) {
13
12
  return spawn('npm', ['i', ...packages, '--save-dev'], {
@@ -15,12 +14,14 @@ function runInstall(packages) {
15
14
  stdio: 'inherit'
16
15
  });
17
16
  }
17
+
18
18
  function installLintStaged() {
19
19
  spawn('npx', ['mrm', 'lint-staged'], {
20
20
  detached: true,
21
21
  stdio: 'inherit'
22
22
  });
23
23
  }
24
+
24
25
  module.exports = {
25
26
  eslintPackages,
26
27
  prettierPackages,
@@ -3,4 +3,5 @@
3
3
  const {
4
4
  installLintStaged
5
5
  } = require('./lintSetup');
6
+
6
7
  installLintStaged();
@@ -1,22 +1,29 @@
1
1
  "use strict";
2
2
 
3
3
  /* eslint-disable no-await-in-loop */
4
+
4
5
  /* eslint-disable implicit-arrow-linebreak */
5
6
  const readline = require('readline');
7
+
6
8
  const rl = readline.createInterface({
7
9
  input: process.stdin,
8
10
  output: process.stdout
9
11
  });
12
+
10
13
  const question = qn => new Promise(res => {
11
14
  rl.question(qn, ans => res(ans));
12
15
  });
16
+
13
17
  async function main(qn) {
14
18
  let answer;
19
+
15
20
  while (!['n', 'y'].includes(answer)) {
16
21
  answer = (await question(qn)).toLowerCase();
17
22
  }
23
+
18
24
  return answer;
19
25
  }
26
+
20
27
  module.exports = {
21
28
  question: main,
22
29
  rl