@wavemaker/angular-codegen 11.5.0-next.141659 → 11.5.0-next.141661

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.
Files changed (48) hide show
  1. angular-codegen/.npmrc +1 -0
  2. angular-codegen/angular-app/.npmrc +1 -0
  3. angular-codegen/angular-app/angular.json +119 -1009
  4. angular-codegen/angular-app/build-scripts/build.js +35 -0
  5. angular-codegen/angular-app/build-scripts/post-build.js +19 -13
  6. angular-codegen/angular-app/package-lock.json +25227 -23221
  7. angular-codegen/angular-app/package.json +58 -51
  8. angular-codegen/angular-app/src/app/lazy-load-scripts.resolve.ts +2 -4
  9. angular-codegen/angular-app/src/assets/print.css +32 -0
  10. angular-codegen/angular-app/src/assets/styles/css/wm-style.css +1 -1
  11. angular-codegen/angular-app/src/polyfills.ts +23 -39
  12. angular-codegen/angular-app/tsconfig.json +6 -3
  13. angular-codegen/angular-app/tsconfig.web-app.json +2 -2
  14. angular-codegen/angular-app/wm-custom-webpack.config.js +8 -11
  15. angular-codegen/build-angular-app.js +5 -4
  16. angular-codegen/dependencies/expression-parser.cjs.js +13624 -12592
  17. angular-codegen/dependencies/pipe-provider.cjs.js +124409 -57690
  18. angular-codegen/dependencies/transpilation-mobile.cjs.js +50243 -27670
  19. angular-codegen/dependencies/transpilation-web.cjs.js +50243 -27670
  20. angular-codegen/download-packages.js +10 -3
  21. angular-codegen/package-lock.json +3633 -2087
  22. angular-codegen/package.json +11 -2
  23. angular-codegen/src/codegen.js +1 -1
  24. angular-codegen/src/gen-app-skeleton.js +1 -1
  25. angular-codegen/src/gen-app-variables.js +1 -1
  26. angular-codegen/src/gen-components.js +1 -1
  27. angular-codegen/src/handlebar-helpers.js +1 -1
  28. angular-codegen/src/pages-util.js +1 -1
  29. angular-codegen/src/project-meta.js +1 -1
  30. angular-codegen/src/update-angular-json.js +1 -1
  31. angular-codegen/templates/Main/Main.css +0 -0
  32. angular-codegen/templates/Main/Main.js +17 -0
  33. angular-codegen/templates/Main/Main.variables.json +1 -0
  34. angular-codegen/templates/Main/main.html.ts.hbs +7 -0
  35. angular-codegen/templates/app-prefabs.module.ts.hbs +0 -1
  36. angular-codegen/templates/app-routes.ts.hbs +6 -5
  37. angular-codegen/templates/app.module.ts.hbs +24 -4
  38. angular-codegen/templates/empty/empty.css +0 -0
  39. angular-codegen/templates/empty/empty.html +1 -0
  40. angular-codegen/templates/empty/empty.js +17 -0
  41. angular-codegen/templates/empty/empty.variables.json +1 -0
  42. angular-codegen/templates/layout/layout.module.ts.hbs +1 -1
  43. angular-codegen/templates/page/page.component.ts.hbs +4 -4
  44. angular-codegen/templates/page/page.module.ts.hbs +3 -3
  45. angular-codegen/templates/partial/partial.component.ts.hbs +5 -5
  46. angular-codegen/templates/partial/partial.module.ts.hbs +1 -2
  47. angular-codegen/templates/prefab/formatters.js.hbs +38 -0
  48. angular-codegen/templates/prefab/prefab.module.ts.hbs +0 -1
@@ -1,12 +1,16 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-codegen",
3
- "version": "11.5.0-next.141659",
3
+ "version": "11.5.0-next.141661",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "pretest": "sh build.sh",
8
8
  "test": "jest"
9
9
  },
10
+ "files": [
11
+ "**/*",
12
+ ".npmrc"
13
+ ],
10
14
  "keywords": [],
11
15
  "author": "",
12
16
  "license": "ISC",
@@ -29,5 +33,10 @@
29
33
  },
30
34
  "devDependencies": {
31
35
  "jest": "^27.0.6"
32
- }
36
+ },
37
+ "engines": {
38
+ "node": ">=18.16.1",
39
+ "npm": ">=9.5.1"
40
+ },
41
+ "engineStrict": true
33
42
  }
@@ -1 +1 @@
1
- global._WM_APP_PROPERTIES={},global._WM_PACKAGE_PATH="./libraries",global.$=require("jquery"),global._=require("lodash");const cheerio=require("cheerio"),{deleteResource:deleteResource,getIndexHtmlPath:getIndexHtmlPath,getPagesDirPath:getPagesDirPath,readFile:readFile,searchFileByName:searchFileByName,writeFile:writeFile,readFileSync:readFileSync}=require("./wm-utils"),{createAppSkeleton:createApp}=require("./gen-app-skeleton"),{generateAppModule:generateAppModule,generateCodeGenModule:generateCodeGenModule}=require("./gen-app-codegen-module"),{generatePrefabConfigFile:generatePrefabConfigFile}=require("./gen-prefabs"),{generateAppRoutes:generateAppRoutes}=require("./gen-app-routes"),{generateAppJS:generateAppJS}=require("./gen-app-js"),{generateAppVariables:generateAppVariables}=require("./gen-app-variables"),{getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig}=require("./project-meta"),{generateTSConfig:generateTSConfig}=require("./gen-tsconfig"),{generateComponents:generateComponents,generatePagePartialComponent:generatePagePartialComponent}=require("./gen-components"),{generateWmProjectProperties:generateWmProjectProperties}=require("./gen-wm-project-properties"),{generateIndexHtml:generateIndexHtml}=require("./gen-index-html"),{updateAngularJSON:updateAngularJSON}=require("./update-angular-json"),{generatePwaFiles:generatePwaFiles}=require("./gen-pwa-files"),{generateLazyModuleRoutes:generateLazyModuleRoutes}=require("./gen-lazy-module-routes"),{createIntermediateAppSkeleton:createIntermediateAppSkeleton,generateLayoutsAndPages:generateLayoutsAndPages}=require("./gen-layouts"),getMarkupFiles=async e=>{const a=[];return searchFileByName(e+"/src/app",/\.html$/,e=>{a.push(e)}),a},isDynamicComponentUsedInMarkup=async e=>{const a=await readFile(e,"utf8");return cheerio.load(a)("form[wmForm][metadata],form[wmForm][metadata\\.bind],div[wmTable]:not(:has(*))").length>0},isDynamicComponentUsedInApp=async e=>{const a=await getMarkupFiles(e);return(await Promise.all(a.map(e=>isDynamicComponentUsedInMarkup(e)))).find(e=>e)},cleanPackageJSON=async(e,a)=>{const t=`${e}/package.json`;let r=readFileSync(t,!0);["@ampproject/rollup-plugin-closure-compiler","rollup","rollup-plugin-alias","rollup-plugin-commonjs","rollup-plugin-includepaths","rollup-plugin-multi-entry","rollup-plugin-node-resolve"].forEach(e=>{delete r.devDependencies[e]}),a||delete r.dependencies["@angular/service-worker"],await writeFile(t,JSON.stringify(r,null,4))},generateIntermediateApp=async(e,a)=>{console.time("create-intermediate-app"),await createIntermediateAppSkeleton(e,a),await generateLayoutsAndPages(a),console.timeEnd("create-intermediate-app")},generateSources=async(e,a,t,r,n,o)=>{console.time("generate app-sources"),await Promise.all([deleteResource(`${a}/src/app/layouts`),deleteResource(`${a}/src/app/pages`),deleteResource(`${a}/src/app/partials`),deleteResource(`${a}/src/app/prefabs`)]);const i=readFileSync(`${a}/angular.json`);global._WM_PACKAGE_PATH=i.includes("./node_modules/@wavemaker/app-ng-runtime/")?"./node_modules/@wavemaker/app-ng-runtime":"./libraries";const g=await getWmProjectProperties(e),p=await getThemesConfigProperties(e),s=await getSecurityConfig(e);let l;o&&(l=await getLayoutsConfig(e));const u=await getPagesConfig(e),c=await getPrefabConfigsUsedInApp(g,e);let d={};for(const a of c.keys())d[a]=await getPrefabPartialsConfig(e,a);t&&!t.endsWith("/")&&(t+="/"),await Promise.all([generateIndexHtml(e,a,g,t,r),generateWmProjectProperties(g,a),generateAppRoutes(e,g,l,u,s,a,o),generateLazyModuleRoutes(u,c,d,a),generatePrefabConfigFile(c,a),generateCodeGenModule(g,u,c,s,a),generateTSConfig(g,a),generateAppJS(e,a),generateAppVariables(e,a,n),generateComponents(e,g,l,u,s,c,a,d,n,o)]);const m=await isDynamicComponentUsedInApp(a),P={aot:!m,buildOptimizer:!m};await generateAppModule(g,a,m,r),await updateAngularJSON(e,a,g,p,u,c,t,P,d,r),await cleanPackageJSON(a,r),r&&await generatePwaFiles(e,a,g),console.timeEnd("generate app-sources")},createAppSkeleton=async(e,a,t)=>{console.time("create-angular-app"),await createApp(e,a,t),console.timeEnd("create-angular-app")},generatePage=async(e,a,t,r)=>{console.time("generate page",t);const n=getPagesDirPath(e),o=await getWmProjectProperties(e),i=await getPagesConfig(e),g=_.find(i,{name:t}),p="PAGE"===g.type?"pages":"partials";await deleteResource(`${a}/src/app/${p}/${t}`),await generatePagePartialComponent(n,o,g.name,g.type,a,void 0,void 0,r),console.timeEnd("generate page",t)};module.exports={generateIntermediateApp:generateIntermediateApp,generateSources:generateSources,createAppSkeleton:createAppSkeleton,generatePage:generatePage};
1
+ global._WM_APP_PROPERTIES={},global._WM_PACKAGE_PATH="./libraries",global.$=require("jquery"),global._=require("lodash");const cheerio=require("cheerio"),{deleteResource:deleteResource,getIndexHtmlPath:getIndexHtmlPath,getPagesDirPath:getPagesDirPath,readFile:readFile,searchFileByName:searchFileByName,writeFile:writeFile,readFileSync:readFileSync,isPrefabProject:isPrefabProject}=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);isPrefabProject(g)&&await generatePage(e,a,"Common");const 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};
@@ -1 +1 @@
1
- const{deleteResource:deleteResource,createDir:createDir,readDir:readDir,getWebAppPath:getWebAppPath}=require("./wm-utils"),util=require("util"),ncp=util.promisify(require("ncp").ncp),createAppSkeleton=async(e,t,a)=>{await deleteResource(t),await createDir(t,{recursive:!0}),await ncp(a+"/angular-app",t);const r=getWebAppPath(e);if((await readDir(`${r}/themes`)).length){const e=`${r}/themes/`;await ncp(e,`${t}/src/assets/themes`)}(await readDir(`${r}/extensions`)).length&&await ncp(`${r}/extensions`,`${t}/src/app/extensions`),await ncp(`${r}/app.css`,`${t}/src/assets/app.css`),await ncp(`${r}/resources`,`${t}/resources`)};module.exports={createAppSkeleton:createAppSkeleton};
1
+ const{deleteResource:deleteResource,createDir:createDir,readDir:readDir,getWebAppPath:getWebAppPath,writeFile:writeFile}=require("./wm-utils"),fs=require("fs"),util=require("util"),{getHandlebarTemplate:getHandlebarTemplate}=require("./handlebar-helpers"),ncp=util.promisify(require("ncp").ncp),createAppSkeleton=async(e,t,r)=>{await deleteResource(t),await createDir(t,{recursive:!0}),await ncp(r+"/angular-app",t);const a=getWebAppPath(e);if((await readDir(`${a}/themes`)).length){const e=`${a}/themes/`;await ncp(e,`${t}/src/assets/themes`)}if(fs.existsSync(`${a}/extensions`))await ncp(`${a}/extensions`,`${t}/src/app/extensions`);else{fs.mkdirSync(`${t}/src/app/extensions`);const e=getHandlebarTemplate("prefab-formatters-script")({});await writeFile(`${t}/src/app/extensions/formatters.js`,e)}await ncp(`${a}/app.css`,`${t}/src/assets/app.css`),await ncp(`${a}/resources`,`${t}/resources`),await ncp(`${r}/.npmrc`,`${t}/.npmrc`)};module.exports={createAppSkeleton:createAppSkeleton};
@@ -1 +1 @@
1
- const{getHandlebarTemplate:getHandlebarTemplate,safeString:safeString}=require("./handlebar-helpers"),{readFile:readFile,writeFile:writeFile,getAppVariablesFilePath:getAppVariablesFilePath,formatContents:formatContents,getCodegenPath:getCodegenPath}=require("./wm-utils"),{generatePageExpressions:generatePageExpressions}=require("./expr-parser-utils"),generateAppVariableExpressions=async(e,a,t)=>{const r=await readFile(`${getCodegenPath()}/dependencies/app.component.html`,"utf-8")||"",s=safeString(t?generatePageExpressions(r,e):""),n=getHandlebarTemplate("component-expressions")({expressions:s});await writeFile(`${a}/src/app/app.component.expressions.ts`,formatContents(n,"javascript"))},generateAppVariables=async(e,a,t)=>{const r=getHandlebarTemplate("component-variables");let s=await readFile(getAppVariablesFilePath(e),"utf8")||"{}";const n=r({variables:safeString(s)});await writeFile(`${a}/src/app/app.component.variables.ts`,n),await generateAppVariableExpressions(s,a,t)};module.exports={generateAppVariables:generateAppVariables};
1
+ const{getHandlebarTemplate:getHandlebarTemplate,safeString:safeString}=require("./handlebar-helpers"),{readFile:readFile,writeFile:writeFile,getAppVariablesFilePath:getAppVariablesFilePath,formatContents:formatContents,getCodegenPath:getCodegenPath}=require("./wm-utils"),{generatePageExpressions:generatePageExpressions}=require("./expr-parser-utils"),generateAppVariableExpressions=async(e,a,t)=>{const r=await readFile(`${getCodegenPath()}/dependencies/app.component.html`,"utf-8")||"",s=safeString(t?generatePageExpressions(r,e):""),n=getHandlebarTemplate("component-expressions")({expressions:s});await writeFile(`${a}/src/app/app.component.expressions.ts`,formatContents(n,"javascript"))},generateAppVariables=async(e,a,t)=>{const r=getHandlebarTemplate("component-variables");let s=(await readFile(getAppVariablesFilePath(e),"utf8")).trim()||"{}";const n=r({variables:safeString(s)});await writeFile(`${a}/src/app/app.component.variables.ts`,n),await generateAppVariableExpressions(s,a,t)};module.exports={generateAppVariables:generateAppVariables};
@@ -1 +1 @@
1
- const{createDir:createDir,writeFile:writeFile,isPrefabProject:isPrefabProject,getLayoutsDirPath:getLayoutsDirPath,getPagesDirPath:getPagesDirPath,formatContents:formatContents,getComponentName:getComponentName,getComponentModuleName:getComponentModuleName,getPrefabPagesDirPath:getPrefabPagesDirPath}=require("./wm-utils"),fs=require("fs"),cheerio=require("cheerio"),{getPageContents:getPageContents}=require("./pages-util"),{getHandlebarTemplate:getHandlebarTemplate,safeString:safeString}=require("./handlebar-helpers"),writeComponentHtmlFile=async(e,t,a)=>{const n=`${a}/${e}.component.html`;await writeFile(n,t.string)},writeComponentCssFile=async(e,t,a)=>{const n=`${a}/${e}.component.css`;await writeFile(n,t.string)},writeComponentVariablesFile=async(e,t,a,n)=>{let r=getHandlebarTemplate(e)({variables:a});await writeFile(`${n}/${t}.component.variables.ts`,formatContents(r))},writeComponentJsFile=async(e,t,a,n)=>{const r=getHandlebarTemplate(e)({jsContent:a});await writeFile(`${n}/${t}.component.script.js`,formatContents(r,"javascript"))},writeComponentExpressionsFile=async(e,t,a,n)=>{const r=getHandlebarTemplate(e)({expressions:a});await writeFile(`${n}/${t}.component.expressions.ts`,formatContents(r,"javascript"))},writeComponentTsFile=async(e,t,a,n,r,o)=>{let i=getHandlebarTemplate(e)({name:t,prefabName:a,componentName:getComponentName(t),enableSpa:r,layoutPages:safeString(JSON.stringify(o))});await writeFile(`${n}/${t}.component.ts`,i)},writePagePartialModuleTsFile=async(e,t,a,n,r,o,i=!1,s,m,p)=>{let l=getHandlebarTemplate(e)({name:t,componentName:getComponentName(t),moduleName:getComponentModuleName(t),requiredPartials:n,requiredPrefabs:r,requiredWMComponents:o,hasCustomElement:i,insidePrefab:!!s,pagesConfig:m,securityConfig:p});await writeFile(`${a}/${t}.module.ts`,l)},writePrefabModuleTsFile=async(e,t,a,n=!1,r)=>{let o=getHandlebarTemplate("prefab-module-ts")({name:e,componentName:getComponentName(e),moduleName:getComponentModuleName(e),requiredPartials:r,requiredWMComponents:a,hasCustomElement:n});await writeFile(`${t}/${e}.module.ts`,o)},generateComponent=async(e,t,a,n,r,o,i,s,m)=>{await createDir(e,{recursive:!0});const{markup:p,styles:l,variables:g,script:c,expressions:P}=n,f=[writeComponentHtmlFile(t,safeString(p),e),writeComponentTsFile(r,t,a,e,s,m),writeComponentExpressionsFile("component-expressions",t,safeString(P),e)];return i||f.concat([writeComponentCssFile(t,safeString(l),e),writeComponentVariablesFile("component-variables",t,safeString(g),e),writeComponentJsFile(o,t,safeString(c),e)]),Promise.all(f)},findRequiredPartials=e=>{const t={};return e("[partialContainer]").map((t,a)=>e(a).attr("content")).toArray().map(e=>({type:"PARTIAL",name:e.trim()})).filter(e=>!t[e.name]&&(t[e.name]=!0))},findRequiredPrefabs=e=>{const t={};return e("[wmPrefab]").map((t,a)=>e(a).attr("prefabname")).toArray().map(e=>({type:"PREFAB",name:e.trim()})).filter(e=>!t[e.name]&&(t[e.name]=!0))},generatePagePartialComponent=async(e,t,a,n,r,o,i,s,m,p,l)=>{let g,c,P,f,u;if("PAGE"===n?(f=`${r}/src/app/pages/${a}`,g="page-component-ts",c="page-component-script",P="page-module-ts"):"LAYOUT"===n?(f=`${r}/src/app/layouts/${a}`,g="layout-component-ts",P="layout-module-ts",u=p.filter(e=>"PAGE"===e.type&&e.layout===a).map(e=>e.name)):(f=o?`${r}/partials/${a}`:`${r}/src/app/partials/${a}`,g="partial-component-ts",c="partial-component-script",P="partial-module-ts"),fs.existsSync(`${f}/${a}.component.ts`))return;let C=`${e}/${a}`;o&&(C=`${getPrefabPagesDirPath(i,o)}/${a}`);const d=await getPageContents(t,C,`${a}`,a,n,void 0,s);try{const e=cheerio.load(d.markup),C=findRequiredPartials(e),w=findRequiredPrefabs(e);for(const e of C){const a=getPagesDirPath(i);await generatePagePartialComponent(a,t,e.name,e.type,r,o,i,s,m)}await generateComponent(f,a,void 0,d,g,c,"LAYOUT"===n,m,u),await writePagePartialModuleTsFile(P,a,f,C,w,d.requiredWMComponents,d.hasCustomElement,o,p,l)}catch(e){throw console.log("failed in "+a),e}},generateComponents=async(e,t,a,n,r,o,i,s,m,p)=>{const l=getPagesDirPath(e);for(const a of o.keys()){const n="__self__"===a?`${l}/Main`:`${getPrefabPagesDirPath(e,a)}/Main`,r=await getPageContents(t,n,"Main",a,"PREFAB",o.get(a),m),c=`${i}/src/app/prefabs/${a}`,P=cheerio.load(r.markup),f=findRequiredPartials(P);await generateComponent(c,a,a,r,"prefab-component-ts","prefab-component-script",!1,p);const u=s[a];for(var g=0;g<u.length;g++)await generatePagePartialComponent(l,t,u[g].name,u[g].type,c,a,e,m,p);await writePrefabModuleTsFile(a,c,r.requiredWMComponents,r.hasCustomElement,f)}if(!isPrefabProject(t)){if(p){const o=getLayoutsDirPath(e);for(let s of a)await generateLayoutComponent(o,t,s.name,s.type,i,s.prefabName,e,m,p,n,r)}for(let a of n)await generatePagePartialComponent(l,t,a.name,a.type,i,a.prefabName,e,m,p)}},generateLayoutComponent=async(e,t,a,n,r,o,i,s,m,p,l)=>{await generatePagePartialComponent(e,t,a,n,r,o,i,s,m,p,l)};module.exports={generateComponents:generateComponents,generatePagePartialComponent:generatePagePartialComponent};
1
+ const{createDir:createDir,writeFile:writeFile,isPrefabProject:isPrefabProject,getLayoutsDirPath:getLayoutsDirPath,getPagesDirPath:getPagesDirPath,formatContents:formatContents,getComponentName:getComponentName,getComponentModuleName:getComponentModuleName,getPrefabPagesDirPath:getPrefabPagesDirPath}=require("./wm-utils"),fs=require("fs"),cheerio=require("cheerio"),{getPageContents:getPageContents}=require("./pages-util"),{getHandlebarTemplate:getHandlebarTemplate,safeString:safeString}=require("./handlebar-helpers"),writeComponentHtmlFile=async(e,t,a)=>{const n=`${a}/${e}.component.html`;await writeFile(n,t.string)},writeComponentCssFile=async(e,t,a)=>{const n=`${a}/${e}.component.css`;await writeFile(n,t.string)},writeComponentVariablesFile=async(e,t,a,n)=>{let o=getHandlebarTemplate(e)({variables:a});await writeFile(`${n}/${t}.component.variables.ts`,formatContents(o))},writeComponentJsFile=async(e,t,a,n)=>{const o=getHandlebarTemplate(e)({jsContent:a});await writeFile(`${n}/${t}.component.script.js`,formatContents(o,"javascript"))},writeComponentExpressionsFile=async(e,t,a,n)=>{const o=getHandlebarTemplate(e)({expressions:a});await writeFile(`${n}/${t}.component.expressions.ts`,formatContents(o,"javascript"))},writeComponentTsFile=async(e,t,a,n,o,r)=>{let i=getHandlebarTemplate(e)({name:t,prefabName:a,componentName:getComponentName(t),enableSpa:o,layoutPages:safeString(JSON.stringify(r))});await writeFile(`${n}/${t}.component.ts`,i)},writePagePartialModuleTsFile=async(e,t,a,n,o,r,i=!1,s,m,p)=>{let l=getHandlebarTemplate(e)({name:t,componentName:getComponentName(t),moduleName:getComponentModuleName(t),requiredPartials:n,requiredPrefabs:o,requiredWMComponents:r,hasCustomElement:i,insidePrefab:!!s,pagesConfig:m,securityConfig:p});await writeFile(`${a}/${t}.module.ts`,l)},writePrefabModuleTsFile=async(e,t,a,n=!1,o)=>{let r=getHandlebarTemplate("prefab-module-ts")({name:e,componentName:getComponentName(e),moduleName:getComponentModuleName(e),requiredPartials:o,requiredWMComponents:a,hasCustomElement:n});await writeFile(`${t}/${e}.module.ts`,r)},generateComponent=async(e,t,a,n,o,r,i,s,m)=>{await createDir(e,{recursive:!0});const{markup:p,styles:l,variables:g,script:c,expressions:P}=n,f=[writeComponentHtmlFile(t,safeString(p),e),writeComponentTsFile(o,t,a,e,s,m),writeComponentExpressionsFile("component-expressions",t,safeString(P),e)];return i||f.concat([writeComponentCssFile(t,safeString(l),e),writeComponentVariablesFile("component-variables",t,safeString(g),e),writeComponentJsFile(r,t,safeString(c),e)]),Promise.all(f)},findRequiredPartials=e=>{const t={};return e("[partialContainer]").map((t,a)=>e(a).attr("content")).toArray().map(e=>({type:"PARTIAL",name:e.trim()})).filter(e=>!t[e.name]&&(t[e.name]=!0))},findRequiredPrefabs=e=>{const t={};return e("[wmPrefab]").map((t,a)=>e(a).attr("prefabname")).toArray().map(e=>({type:"PREFAB",name:e.trim()})).filter(e=>!t[e.name]&&(t[e.name]=!0))},generatePagePartialComponent=async(e,t,a,n,o,r,i,s,m,p,l)=>{let g,c,P,f,u;if("PAGE"===n?(f=`${o}/src/app/pages/${a}`,g="page-component-ts",c="page-component-script",P="page-module-ts"):"LAYOUT"===n?(f=`${o}/src/app/layouts/${a}`,g="layout-component-ts",P="layout-module-ts",u=p.filter(e=>"PAGE"===e.type&&e.layout===a).map(e=>e.name)):(f=r?`${o}/partials/${a}`:`${o}/src/app/partials/${a}`,g="partial-component-ts",c="partial-component-script",P="partial-module-ts"),fs.existsSync(`${f}/${a}.component.ts`))return;let C=`${e}/${a}`;r&&(C=`${getPrefabPagesDirPath(i,r)}/${a}`);const d=await getPageContents(t,C,`${a}`,a,n,void 0,s);try{const e=cheerio.load(d.markup),C=findRequiredPartials(e),w=findRequiredPrefabs(e);for(const e of C){const a=getPagesDirPath(i);await generatePagePartialComponent(a,t,e.name,e.type,o,r,i,s,m)}await generateComponent(f,a,void 0,d,g,c,"LAYOUT"===n,m,u),await writePagePartialModuleTsFile(P,a,f,C,w,d.requiredWMComponents,d.hasCustomElement,r,p,l)}catch(e){throw console.log("failed in "+a),e}},generateComponents=async(e,t,a,n,o,r,i,s,m,p)=>{const l=getPagesDirPath(e);for(const a of r.keys()){const n="PREFAB"===t.type?`${l}/Main`:`${getPrefabPagesDirPath(e,a)}/Main`,o=await getPageContents(t,n,"Main",a,"PREFAB",r.get(a),m),c=`${i}/src/app/prefabs/${a}`,P=cheerio.load(o.markup),f=findRequiredPartials(P);await generateComponent(c,a,a,o,"prefab-component-ts","prefab-component-script",!1,p);const u=s[a];for(var g=0;g<u.length;g++)await generatePagePartialComponent(l,t,u[g].name,u[g].type,c,a,e,m,p);await writePrefabModuleTsFile(a,c,o.requiredWMComponents,o.hasCustomElement,f)}if(p){const r=getLayoutsDirPath(e);for(let s of a)await generateLayoutComponent(r,t,s.name,s.type,i,s.prefabName,e,m,p,n,o)}for(let a of n)await generatePagePartialComponent(l,t,a.name,a.type,i,a.prefabName,e,m,p)},generateLayoutComponent=async(e,t,a,n,o,r,i,s,m,p,l)=>{await generatePagePartialComponent(e,t,a,n,o,r,i,s,m,p,l)};module.exports={generateComponents:generateComponents,generatePagePartialComponent:generatePagePartialComponent};
@@ -1 +1 @@
1
- const Handlebars=require("handlebars"),fs=require("fs"),{getComponentName:getComponentName,isPrefabProject:isPrefabProject,getComponentModuleName:getComponentModuleName,getCodegenPath:getCodegenPath}=require("./wm-utils"),getPageRouteInfo=(e,t,n)=>{let a,r;if(null!==e){a="[AuthGuard]";for(const n of e)if(n.urlPattern.startsWith("/pages/")){n.urlPattern.split("/")[2]===t&&("Role"===n.permission?(a="[RoleGuard]",n.roles&&(r=JSON.stringify(n.roles))):"PermitAll"===n.permission&&(a=void 0))}}return`{\n path: '${t}',\n pathMatch: 'full',\n loadChildren: () => import('${n?"../..":"."}/pages/${t}/${t}.module').then(m => m.${getComponentModuleName(t)}),\n ${a?`canActivate: ${a},`:""}\n data : {\n ${r?`allowedRoles: ${r},`:""}\n pageName: '${t}'\n }\n }`},getLayoutRouteInfo=e=>`{\n path: "",\n resolve: appDependenciesResolve,\n loadChildren: () => import("./layouts/${e}/${e}.module").then(m => m.${getComponentModuleName(e)}),\n data : { \n layoutName: '${e}' \n }\n }`;Handlebars.registerHelper("PageComponentsImportStmts",(e,t)=>{if(isPrefabProject(e))return"";const n=t.filter(e=>"PAGE"===e.type).map(e=>`import { ${getComponentName(e.name)} } from './pages/${e.name}/${e.name}.component';`).join("\n");return safeString(n)}),Handlebars.registerHelper("WMComponentsImportStmts",(e=[])=>{const t=e.map(e=>`import { ${e.name} as ${e.as||"WM_"+e.name} } from '${e.from}';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PartialModuleImportStmts",e=>{const t=e.filter(e=>"PARTIAL"===e.type).map(e=>`import { ${getComponentModuleName(e.name)} as Partial${getComponentModuleName(e.name)}} from '../../partials/${e.name}/${e.name}.module';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PrefabPartialModuleImportStmts",e=>{const t=e.filter(e=>"PARTIAL"===e.type).map(e=>`import { ${getComponentModuleName(e.name)} as Partial${getComponentModuleName(e.name)}} from './partials/${e.name}/${e.name}.module';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PartialModuleStmts",e=>{const t=e.filter(e=>"PARTIAL"===e.type).map(e=>"Partial"+getComponentModuleName(e.name)).join(",\n\t");return safeString(t)}),Handlebars.registerHelper("PrefabModuleImportStmts",e=>{const t=e.filter(e=>"PREFAB"===e.type).map(e=>`import { ${getComponentModuleName(e.name)} as Prefab${getComponentModuleName(e.name)} } from '../../prefabs/${e.name}/${e.name}.module';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PrefabModuleStmts",e=>{const t=e.filter(e=>"PREFAB"===e.type).map(e=>"Prefab"+getComponentModuleName(e.name)).join(",\n\t");return safeString(t)}),Handlebars.registerHelper("WMComponentModuleStmts",e=>{const t=e.map(e=>`${e.as||"WM_"+e.name}${e.forRoot?".forRoot()":""}`).join(",\n\t");return safeString(t)}),Handlebars.registerHelper("PartialComponentsImportStmts",e=>{const t=e.filter(e=>"PAGE"!==e.type).map(e=>`import { ${getComponentName(e.name)} } from './partials/${e.name}/${e.name}.component';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PrefabComponentsImportStmts",e=>{const t=[];for(const[n]of e.entries())t.push(`import { MainComponent as ${n}Component } from './prefabs/${n}/Main/Main.component';`);return safeString(t.join("\n"))}),Handlebars.registerHelper("RegisterComponents",(e,t,n)=>{let a=[];for(const[e]of n.entries())a.push(`ComponentRefProviderService.registerComponentRef('${e}', ComponentType.PREFAB, ${e}Component, null);`);return safeString(a.join("\n"))}),Handlebars.registerHelper("ComponentDeclarations",(e,t,n)=>{let a=[];for(const[e]of n.entries())a.push(`${e}Component`);return safeString(a.join(",\n\t"))}),Handlebars.registerHelper("RegisterPrefabConfig",e=>{const t=[];for(const[n,a]of e.entries())t.push(`registerPrefabConfig('${n}', ${a})`);return safeString(t.join("\n"))}),Handlebars.registerHelper("DefineHomePage",e=>isPrefabProject(e)?"prefab-preview":e.homePage),Handlebars.registerHelper("ImportPrefabPreviewComponent",e=>isPrefabProject(e)?safeString('import { PrefabPreviewComponent } from "@wm/runtime/base";'):""),Handlebars.registerHelper("DefineLayoutRoutes",(e,t,n,a)=>{const r=n.filter(t=>t.layout===e&&"PAGE"===t.type).map(e=>getPageRouteInfo(a,e.name,!0));let o="";return r.length&&(o=`\n children: [\n ${r.join(",\n")}\n ]`),safeString(`[\n {\n path: '',\n component: ${t},\n ${o}\n\n }\n ]`)}),Handlebars.registerHelper("DefineAppRoutes",(e,t,n,a,r)=>{let o="";if(isPrefabProject(e))o="{\n path: 'prefab-preview',\n resolve: appDependenciesResolve,\n component: PrefabPreviewComponent\n }";else if(r){o=`${t.map(e=>getLayoutRouteInfo(e.name)).join(",\n")}`}else{o=`{\n path: '',\n resolve: appDependenciesResolve,\n children: [\n ${n.filter(e=>"PAGE"===e.type).map(e=>getPageRouteInfo(a,e.name,!1)).join(",\n")}\n ]\n }`}return safeString(`[\n {\n path: '',\n pathMatch: 'full',\n component: EmptyPageComponent,\n resolve: appDependenciesResolve\n },\n ${o},\n {\n path: "**",\n canActivate: [PageNotFoundGaurd],\n component: EmptyPageComponent\n }\n ]`)}),Handlebars.registerHelper("DefinePrefabModules",e=>`{ ${e} }`),Handlebars.registerHelper("DefinePartialModules",e=>`{ ${e} }`),Handlebars.registerHelper("DefinePrefabPartialModules",e=>`{ ${e} }`);const templates=new Map,initTemplates=()=>{const e=getCodegenPath()+"/templates/";templates.set("app-module-ts",Handlebars.compile(fs.readFileSync(e+"app.module.ts.hbs","utf-8"))),templates.set("app-codegen-module",Handlebars.compile(fs.readFileSync(e+"app-codegen.module.ts.hbs","utf-8"))),templates.set("app-prefabs-module",Handlebars.compile(fs.readFileSync(e+"app-prefabs.module.ts.hbs","utf-8"))),templates.set("prefab-config",Handlebars.compile(fs.readFileSync(e+"prefab/prefab-config.ts.hbs","utf-8"))),templates.set("app-routes",Handlebars.compile(fs.readFileSync(e+"app-routes.ts.hbs","utf-8"))),templates.set("lazy-module-routes",Handlebars.compile(fs.readFileSync(e+"lazy-module-routes.ts.hbs","utf-8"))),templates.set("wm-project-properties",Handlebars.compile(fs.readFileSync(e+"wm-project-properties.ts.hbs","utf-8"))),templates.set("component-variables",Handlebars.compile(fs.readFileSync(e+"component.variables.ts.hbs","utf-8"))),templates.set("component-expressions",Handlebars.compile(fs.readFileSync(e+"component.expressions.ts.hbs","utf-8"))),templates.set("app-component-script",Handlebars.compile(fs.readFileSync(e+"app.component.script.js.hbs","utf-8"))),templates.set("layout-component-ts",Handlebars.compile(fs.readFileSync(e+"layout/layout.component.ts.hbs","utf-8"))),templates.set("layout-module-ts",Handlebars.compile(fs.readFileSync(e+"layout/layout.module.ts.hbs","utf-8"))),templates.set("page-component-ts",Handlebars.compile(fs.readFileSync(e+"page/page.component.ts.hbs","utf-8"))),templates.set("page-component-script",Handlebars.compile(fs.readFileSync(e+"page/page.component.script.js.hbs","utf-8"))),templates.set("page-module-ts",Handlebars.compile(fs.readFileSync(e+"page/page.module.ts.hbs","utf-8"))),templates.set("partial-component-ts",Handlebars.compile(fs.readFileSync(e+"partial/partial.component.ts.hbs","utf-8"))),templates.set("partial-component-script",Handlebars.compile(fs.readFileSync(e+"partial/partial.component.script.js.hbs","utf-8"))),templates.set("partial-module-ts",Handlebars.compile(fs.readFileSync(e+"partial/partial.module.ts.hbs","utf-8"))),templates.set("prefab-component-ts",Handlebars.compile(fs.readFileSync(e+"prefab/prefab.component.ts.hbs","utf-8"))),templates.set("prefab-module-ts",Handlebars.compile(fs.readFileSync(e+"prefab/prefab.module.ts.hbs","utf-8"))),templates.set("prefab-component-script",Handlebars.compile(fs.readFileSync(e+"prefab/prefab.component.script.js.hbs","utf-8"))),templates.set("expr-vs-fn",Handlebars.compile(fs.readFileSync(e+"expr-vs-fn.hbs","utf-8")))},getHandlebarTemplate=e=>templates.get(e),safeString=e=>new Handlebars.SafeString(e);module.exports={getHandlebarTemplate:getHandlebarTemplate,safeString:safeString,initTemplates:initTemplates};
1
+ const Handlebars=require("handlebars"),fs=require("fs"),{getComponentName:getComponentName,isPrefabProject:isPrefabProject,getComponentModuleName:getComponentModuleName,getCodegenPath:getCodegenPath}=require("./wm-utils"),getPageRouteInfo=(e,t,n)=>{let a,r;if(null!==e){a="[(route) => inject(AuthGuard).canActivate(route)]";for(const n of e)if(n.urlPattern.startsWith("/pages/")){n.urlPattern.split("/")[2]===t&&("Role"===n.permission?(a="[(route) => inject(RoleGuard).canActivate(route)]",n.roles&&(r=JSON.stringify(n.roles))):"PermitAll"===n.permission&&(a=void 0))}}return`{\n path: '${t}',\n pathMatch: 'full',\n loadChildren: () => import('${n?"../..":"."}/pages/${t}/${t}.module').then(m => m.${getComponentModuleName(t)}),\n ${a?`canActivate: ${a},`:""}\n data : {\n ${r?`allowedRoles: ${r},`:""}\n pageName: '${t}'\n }\n }`},getLayoutRouteInfo=e=>`{\n path: "",\n resolve: appDependenciesResolve,\n loadChildren: () => import("./layouts/${e}/${e}.module").then(m => m.${getComponentModuleName(e)}),\n data : { \n layoutName: '${e}' \n }\n }`;Handlebars.registerHelper("PageComponentsImportStmts",(e,t)=>{const n=t.filter(e=>"PAGE"===e.type).map(e=>`import { ${getComponentName(e.name)} } from './pages/${e.name}/${e.name}.component';`).join("\n");return safeString(n)}),Handlebars.registerHelper("WMComponentsImportStmts",(e=[])=>{const t=e.map(e=>`import { ${e.name} as ${e.as||"WM_"+e.name} } from '${e.from}';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PartialModuleImportStmts",e=>{const t=e.filter(e=>"PARTIAL"===e.type).map(e=>`import { ${getComponentModuleName(e.name)} as Partial${getComponentModuleName(e.name)}} from '../../partials/${e.name}/${e.name}.module';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PrefabPartialModuleImportStmts",e=>{const t=e.filter(e=>"PARTIAL"===e.type).map(e=>`import { ${getComponentModuleName(e.name)} as Partial${getComponentModuleName(e.name)}} from './partials/${e.name}/${e.name}.module';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PartialModuleStmts",e=>{const t=e.filter(e=>"PARTIAL"===e.type).map(e=>"Partial"+getComponentModuleName(e.name)).join(",\n\t");return safeString(t)}),Handlebars.registerHelper("PrefabModuleImportStmts",e=>{const t=e.filter(e=>"PREFAB"===e.type).map(e=>`import { ${getComponentModuleName(e.name)} as Prefab${getComponentModuleName(e.name)} } from '../../prefabs/${e.name}/${e.name}.module';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PrefabModuleStmts",e=>{const t=e.filter(e=>"PREFAB"===e.type).map(e=>"Prefab"+getComponentModuleName(e.name)).join(",\n\t");return safeString(t)}),Handlebars.registerHelper("WMComponentModuleStmts",e=>{const t=e.map(e=>`${e.as||"WM_"+e.name}${e.forRoot?".forRoot()":""}`).join(",\n\t");return safeString(t)}),Handlebars.registerHelper("PartialComponentsImportStmts",e=>{const t=e.filter(e=>"PAGE"!==e.type).map(e=>`import { ${getComponentName(e.name)} } from './partials/${e.name}/${e.name}.component';`).join("\n");return safeString(t)}),Handlebars.registerHelper("PrefabComponentsImportStmts",e=>{const t=[];for(const[n]of e.entries())t.push(`import { MainComponent as ${n}Component } from './prefabs/${n}/Main/Main.component';`);return safeString(t.join("\n"))}),Handlebars.registerHelper("RegisterComponents",(e,t,n)=>{let a=[];for(const[e]of n.entries())a.push(`ComponentRefProviderService.registerComponentRef('${e}', ComponentType.PREFAB, ${e}Component, null);`);return safeString(a.join("\n"))}),Handlebars.registerHelper("ComponentDeclarations",(e,t,n)=>{let a=[];for(const[e]of n.entries())a.push(`${e}Component`);return safeString(a.join(",\n\t"))}),Handlebars.registerHelper("RegisterPrefabConfig",e=>{const t=[];for(const[n,a]of e.entries())t.push(`registerPrefabConfig('${n}', ${a})`);return safeString(t.join("\n"))}),Handlebars.registerHelper("DefineHomePage",e=>e.homePage),Handlebars.registerHelper("ImportPrefabPreviewComponent",e=>""),Handlebars.registerHelper("DefineLayoutRoutes",(e,t,n,a)=>{const r=n.filter(t=>t.layout===e&&"PAGE"===t.type).map(e=>getPageRouteInfo(a,e.name,!0));let s="";return r.length&&(s=`\n children: [\n ${r.join(",\n")}\n ]`),safeString(`[\n {\n path: '',\n component: ${t},\n ${s}\n\n }\n ]`)}),Handlebars.registerHelper("DefineAppRoutes",(e,t,n,a,r)=>{let s="";if(r){s=`${t.map(e=>getLayoutRouteInfo(e.name)).join(",\n")}`}else{s=`{\n path: '',\n resolve: appDependenciesResolve,\n children: [\n ${n.filter(e=>"PAGE"===e.type).map(e=>getPageRouteInfo(a,e.name,!1)).join(",\n")}\n ]\n }`}return safeString(`[\n {\n path: '',\n pathMatch: 'full',\n component: EmptyPageComponent,\n resolve: appDependenciesResolve\n },\n ${s},\n {\n path: "**",\n canActivate: [(route) => inject(PageNotFoundGuard).canActivate(route)],\n component: EmptyPageComponent\n }\n ]`)}),Handlebars.registerHelper("DefinePrefabModules",e=>`{ ${e} }`),Handlebars.registerHelper("DefinePartialModules",e=>`{ ${e} }`),Handlebars.registerHelper("DefinePrefabPartialModules",e=>`{ ${e} }`);const templates=new Map,initTemplates=()=>{const e=getCodegenPath()+"/templates/";templates.set("app-module-ts",Handlebars.compile(fs.readFileSync(e+"app.module.ts.hbs","utf-8"))),templates.set("app-codegen-module",Handlebars.compile(fs.readFileSync(e+"app-codegen.module.ts.hbs","utf-8"))),templates.set("app-prefabs-module",Handlebars.compile(fs.readFileSync(e+"app-prefabs.module.ts.hbs","utf-8"))),templates.set("prefab-config",Handlebars.compile(fs.readFileSync(e+"prefab/prefab-config.ts.hbs","utf-8"))),templates.set("app-routes",Handlebars.compile(fs.readFileSync(e+"app-routes.ts.hbs","utf-8"))),templates.set("lazy-module-routes",Handlebars.compile(fs.readFileSync(e+"lazy-module-routes.ts.hbs","utf-8"))),templates.set("wm-project-properties",Handlebars.compile(fs.readFileSync(e+"wm-project-properties.ts.hbs","utf-8"))),templates.set("component-variables",Handlebars.compile(fs.readFileSync(e+"component.variables.ts.hbs","utf-8"))),templates.set("component-expressions",Handlebars.compile(fs.readFileSync(e+"component.expressions.ts.hbs","utf-8"))),templates.set("app-component-script",Handlebars.compile(fs.readFileSync(e+"app.component.script.js.hbs","utf-8"))),templates.set("layout-component-ts",Handlebars.compile(fs.readFileSync(e+"layout/layout.component.ts.hbs","utf-8"))),templates.set("layout-module-ts",Handlebars.compile(fs.readFileSync(e+"layout/layout.module.ts.hbs","utf-8"))),templates.set("page-component-ts",Handlebars.compile(fs.readFileSync(e+"page/page.component.ts.hbs","utf-8"))),templates.set("page-component-script",Handlebars.compile(fs.readFileSync(e+"page/page.component.script.js.hbs","utf-8"))),templates.set("page-module-ts",Handlebars.compile(fs.readFileSync(e+"page/page.module.ts.hbs","utf-8"))),templates.set("partial-component-ts",Handlebars.compile(fs.readFileSync(e+"partial/partial.component.ts.hbs","utf-8"))),templates.set("partial-component-script",Handlebars.compile(fs.readFileSync(e+"partial/partial.component.script.js.hbs","utf-8"))),templates.set("partial-module-ts",Handlebars.compile(fs.readFileSync(e+"partial/partial.module.ts.hbs","utf-8"))),templates.set("prefab-component-ts",Handlebars.compile(fs.readFileSync(e+"prefab/prefab.component.ts.hbs","utf-8"))),templates.set("prefab-module-ts",Handlebars.compile(fs.readFileSync(e+"prefab/prefab.module.ts.hbs","utf-8"))),templates.set("prefab-component-script",Handlebars.compile(fs.readFileSync(e+"prefab/prefab.component.script.js.hbs","utf-8"))),templates.set("prefab-formatters-script",Handlebars.compile(fs.readFileSync(e+"prefab/formatters.js.hbs","utf-8"))),templates.set("main-html-ts",Handlebars.compile(fs.readFileSync(e+"Main/main.html.ts.hbs","utf-8"))),templates.set("expr-vs-fn",Handlebars.compile(fs.readFileSync(e+"expr-vs-fn.hbs","utf-8")))},getHandlebarTemplate=e=>templates.get(e),safeString=e=>new Handlebars.SafeString(e);module.exports={getHandlebarTemplate:getHandlebarTemplate,safeString:safeString,initTemplates:initTemplates};
@@ -1 +1 @@
1
- global.$=require("jquery"),global._=require("lodash"),global._WM_APP_PROPERTIES={};const cheerio=require("cheerio"),{generatePageExpressions:generatePageExpressions}=require("./expr-parser-utils"),{readFile:readFile,isMobileProject:isMobileProject}=require("./wm-utils"),nodePolyfill=require("node-window-polyfill").register(!1),getRequiredScripts=e=>{const r={wmCalendar:["./node_modules/fullcalendar/main.min.js"],wmChart:["./node_modules/d3/d3.min.js","./node_modules/@wavemaker.com/nvd3/build/nv.d3.min.js"],wmChips:["./node_modules/jquery-ui/ui/widgets/sortable.js"],wmList:["./node_modules/jquery-ui/ui/widgets/droppable.js","./node_modules/jquery-ui/ui/widgets/sortable.js"],wmRichtexteditor:["./node_modules/summernote/dist/summernote-lite.min.js"],wmTable:[global._WM_PACKAGE_PATH+"/scripts/datatable/datatable.js","./node_modules/jquery-ui/ui/widgets/resizable.js"]};let t=[];return _.each(r,(r,i)=>{e("["+i+"]").length>0&&(t=t.concat(r))}),t=t.map(e=>e.replace(/^(\.\/)/,"").replace(/\//g,"-")),_.uniq(t)},includesCustomElement=e=>{return cheerio.load(e)('[html-custom-element="true"]').length},getPageContents=async(e,r,t,i,s,o,l)=>{try{const a=`${r}/${t}`,n=await readFile(`${a}.html`,"utf8");let u,d,m,p="{}";"LAYOUT"!==s&&(u=await readFile(`${a}.js`,"utf8"),d=await readFile(`${a}.css`,"utf8"),p=await readFile(`${a}.variables.json`,"utf8")),global._WM_APP_PROPERTIES=e,window=window||{},window._WM_APP_PROPERTIES=e;const c=(m=isMobileProject(e)?require("../dependencies/transpilation-mobile.cjs"):require("../dependencies/transpilation-web.cjs")).transpile(n),g=cheerio.load(c.markup),w=getRequiredScripts(g);return w.length>0&&(c.markup=c.markup.replace(">",` scripts-to-load="${w.join(",")}">`)),{markup:c.markup,script:u,styles:m.scopeComponentStyles(i,s,d),variables:p,expressions:l?generatePageExpressions(c.markup,p,o):"",requiredWMComponents:c.requiredWMComponents.filter(r=>!r.platformType||r.platformType===e.platformType),hasCustomElement:includesCustomElement(n)}}catch(e){throw console.error(`error occurred in transpilation of ${t}`,e),e}};module.exports={getPageContents:getPageContents};
1
+ global.$=require("jquery"),global._=require("lodash"),global._WM_APP_PROPERTIES={};const cheerio=require("cheerio"),{generatePageExpressions:generatePageExpressions}=require("./expr-parser-utils"),fs=require("fs"),{readFile:readFile,isMobileProject:isMobileProject,isPrefabProject:isPrefabProject,getCodegenPath:getCodegenPath,writeFile:writeFile}=require("./wm-utils"),Handlebars=require("handlebars"),{getHandlebarTemplate:getHandlebarTemplate}=require("./handlebar-helpers"),nodePolyfill=require("node-window-polyfill").register(!1),getRequiredScripts=e=>{const t={wmCalendar:["./node_modules/fullcalendar/main.min.js"],wmChart:["./node_modules/d3/dist/d3.min.js","./node_modules/@wavemaker/nvd3/build/nv.d3.min.js"],wmChips:["./node_modules/jquery-ui/ui/widgets/sortable.js"],wmList:["./node_modules/jquery-ui/ui/widgets/droppable.js","./node_modules/jquery-ui/ui/widgets/sortable.js"],wmRichtexteditor:["./node_modules/summernote/dist/summernote-lite.min.js"],wmTable:[global._WM_PACKAGE_PATH+"/scripts/datatable/datatable.js","./node_modules/jquery-ui/ui/widgets/resizable.js"]};let a=[];return _.each(t,(t,r)=>{e("["+r+"]").length>0&&(a=a.concat(t))}),a=a.map(e=>e.replace(/^(\.\/)/,"").replace(/\//g,"-").replace(/@/g,"")),_.uniq(a)},includesCustomElement=e=>{return cheerio.load(e)('[html-custom-element="true"]').length},getPageContents=async(e,t,a,r,i,s,l)=>{try{let o,n,d,u="{}";const m=`${t}/${a}`;let p,c;if(fs.existsSync(`${m}.html`))if(isPrefabProject(e)&&"Main"===a&&"PAGE"===i){p=getCodegenPath()+"/templates/Main",o=getHandlebarTemplate("main-html-ts")({prefabName:e.name,prefabAttrs:""}),"LAYOUT"!==i&&(n=await readFile(`${p}/Main.js`,"utf8"),d=await readFile(`${m}.css`,"utf8"),u=await readFile(`${p}/Main.variables.json`,"utf8"))}else o=await readFile(`${m}.html`,"utf8"),"LAYOUT"!==i&&(n=await readFile(`${m}.js`,"utf8"),d=await readFile(`${m}.css`,"utf8"),u=await readFile(`${m}.variables.json`,"utf8"));else p=getCodegenPath()+"/templates/empty",o=await readFile(`${p}/empty.html`,"utf8"),"LAYOUT"!==i&&(n=await readFile(`${p}/empty.js`,"utf8"),d=await readFile(`${p}/empty.css`,"utf8"),u=await readFile(`${p}/empty.variables.json`,"utf8"));global._WM_APP_PROPERTIES=e,window=window||{},window._WM_APP_PROPERTIES=e;const g=(c=isMobileProject(e)?require("../dependencies/transpilation-mobile.cjs"):require("../dependencies/transpilation-web.cjs")).transpile(o),w=cheerio.load(g.markup),P=getRequiredScripts(w);return P.length>0&&(g.markup=g.markup.replace(">",` scripts-to-load="${P.join(",")}">`)),{markup:g.markup,script:n,styles:c.scopeComponentStyles(r,i,d),variables:u,expressions:l?generatePageExpressions(g.markup,u,s):"",requiredWMComponents:g.requiredWMComponents.filter(t=>!t.platformType||t.platformType===e.platformType),hasCustomElement:includesCustomElement(o)}}catch(e){throw console.error(`error occurred in transpilation of ${a}`,e),e}};module.exports={getPageContents:getPageContents};
@@ -1 +1 @@
1
- const parser=require("fast-xml-parser"),{readFile:readFile,readDir:readDir,stat:stat,isPrefabProject:isPrefabProject,getWmProjectPropertiesFilePath:getWmProjectPropertiesFilePath,getThemesConfigPropertiesFilePath:getThemesConfigPropertiesFilePath,getAuthInfoFilePath:getAuthInfoFilePath,getSecurityConfigPath:getSecurityConfigPath,getLayoutsConfigPath:getLayoutsConfigPath,getPagesConfigPath:getPagesConfigPath,getPrefabsDirPath:getPrefabsDirPath,getPrefabPagesDirPath:getPrefabPagesDirPath,getPrefabConfigPath:getPrefabConfigPath}=require("./wm-utils"),{join:join}=require("path"),getWmProjectProperties=async e=>{let t=await readFile(getWmProjectPropertiesFilePath(e),"utf8");const a={};return parser.parse(t,{textNodeName:"text",ignoreAttributes:!1,ignoreNameSpace:!1,allowBooleanAttributes:!1,parseNodeValue:!0,parseAttributeValue:!1,trimValues:!0,parseTrueNumberOnly:!1,arrayMode:!1,stopNodes:["parse-me-as-string"]},!0).properties.entry.forEach(e=>a[e["@_key"]]=e.text?e.text:""),a},getThemesConfigProperties=async e=>{const t=await readFile(getThemesConfigPropertiesFilePath(e),"utf8");return JSON.parse(t)},getSecurityConfig=async e=>stat(getAuthInfoFilePath(e)).then(()=>new Promise(async(t,a)=>{let r=null;JSON.parse(await readFile(getAuthInfoFilePath(e))).enforceSecurity&&(r=JSON.parse(await readFile(getSecurityConfigPath(e),"utf8"))),t(r)}),()=>Promise.resolve(null)),getLayoutsConfig=async e=>{let t=await readFile(getLayoutsConfigPath(e),"utf8");return t=JSON.parse(t)},getPagesConfig=async e=>{let t=await readFile(getPagesConfigPath(e),"utf8");return t=JSON.parse(t)},getPrefabPartialsConfig=async(e,t)=>{let a=await readFile(`${getPrefabPagesDirPath(e,t)}/pages-config.json`,"utf8");return a=JSON.parse(a).filter(e=>"partial"===e.type.toLowerCase()||"template"===e.type.toLowerCase()).map(e=>({...e,prefabName:t}))},getPrefabConfigsUsedInApp=async(e,t)=>{const a=new Map,r=getPrefabsDirPath(t);return stat(r).then(()=>new Promise(async(i,s)=>{for(const e of await readDir(r))(await stat(join(r,e))).isDirectory()&&a.set(e,await readFile(getPrefabConfigPath(t,e)));isPrefabProject(e)&&a.set("__self__",await readFile(`${t}/src/main/webapp/config.json`)),i(a)}),()=>Promise.resolve(a))};module.exports={getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig};
1
+ const parser=require("fast-xml-parser"),{readFile:readFile,readDir:readDir,stat:stat,isPrefabProject:isPrefabProject,getWmProjectPropertiesFilePath:getWmProjectPropertiesFilePath,getThemesConfigPropertiesFilePath:getThemesConfigPropertiesFilePath,getAuthInfoFilePath:getAuthInfoFilePath,getSecurityConfigPath:getSecurityConfigPath,getLayoutsConfigPath:getLayoutsConfigPath,getPagesConfigPath:getPagesConfigPath,getPrefabsDirPath:getPrefabsDirPath,getPrefabPagesDirPath:getPrefabPagesDirPath,getPrefabConfigPath:getPrefabConfigPath}=require("./wm-utils"),{join:join}=require("path"),getWmProjectProperties=async e=>{let t=await readFile(getWmProjectPropertiesFilePath(e),"utf8");const a={};return parser.parse(t,{textNodeName:"text",ignoreAttributes:!1,ignoreNameSpace:!1,allowBooleanAttributes:!1,parseNodeValue:!0,parseAttributeValue:!1,trimValues:!0,parseTrueNumberOnly:!1,arrayMode:!1,stopNodes:["parse-me-as-string"]},!0).properties.entry.forEach(e=>a[e["@_key"]]=e.text?e.text:""),a},getThemesConfigProperties=async e=>{const t=await readFile(getThemesConfigPropertiesFilePath(e),"utf8");return JSON.parse(t)},getSecurityConfig=async e=>stat(getAuthInfoFilePath(e)).then(()=>new Promise(async(t,a)=>{let r=null;JSON.parse(await readFile(getAuthInfoFilePath(e))).enforceSecurity&&(r=JSON.parse(await readFile(getSecurityConfigPath(e),"utf8"))),t(r)}),()=>Promise.resolve(null)),getLayoutsConfig=async e=>{let t=await readFile(getLayoutsConfigPath(e),"utf8");return t=JSON.parse(t)},getPagesConfig=async e=>{let t=await readFile(getPagesConfigPath(e),"utf8");return t=JSON.parse(t),_.find(t,{name:"Common"})||t.push({name:"Common",type:"PARTIAL",params:[]}),t},getPrefabPartialsConfig=async(e,t)=>{let a;try{a=await readFile(`${getPrefabPagesDirPath(e,t)}/pages-config.json`,"utf8"),a=JSON.parse(a).filter(e=>"partial"===e.type.toLowerCase()||"template"===e.type.toLowerCase()).map(e=>({...e,prefabName:t}))}catch(e){a=[]}return a},getPrefabConfigsUsedInApp=async(e,t)=>{const a=new Map,r=getPrefabsDirPath(t);return stat(r).then(()=>new Promise(async(i,s)=>{for(const e of await readDir(r))(await stat(join(r,e))).isDirectory()&&a.set(e,await readFile(getPrefabConfigPath(t,e)));if(isPrefabProject(e)){let e=await readFile(`${t}/src/main/webapp/config.json`),r=JSON.parse(e).displayName.replaceAll(" ","_");a.set(r,e)}i(a)}),()=>Promise.resolve(a))};module.exports={getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig};
@@ -1 +1 @@
1
- const cheerio=require("cheerio"),{writeFile:writeFile,readFileSync:readFileSync,readDir:readDir,isMobileProject:isMobileProject}=require("./wm-utils"),markScriptsAsLazy=e=>{const s=["./node_modules/d3/d3.min.js","./node_modules/@wavemaker.com/nvd3/build/nv.d3.min.js","./node_modules/fullcalendar/main.min.js","./node_modules/summernote/dist/summernote-lite.min.js",global._WM_PACKAGE_PATH+"/scripts/datatable/datatable.js","./node_modules/jquery-ui/ui/widgets/sortable.js","./node_modules/jquery-ui/ui/widgets/droppable.js","./node_modules/jquery-ui/ui/widgets/resizable.js","./node_modules/hammerjs/hammer.min.js","./node_modules/iscroll/build/iscroll.js"];let t=e.replace(/^(\.\/)/,"").replace(/\//g,"-");return t=t.substring(0,t.lastIndexOf(".")),t+="-NOHASH",s.includes(e)?{input:e,inject:!1,bundleName:t}:e},setBuildCustomizations=async e=>{const s=e.projects["angular-app"].architect.build,t=s.options.scripts;s.options.scripts=t.map(e=>markScriptsAsLazy(e))},addToScripts=async(e,s,t=[],i=[])=>{const n=`${s}/angular.json`;let o=readFileSync(n,!0);const a=o.projects["angular-app"].architect.build;let r=a.options.scripts;const l=`${s+"/src/app/extensions"}`,c=await readDir(l);c.length&&i.push("./src/app/extensions/"+c[0]),a.options.scripts=[...t,...r,...i],await writeFile(n,JSON.stringify(o,null,4))},updateAngularJSON=async(e,s,t,i,n,o,a,r,l,c)=>{const d=`${s}/angular.json`;let u=readFileSync(d,!0);const p=u.projects["angular-app"].architect.build;a&&a.trim().length>0&&(p.options.deployUrl=a);const m=p.options.styles;if(isMobileProject(t)){const e=m.findIndex(e=>{let s="object"==typeof e;if(s){return(s?e.input:e).includes("themes")}return!1}),s=m[e].input;m[e].bundleName="wm-android-styles",m[e].input=m[e].input.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/android/style.css`);const t=Object.assign({},m[e]);t.input=s.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/ios/style.css`),t.bundleName="wm-ios-styles",m.push(t);const n=m.findIndex(e=>{let s="object"==typeof e;if(s){return"src/assets/app.css"===(s?e.input:e)}return!1});m[n].bundleName="wm-android-styles";const o=Object.assign({},m[n]);o.bundleName="wm-ios-styles",m.push(o)}m.forEach((e,s)=>{let t="object"==typeof e,n=t?e.input:e;!n.includes("themes")||n.includes("/android/")||n.includes("/ios/")||(t?m[s].input=n.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/style.css`):m[s]=n.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/style.css`))}),await setBuildCustomizations(u);const j=p.configurations.production;if(j.aot=!1!==r.aot,j.buildOptimizer=!1!==r.buildOptimizer,c){const e=p.options.assets;e.push("src/manifest.json"),e.push("src/wmsw-worker.js"),j.serviceWorker=!0,j.ngswConfigPath="ngsw-config.json",delete p.options.customWebpackConfig}await writeFile(d,JSON.stringify(u,null,4))};module.exports={updateAngularJSON:updateAngularJSON,addToScripts:addToScripts};
1
+ const cheerio=require("cheerio"),{writeFile:writeFile,readFileSync:readFileSync,readDir:readDir,isMobileProject:isMobileProject}=require("./wm-utils"),markScriptsAsLazy=e=>{const s=["./node_modules/d3/dist/d3.min.js","./node_modules/@wavemaker/nvd3/build/nv.d3.min.js","./node_modules/fullcalendar/main.min.js","./node_modules/summernote/dist/summernote-lite.min.js",global._WM_PACKAGE_PATH+"/scripts/datatable/datatable.js","./node_modules/jquery-ui/ui/widgets/sortable.js","./node_modules/jquery-ui/ui/widgets/droppable.js","./node_modules/jquery-ui/ui/widgets/resizable.js","./node_modules/hammerjs/hammer.min.js","./node_modules/iscroll/build/iscroll.js"];let t=e.replace(/^(\.\/)/,"").replace(/\//g,"-").replace(/@/g,"");return t=t.substring(0,t.lastIndexOf(".")),t+="-NOHASH",s.includes(e)?{input:e,inject:!1,bundleName:t}:e},setBuildCustomizations=async e=>{const s=e.projects["angular-app"].architect.build,t=s.options.scripts;s.options.scripts=t.map(e=>markScriptsAsLazy(e))},addToScripts=async(e,s,t=[],i=[])=>{const n=`${s}/angular.json`;let o=readFileSync(n,!0);const a=o.projects["angular-app"].architect.build;let r=a.options.scripts;const l=`${s+"/src/app/extensions"}`,c=await readDir(l);c.length&&i.push("./src/app/extensions/"+c[0]),a.options.scripts=[...t,...r,...i],await writeFile(n,JSON.stringify(o,null,4))},updateAngularJSON=async(e,s,t,i,n,o,a,r,l,c)=>{const d=`${s}/angular.json`;let u=readFileSync(d,!0);const p=u.projects["angular-app"].architect.build;a&&a.trim().length>0&&(p.options.deployUrl=a);const m=p.options.styles;if(isMobileProject(t)){const e=m.findIndex(e=>{let s="object"==typeof e;if(s){return(s?e.input:e).includes("themes")}return!1}),s=m[e].input;m[e].bundleName="wm-android-styles",m[e].input=m[e].input.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/android/style.css`);const t=Object.assign({},m[e]);t.input=s.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/ios/style.css`),t.bundleName="wm-ios-styles",m.push(t);const n=m.findIndex(e=>{let s="object"==typeof e;if(s){return"src/assets/app.css"===(s?e.input:e)}return!1});m[n].bundleName="wm-android-styles";const o=Object.assign({},m[n]);o.bundleName="wm-ios-styles",m.push(o)}m.forEach((e,s)=>{let t="object"==typeof e,n=t?e.input:e;!n.includes("themes")||n.includes("/android/")||n.includes("/ios/")||(t?m[s].input=n.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/style.css`):m[s]=n.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/style.css`))}),await setBuildCustomizations(u);const g=p.configurations.production;if(g.aot=!1!==r.aot,g.buildOptimizer=!1!==r.buildOptimizer,c){const e=p.options.assets;e.push("src/manifest.json"),e.push("src/wmsw-worker.js"),g.serviceWorker=!0,g.ngswConfigPath="ngsw-config.json",delete p.options.customWebpackConfig}await writeFile(d,JSON.stringify(u,null,4))};module.exports={updateAngularJSON:updateAngularJSON,addToScripts:addToScripts};
File without changes
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Use App.getDependency for Dependency Injection
3
+ * eg: var DialogService = App.getDependency('DialogService');
4
+ */
5
+
6
+ /* perform any action on widgets/variables within this block */
7
+ Page.onReady = function () {
8
+ /*
9
+ * variables can be accessed through 'Page.Variables' property here
10
+ * e.g. to get dataSet in a staticVariable named 'loggedInUser' use following script
11
+ * Page.Variables.loggedInUser.getData()
12
+ *
13
+ * widgets can be accessed through 'Page.Widgets' property here
14
+ * e.g. to get value of text widget named 'username' use following script
15
+ * 'Page.Widgets.username.datavalue'
16
+ */
17
+ };
@@ -0,0 +1,7 @@
1
+ <wm-page pagetitle="{{prefabName}}" name="name-{{prefabName}}">
2
+ <wm-content name="content1">
3
+ <wm-page-content columnwidth="12" name="page_content1">
4
+ <wm-prefab name="{{prefabName}}" prefabname="{{prefabName}}" {{prefabAttrs}}></wm-prefab>
5
+ </wm-page-content>
6
+ </wm-content>
7
+ </wm-page>
@@ -20,7 +20,6 @@ export const xsrfHeaderName = '{{xsrfTokenHeaderName}}';
20
20
  RuntimeBaseModule
21
21
  ],
22
22
  exports: [components, RuntimeBaseModule],
23
- entryComponents: components,
24
23
  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
25
24
  })
26
25
  export class AppPrefabsModule {
@@ -1,16 +1,17 @@
1
1
  import { Routes } from '@angular/router';
2
2
 
3
- import { AppJSResolve, AppExtensionJSResolve, AppVariablesResolve, {{#unless enableSpa}}AuthGuard, RoleGuard, {{/unless}} EmptyPageComponent, PageNotFoundGaurd } from '@wm/runtime/base';
3
+ import { AppJSResolve, AppExtensionJSResolve, AppVariablesResolve, {{#unless enableSpa}}AuthGuard, RoleGuard, {{/unless}} EmptyPageComponent, PageNotFoundGuard } from '@wm/runtime/base';
4
4
 
5
5
  import { LazyLoadScriptsResolve } from './lazy-load-scripts.resolve';
6
+ import { inject } from "@angular/core"
6
7
 
7
8
  {{ImportPrefabPreviewComponent wmProjectProperties}};
8
9
 
9
10
  const appDependenciesResolve = {
10
- appJS: AppJSResolve,
11
- appMetaConfig: AppExtensionJSResolve,
12
- appVariables: AppVariablesResolve,
13
- lazyLoadScriptsResolv: LazyLoadScriptsResolve
11
+ appJS: () => inject(AppJSResolve).resolve(),
12
+ appMetaConfig: () => inject(AppExtensionJSResolve).resolve(),
13
+ appVariables: () => inject(AppVariablesResolve).resolve(),
14
+ lazyLoadScriptsResolv: () => inject(LazyLoadScriptsResolve).resolve()
14
15
  };
15
16
 
16
17
  export const routes: Routes = {{DefineAppRoutes wmProjectProperties layoutsConfig pagesConfig securityConfig enableSpa}}
@@ -95,7 +95,7 @@ import { MobileNavbarModule as MobileMobileNavbarModule } from '@wm/mobile/compo
95
95
  import { TabBarModule as MobileTabBarModule } from '@wm/mobile/components/page/tab-bar';
96
96
  {{/if}}
97
97
  {{/if}}
98
- import { PartialRefProvider } from '@wm/core';
98
+ import { CoreModule, PartialRefProvider } from '@wm/core';
99
99
  import {
100
100
  AppComponent,
101
101
  AppJSProvider,
@@ -104,9 +104,9 @@ import {
104
104
  PrefabConfigProvider,
105
105
  WmNgRouteReuseStrategy,
106
106
  CanDeactivateNgPageGuard,
107
- WM_MODULES_FOR_ROOT,
108
107
  REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS,
109
- AppExtensionProvider
108
+ AppExtensionProvider,
109
+ RuntimeBaseModule
110
110
  } from '@wm/runtime/base';
111
111
 
112
112
 
@@ -229,6 +229,25 @@ REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS.push(...mobileComponentModules);
229
229
  {{/if}}
230
230
  {{/if}}
231
231
 
232
+ import { HttpServiceModule } from "@wm/http";
233
+ import { SecurityModule } from "@wm/security";
234
+ import { WmComponentsModule } from "@wm/components/base";
235
+ import { VariablesModule } from "@wm/variables";
236
+ import { OAuthModule } from "@wm/oAuth";
237
+ import { MobileRuntimeModule } from "@wm/mobile/runtime";
238
+ import { PageDirective } from "@wm/components/page";
239
+
240
+ const WM_MODULES_FOR_ROOT = [
241
+ WmComponentsModule.forRoot(),
242
+ MobileRuntimeModule.forRoot(),
243
+ CoreModule.forRoot(),
244
+ SecurityModule.forRoot(),
245
+ OAuthModule.forRoot(),
246
+ VariablesModule.forRoot(),
247
+ HttpServiceModule.forRoot(),
248
+ RuntimeBaseModule.forRoot()
249
+ ];
250
+
232
251
  export const isPrefabInitialized = initPrefabConfig();
233
252
 
234
253
  @NgModule({
@@ -265,7 +284,8 @@ export const isPrefabInitialized = initPrefabConfig();
265
284
  {provide: PrefabConfigProvider, useClass: PrefabConfigProviderService},
266
285
  {provide: RouteReuseStrategy, useClass: WmNgRouteReuseStrategy},
267
286
  CanDeactivateNgPageGuard,
268
- LazyLoadScriptsResolve
287
+ LazyLoadScriptsResolve,
288
+ PageDirective
269
289
  ],
270
290
  bootstrap: [AppComponent]
271
291
  })
File without changes
@@ -0,0 +1 @@
1
+ <wm-partial name="empty"></wm-partial>
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Use App.getDependency for Dependency Injection
3
+ * eg: var DialogService = App.getDependency('DialogService');
4
+ */
5
+
6
+ /* perform any action on widgets/variables within this block */
7
+ Partial.onReady = function () {
8
+ /*
9
+ * variables can be accessed through 'Partial.Variables' property here
10
+ * e.g. to get dataSet in a staticVariable named 'loggedInUser' use following script
11
+ * Partial.Variables.loggedInUser.getData()
12
+ *
13
+ * widgets can be accessed through 'Partial.Widgets' property here
14
+ * e.g. to get value of text widget named 'username' use following script
15
+ * 'Partial.Widgets.username.datavalue'
16
+ */
17
+ };
@@ -1,4 +1,4 @@
1
- import { NgModule } from '@angular/core';
1
+ import { inject, NgModule } from '@angular/core';
2
2
  import { CommonModule as NgCommonModule, APP_BASE_HREF } from '@angular/common';
3
3
  import { Routes, RouterModule } from '@angular/router';
4
4
 
@@ -6,7 +6,7 @@ import { initScript } from './{{name}}.component.script';
6
6
  import { getVariables } from './{{name}}.component.variables';
7
7
  import { expressionData } from './{{name}}.component.expressions';
8
8
 
9
- import { {{#if enableSpa}}BaseSpaPageComponent{{else}}BasePageComponent{{/if}} } from '@wm/runtime/base';
9
+ import { AppRef, {{#if enableSpa}}BaseSpaPageComponent{{else}}BasePageComponent{{/if}} } from '@wm/runtime/base';
10
10
 
11
11
  @Component({
12
12
  selector: 'app-page-{{name}}',
@@ -22,10 +22,10 @@ import { {{#if enableSpa}}BaseSpaPageComponent{{else}}BasePageComponent{{/if}} }
22
22
  })
23
23
  export class {{componentName}} extends {{#if enableSpa}}BaseSpaPageComponent{{else}}BasePageComponent{{/if}} {
24
24
 
25
- pageName = '{{name}}';
25
+ override pageName = '{{name}}';
26
26
  [key: string]: any;
27
27
 
28
- constructor(public injector: Injector) {
28
+ constructor() {
29
29
  super();
30
30
  super.init();
31
31
  }
@@ -42,4 +42,4 @@ export class {{componentName}} extends {{#if enableSpa}}BaseSpaPageComponent{{el
42
42
  return expressionData;
43
43
  }
44
44
 
45
- }
45
+ }
@@ -1,4 +1,4 @@
1
- import { NgModule } from '@angular/core';
1
+ import { inject, NgModule } from '@angular/core';
2
2
  import { CommonModule as NgCommonModule, APP_BASE_HREF } from '@angular/common';
3
3
  import { Routes, RouterModule } from '@angular/router';
4
4
 
@@ -17,7 +17,7 @@ const routes: Routes = [
17
17
  {
18
18
  path: '',
19
19
  component: {{componentName}},
20
- canDeactivate: [CanDeactivateNgPageGuard]
20
+ canDeactivate: [(component) => inject(CanDeactivateNgPageGuard).canDeactivate(component)]
21
21
  }
22
22
  ];
23
23
 
@@ -25,7 +25,7 @@ const requiredComponentModules = [
25
25
  {{WMComponentModuleStmts requiredWMComponents}}
26
26
  ];
27
27
 
28
- const requiredPartialModules = [
28
+ const requiredPartialModules: any[] = [
29
29
  {{PartialModuleStmts requiredPartials}}
30
30
  ];
31
31
 
@@ -1,4 +1,4 @@
1
- import { Component, Injector, ViewEncapsulation } from '@angular/core';
1
+ import { Component, Injector, Optional, ViewEncapsulation } from '@angular/core';
2
2
 
3
3
  import { UserDefinedExecutionContext } from '@wm/core';
4
4
 
@@ -6,7 +6,7 @@ import { initScript } from './{{name}}.component.script';
6
6
  import { getVariables } from './{{name}}.component.variables';
7
7
  import { expressionData } from './{{name}}.component.expressions';
8
8
 
9
- import { BasePartialComponent } from '@wm/runtime/base';
9
+ import { AppRef, BasePartialComponent } from '@wm/runtime/base';
10
10
 
11
11
  @Component({
12
12
  selector: 'app-partial-{{name}}',
@@ -22,11 +22,11 @@ import { BasePartialComponent } from '@wm/runtime/base';
22
22
  })
23
23
  export class {{componentName}} extends BasePartialComponent {
24
24
 
25
- partialName = '{{name}}';
25
+ override partialName = '{{name}}';
26
26
  [key: string]: any;
27
27
  {{#if enableSpa}}spa = true;{{/if}}
28
28
 
29
- constructor(public injector: Injector) {
29
+ constructor() {
30
30
  super();
31
31
  super.init();
32
32
  }
@@ -35,7 +35,7 @@ export class {{componentName}} extends BasePartialComponent {
35
35
  return getVariables();
36
36
  }
37
37
 
38
- evalUserScript(Partial, App, Utils) {
38
+ evalUserScript(Partial: BasePartialComponent, App: AppRef, Utils: any) {
39
39
  initScript(Partial, App, Utils);
40
40
  }
41
41
 
@@ -20,7 +20,7 @@ const requiredComponentModules = [
20
20
  {{WMComponentModuleStmts requiredWMComponents}}
21
21
  ];
22
22
 
23
- const requiredPartialModules = [
23
+ const requiredPartialModules: any[] = [
24
24
  {{PartialModuleStmts requiredPartials}}
25
25
  ];
26
26
 
@@ -33,7 +33,6 @@ const requiredPartialModules = [
33
33
  RuntimeBaseModule
34
34
  ],
35
35
  exports: components,
36
- entryComponents: components
37
36
  })
38
37
  export class {{moduleName}} {
39
38
  static rootComponent = {{componentName}};
@@ -0,0 +1,38 @@
1
+ /**
2
+ * This file is used to extend the app runtime
3
+ *
4
+ * Custom Formatters:
5
+ * Used for data formatting across widgets. Apart from predefined formatter like toDate, toCurrency, prefix, etc, you can define custom formatters here.
6
+ * Once defined here, custom formatter appear in the "Use Expression" tab of data binding dialog.
7
+ * E.g. Here is sample custom formatter (for data formatting)
8
+ * myFormatter : {
9
+ * formatter : function(data, param1){
10
+ * // your logic goes here
11
+ * return data;
12
+ * },
13
+ * config: {
14
+ * param1: {
15
+ * name: '',
16
+ * widget: '',
17
+ * value: ''
18
+ * }...
19
+ * }
20
+ * }
21
+ *
22
+ * Terminology
23
+ * myFormatter : Name of the custom formatter
24
+ * formatter : Function where you can write the logic to format the data. The returned value from this function will be applied on the property this formatter is bound to
25
+ * config : parameter information required during the design time. List down all the parameters required for your formatter function
26
+ * Each param has following info
27
+ * - name : name of the parameter to display during design time
28
+ * - widget : widget to take parameter input from the user. E.g. text, select
29
+ * - value : default value if user doesn't provide any value
30
+ */
31
+
32
+ var WM_CUSTOM_FORMATTERS = (function(){
33
+ // Define custom formatters here.
34
+ return {
35
+
36
+ }
37
+
38
+ })();
@@ -31,7 +31,6 @@ const requiredPartialModules = [
31
31
  {{#if hasCustomElement}}
32
32
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
33
33
  {{/if}}
34
- entryComponents: [{{componentName}}]
35
34
  })
36
35
  export class {{moduleName}} {
37
36
  static rootComponent = {{componentName}};