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

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.
@@ -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.139417",
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.139417",
5951
- "resolved": "https://registry.npmjs.org/@wavemaker/variables/-/variables-11.7.0-next.139417.tgz",
5952
- "integrity": "sha512-pgqsMdaEi0++mRBaKj2FNCEXC0xVZhzcidwkKzVFIJKeWpNj/08n/b+jlbhtml3T812O5uzwitlwteNXhtItHQ==",
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.139417",
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.139417"
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.139417",
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};