@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.
- 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};
|