@zohodesk/react-cli 0.0.1-beta.16 → 0.0.1-beta.162

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 (228) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +46 -3
  3. package/CHANGELOG.md +5 -0
  4. package/README.md +708 -0
  5. package/bin/cli.js +134 -27
  6. package/cert/cert.pem +37 -129
  7. package/cert/key.pem +27 -27
  8. package/cert/passphrase.pem +1 -0
  9. package/files/eslintrc.js +62 -0
  10. package/files/prettierrc.js +3 -0
  11. package/lib/babel/cmjs-plugins-presets.js +16 -9
  12. package/lib/babel/es-plugins-presets.js +26 -14
  13. package/lib/common/getEntries.js +33 -24
  14. package/lib/common/getPublicPathConfig.js +40 -0
  15. package/lib/common/index.js +27 -13
  16. package/lib/common/splitChunks.js +64 -26
  17. package/lib/common/sslcertUpdater.js +59 -0
  18. package/lib/common/templateParameters.js +25 -0
  19. package/lib/configs/jest.config.js +26 -27
  20. package/lib/configs/libAlias.js +31 -0
  21. package/lib/configs/webpack.component.umd.config.js +31 -37
  22. package/lib/configs/webpack.css.umd.config.js +44 -44
  23. package/lib/configs/webpack.dev.config.js +96 -56
  24. package/lib/configs/webpack.docs.config.js +104 -98
  25. package/lib/configs/webpack.impact.config.js +116 -0
  26. package/lib/configs/webpack.prod.config.js +137 -85
  27. package/lib/hooks/docsProptypeHook.js +32 -38
  28. package/lib/jest/commitedFilesResult.js +144 -71
  29. package/lib/jest/coverageCollector.js +62 -29
  30. package/lib/jest/jsonMaker.js +54 -0
  31. package/lib/jest/preProcessors/cssPreprocessor.js +16 -18
  32. package/lib/jest/preProcessors/jsPreprocessor.js +5 -6
  33. package/lib/jest/preProcessors/otherFilesPreprocessor.js +5 -6
  34. package/lib/jest/result.js +91 -41
  35. package/lib/jest/run.js +74 -27
  36. package/lib/jest/setup.js +103 -102
  37. package/lib/loaderUtils/getCSSLoaders.js +77 -0
  38. package/lib/loaderUtils/getDevJsLoaders.js +30 -23
  39. package/lib/loaderUtils/index.js +14 -7
  40. package/lib/loaders/docsLoader.js +15 -15
  41. package/lib/loaders/docsPropsLoader.js +14 -17
  42. package/lib/loaders/fileBountryLoader.js +17 -0
  43. package/lib/loaders/fileLoader.js +47 -38
  44. package/lib/loaders/scriptInstrumentLoader.js +21 -20
  45. package/lib/loaders/selectorMappingLoader.js +75 -0
  46. package/lib/loaders/workerLoader.js +136 -0
  47. package/lib/middlewares/HMRMiddleware.js +59 -41
  48. package/lib/middlewares/SSTMiddleware.js +21 -0
  49. package/lib/pluginUtils/getDevPlugins.js +175 -26
  50. package/lib/pluginUtils/getDocsPlugins.js +32 -17
  51. package/lib/pluginUtils/getLibraryImactPlugins.js +23 -0
  52. package/lib/pluginUtils/getLibraryPlugins.js +8 -10
  53. package/lib/pluginUtils/getProdPlugins.js +240 -37
  54. package/lib/pluginUtils/getServerPlugins.js +8 -11
  55. package/lib/pluginUtils/getUMDCSSPlugins.js +11 -15
  56. package/lib/pluginUtils/getUMDComponentPlugins.js +11 -15
  57. package/lib/pluginUtils/index.js +36 -43
  58. package/lib/plugins/CdnChangePlugin.js +77 -0
  59. package/lib/plugins/CleanupStatsPlugin.js +28 -0
  60. package/lib/plugins/EFCPlugin.js +241 -0
  61. package/lib/plugins/EFCPlugin.md +6 -0
  62. package/lib/plugins/EFCTemplatePlugin.js +151 -0
  63. package/lib/plugins/I18NInjectIntoIndexPlugin.js +141 -0
  64. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +60 -0
  65. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +44 -0
  66. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +266 -0
  67. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +183 -0
  68. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +100 -0
  69. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +86 -0
  70. package/lib/plugins/I18nSplitPlugin/README.md +25 -0
  71. package/lib/plugins/I18nSplitPlugin/index.js +185 -0
  72. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +64 -0
  73. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +13 -0
  74. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +26 -0
  75. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +40 -0
  76. package/lib/plugins/I18nSplitPlugin/utils/index.js +31 -0
  77. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +112 -0
  78. package/lib/plugins/ManifestPlugin.js +59 -62
  79. package/lib/plugins/ModuleStatsPlugin.js +98 -97
  80. package/lib/plugins/OptimizeJSPlugin.js +24 -41
  81. package/lib/plugins/PublicPathCallbackPlugin.js +63 -0
  82. package/lib/plugins/PublicPathChangePlugin.js +187 -174
  83. package/lib/plugins/ReportGeneratePlugin.js +181 -0
  84. package/lib/plugins/RequireVariablePublicPlugin.js +30 -0
  85. package/lib/plugins/ResourceHintsPlugin.js +53 -35
  86. package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +80 -0
  87. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +82 -0
  88. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -0
  89. package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +26 -0
  90. package/lib/plugins/ScriptInstrumentPlugin.js +22 -37
  91. package/lib/plugins/ServiceWorkerPlugin.js +107 -0
  92. package/lib/plugins/ShadowDOMSupportPlugin.js +270 -0
  93. package/lib/plugins/SourceMapHookPlugin.js +25 -31
  94. package/lib/plugins/TPHashMappingPlugin.js +67 -0
  95. package/lib/plugins/UglifyCSSPlugin.js +23 -30
  96. package/lib/plugins/UnusedFilesFindPlugin.js +150 -97
  97. package/lib/plugins/index.js +118 -55
  98. package/lib/plugins/libraryImpactPlugin.js +190 -0
  99. package/lib/plugins/webpackwatchrunplugin.js +26 -0
  100. package/lib/postcss-plugins/ExcludeRTLPlugin.js +23 -0
  101. package/lib/postcss-plugins/RTLSplitPlugin.js +138 -0
  102. package/lib/schemas/index.js +466 -52
  103. package/lib/servers/clusterHubServer.js +22 -26
  104. package/lib/servers/docsServer.js +3 -5
  105. package/lib/servers/docsServerCore.js +93 -85
  106. package/lib/servers/helpServer.js +19 -21
  107. package/lib/servers/httpsOptions.js +19 -0
  108. package/lib/servers/impactServer.js +99 -92
  109. package/lib/servers/mockserver.js +44 -0
  110. package/lib/servers/nowatchserver.js +275 -0
  111. package/lib/servers/scrServer.js +147 -0
  112. package/lib/servers/server.js +118 -124
  113. package/lib/servers/ssServer.js +107 -65
  114. package/lib/sh/reportPublish.sh +16 -10
  115. package/lib/templates/CoverageScriptTemplate.js +45 -18
  116. package/lib/templates/WMSTemplate.js +17 -18
  117. package/lib/templates/linterConstant.js +10 -0
  118. package/lib/utils/babelPresets.js +12 -5
  119. package/lib/utils/buildstats.html +148 -0
  120. package/lib/utils/clean.js +12 -11
  121. package/lib/utils/copy.js +13 -127
  122. package/lib/utils/copyTimezones.js +21 -0
  123. package/lib/utils/createEventStream.js +24 -19
  124. package/lib/utils/cssClassNameGenerate.js +77 -0
  125. package/lib/utils/cssURLReplacer.js +67 -54
  126. package/lib/utils/dependencyPostPublish.js +42 -0
  127. package/lib/utils/fileUtils.js +125 -0
  128. package/lib/utils/folderIterator.js +47 -0
  129. package/lib/utils/getComponents.js +126 -0
  130. package/lib/utils/getCurrentBranch.js +11 -17
  131. package/lib/utils/getDependenciesImpactList.js +151 -0
  132. package/lib/utils/getHash.js +26 -0
  133. package/lib/utils/getIp.js +20 -0
  134. package/lib/utils/getOptions.js +55 -30
  135. package/lib/utils/getServerURL.js +25 -8
  136. package/lib/utils/index.js +259 -82
  137. package/lib/utils/init.js +2 -2
  138. package/lib/utils/initPreCommitHook.js +40 -31
  139. package/lib/utils/jsonHelper.js +97 -0
  140. package/lib/utils/libraryImpactConfig.js +63 -0
  141. package/lib/utils/lint/addScripts.js +27 -0
  142. package/lib/utils/lint/checkExistingConfig.js +67 -0
  143. package/lib/utils/lint/copyConfigs.js +24 -0
  144. package/lib/utils/lint/index.js +54 -0
  145. package/lib/utils/lint/lintScripts.js +11 -0
  146. package/lib/utils/lint/lintSetup.js +31 -0
  147. package/lib/utils/lint/lintStagedPreCommitHook.js +7 -0
  148. package/lib/utils/lint/question.js +30 -0
  149. package/lib/utils/lintReporter.js +142 -0
  150. package/lib/utils/mailSender.js +16 -25
  151. package/lib/utils/pullOrigin.js +28 -0
  152. package/lib/utils/reinstallDependencies.js +133 -0
  153. package/lib/utils/removeAttributes.js +25 -23
  154. package/lib/utils/repoClone.js +56 -63
  155. package/lib/utils/request.js +64 -77
  156. package/lib/utils/resultSchema.json +73 -0
  157. package/lib/utils/rtl.js +42 -0
  158. package/lib/utils/setEnvVariables.js +5 -6
  159. package/lib/utils/ssTestHack.js +48 -0
  160. package/lib/utils/switchBranch.js +28 -0
  161. package/lib/utils/urlConcat.js +22 -0
  162. package/package.json +92 -64
  163. package/templates/app/.eslintrc.js +140 -0
  164. package/templates/app/README.md +12 -12
  165. package/templates/app/app/index.html +24 -8
  166. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  167. package/templates/app/app/properties/i18nkeys.json +3 -3
  168. package/templates/app/docs/all.html +69 -69
  169. package/templates/app/mockapi/index.js +18 -13
  170. package/templates/app/package.json +37 -17
  171. package/templates/app/src/actions/SampleActions/index.js +37 -0
  172. package/templates/app/src/actions/index.js +65 -0
  173. package/templates/app/src/appUrls.js +19 -0
  174. package/templates/app/src/components/Alert/Alert.js +134 -0
  175. package/templates/app/src/components/Alert/Alert.module.css +79 -0
  176. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -0
  177. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -0
  178. package/templates/app/src/components/Sample/Sample.module.css +11 -0
  179. package/templates/app/src/components/Sample/SampleList.js +61 -0
  180. package/templates/app/src/components/Slider/Slider.css +41 -0
  181. package/templates/app/src/components/Slider/Slider.js +55 -0
  182. package/templates/app/src/containers/AlertContainer/index.js +15 -0
  183. package/templates/app/src/containers/AppContainer/index.js +96 -0
  184. package/templates/app/src/containers/AppContainer/index.module.css +27 -0
  185. package/templates/app/src/containers/CustomMatch/index.js +65 -0
  186. package/templates/app/src/containers/DevTools/index.js +10 -0
  187. package/templates/app/src/containers/Header/index.js +67 -0
  188. package/templates/app/src/containers/Header/index.module.css +43 -0
  189. package/templates/app/src/containers/Redirect/index.js +63 -0
  190. package/templates/app/src/containers/Redirector/index.js +47 -0
  191. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -0
  192. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -0
  193. package/templates/app/src/historyChange.js +5 -0
  194. package/templates/app/src/index.html +10 -0
  195. package/templates/app/src/index.js +24 -0
  196. package/templates/app/src/middleware/PromiseMiddleware.js +59 -0
  197. package/templates/app/src/reducers/alertData.js +11 -0
  198. package/templates/app/src/reducers/index.js +6 -0
  199. package/templates/app/src/reducers/samples.js +19 -0
  200. package/templates/app/src/store/configureStore.dev.js +51 -0
  201. package/templates/app/src/store/configureStore.js +5 -0
  202. package/templates/app/src/store/configureStore.prod.js +26 -0
  203. package/templates/app/src/util/Common.js +5 -0
  204. package/templates/app/src/util/RequestAPI.js +132 -0
  205. package/templates/appold/README.md +12 -0
  206. package/templates/appold/app/index.html +8 -0
  207. package/templates/appold/app/properties/ApplicationResources_en_US.properties +1 -0
  208. package/templates/appold/app/properties/i18nkeys.json +3 -0
  209. package/templates/appold/docs/all.html +69 -0
  210. package/templates/appold/mockapi/index.js +13 -0
  211. package/templates/{app → appold}/mockapi/tickets.json +0 -0
  212. package/templates/appold/package.json +17 -0
  213. package/templates/appold/src/components/Text/Text.css +0 -0
  214. package/templates/appold/src/components/Text/Text.js +23 -0
  215. package/templates/appold/src/components/Text/__tests__/Text.spec.js +30 -0
  216. package/templates/appold/src/components/Text/docs/Text__default.docs.js +16 -0
  217. package/templates/appold/src/components/docs.js +1 -0
  218. package/templates/appold/src/components/index.js +5 -0
  219. package/templates/appold/src/index.js +13 -0
  220. package/templates/docs/all.html +1 -1
  221. package/templates/docs/component.html +110 -69
  222. package/templates/docs/components.html +221 -0
  223. package/templates/docs/css/component.css +12 -14
  224. package/templates/docs/css/componentTest.css +7 -0
  225. package/templates/docs/css/style.css +150 -206
  226. package/templates/docs/impactReportTemplate.html +154 -0
  227. package/templates/docs/index.html +1482 -1336
  228. package/templates/library/src/index.js +0 -0
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+
3
+ var _fs = _interopRequireDefault(require("fs"));
4
+
5
+ var _path = _interopRequireDefault(require("path"));
6
+
7
+ var _https = _interopRequireDefault(require("https"));
8
+
9
+ var _os = require("os");
10
+
11
+ var _express = _interopRequireDefault(require("express"));
12
+
13
+ var _ws = _interopRequireDefault(require("ws"));
14
+
15
+ var _child_process = require("child_process");
16
+
17
+ var _httpProxyMiddleware = require("http-proxy-middleware");
18
+
19
+ var _utils = require("../utils");
20
+
21
+ var _httpsOptions = require("./httpsOptions");
22
+
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+
25
+ // import webpack from 'webpack';
26
+ let options = (0, _utils.getOptions)(); // let args = process.argv.slice(3);
27
+
28
+ let {
29
+ app: {
30
+ context,
31
+ server,
32
+ outputFolder
33
+ }
34
+ } = options;
35
+ let {
36
+ host,
37
+ port,
38
+ domain,
39
+ mode,
40
+ disableContextURL,
41
+ hasMock,
42
+ mockPort
43
+ } = server;
44
+ let isCompatableHttp2 = Number(process.version.substr(1).split('.')[0]) >= 8;
45
+ let contextURL = disableContextURL ? '' : `/${context}`;
46
+ let serverUrl = (0, _utils.getServerURL)(server, 'htt' + 'ps');
47
+ const {
48
+ cssSelectorZipPath
49
+ } = options.impactService;
50
+ const zipname = cssSelectorZipPath ? _path.default.parse(cssSelectorZipPath).name : null;
51
+
52
+ let outputFolderLocation = _path.default.join(process.cwd(), outputFolder);
53
+
54
+ function execSyncDefalut(command) {
55
+ console.log(' command running ==>', command);
56
+ return (0, _child_process.execSync)(command, {
57
+ stdio: 'inherit'
58
+ });
59
+ }
60
+
61
+ let appPath = process.cwd();
62
+ const isNodeModuleUnderAppFolder = __dirname.indexOf(appPath) !== -1;
63
+ const isQuiet = 'q';
64
+ let isWindows = (0, _os.platform)().toLowerCase() === 'win32';
65
+
66
+ const _getCliPath = !isNodeModuleUnderAppFolder ? libName => _path.default.join(__dirname, '..', '..', 'node_modules', '.bin', libName) : libName => libName;
67
+
68
+ const suffixExt = isWindows ? '.cmd' : '';
69
+
70
+ function getCliPath(libName) {
71
+ return _getCliPath(libName) + suffixExt;
72
+ }
73
+
74
+ let webpack = getCliPath('webpack'); // console.log('webpack === > ', webpack, fs.existsSync(webpack));
75
+
76
+ if (_fs.default.existsSync(outputFolderLocation)) {
77
+ execSyncDefalut(`rm -rf ${outputFolder}`);
78
+ console.log(`previous ${outputFolder} removed`);
79
+ }
80
+
81
+ if (_fs.default.existsSync(_path.default.join(process.cwd(), 'build.zip'))) {
82
+ execSyncDefalut('rm build.zip');
83
+ console.log('previous build.zip removed');
84
+ } // execSyncDefalut(`${webpack } --version`);
85
+ // execSyncDefalut(`${webpack} --config ${require.resolve('../configs/webpack.dev.config.js')}`);
86
+
87
+
88
+ console.log('webpack compilation starts...');
89
+ let startTime = Date.now(); // let result = spawnSync(
90
+ // webpack,
91
+ // ['--config', require.resolve('../configs/webpack.dev.config.js')].concat(
92
+ // args
93
+ // ),
94
+ // { stdio: 'inherit' }
95
+ // );
96
+
97
+ let result = execSyncDefalut(`${webpack} --config ${require.resolve('../configs/webpack.dev.config.js')}`);
98
+ result && console.log(result);
99
+
100
+ if (result && result.stderr) {
101
+ throw result.stderr;
102
+ }
103
+
104
+ console.log(`compailation done in ${Date.now() - startTime}ms`);
105
+
106
+ if (zipname) {
107
+ execSyncDefalut(`zip -r${isQuiet} build.zip ${outputFolder}/*`);
108
+ console.log('build.zip file created');
109
+ let result = execSyncDefalut(`zip -r${isQuiet} ${cssSelectorZipPath} ${zipname}/*`);
110
+ execSyncDefalut(`rm -rf ${zipname}`);
111
+
112
+ if (result && result.stderr) {
113
+ console.log('zip file not created', cssSelectorZipPath);
114
+ console.error(result.stderr);
115
+ } else {
116
+ console.log('zip file created', cssSelectorZipPath);
117
+ }
118
+ }
119
+
120
+ const app = (0, _express.default)();
121
+
122
+ if (hasMock) {
123
+ app.use(server.mockPrefix, (0, _httpProxyMiddleware.createProxyMiddleware)({
124
+ target: 'ht' + `tp://localhost:${mockPort}`,
125
+ changeOrigin: true
126
+ }));
127
+ } // Nb@$#3NGscc
128
+
129
+
130
+ app.use(_express.default.json());
131
+ app.use(_express.default.urlencoded({
132
+ extended: true
133
+ }));
134
+
135
+ const staticPart = _express.default.static(outputFolderLocation, {
136
+ cacheControl: true,
137
+ setHeaders: function (res) {
138
+ if (options.app.enableDevCache) {
139
+ res.setHeader('Cache-Control', 'public, max-age=604800');
140
+ }
141
+
142
+ res.setHeader('Access-Control-Allow-Origin', '*');
143
+ }
144
+ });
145
+
146
+ if (contextURL === '') {
147
+ app.use(staticPart);
148
+ } else {
149
+ app.use(contextURL, staticPart);
150
+ }
151
+
152
+ app.use((req, res, next) => {
153
+ res.setHeader('Access-Control-Allow-Origin', '*');
154
+ next();
155
+ }).use(`${contextURL}/fonts`, _express.default.static(`${context}/fonts`));
156
+ app.use('/wms/*', (req, res) => {
157
+ res.sendFile(_path.default.join(__dirname, '..', '..', 'templates', 'wms', 'index.html'));
158
+ });
159
+
160
+ const httpsServer = _https.default.createServer(_httpsOptions.httpsOptions, app);
161
+
162
+ const wss = new _ws.default.Server({
163
+ server: httpsServer
164
+ });
165
+ let wsPool = [];
166
+ wss.on('connection', ws => {
167
+ wsPool.push(ws);
168
+ ws.on('close', () => {
169
+ wsPool = wsPool.filter(ws1 => ws1 !== ws);
170
+ });
171
+ ws.on('message', message => {
172
+ (0, _utils.log)('received: %s', message);
173
+ });
174
+ ws.send('something');
175
+ });
176
+ app.post('/wmsmockapi', (req, res) => {
177
+ wsPool.forEach(ws => {
178
+ let {
179
+ body
180
+ } = req;
181
+
182
+ try {
183
+ ws.send(JSON.stringify(body));
184
+ } catch (e) {
185
+ (0, _utils.log)(e, body);
186
+ }
187
+ });
188
+ res.send('success');
189
+ }); // let webpackCompilation;
190
+ // compiler.hooks.afterCompile.tap('ReactCLI', compilation => {
191
+ // webpackCompilation = compilation;
192
+ // });
193
+
194
+ if (zipname) {
195
+ app.use(`/zips/${zipname}.zip`, (req, res) => {
196
+ res.download(_path.default.join(process.cwd(), cssSelectorZipPath), err => {
197
+ if (err) {
198
+ throw err;
199
+ }
200
+
201
+ console.log(`${zipname}.zip downloaded`);
202
+ });
203
+ });
204
+ app.use('/zips/build.zip', (req, res) => {
205
+ res.download(_path.default.join(process.cwd(), 'build.zip'), err => {
206
+ if (err) {
207
+ throw err;
208
+ }
209
+
210
+ console.log('build.zip downloaded');
211
+ });
212
+ });
213
+ }
214
+
215
+ if (contextURL) {
216
+ app.use(contextURL, _express.default.static(context));
217
+ app.use(`${contextURL}/*`, (req, res) => {
218
+ // let indexHtml = webpackCompilation.assets['index.html'];
219
+ res.sendFile(_path.default.join(outputFolderLocation, 'index.html')); // let indexHtml = webpackCompilation.assets['index.html'];
220
+ // res.send(indexHtml && indexHtml.source());
221
+ });
222
+ } else {
223
+ app.use(_express.default.static(context));
224
+ app.use('/*', _express.default.static(context));
225
+ }
226
+
227
+ httpsServer.listen(port, err => {
228
+ if (err) {
229
+ throw err;
230
+ }
231
+
232
+ (0, _utils.log)(`Listening at ${serverUrl}${contextURL}/`);
233
+ });
234
+
235
+ if (isCompatableHttp2) {
236
+ const http2 = require('http2');
237
+
238
+ const http2Server = http2.createSecureServer(_httpsOptions.httpsOptions); // eslint-disable-next-line no-unused-vars
239
+
240
+ http2Server.on('stream', (stream, headers) => {
241
+ stream.respond({
242
+ 'content-type': 'text/html',
243
+ ':status': 200
244
+ });
245
+ stream.end('<h1>Hello World! <br>Working with http2</h1>');
246
+ });
247
+ let http2Port = Number(port) + 1;
248
+ http2Server.listen(http2Port, err => {
249
+ if (err) {
250
+ throw err;
251
+ }
252
+
253
+ (0, _utils.log)(`Listening at ${(0, _utils.getServerURL)({
254
+ host,
255
+ domain,
256
+ port: http2Port
257
+ }, 'htt' + 'ps')}${contextURL}/`, 'http2 server');
258
+ });
259
+ } else {
260
+ (0, _utils.log)('Your node version didn\'t adopted http2 support. Kindly update that to 8 LTS or above you can engage the http2');
261
+ }
262
+
263
+ let httpPort = Number(port) + (isCompatableHttp2 ? 2 : 1);
264
+ app.listen(httpPort, err => {
265
+ if (err) {
266
+ throw err;
267
+ }
268
+
269
+ (0, _utils.log)(`Listening at ${(0, _utils.getServerURL)({
270
+ host,
271
+ domain,
272
+ port: httpPort
273
+ }, 'ht' + 'tp')}${contextURL}/`);
274
+ });
275
+ console.log(`compailation done in ${Date.now() - startTime}ms`);
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ var _screenshotTest = _interopRequireDefault(require("@zohodesk/screenshot-test"));
4
+
5
+ var _jsonHelper = require("../utils/jsonHelper");
6
+
7
+ var _child_process = require("child_process");
8
+
9
+ var _utils = require("../utils");
10
+
11
+ var _docsServerCore = _interopRequireDefault(require("./docsServerCore"));
12
+
13
+ var _SSTMiddleware = _interopRequireDefault(require("../middlewares/SSTMiddleware"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+
17
+ //Getting variables from flag and exe
18
+ let cwd = process.cwd();
19
+ let options = (0, _utils.getOptions)();
20
+ let {
21
+ ssTest: {
22
+ seleniumHub,
23
+ referBranch,
24
+ currentBranch,
25
+ enableImage,
26
+ pathToSubProjects,
27
+ isImpactRun,
28
+ isStore,
29
+ dbURL,
30
+ tableName,
31
+ serviceName,
32
+ tokenGit
33
+ },
34
+ docs: {
35
+ server
36
+ }
37
+ } = options;
38
+ let resultFileName = `${cwd}/result.json`;
39
+ let docsServerInstance; // let impactedComponentList = null;
40
+
41
+ let url = (0, _utils.getServerURL)(Object.assign(server, {
42
+ host: server.iphost
43
+ }), 'ht' + 'tp');
44
+ let commitID = (0, _child_process.execSync)('git log --first-parent --pretty="format:%H" --max-count 2', {
45
+ cwd: cwd
46
+ }).toString() || '';
47
+ let [latestCommitHash, lastCommitHash] = commitID.split('\n');
48
+ let script = 'var Objlist = {};for (i in componentList) {try { if (componentList[i].prototype.isReactComponent) Objlist[i] = componentList[i].docs.componentGroup;}catch (err) {console.log(i, err);}};if (Object.keys(Objlist).length < 5) {Objlist = false;}return Objlist;'; // Variable getting part end //
49
+
50
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.compareBranch', referBranch);
51
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.TestBranch', currentBranch);
52
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.isExecuted', true);
53
+ (0, _utils.log)('Test Branch Name :- ', currentBranch); // function declaration part //
54
+
55
+ let closeServer = serverInstance => {
56
+ (0, _utils.log)('Docs service stopped!');
57
+ let {
58
+ http,
59
+ https,
60
+ wdm
61
+ } = serverInstance;
62
+ http.close();
63
+ https.close();
64
+ wdm.close();
65
+ }; //eslint-disable-next-line
66
+
67
+
68
+ let afterFirstScreenShotCollected = () => {
69
+ closeServer(docsServerInstance);
70
+ (0, _utils.switchBranch)('git', referBranch).then(() => {
71
+ (0, _utils.log)('Reference Branch Name :- ', (0, _utils.getCurrentBranch)());
72
+ (0, _utils.reinstallDependencies)(pathToSubProjects).then(() => {
73
+ (0, _utils.ssTestHack)();
74
+ });
75
+ });
76
+ };
77
+
78
+ let onSStestEnd = (status, resultObject, message) => {
79
+ if (status) {
80
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.endTime', Date.now());
81
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.isPassed', true);
82
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.result', resultObject);
83
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.message', message);
84
+ (0, _jsonHelper.setTestInfoStatus)(resultFileName, true);
85
+ (0, _utils.log)(message); //'Screenshot test completed successfully.'
86
+
87
+ closeServer(docsServerInstance);
88
+ } else {
89
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.isPassed', false);
90
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.message', message);
91
+ (0, _jsonHelper.setTestInfoStatus)(resultFileName, false);
92
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'testInfo.failures', {
93
+ type: 'screenshotTest',
94
+ message
95
+ });
96
+ closeServer(docsServerInstance);
97
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.endTime', Date.now());
98
+ throw new Error('Component list undefined! Please check component Docs');
99
+ }
100
+ };
101
+
102
+ let run = (listOfComponents = [], configObject) => {
103
+ docsServerInstance = (0, _docsServerCore.default)(true);
104
+ docsServerInstance.app.use((0, _SSTMiddleware.default)(docsServerInstance.compiler, mData => {
105
+ if (isImpactRun) {
106
+ let finalResultObject = (0, _utils.getComponents)(mData, listOfComponents);
107
+ configObject.impactedComponentList = finalResultObject.impactedComponentList;
108
+ configObject.unDocsComList = finalResultObject.unDocsComList;
109
+ }
110
+
111
+ _screenshotTest.default.run(configObject, (status, finalObj, message) => {
112
+ onSStestEnd(status, finalObj, message);
113
+ });
114
+ }));
115
+ };
116
+
117
+ (0, _jsonHelper.jsonHelper)(resultFileName, 'tests.screenshotTest.startTime', Date.now());
118
+ (0, _utils.ssTestHack)();
119
+ let scrObject = {
120
+ currentBranch,
121
+ referBranch,
122
+ latestCommitHash,
123
+ lastCommitHash,
124
+ seleniumHub,
125
+ url: `${url}/docs/components.html`,
126
+ browser: 'chrome',
127
+ enableImage,
128
+ dbURL,
129
+ isImpactRun,
130
+ isStore,
131
+ script,
132
+ tableName
133
+ };
134
+
135
+ if (isImpactRun) {
136
+ if (!isStore) {
137
+ (0, _utils.getDependenciesImpactList)(currentBranch, referBranch, tokenGit, serviceName).then(impactedList => {
138
+ run(impactedList, scrObject);
139
+ });
140
+ } else {
141
+ (0, _utils.getDependenciesImpactList)(latestCommitHash, lastCommitHash, tokenGit, serviceName).then(impactedList => {
142
+ run(impactedList, scrObject);
143
+ });
144
+ }
145
+ } else {
146
+ run([], scrObject);
147
+ }