@wavemaker/angular-codegen 11.6.1-next.26318 → 11.6.1-next.26319
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 +15 -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/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
|
}
|
|
@@ -206,7 +208,7 @@ const updatePwaAssets = (deployUrl, updatedFileNames, updatedFileHashes) => {
|
|
|
206
208
|
const manifest = JSON.parse(fs.readFileSync(manifestPath).toString());
|
|
207
209
|
const updatedManifest = {
|
|
208
210
|
...manifest,
|
|
209
|
-
icons: manifest.icons.map(icon => ({ ...icon, src: `${deployUrl}
|
|
211
|
+
icons: manifest.icons.map(icon => ({ ...icon, src: `${deployUrl}${getIconPath(icon.src)}` })),
|
|
210
212
|
}
|
|
211
213
|
const manifestContent = JSON.stringify(updatedManifest, null, 4);
|
|
212
214
|
fs.writeFileSync(manifestPath, manifestContent);
|
|
@@ -244,9 +246,6 @@ const generateSha1 = (content) => {
|
|
|
244
246
|
const angularJson = require(`${process.cwd()}/angular.json`);
|
|
245
247
|
const build = angularJson['projects']['angular-app']['architect']['build'];
|
|
246
248
|
let deployUrl = args['deploy-url'] || build['options']['deployUrl'];
|
|
247
|
-
if (deployUrl.endsWith('/')) {
|
|
248
|
-
deployUrl = deployUrl.slice(0, deployUrl.length - 1);
|
|
249
|
-
}
|
|
250
249
|
|
|
251
250
|
const contents = await readFile(`./dist/index.html`, `utf8`);
|
|
252
251
|
$ = cheerio.load(contents);
|
|
@@ -278,17 +277,22 @@ const generateSha1 = (content) => {
|
|
|
278
277
|
await addMobileSpecificStyles(deployUrl);
|
|
279
278
|
} else {
|
|
280
279
|
if (isDevBuild) {
|
|
281
|
-
wm_styles_path = `${deployUrl}
|
|
280
|
+
wm_styles_path = `${deployUrl}wm-styles.js`;
|
|
282
281
|
} else {
|
|
283
282
|
const fileName = 'wm-styles';
|
|
284
283
|
const hash = await generateHash(`${opPath}/${fileName}.css`);
|
|
285
284
|
copyCssFiles(hash, updatedFilenames);
|
|
286
285
|
const updatedFileName = `${fileName}.${hash}.css`
|
|
287
|
-
wm_styles_path = `${deployUrl}
|
|
286
|
+
wm_styles_path = `${deployUrl}${updatedFileName}`;
|
|
288
287
|
}
|
|
289
288
|
}
|
|
290
289
|
|
|
291
290
|
addScriptForWMStylesPath(wm_styles_path);
|
|
291
|
+
addPrintStylesPath(`${deployUrl}print.css`);
|
|
292
|
+
|
|
293
|
+
//this is required to download all the assets
|
|
294
|
+
$('head').append(`<meta name="deployUrl" content=${deployUrl} />`);
|
|
295
|
+
|
|
292
296
|
const htmlContent = $.html();
|
|
293
297
|
await writeFile(`./dist/index.html`, htmlContent);
|
|
294
298
|
|
|
@@ -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.6.1-next.
|
|
39
|
+
"@wavemaker/variables": "11.6.1-next.26319",
|
|
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.6.1-next.
|
|
5951
|
-
"resolved": "https://registry.npmjs.org/@wavemaker/variables/-/variables-11.6.1-next.
|
|
5952
|
-
"integrity": "sha512-
|
|
5950
|
+
"version": "11.6.1-next.26319",
|
|
5951
|
+
"resolved": "https://registry.npmjs.org/@wavemaker/variables/-/variables-11.6.1-next.26319.tgz",
|
|
5952
|
+
"integrity": "sha512-AF66x8df7LO5CBbTw/tIO5XYlBz+IkwfbTfYqssjLI+MxOX5j+xsJNx1Uvw7W0hP7mbxgNy9CCpQi7bu1EQAxQ==",
|
|
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.6.1-next.
|
|
50
|
+
"@wavemaker/variables": "11.6.1-next.26319",
|
|
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.6.1-next.
|
|
75
|
+
"@wavemaker/app-ng-runtime": "11.6.1-next.26319"
|
|
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
|
|
|
@@ -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};
|