@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.
- angular-codegen/angular-app/angular.json +11 -1
- angular-codegen/angular-app/build-scripts/build.js +30 -0
- angular-codegen/angular-app/build-scripts/post-build.js +17 -11
- angular-codegen/angular-app/package-lock.json +4 -4
- angular-codegen/angular-app/package.json +4 -4
- angular-codegen/angular-app/src/assets/print.css +32 -0
- angular-codegen/build-angular-app.js +1 -1
- angular-codegen/dependencies/transpilation-mobile.cjs.js +26 -24
- angular-codegen/dependencies/transpilation-web.cjs.js +26 -24
- angular-codegen/download-packages.js +8 -1
- angular-codegen/package.json +1 -1
- angular-codegen/src/codegen.js +1 -1
@@ -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}
|
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}
|
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}
|
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="
|
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}
|
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}
|
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}
|
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}
|
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.
|
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.
|
5951
|
-
"resolved": "https://registry.npmjs.org/@wavemaker/variables/-/variables-11.7.0-next.
|
5952
|
-
"integrity": "sha512
|
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": "
|
8
|
-
"
|
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.
|
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.
|
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 + ' ./
|
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
|
-
|
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
|
}
|
angular-codegen/package.json
CHANGED
angular-codegen/src/codegen.js
CHANGED
@@ -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);
|
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};
|