@wavemaker/angular-codegen 11.7.0-next.139418 → 11.7.0-next.24768

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,6 +29,11 @@
29
29
  "assets": [
30
30
  "src/favicon.ico",
31
31
  "src/assets",
32
+ {
33
+ "glob": "print.css",
34
+ "input": "src/assets/",
35
+ "output": "."
36
+ },
32
37
  {
33
38
  "glob": "**/*",
34
39
  "input": "libraries/locales/",
@@ -187,7 +192,12 @@
187
192
  "tsConfig": "src/tsconfig.app.json",
188
193
  "assets": [
189
194
  "src/favicon.ico",
190
- "src/assets"
195
+ "src/assets",
196
+ {
197
+ "glob": "print.css",
198
+ "input": "src/assets/",
199
+ "output": "."
200
+ }
191
201
  ],
192
202
  "styles": [
193
203
  "src/styles.css",
@@ -0,0 +1,30 @@
1
+ const { spawnSync } = require('child_process');
2
+ const path = require('path');
3
+
4
+ const args = process.argv.slice(2);
5
+
6
+ const ngBuildArgs = ['build', ...args];
7
+ console.log("Build params - ", ngBuildArgs);
8
+
9
+ //Trigger angular build with the passed params
10
+ const ngPath = path.resolve(process.cwd(), 'node_modules', '.bin', "ng");
11
+ const ngBuildProcess = spawnSync(ngPath, ngBuildArgs, { stdio: 'inherit', shell: true });
12
+
13
+ if (ngBuildProcess.status === 0) {
14
+ console.log('ng build completed successfully!');
15
+ } else {
16
+ console.error('Error during ng build:', ngBuildProcess.error || ngBuildProcess.stderr);
17
+ process.exit(1);
18
+ }
19
+
20
+ const ngPostBuildArgs = ['build-scripts/post-build.js', ...args];
21
+ console.log("Post build params - ", ngPostBuildArgs);
22
+
23
+ const ngPostBuildProcess = spawnSync('node', ngPostBuildArgs, { stdio: 'inherit' });
24
+
25
+ if (ngPostBuildProcess.status === 0) {
26
+ console.log('ng post build completed successfully!');
27
+ } else {
28
+ console.error('Error during ng build:', ngPostBuildProcess.error || ngPostBuildProcess.stderr);
29
+ process.exit(1);
30
+ }
@@ -76,7 +76,7 @@ const setMobileProjectType = (angularJson) => {
76
76
  const addMobileSpecificStyles = async (deployUrl) => {
77
77
  if (isDevBuild) {
78
78
  $("body").append(
79
- `<script type="text/javascript" defer="true" src="${deployUrl}/wm-android-styles.js"></script>`
79
+ `<script type="text/javascript" defer="true" src="${deployUrl}wm-android-styles.js"></script>`
80
80
  );
81
81
  }
82
82
 
@@ -84,12 +84,12 @@ const addMobileSpecificStyles = async (deployUrl) => {
84
84
  let hash = await generateHash(`${opPath}/wm-android-styles.css`);
85
85
  copyMobileCssFiles(hash, 'wm-android-styles');
86
86
  $("head").append(
87
- `<link rel="stylesheet" theme="wmtheme" href="${deployUrl}/wm-android-styles.${hash}.css" >`
87
+ `<link rel="stylesheet" theme="wmtheme" href="${deployUrl}wm-android-styles.${hash}.css" >`
88
88
  );
89
89
  hash = await generateHash(`${opPath}/wm-ios-styles.css`);
90
90
  copyMobileCssFiles(hash, 'wm-ios-styles');
91
91
  $("head").append(
92
- `<link rel="stylesheet" theme="wmtheme" href="${deployUrl}/wm-ios-styles.${hash}.css" >`
92
+ `<link rel="stylesheet" theme="wmtheme" href="${deployUrl}wm-ios-styles.${hash}.css" >`
93
93
  );
94
94
  }
95
95
  }
@@ -108,8 +108,10 @@ const addScriptForWMStylesPath = (wm_styles_path) => {
108
108
  );
109
109
  }
110
110
  }
111
+ }
112
+ const addPrintStylesPath = (print_styles_path) => {
111
113
  $("head").append(
112
- `<link rel="stylesheet" type="text/css" media="print" href="print.css"/>`
114
+ `<link rel="stylesheet" type="text/css" media="print" href="${print_styles_path}"/>`
113
115
  );
114
116
  }
115
117
 
@@ -153,7 +155,7 @@ const getUpdatedFileName = (deployUrl, url, updatedFileNames) => {
153
155
  }
154
156
 
155
157
  if (absUrl in updatedFileNames) {
156
- return `${deployUrl}/${updatedFileNames[absUrl]}` // add the leading '/' back
158
+ return `${deployUrl}${updatedFileNames[absUrl]}` // add the leading '/' back
157
159
  }
158
160
  return `${deployUrl}${url}`;
159
161
  }
@@ -195,6 +197,8 @@ const getIconPath = (iconPath) => {
195
197
  const updatePwaAssets = (deployUrl, updatedFileNames, updatedFileHashes) => {
196
198
  const ngswPath = './dist/ngsw.json';
197
199
  const manifestPath = './dist/manifest.json';
200
+ //this is always from server in case of pwa. Need to fix this to use cdnurl from runtime/build config
201
+ deployUrl = deployUrl === "_cdnUrl_" ? 'ng-bundle/' : deployUrl;
198
202
 
199
203
  // copy service worker and its config to root directory
200
204
  fs.copyFileSync('./dist/ng-bundle/ngsw-worker.js', './dist/ngsw-worker.js');
@@ -206,7 +210,7 @@ const updatePwaAssets = (deployUrl, updatedFileNames, updatedFileHashes) => {
206
210
  const manifest = JSON.parse(fs.readFileSync(manifestPath).toString());
207
211
  const updatedManifest = {
208
212
  ...manifest,
209
- icons: manifest.icons.map(icon => ({ ...icon, src: `${deployUrl}/${getIconPath(icon.src)}` })),
213
+ icons: manifest.icons.map(icon => ({ ...icon, src: `${deployUrl}${getIconPath(icon.src)}` })),
210
214
  }
211
215
  const manifestContent = JSON.stringify(updatedManifest, null, 4);
212
216
  fs.writeFileSync(manifestPath, manifestContent);
@@ -244,9 +248,6 @@ const generateSha1 = (content) => {
244
248
  const angularJson = require(`${process.cwd()}/angular.json`);
245
249
  const build = angularJson['projects']['angular-app']['architect']['build'];
246
250
  let deployUrl = args['deploy-url'] || build['options']['deployUrl'];
247
- if (deployUrl.endsWith('/')) {
248
- deployUrl = deployUrl.slice(0, deployUrl.length - 1);
249
- }
250
251
 
251
252
  const contents = await readFile(`./dist/index.html`, `utf8`);
252
253
  $ = cheerio.load(contents);
@@ -278,17 +279,22 @@ const generateSha1 = (content) => {
278
279
  await addMobileSpecificStyles(deployUrl);
279
280
  } else {
280
281
  if (isDevBuild) {
281
- wm_styles_path = `${deployUrl}/wm-styles.js`;
282
+ wm_styles_path = `${deployUrl}wm-styles.js`;
282
283
  } else {
283
284
  const fileName = 'wm-styles';
284
285
  const hash = await generateHash(`${opPath}/${fileName}.css`);
285
286
  copyCssFiles(hash, updatedFilenames);
286
287
  const updatedFileName = `${fileName}.${hash}.css`
287
- wm_styles_path = `${deployUrl}/${updatedFileName}`;
288
+ wm_styles_path = `${deployUrl}${updatedFileName}`;
288
289
  }
289
290
  }
290
291
 
291
292
  addScriptForWMStylesPath(wm_styles_path);
293
+ addPrintStylesPath(`${deployUrl}print.css`);
294
+
295
+ //this is required to download all the assets
296
+ $('head').append(`<meta name="deployUrl" content=${deployUrl} />`);
297
+
292
298
  const htmlContent = $.html();
293
299
  await writeFile(`./dist/index.html`, htmlContent);
294
300
 
@@ -36,7 +36,7 @@
36
36
  "@metrichor/jmespath": "^0.3.1",
37
37
  "@wavemaker/focus-trap": "^1.0.0",
38
38
  "@wavemaker/nvd3": "1.8.9",
39
- "@wavemaker/variables": "11.7.0-next.139418",
39
+ "@wavemaker/variables": "11.7.0-next.24768",
40
40
  "@ztree/ztree_v3": "^3.5.48",
41
41
  "angular-imask": "6.3.0",
42
42
  "angular2-websocket": "0.9.7",
@@ -5947,9 +5947,9 @@
5947
5947
  }
5948
5948
  },
5949
5949
  "node_modules/@wavemaker/variables": {
5950
- "version": "11.7.0-next.139418",
5951
- "resolved": "https://registry.npmjs.org/@wavemaker/variables/-/variables-11.7.0-next.139418.tgz",
5952
- "integrity": "sha512-Urm1HneTv747Xixk4n/V9EkbnpUGKWB36iYAU3ZSjhakkLLH6xsLYkMPjOG2rW1Pm12XsNNbFPixNMgRC/gjjw==",
5950
+ "version": "11.7.0-next.24768",
5951
+ "resolved": "https://registry.npmjs.org/@wavemaker/variables/-/variables-11.7.0-next.24768.tgz",
5952
+ "integrity": "sha512-/8tXDVWDhGEiaZTdiLBs/f2RuRD+AjkoAoxgkCc2YfXxdwgCx+H5GHRnFKufhJge7yberdpszi2lC9iS6eMu8g==",
5953
5953
  "dependencies": {
5954
5954
  "@metrichor/jmespath": "^0.3.1",
5955
5955
  "he": "^1.2.0",
@@ -4,8 +4,8 @@
4
4
  "scripts": {
5
5
  "ng": "ng",
6
6
  "start": "./node_modules/.bin/ng serve",
7
- "build": "./node_modules/.bin/ng build",
8
- "postbuild": "node build-scripts/post-build.js",
7
+ "build": "node build-scripts/build.js",
8
+ "post-build": "node build-scripts/post-build.js",
9
9
  "test": "./node_modules/.bin/ng test",
10
10
  "test_components": "./node_modules/.bin/ng t @wm/components/base",
11
11
  "test_mobile": "./node_modules/.bin/ng t @wm/mobile/components/basic",
@@ -47,7 +47,7 @@
47
47
  "@metrichor/jmespath": "^0.3.1",
48
48
  "@wavemaker/focus-trap": "^1.0.0",
49
49
  "@wavemaker/nvd3": "1.8.9",
50
- "@wavemaker/variables": "11.7.0-next.139418",
50
+ "@wavemaker/variables": "11.7.0-next.24768",
51
51
  "@ztree/ztree_v3": "^3.5.48",
52
52
  "angular-imask": "6.3.0",
53
53
  "angular2-websocket": "0.9.7",
@@ -72,7 +72,7 @@
72
72
  "tslib": "2.4.1",
73
73
  "x2js": "^3.4.4",
74
74
  "zone.js": "~0.11.4",
75
- "@wavemaker/app-ng-runtime": "11.7.0-next.139418"
75
+ "@wavemaker/app-ng-runtime": "11.7.0-next.24768"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@ampproject/rollup-plugin-closure-compiler": "^0.27.0",
@@ -0,0 +1,32 @@
1
+ body {margin:0; padding:0; line-height: 1.4em; word-spacing:1px; letter-spacing:0.2px; font: 13px Arial, Helvetica,"Lucida Grande", serif; color: #000;}
2
+
3
+ /*Header*/
4
+ h2 {color:#000; font-size:25px;}
5
+
6
+ /* Links */
7
+ a:link, a:visited {background: transparent; color:#333; text-decoration:none;}
8
+ a:link[href^="http://"]:after, a[href^="http://"]:visited:after {content: " (" attr(href) ") "; font-size: 11px;}
9
+ a[href^="http://"] {color:#000;}
10
+
11
+ /*Image*/
12
+ img, img a, .more-link a {border:none;}
13
+
14
+ /*Remove Element*/
15
+ .app-header, .app-top-nav, .app-footer, .app-left-panel, .app-right-panel {display: none !important;}
16
+
17
+ /*Remove Form Controls*/
18
+ .app-checkboxset, .app-button, .app-button-group, .app-menu, .app-composite-widget,
19
+ .form-group, .form-control,
20
+ .app-fileupload, .app-grid .table-footer
21
+ {display: none !important;}
22
+
23
+ /*Show all of the grid data*/
24
+ .app-grid .app-datagrid .app-datagrid-cell {
25
+ overflow: visible;
26
+ word-wrap: break-word;
27
+ }
28
+
29
+ /*Show Grid record data*/
30
+ .app-grid-layout .form-group {
31
+ display: block !important;
32
+ }
@@ -62,7 +62,7 @@ const buildAngularApp = (args) => {
62
62
  let ngBuildParams = updateDeployUrl(args.ngBuildParams);
63
63
  const NG_BUILD_MSG = 'NG BUILD MIGHT HAVE FAILED WITH HEAP OUT OF MEMORY, RE-EXECUTE THE BUILD BY INCREASING THE MAX-OLD-SPACE-SIZE ARGUMENT VALUE FOR BUILD.UI.NODE.ARGS PROPERTY IN DEPLOYMENT PROFILE';
64
64
  // Generating the angular build and post build process.
65
- executeSyncCmd('cd ' + args.appTarget + ' && node ' + args.nodeVMArgs + ' ./node_modules/@angular/cli/bin/ng build ' + ngBuildParams + ' && node build-scripts/post-build.js', null, MSG_NG_RUNTIME_LOG, false, NG_BUILD_MSG);
65
+ executeSyncCmd('cd ' + args.appTarget + ' && node ' + args.nodeVMArgs.trim() + ' ./build-scripts/build.js ' + ngBuildParams , null, MSG_NG_RUNTIME_LOG, false, NG_BUILD_MSG);
66
66
  }
67
67
 
68
68
 
@@ -56711,71 +56711,73 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
56711
56711
  let tmpl;
56712
56712
  const updateOn = attrs.get('updateon');
56713
56713
  const updateOnTmpl = updateOn ? `updateon="${updateOn}"` : '';
56714
+ const showineditmode = attrs.get('showineditmode') || attrs.get('showineditmode.bind') || true;
56715
+ const showTmpl = showineditmode == 'false' ? `show="${showineditmode}"` : `show.bind="${showineditmode}"`;
56714
56716
  switch (widgetType) {
56715
56717
  case FormWidgetType.AUTOCOMPLETE:
56716
56718
  case FormWidgetType.TYPEAHEAD:
56717
- tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></div>`;
56719
+ tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl} ${showTmpl}></div>`;
56718
56720
  break;
56719
56721
  case FormWidgetType.CHECKBOX:
56720
- tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></div>`;
56722
+ tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${showTmpl}></div>`;
56721
56723
  break;
56722
56724
  case FormWidgetType.CHECKBOXSET:
56723
- tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
56725
+ tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${showTmpl}></ul>`;
56724
56726
  break;
56725
56727
  case FormWidgetType.CHIPS:
56726
- tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></ul>`;
56728
+ tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl} ${showTmpl}></ul>`;
56727
56729
  break;
56728
56730
  case FormWidgetType.COLORPICKER:
56729
- tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></div>`;
56731
+ tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></div>`;
56730
56732
  break;
56731
56733
  case FormWidgetType.CURRENCY:
56732
- tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}></div>`;
56734
+ tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl} ${showTmpl}></div>`;
56733
56735
  break;
56734
56736
  case FormWidgetType.DATE:
56735
- tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
56737
+ tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
56736
56738
  break;
56737
56739
  case FormWidgetType.DATETIME:
56738
- tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
56740
+ tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
56739
56741
  break;
56740
56742
  case FormWidgetType.NUMBER:
56741
- tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}></div>`;
56743
+ tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl} ${showTmpl}></div>`;
56742
56744
  break;
56743
56745
  case FormWidgetType.PASSWORD:
56744
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}></wm-input>`;
56746
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl} ${showTmpl}></wm-input>`;
56745
56747
  break;
56746
56748
  case FormWidgetType.RADIOSET:
56747
- tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}></ul>`;
56749
+ tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl} ${showTmpl}></ul>`;
56748
56750
  break;
56749
56751
  case FormWidgetType.RATING:
56750
- tmpl = `<div wmRating ${innerTmpl}></div>`;
56752
+ tmpl = `<div wmRating ${innerTmpl} ${showTmpl}></div>`;
56751
56753
  break;
56752
56754
  case FormWidgetType.RICHTEXT:
56753
- tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}></div>`;
56755
+ tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl} ${showTmpl}></div>`;
56754
56756
  break;
56755
56757
  case FormWidgetType.SELECT:
56756
- tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></wm-select>`;
56758
+ tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></wm-select>`;
56757
56759
  break;
56758
56760
  case FormWidgetType.TOGGLE:
56759
- tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"></div>`;
56761
+ tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button" ${showTmpl}></div>`;
56760
56762
  break;
56761
56763
  case FormWidgetType.SLIDER:
56762
- tmpl = `<div wmSlider ${innerTmpl}></div>`;
56764
+ tmpl = `<div wmSlider ${innerTmpl} ${showTmpl}></div>`;
56763
56765
  break;
56764
56766
  case FormWidgetType.SWITCH:
56765
- tmpl = `<div wmSwitch ${innerTmpl}></div>`;
56767
+ tmpl = `<div wmSwitch ${innerTmpl} ${showTmpl}></div>`;
56766
56768
  break;
56767
56769
  case FormWidgetType.TEXT:
56768
56770
  const inputType = options.inputType || 'inputtype';
56769
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}></wm-input>`;
56771
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl} ${showTmpl}></wm-input>`;
56770
56772
  break;
56771
56773
  case FormWidgetType.TEXTAREA:
56772
- tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}></wm-textarea>`;
56774
+ tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl} ${showTmpl}></wm-textarea>`;
56773
56775
  break;
56774
56776
  case FormWidgetType.TIME:
56775
- tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
56777
+ tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
56776
56778
  break;
56777
56779
  case FormWidgetType.TIMESTAMP:
56778
- tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"></div>`;
56780
+ tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input" ${showTmpl}></div>`;
56779
56781
  break;
56780
56782
  case FormWidgetType.UPLOAD:
56781
56783
  const counter = options.counter;
@@ -56784,7 +56786,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
56784
56786
  const eventTmpl = getUploadEventTmpl(attrs, counter, uploadProps && uploadProps.name);
56785
56787
  if (uploadProps) {
56786
56788
  tmpl = `<form name="${uploadProps.formName}" ${innerTmpl}>
56787
- <input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}/>
56789
+ <input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl} ${showTmpl}/>
56788
56790
  </form>`;
56789
56791
  }
56790
56792
  else {
@@ -56794,11 +56796,11 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
56794
56796
  <i class="wi wi-file"></i></a>
56795
56797
  <input ${innerTmpl} class="app-blob-upload" [ngClass]="{'file-readonly': ${counter}.readonly}" ${eventTmpl}
56796
56798
  [required]="${counter}.required" type="file" name="${attrs.get('key') || attrs.get('name')}_formWidget" [readonly]="${counter}.readonly"
56797
- [class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted">`;
56799
+ [class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted" ${showTmpl}>`;
56798
56800
  }
56799
56801
  break;
56800
56802
  default:
56801
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}></wm-input>`;
56803
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl} ${showTmpl}></wm-input>`;
56802
56804
  break;
56803
56805
  }
56804
56806
  return tmpl;
@@ -56711,71 +56711,73 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
56711
56711
  let tmpl;
56712
56712
  const updateOn = attrs.get('updateon');
56713
56713
  const updateOnTmpl = updateOn ? `updateon="${updateOn}"` : '';
56714
+ const showineditmode = attrs.get('showineditmode') || attrs.get('showineditmode.bind') || true;
56715
+ const showTmpl = showineditmode == 'false' ? `show="${showineditmode}"` : `show.bind="${showineditmode}"`;
56714
56716
  switch (widgetType) {
56715
56717
  case FormWidgetType.AUTOCOMPLETE:
56716
56718
  case FormWidgetType.TYPEAHEAD:
56717
- tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></div>`;
56719
+ tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl} ${showTmpl}></div>`;
56718
56720
  break;
56719
56721
  case FormWidgetType.CHECKBOX:
56720
- tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></div>`;
56722
+ tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${showTmpl}></div>`;
56721
56723
  break;
56722
56724
  case FormWidgetType.CHECKBOXSET:
56723
- tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
56725
+ tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${showTmpl}></ul>`;
56724
56726
  break;
56725
56727
  case FormWidgetType.CHIPS:
56726
- tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></ul>`;
56728
+ tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl} ${showTmpl}></ul>`;
56727
56729
  break;
56728
56730
  case FormWidgetType.COLORPICKER:
56729
- tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></div>`;
56731
+ tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></div>`;
56730
56732
  break;
56731
56733
  case FormWidgetType.CURRENCY:
56732
- tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}></div>`;
56734
+ tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl} ${showTmpl}></div>`;
56733
56735
  break;
56734
56736
  case FormWidgetType.DATE:
56735
- tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
56737
+ tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
56736
56738
  break;
56737
56739
  case FormWidgetType.DATETIME:
56738
- tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
56740
+ tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
56739
56741
  break;
56740
56742
  case FormWidgetType.NUMBER:
56741
- tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}></div>`;
56743
+ tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl} ${showTmpl}></div>`;
56742
56744
  break;
56743
56745
  case FormWidgetType.PASSWORD:
56744
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}></wm-input>`;
56746
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl} ${showTmpl}></wm-input>`;
56745
56747
  break;
56746
56748
  case FormWidgetType.RADIOSET:
56747
- tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}></ul>`;
56749
+ tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl} ${showTmpl}></ul>`;
56748
56750
  break;
56749
56751
  case FormWidgetType.RATING:
56750
- tmpl = `<div wmRating ${innerTmpl}></div>`;
56752
+ tmpl = `<div wmRating ${innerTmpl} ${showTmpl}></div>`;
56751
56753
  break;
56752
56754
  case FormWidgetType.RICHTEXT:
56753
- tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}></div>`;
56755
+ tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl} ${showTmpl}></div>`;
56754
56756
  break;
56755
56757
  case FormWidgetType.SELECT:
56756
- tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></wm-select>`;
56758
+ tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></wm-select>`;
56757
56759
  break;
56758
56760
  case FormWidgetType.TOGGLE:
56759
- tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"></div>`;
56761
+ tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button" ${showTmpl}></div>`;
56760
56762
  break;
56761
56763
  case FormWidgetType.SLIDER:
56762
- tmpl = `<div wmSlider ${innerTmpl}></div>`;
56764
+ tmpl = `<div wmSlider ${innerTmpl} ${showTmpl}></div>`;
56763
56765
  break;
56764
56766
  case FormWidgetType.SWITCH:
56765
- tmpl = `<div wmSwitch ${innerTmpl}></div>`;
56767
+ tmpl = `<div wmSwitch ${innerTmpl} ${showTmpl}></div>`;
56766
56768
  break;
56767
56769
  case FormWidgetType.TEXT:
56768
56770
  const inputType = options.inputType || 'inputtype';
56769
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}></wm-input>`;
56771
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl} ${showTmpl}></wm-input>`;
56770
56772
  break;
56771
56773
  case FormWidgetType.TEXTAREA:
56772
- tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}></wm-textarea>`;
56774
+ tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl} ${showTmpl}></wm-textarea>`;
56773
56775
  break;
56774
56776
  case FormWidgetType.TIME:
56775
- tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
56777
+ tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
56776
56778
  break;
56777
56779
  case FormWidgetType.TIMESTAMP:
56778
- tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"></div>`;
56780
+ tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input" ${showTmpl}></div>`;
56779
56781
  break;
56780
56782
  case FormWidgetType.UPLOAD:
56781
56783
  const counter = options.counter;
@@ -56784,7 +56786,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
56784
56786
  const eventTmpl = getUploadEventTmpl(attrs, counter, uploadProps && uploadProps.name);
56785
56787
  if (uploadProps) {
56786
56788
  tmpl = `<form name="${uploadProps.formName}" ${innerTmpl}>
56787
- <input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}/>
56789
+ <input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl} ${showTmpl}/>
56788
56790
  </form>`;
56789
56791
  }
56790
56792
  else {
@@ -56794,11 +56796,11 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
56794
56796
  <i class="wi wi-file"></i></a>
56795
56797
  <input ${innerTmpl} class="app-blob-upload" [ngClass]="{'file-readonly': ${counter}.readonly}" ${eventTmpl}
56796
56798
  [required]="${counter}.required" type="file" name="${attrs.get('key') || attrs.get('name')}_formWidget" [readonly]="${counter}.readonly"
56797
- [class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted">`;
56799
+ [class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted" ${showTmpl}>`;
56798
56800
  }
56799
56801
  break;
56800
56802
  default:
56801
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}></wm-input>`;
56803
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl} ${showTmpl}></wm-input>`;
56802
56804
  break;
56803
56805
  }
56804
56806
  return tmpl;
@@ -32,6 +32,7 @@ const downloadNPMPackage = (packageInfo) => {
32
32
  const HOME_DIR = os.homedir();
33
33
  const PATH_NPM_PACKAGE = (packageInfo.baseDir || HOME_DIR + '/.wm/node_modules/') + packageInfo.name + '/' + packageInfo.version;
34
34
  const PATH_NPM_PACKAGE_SUCCESS = PATH_NPM_PACKAGE + '/.SUCCESS';
35
+ let isError = false;
35
36
 
36
37
  // To check global app runtime node modules.
37
38
  if (!isNPMPackageExist(PATH_NPM_PACKAGE_SUCCESS, packageInfo.successMsg)) {
@@ -44,10 +45,16 @@ const downloadNPMPackage = (packageInfo) => {
44
45
  }
45
46
 
46
47
  executeSyncCmd('cd ' + PATH_NPM_PACKAGE + ' && ' + npmInstallCMD, (errMsg) => {
48
+ isError = true;
47
49
  console.log(packageInfo.infoMsg + ' Something wrong with npm installation ', errMsg);
48
50
  }, packageInfo.infoMsg);
49
51
 
50
- fs.writeFileSync(PATH_NPM_PACKAGE_SUCCESS, packageInfo.successMsg);
52
+ //only create a .SUCCESS file when there is no error
53
+ if(!isError) {
54
+ isError = false;
55
+ fs.writeFileSync(PATH_NPM_PACKAGE_SUCCESS, packageInfo.successMsg);
56
+ }
57
+
51
58
  } else {
52
59
  console.log(packageInfo.infoMsg + ' Node packages already installed!');
53
60
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-codegen",
3
- "version": "11.7.0-next.139418",
3
+ "version": "11.7.0-next.24768",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1 +1 @@
1
- global._WM_APP_PROPERTIES={},global._WM_PACKAGE_PATH="./libraries",global.$=require("jquery"),global._=require("lodash");const cheerio=require("cheerio"),{deleteResource:deleteResource,getIndexHtmlPath:getIndexHtmlPath,getPagesDirPath:getPagesDirPath,readFile:readFile,searchFileByName:searchFileByName,writeFile:writeFile,readFileSync:readFileSync}=require("./wm-utils"),{createAppSkeleton:createApp}=require("./gen-app-skeleton"),{generateAppModule:generateAppModule,generateCodeGenModule:generateCodeGenModule}=require("./gen-app-codegen-module"),{generatePrefabConfigFile:generatePrefabConfigFile}=require("./gen-prefabs"),{generateAppRoutes:generateAppRoutes}=require("./gen-app-routes"),{generateAppJS:generateAppJS}=require("./gen-app-js"),{generateAppVariables:generateAppVariables}=require("./gen-app-variables"),{getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig}=require("./project-meta"),{generateTSConfig:generateTSConfig}=require("./gen-tsconfig"),{generateComponents:generateComponents,generatePagePartialComponent:generatePagePartialComponent}=require("./gen-components"),{generateWmProjectProperties:generateWmProjectProperties}=require("./gen-wm-project-properties"),{generateIndexHtml:generateIndexHtml}=require("./gen-index-html"),{updateAngularJSON:updateAngularJSON}=require("./update-angular-json"),{generatePwaFiles:generatePwaFiles}=require("./gen-pwa-files"),{generateLazyModuleRoutes:generateLazyModuleRoutes}=require("./gen-lazy-module-routes"),{createIntermediateAppSkeleton:createIntermediateAppSkeleton,generateLayoutsAndPages:generateLayoutsAndPages}=require("./gen-layouts"),getMarkupFiles=async e=>{const a=[];return searchFileByName(e+"/src/app",/\.html$/,e=>{a.push(e)}),a},isDynamicComponentUsedInMarkup=async e=>{const a=await readFile(e,"utf8");return cheerio.load(a)("form[wmForm][metadata],form[wmForm][metadata\\.bind],div[wmTable]:not(:has(*))").length>0},isDynamicComponentUsedInApp=async e=>{const a=await getMarkupFiles(e);return(await Promise.all(a.map(e=>isDynamicComponentUsedInMarkup(e)))).find(e=>e)},cleanPackageJSON=async(e,a)=>{const t=`${e}/package.json`;let r=readFileSync(t,!0);["@ampproject/rollup-plugin-closure-compiler","rollup","rollup-plugin-alias","rollup-plugin-commonjs","rollup-plugin-includepaths","rollup-plugin-multi-entry","rollup-plugin-node-resolve"].forEach(e=>{delete r.devDependencies[e]}),a||delete r.dependencies["@angular/service-worker"],await writeFile(t,JSON.stringify(r,null,4))},generateIntermediateApp=async(e,a)=>{console.time("create-intermediate-app"),await createIntermediateAppSkeleton(e,a),await generateLayoutsAndPages(a),console.timeEnd("create-intermediate-app")},generateSources=async(e,a,t,r,n,o)=>{console.time("generate app-sources"),await Promise.all([deleteResource(`${a}/src/app/layouts`),deleteResource(`${a}/src/app/pages`),deleteResource(`${a}/src/app/partials`),deleteResource(`${a}/src/app/prefabs`)]);const i=readFileSync(`${a}/angular.json`);global._WM_PACKAGE_PATH=i.includes("./node_modules/@wavemaker/app-ng-runtime/")?"./node_modules/@wavemaker/app-ng-runtime":"./libraries";const g=await getWmProjectProperties(e),p=await getThemesConfigProperties(e),s=await getSecurityConfig(e);let l;o&&(l=await getLayoutsConfig(e));const u=await getPagesConfig(e),c=await getPrefabConfigsUsedInApp(g,e);let d={};for(const a of c.keys())d[a]=await getPrefabPartialsConfig(e,a);t&&!t.endsWith("/")&&(t+="/"),await Promise.all([generateIndexHtml(e,a,g,t,r),generateWmProjectProperties(g,a),generateAppRoutes(e,g,l,u,s,a,o),generateLazyModuleRoutes(u,c,d,a),generatePrefabConfigFile(c,a),generateCodeGenModule(g,u,c,s,a),generateTSConfig(g,a),generateAppJS(e,a),generateAppVariables(e,a,n),generateComponents(e,g,l,u,s,c,a,d,n,o)]);const m=await isDynamicComponentUsedInApp(a),P={aot:!m,buildOptimizer:!m};await generateAppModule(g,a,m,r),await updateAngularJSON(e,a,g,p,u,c,t,P,d,r),await cleanPackageJSON(a,r),r&&await generatePwaFiles(e,a,g),console.timeEnd("generate app-sources")},createAppSkeleton=async(e,a,t)=>{console.time("create-angular-app"),await createApp(e,a,t),console.timeEnd("create-angular-app")},generatePage=async(e,a,t,r)=>{console.time("generate page",t);const n=getPagesDirPath(e),o=await getWmProjectProperties(e),i=await getPagesConfig(e),g=_.find(i,{name:t}),p="PAGE"===g.type?"pages":"partials";await deleteResource(`${a}/src/app/${p}/${t}`),await generatePagePartialComponent(n,o,g.name,g.type,a,void 0,void 0,r),console.timeEnd("generate page",t)};module.exports={generateIntermediateApp:generateIntermediateApp,generateSources:generateSources,createAppSkeleton:createAppSkeleton,generatePage:generatePage};
1
+ global._WM_APP_PROPERTIES={},global._WM_PACKAGE_PATH="./libraries",global.$=require("jquery"),global._=require("lodash");const cheerio=require("cheerio"),{deleteResource:deleteResource,getIndexHtmlPath:getIndexHtmlPath,getPagesDirPath:getPagesDirPath,readFile:readFile,searchFileByName:searchFileByName,writeFile:writeFile,readFileSync:readFileSync}=require("./wm-utils"),{createAppSkeleton:createApp}=require("./gen-app-skeleton"),{generateAppModule:generateAppModule,generateCodeGenModule:generateCodeGenModule}=require("./gen-app-codegen-module"),{generatePrefabConfigFile:generatePrefabConfigFile}=require("./gen-prefabs"),{generateAppRoutes:generateAppRoutes}=require("./gen-app-routes"),{generateAppJS:generateAppJS}=require("./gen-app-js"),{generateAppVariables:generateAppVariables}=require("./gen-app-variables"),{getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig}=require("./project-meta"),{generateTSConfig:generateTSConfig}=require("./gen-tsconfig"),{generateComponents:generateComponents,generatePagePartialComponent:generatePagePartialComponent}=require("./gen-components"),{generateWmProjectProperties:generateWmProjectProperties}=require("./gen-wm-project-properties"),{generateIndexHtml:generateIndexHtml}=require("./gen-index-html"),{updateAngularJSON:updateAngularJSON}=require("./update-angular-json"),{generatePwaFiles:generatePwaFiles}=require("./gen-pwa-files"),{generateLazyModuleRoutes:generateLazyModuleRoutes}=require("./gen-lazy-module-routes"),{createIntermediateAppSkeleton:createIntermediateAppSkeleton,generateLayoutsAndPages:generateLayoutsAndPages}=require("./gen-layouts"),getMarkupFiles=async e=>{const a=[];return searchFileByName(e+"/src/app",/\.html$/,e=>{a.push(e)}),a},isDynamicComponentUsedInMarkup=async e=>{const a=await readFile(e,"utf8");return cheerio.load(a)("form[wmForm][metadata],form[wmForm][metadata\\.bind],div[wmTable]:not(:has(*))").length>0},isDynamicComponentUsedInApp=async e=>{const a=await getMarkupFiles(e);return(await Promise.all(a.map(e=>isDynamicComponentUsedInMarkup(e)))).find(e=>e)},cleanPackageJSON=async(e,a)=>{const t=`${e}/package.json`;let r=readFileSync(t,!0);["@ampproject/rollup-plugin-closure-compiler","rollup","rollup-plugin-alias","rollup-plugin-commonjs","rollup-plugin-includepaths","rollup-plugin-multi-entry","rollup-plugin-node-resolve"].forEach(e=>{delete r.devDependencies[e]}),a||delete r.dependencies["@angular/service-worker"],await writeFile(t,JSON.stringify(r,null,4))},generateIntermediateApp=async(e,a)=>{console.time("create-intermediate-app"),await createIntermediateAppSkeleton(e,a),await generateLayoutsAndPages(a),console.timeEnd("create-intermediate-app")},generateSources=async(e,a,t,r,n,o)=>{console.time("generate app-sources"),await Promise.all([deleteResource(`${a}/src/app/layouts`),deleteResource(`${a}/src/app/pages`),deleteResource(`${a}/src/app/partials`),deleteResource(`${a}/src/app/prefabs`)]);const i=readFileSync(`${a}/angular.json`);global._WM_PACKAGE_PATH=i.includes("./node_modules/@wavemaker/app-ng-runtime/")?"./node_modules/@wavemaker/app-ng-runtime":"./libraries";const g=await getWmProjectProperties(e),p=await getThemesConfigProperties(e),s=await getSecurityConfig(e);let l;o&&(l=await getLayoutsConfig(e));const u=await getPagesConfig(e),c=await getPrefabConfigsUsedInApp(g,e);let d={};for(const a of c.keys())d[a]=await getPrefabPartialsConfig(e,a);await Promise.all([generateIndexHtml(e,a,g,t,r),generateWmProjectProperties(g,a),generateAppRoutes(e,g,l,u,s,a,o),generateLazyModuleRoutes(u,c,d,a),generatePrefabConfigFile(c,a),generateCodeGenModule(g,u,c,s,a),generateTSConfig(g,a),generateAppJS(e,a),generateAppVariables(e,a,n),generateComponents(e,g,l,u,s,c,a,d,n,o)]);const m=await isDynamicComponentUsedInApp(a),P={aot:!m,buildOptimizer:!m};await generateAppModule(g,a,m,r),await updateAngularJSON(e,a,g,p,u,c,t,P,d,r),await cleanPackageJSON(a,r),r&&await generatePwaFiles(e,a,g),console.timeEnd("generate app-sources")},createAppSkeleton=async(e,a,t)=>{console.time("create-angular-app"),await createApp(e,a,t),console.timeEnd("create-angular-app")},generatePage=async(e,a,t,r)=>{console.time("generate page",t);const n=getPagesDirPath(e),o=await getWmProjectProperties(e),i=await getPagesConfig(e),g=_.find(i,{name:t}),p="PAGE"===g.type?"pages":"partials";await deleteResource(`${a}/src/app/${p}/${t}`),await generatePagePartialComponent(n,o,g.name,g.type,a,void 0,void 0,r),console.timeEnd("generate page",t)};module.exports={generateIntermediateApp:generateIntermediateApp,generateSources:generateSources,createAppSkeleton:createAppSkeleton,generatePage:generatePage};