@wavemaker/angular-codegen 11.10.5-rc.6100 → 11.11.0-rc.209
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.
- package/angular-app/angular.json +4 -11
- package/angular-app/build-scripts/post-build.js +7 -47
- package/angular-app/dependency-report.html +1 -1
- package/angular-app/npm-shrinkwrap.json +161 -277
- package/angular-app/package-lock.json +161 -277
- package/angular-app/package.json +11 -21
- package/angular-app/src/app/lazy-load-scripts.resolve.ts +2 -9
- package/angular-app/src/assets/styles/css/wm-style.css +1 -1
- package/angular-app/src/index.html +1 -1
- package/angular-app/src/main.ts +25 -31
- package/angular-app/tsconfig.json +0 -30
- package/angular-app/tsconfig.web-app.json +0 -21
- package/angular-app/wm-custom-webpack.config.js +18 -0
- package/build-angular-app.js +11 -7
- package/dependencies/app.component.html +34 -26
- package/dependencies/pipe-provider.cjs.js +24962 -186
- package/dependencies/transpilation-web.cjs.js +13329 -816
- package/download-packages.js +99 -31
- package/npm-shrinkwrap.json +99 -236
- package/package-lock.json +99 -236
- package/package.json +2 -2
- package/src/codegen.js +1 -1
- package/src/gen-app-codegen-module.js +1 -1
- package/src/gen-app-override-css.js +1 -1
- package/src/gen-app-routes.js +1 -1
- package/src/gen-components.js +1 -1
- package/src/gen-layouts.js +1 -1
- package/src/handlebar-helpers.js +1 -1
- package/src/pages-util.js +1 -1
- package/src/project-meta.js +1 -1
- package/src/update-angular-json.js +1 -1
- package/src/wm-utils.js +1 -1
- package/templates/app-routes.ts.hbs +2 -2
- package/templates/app.config.ts.hbs +128 -0
- package/templates/app.module.ts.hbs +0 -2
- package/templates/layout/layout.component.ts.hbs +26 -4
- package/templates/page/page.component.ts.hbs +36 -5
- package/dependencies/transpilation-mobile.cjs.js +0 -93554
package/src/gen-layouts.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const{deleteResource:deleteResource,createDir:createDir,writeFile:writeFile,readFile:readFile,getPagesDirPath:getPagesDirPath,getLayoutsDirPath:getLayoutsDirPath}=require("./wm-utils"),{getPagesConfig:getPagesConfig}=require("./project-meta"),util=require("util"),cheerio=require("cheerio"),{safeString:safeString}=require("./handlebar-helpers"),{formatMarkup:formatMarkup}=require("./wm-utils"),path=require("path"),ncp=util.promisify(require("ncp").ncp),createIntermediateAppSkeleton=async(e,t)=>{await deleteResource(t),await createDir(t,{recursive:!0}),await ncp(e,t,{filter:t=>!path.relative(e,t).startsWith("target")})},generateLayoutsAndPages=async e=>{const t=getLayoutsDirPath(e);await createDir(t,{recursive:!0});const a=await getPagesConfig(e),r=getPagesDirPath(e),n=[],i=[];for(let e of a)if("PAGE"===e.type){const a=await readFile(`${r}/${e.name}/${e.name}.html`,"utf8"),o=cheerio.load(a),
|
|
1
|
+
const{deleteResource:deleteResource,createDir:createDir,writeFile:writeFile,readFile:readFile,getPagesDirPath:getPagesDirPath,getLayoutsDirPath:getLayoutsDirPath}=require("./wm-utils"),{getPagesConfig:getPagesConfig}=require("./project-meta"),util=require("util"),cheerio=require("cheerio"),{safeString:safeString}=require("./handlebar-helpers"),{formatMarkup:formatMarkup}=require("./wm-utils"),path=require("path"),ncp=util.promisify(require("ncp").ncp),createIntermediateAppSkeleton=async(e,t)=>{await deleteResource(t),await createDir(t,{recursive:!0}),await ncp(e,t,{filter:t=>!path.relative(e,t).startsWith("target")}),await createDir(`${t}/target/ui-resources`,{recursive:!0}),console.log("copying ui-resources into destination"),await ncp(`${e}/target/ui-resources`,`${t}/target/ui-resources`)},generateLayoutsAndPages=async e=>{const t=getLayoutsDirPath(e);await createDir(t,{recursive:!0});const a=await getPagesConfig(e),r=getPagesDirPath(e),n=[],i=[];for(let e of a)if("PAGE"===e.type){const a=await readFile(`${r}/${e.name}/${e.name}.html`,"utf8"),o=cheerio.load(a),s=o("wm-page"),l=o("wm-page-content");["wm-alertdialog","wm-confirmdialog","wm-dialog","wm-iframedialog","wm-pagedialog","wm-logindialog"].forEach(e=>{const t=o(e);t.length&&l.append(t)});const u=await getLayoutMarkup(o,s,l,n);u.markup&&(n.push({name:u.name,layoutInfo:u.layoutInfo}),i.push({name:u.name,type:"LAYOUT"}),await createDir(`${t}/${u.name}`,{recursive:!0}),await writeFile(`${t}/${u.name}/${u.name}.html`,u.markup)),e.layout=u.name,l.attr("spa","true"),l.attr("columnwidth","12"),l.attr(s.attr()),l.attr("layout",u.name);const c=formatMarkup(safeString(l.toString()).string);await writeFile(`${r}/${e.name}/${e.name}.html`,c)}await writeFile(`${r}/pages-config.json`,JSON.stringify(a,null,4)),await writeFile(`${t}/layouts-config.json`,JSON.stringify(i,null,4))},getLayoutMarkup=async(e,t,a,r)=>{const n=getLayoutInfo(e);let i=getLayoutName(n,r);if(i)return{name:i};{const o=r.length+1;i=`layout_${o}`,n.leftNav&&e("wm-left-panel").attr("spa","true");const s=e("<wm-router-outlet>");s.attr("columnwidth",a.attr().columnwidth),e("wm-page-content").replaceWith(s);const l=e("<wm-layout>");return l.attr("name",`layout${o}`),l.append(t.children()),{name:i,markup:formatMarkup(safeString(l.toString()).string),layoutInfo:n}}},getLayoutInfo=e=>{const t={header:e("wm-header"),topNav:e("wm-top-nav"),leftNav:e("wm-left-panel"),rightNav:e("wm-right-panel"),footer:e("wm-footer")},a={};for(const e in t)if(t.hasOwnProperty(e)&&t[e].length){const r=t[e].attr().content,n=r&&r.startsWith("bind:"),i=t[e].children().length;a[e]={content:r,hasBindExpr:n,hasChildren:i}}return a},getLayoutName=(e,t)=>{for(const a of t)if(Object.keys(a.layoutInfo).sort().join(",")===Object.keys(e).sort().join(",")){if(Object.keys(e).every(t=>e[t].content===a.layoutInfo[t].content&&!(e[t].hasBindExpr||a.layoutInfo[t].hasBindExpr||e[t].hasChildren||a.layoutInfo[t].hasChildren)))return a.name}};module.exports={createIntermediateAppSkeleton:createIntermediateAppSkeleton,generateLayoutsAndPages:generateLayoutsAndPages};
|
package/src/handlebar-helpers.js
CHANGED
|
@@ -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="[(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
|
|
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 loadComponent: () => import('${n?"../..":"."}/pages/${t}/${t}.component').then(m => m.${getComponentName(t)}),\n ${a?`canActivate: ${a},`:""}\n data : {\n ${r?`allowedRoles: ${r},`:""}\n pageName: '${t}'\n },\n canDeactivate: [(component: CanComponentDeactivate, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState: RouterStateSnapshot) => inject(CanDeactivateNgPageGuard).canDeactivate(component, currentRoute, currentState, nextState)]\n }`},getLayoutRouteInfo=(e,t)=>`{\n path: "",\n resolve: appDependenciesResolve,\n loadComponent: () => import("./layouts/${e}/${e}.component").then(m => m.${getComponentName(e)}),\n data : { \n layoutName: '${e}' \n },\n ${t?`${t}`:""}\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("WMCustomComponentsImportStmts",(e=[])=>{const t=e.map(e=>`import { ${getComponentName(e.name)} as ${"WM_"+getComponentName(e.name)} } from '../../customwidgets/${e.name}/${e.name}.component';`).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}`).join(",\n\t");return safeString(t)}),Handlebars.registerHelper("WMCustomComponentStmts",e=>{const t=e.map(e=>`${"WM_"+getComponentName(e.name)}`).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("registerCustomWidgetConfig",e=>{const t=[];for(const[n,a]of e.entries())t.push(`registerCustomWidgetConfig('${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=>{const t=n.filter(t=>t.layout===e.name&&"PAGE"===t.type).map(e=>getPageRouteInfo(a,e.name,!1));let r="";return t.length&&(r=`\n children: [\n ${t.join(",\n")}\n ]`),getLayoutRouteInfo(e.name,r)}).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: [(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-config-ts",Handlebars.compile(fs.readFileSync(e+"app.config.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("customwidget-config",Handlebars.compile(fs.readFileSync(e+"customwidget/customwidget-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("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("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("customwidget-component-ts",Handlebars.compile(fs.readFileSync(e+"customwidget/customwidget.component.ts.hbs","utf-8"))),templates.set("customwidget-component-script",Handlebars.compile(fs.readFileSync(e+"customwidget/customwidget.component.script.js.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};
|
package/src/pages-util.js
CHANGED
|
@@ -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"),{config:config}=require("yargs"),nodePolyfill=require("node-window-polyfill").register(!1),getRequiredScripts=e=>{const t={
|
|
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"),{config:config}=require("yargs"),nodePolyfill=require("node-window-polyfill").register(!1),getRequiredScripts=e=>{const t={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 o=[];return _.each(t,(t,r)=>{e("["+r+"]").length>0&&(o=o.concat(t))}),o=o.map(e=>e.replace(/^(\.\/)/,"").replace(/\//g,"-").replace(/@/g,"")),_.uniq(o)},includesCustomElement=e=>{return cheerio.load(e)('[html-custom-element="true"]').length},_decodeURIComponent=e=>decodeURIComponent(e.replace(/\+/g," ")),getCustomWidgetPageContents=async(e,t)=>{try{jsonObject=e[t],styles=_decodeURIComponent(jsonObject.styles),variables=_decodeURIComponent(jsonObject.variables),markup=_decodeURIComponent(jsonObject.markup),script=_decodeURIComponent(jsonObject.script),configJson=_decodeURIComponent(jsonObject.config);let o=require("../dependencies/transpilation-web.cjs");const r=o.transpile(markup);return{markup:r.markup,script:script,styles:o.scopeComponentStyles(t,"WIDGET",styles),variables:variables,requiredWMComponents:r.requiredWMComponents.filter(e=>!e.platformType||"APPLICATION"===e.platformType),config:configJson}}catch(e){throw console.error(`error occurred in transpilation of ${t}`,e),e}},getPageContents=async(e,t,o,r,s,n,i)=>{try{const a=`${t}/${o}`,l=await readFile(`${a}.html`,"utf8");let d,u,c,p="{}";"LAYOUT"!==s&&(d=await readFile(`${a}.js`,"utf8"),u=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 m=(c=isMobileProject(e)?require("../dependencies/transpilation-mobile.cjs"):require("../dependencies/transpilation-web.cjs")).transpile(l),g=cheerio.load(m.markup),j=getRequiredScripts(g);return j.length>0&&(m.markup=m.markup.replace(">",` scripts-to-load="${j.join(",")}">`)),{markup:m.markup,script:d,styles:c.scopeComponentStyles(r,s,u),variables:p,expressions:i?generatePageExpressions(m.markup,p,n):"",requiredWMComponents:m.requiredWMComponents.filter(t=>!t.platformType||t.platformType===e.platformType),hasCustomElement:includesCustomElement(l)}}catch(e){throw console.error(`error occurred in transpilation of ${o}`,e),e}};module.exports={getPageContents:getPageContents,getCustomWidgetPageContents:getCustomWidgetPageContents};
|
package/src/project-meta.js
CHANGED
|
@@ -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(
|
|
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,getLegacyWmProjectPropertiesFilePath:getLegacyWmProjectPropertiesFilePath}=require("./wm-utils"),{join:join}=require("path"),getWmProjectProperties=async e=>{const t=getWmProjectPropertiesFilePath(e);try{const r=require(t);if(r.WMAppProperties)return r.WMAppProperties;throw new Error("WMAppProperties not found in the provided file.")}catch(t){return console.log("Using legacy wmproperties"),getLegacyWmProjectProperties(e)}},getLegacyWmProjectProperties=async e=>{let t=await readFile(getLegacyWmProjectPropertiesFilePath(e),"utf8");const r={};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=>r[e["@_key"]]=e.text?e.text:""),r},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,r)=>{let a=null;JSON.parse(await readFile(getAuthInfoFilePath(e))).enforceSecurity&&(a=JSON.parse(await readFile(getSecurityConfigPath(e),"utf8"))),t(a)}),()=>Promise.resolve(null)),getAuthInfoConfig=async e=>{let t=await readFile(getAuthInfoFilePath(e),"utf8");return(t=JSON.parse(t)).enforceSecurity?t: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 r=await readFile(`${getPrefabPagesDirPath(e,t)}/pages-config.json`,"utf8");return r=JSON.parse(r).filter(e=>"partial"===e.type.toLowerCase()||"template"===e.type.toLowerCase()).map(e=>({...e,prefabName:t}))},getPrefabConfigsUsedInApp=async(e,t)=>{const r=new Map,a=getPrefabsDirPath(t);return stat(a).then(()=>new Promise(async(i,o)=>{for(const e of await readDir(a))(await stat(join(a,e))).isDirectory()&&r.set(e,await readFile(getPrefabConfigPath(t,e)));isPrefabProject(e)&&r.set("__self__",await readFile(`${t}/src/main/webapp/config.json`)),i(r)}),()=>Promise.resolve(r))};module.exports={getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig,getAuthInfoConfig:getAuthInfoConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const cheerio=require("cheerio"),{writeFile:writeFile,readFileSync:readFileSync,readDir:readDir,isMobileProject:isMobileProject,isPrismProject:isPrismProject,APP_OVERRIDE_CSS_PATH:APP_OVERRIDE_CSS_PATH}=require("./wm-utils"),markScriptsAsLazy=s=>{const e=["./node_modules/d3/dist/d3.min.js","./node_modules/@wavemaker/nvd3/build/nv.d3.min.js","./node_modules/
|
|
1
|
+
const cheerio=require("cheerio"),{writeFile:writeFile,readFileSync:readFileSync,readDir:readDir,isMobileProject:isMobileProject,isPrismProject:isPrismProject,APP_OVERRIDE_CSS_PATH:APP_OVERRIDE_CSS_PATH}=require("./wm-utils"),markScriptsAsLazy=s=>{const e=["./node_modules/d3/dist/d3.min.js","./node_modules/@wavemaker/nvd3/build/nv.d3.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"];if("string"==typeof s){let t=s.replace(/^(\.\/)/,"").replace(/\//g,"-").replace(/@/g,"");if(t=t.substring(0,t.lastIndexOf(".")),t+="-NOHASH",e.includes(s))return{input:s,inject:!1,bundleName:t}}return s},setBuildCustomizations=async s=>{const e=s.projects["angular-app"].architect.build,t=e.options.scripts;e.options.scripts=t.map(s=>markScriptsAsLazy(s))},addToScripts=async(s,e,t=[],i=[])=>{const n=`${e}/angular.json`;let o=readFileSync(n,!0);const a=o.projects["angular-app"].architect.build;let r=a.options.scripts;const l=`${e+"/src/app/extensions"}`,u=await readDir(l);u.length&&i.push("./src/app/extensions/"+u[0]),a.options.scripts=[...t,...r,...i],await writeFile(n,JSON.stringify(o,null,4))},updateAngularJSON=async(s,e,t,i,n,o,a,r,l,u)=>{const c=`${e}/angular.json`;let p=readFileSync(c,!0);const d=p.projects["angular-app"].architect.build;a&&a.trim().length>0&&(d.options.deployUrl=a),d.options.outputPath=d.options.outputPath+"/"+global.randomHash;let m=d.options.styles;if(isPrismProject(t)&&((m=m.filter(s=>"string"==typeof s?!(s.includes("src/assets/styles/css/wm-style.css")||s.includes("src/assets/styles/css/wm-responsive.css")):"object"!=typeof s||!s.input||!s.input.includes("src/assets/themes/material/style.css"))).push("./node_modules/@wavemaker/foundation-css/foundation/foundation.css"),m.push({input:`src/assets/${APP_OVERRIDE_CSS_PATH}`,inject:!1,bundleName:"wm-styles"}),d.options.styles=m),isMobileProject(t)){const s=m.findIndex(s=>{let e="object"==typeof s;if(e){return(e?s.input:s).includes("themes")}return!1}),e=m[s].input;m[s].bundleName="wm-android-styles",m[s].input=m[s].input.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/android/style.css`);const t=Object.assign({},m[s]);t.input=e.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/ios/style.css`),t.bundleName="wm-ios-styles",m.push(t);const n=m.findIndex(s=>{let e="object"==typeof s;if(e){return"src/assets/app.css"===(e?s.input:s)}return!1});m[n].bundleName="wm-android-styles";const o=Object.assign({},m[n]);o.bundleName="wm-ios-styles",m.push(o)}m.forEach((s,e)=>{let t="object"==typeof s,n=t?s.input:s;!n.includes("themes")||n.includes("/android/")||n.includes("/ios/")||(t?m[e].input=n.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/style.css`):m[e]=n.replace(new RegExp("/[a-z]*/style.css$"),`/${i.activeTheme}/style.css`))});const g=d.options.assets,y=[],j=[{patterns:y,path:"angular/global"}];if("STATIC"===t.languageBundleSources)for(const s of Object.values(t.supportedLanguages))s.angular&&y.push(`${s.angular}.js`);j.forEach(({patterns:s=[],path:e})=>{let t="**/*";1==s.length?t=s[0]:s.length>1&&(t=`{${s.join(",")}}`),["libraries/locales","node_modules/@wavemaker/app-ng-runtime/locales"].forEach(s=>{(s=>{const e=g.find(e=>e.input===s.input&&e.output===s.output);e?e.glob=s.glob:g.push(s)})({glob:t,input:`${s}/${e}`,output:`/locales/${e}`})})}),d.options.assets=g,await setBuildCustomizations(p);const b=d.configurations.production;if(b.aot=!1!==r.aot,b.buildOptimizer=!1!==r.buildOptimizer,u){const s=d.options.assets;s.push("src/manifest.json"),s.push("src/wmsw-worker.js"),b.serviceWorker=!0,b.ngswConfigPath="ngsw-config.json",delete d.options.customWebpackConfig}await writeFile(c,JSON.stringify(p,null,4))};module.exports={updateAngularJSON:updateAngularJSON,addToScripts:addToScripts};
|
package/src/wm-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const util=require("util"),fs=require("fs"),rimraf=require("rimraf"),decodeUriComponent=require("decode-uri-component"),upperFirst=require("lodash/upperFirst"),tar=require("tar-fs"),prettier=require("prettier"),js_beautify=require("js-beautify"),html_beautify=require("js-beautify").html,path=require("path"),stat=util.promisify(fs.stat),createDir=util.promisify(fs.mkdir),createReadStream=util.promisify(fs.createReadStream),readFile=util.promisify(fs.readFile),writeFile=util.promisify(fs.writeFile),readDir=util.promisify(fs.readdir),rename=util.promisify(fs.rename),searchFileByName=(e,t,r)=>{if(!fs.existsSync(e))return;fs.readdirSync(e).forEach(i=>{const a=path.join(e,i);fs.lstatSync(a).isDirectory()?searchFileByName(a,t,r):t.test(a)&&r(a)})},deleteResource=async e=>stat(e).then(()=>new Promise((t,r)=>{rimraf(e,()=>t())}),()=>Promise.resolve()),getComponentName=e=>`${upperFirst(e)}Component`,getComponentModuleName=e=>`${upperFirst(e)}Module`,decodeURIComponent=e=>decodeUriComponent(e.replace(/\+/g," ")),createTar=(e,t)=>new Promise((r,i)=>{tar.pack(e).pipe(fs.createWriteStream(t)).on("finish",r)}),extractTar=(e,t)=>new Promise((r,i)=>{fs.createReadStream(e).pipe(tar.extract(t)).on("finish",r)}),getWebAppPath=e=>`${e}/src/main/webapp`,getLayoutsConfigPath=e=>`${getWebAppPath(e)}/layouts/layouts-config.json`,getLayoutsDirPath=e=>`${getWebAppPath(e)}/layouts`,getPagesDirPath=e=>`${getWebAppPath(e)}/pages`,getPagesConfigPath=e=>`${getWebAppPath(e)}/pages/pages-config.json`,getPrefabsDirPath=e=>`${getWebAppPath(e)}/WEB-INF/prefabs`,getPrefabConfigPath=(e,t)=>`${getPrefabsDirPath(e)}/${t}/webapp/config.json`,getPrefabPagesDirPath=(e,t)=>`${getPrefabsDirPath(e)}/${t}/webapp/pages`,getSecurityConfigPath=e=>`${e}/services/securityService/designtime/intercept-urls.json`,getRolesConfigPath=e=>`${e}/services/securityService/designtime/roles.json`,getAuthInfoFilePath=e=>`${e}/services/securityService/designtime/auth-info.json`,getAppJsFilePath=e=>`${getWebAppPath(e)}/app.js`,getAppVariablesFilePath=e=>`${getWebAppPath(e)}/app.variables.json`,getThemesConfigPropertiesFilePath=e=>`${getWebAppPath(e)}/themes/themes-config.json`,getWmProjectPropertiesFilePath=e=>`${e}/.wmproject.properties`,getIndexHtmlPath=e=>`${getWebAppPath(e)}/index.html`;let codegenPath="./node_modules/@wavemaker/angular-codegen";const setCodegenPath=e=>{e&&(codegenPath=e)},getCodegenPath=()=>codegenPath,generateRandomHash=()=>Array.from(Array(20),()=>Math.floor(36*Math.random()).toString(36)).join(""),formatContents=(e="",t)=>"javascript"===t?js_beautify(e,{}):prettier.format(e,{semi:!1,parser:"typescript",tabWidth:4}),formatMarkup=(e="")=>html_beautify(e),isMobileProject=e=>"MOBILE"===e.platformType,isPrefabProject=e=>"PREFAB"===e.type,isPrismProject=e=>"PRISM"===e.template,readFileSync=(e,t)=>{let r=fs.readFileSync(e);return t?JSON.parse(r):r};function copyFileSync(e,t){try{fs.copyFileSync(e,t)}catch(t){console.error(`Error copying ${e}: ${t.message}`)}}function copyPrefabFiles(e,t){const r=path.resolve(`${e}`);if(fs.existsSync(r)){const e=fs.readdirSync(r).filter(e=>fs.statSync(path.join(r,e)).isDirectory());t=path.resolve(`${t}`),e.forEach(e=>{const i=path.join(r,e),a=path.join(i,"prefab-servicedefs.json");fs.existsSync(a)&©FileSync(a,path.join(t+"/src","servicedefs",`${e}-prefab-servicedefs.json`));const s=path.join(i,"webapp"),o=path.join(t+"/resources",e);fs.existsSync(s)&©DirWithExclusionsSync(s,o,["resources"]);const n=path.join(s,"resources"),c=path.join(t+"/resources",e+"/resources");fs.existsSync(n)&©DirWithExclusionsSync(n,c)})}}const copyDirWithExclusionsSync=(e,t,r=[])=>{fs.existsSync(t)||fs.mkdirSync(t,{recursive:!0});let i=[];try{i=fs.readdirSync(e,{withFileTypes:!0})}catch(e){if("ENOENT"!==e.code)throw e}for(const a of i){const i=path.join(e,a.name),s=path.join(t,a.name);r.includes(a.name)||(a.isDirectory()?copyDirWithExclusionsSync(i,s,r):fs.copyFileSync(i,s))}},initExpressionParser=()=>{const e=require("../dependencies/expression-parser.cjs"),t=require("../dependencies/pipe-provider.cjs");e.setPipeProvider(new t.PipeProvider({},{get:()=>{}},{}))},DESIGN_TOKENS_DIR_NAME="themes",APP_OVERRIDE_CSS_PATH="themes/app.override.css",OVERRIDE_TOKENS_PATH="themes/overrides";module.exports={stat:stat,createDir:createDir,createReadStream:createReadStream,readFile:readFile,writeFile:writeFile,deleteResource:deleteResource,getComponentName:getComponentName,getComponentModuleName:getComponentModuleName,decodeURIComponent:decodeURIComponent,createTar:createTar,extractTar:extractTar,readDir:readDir,rename:rename,searchFileByName:searchFileByName,getWebAppPath:getWebAppPath,getLayoutsConfigPath:getLayoutsConfigPath,getLayoutsDirPath:getLayoutsDirPath,getPagesDirPath:getPagesDirPath,getPagesConfigPath:getPagesConfigPath,getPrefabsDirPath:getPrefabsDirPath,getPrefabConfigPath:getPrefabConfigPath,getPrefabPagesDirPath:getPrefabPagesDirPath,getSecurityConfigPath:getSecurityConfigPath,getRolesConfigPath:getRolesConfigPath,getAuthInfoFilePath:getAuthInfoFilePath,getAppJsFilePath:getAppJsFilePath,getAppVariablesFilePath:getAppVariablesFilePath,getWmProjectPropertiesFilePath:getWmProjectPropertiesFilePath,getThemesConfigPropertiesFilePath:getThemesConfigPropertiesFilePath,getIndexHtmlPath:getIndexHtmlPath,formatContents:formatContents,formatMarkup:formatMarkup,isMobileProject:isMobileProject,isPrefabProject:isPrefabProject,isPrismProject:isPrismProject,readFileSync:readFileSync,getCodegenPath:getCodegenPath,setCodegenPath:setCodegenPath,initExpressionParser:initExpressionParser,copyFileSync:copyFileSync,copyPrefabFiles:copyPrefabFiles,generateRandomHash:generateRandomHash,copyDirWithExclusionsSync:copyDirWithExclusionsSync,DESIGN_TOKENS_DIR_NAME:"themes",APP_OVERRIDE_CSS_PATH:APP_OVERRIDE_CSS_PATH,OVERRIDE_TOKENS_PATH:"themes/overrides"};
|
|
1
|
+
const util=require("util"),fs=require("fs"),rimraf=require("rimraf"),decodeUriComponent=require("decode-uri-component"),upperFirst=require("lodash/upperFirst"),tar=require("tar-fs"),prettier=require("prettier"),js_beautify=require("js-beautify"),html_beautify=require("js-beautify").html,path=require("path"),stat=util.promisify(fs.stat),createDir=util.promisify(fs.mkdir),createReadStream=util.promisify(fs.createReadStream),readFile=util.promisify(fs.readFile),writeFile=util.promisify(fs.writeFile),readDir=util.promisify(fs.readdir),rename=util.promisify(fs.rename),searchFileByName=(e,t,r)=>{if(!fs.existsSync(e))return;fs.readdirSync(e).forEach(i=>{const a=path.join(e,i);fs.lstatSync(a).isDirectory()?searchFileByName(a,t,r):t.test(a)&&r(a)})},deleteResource=async e=>stat(e).then(()=>new Promise((t,r)=>{rimraf(e,()=>t())}),()=>Promise.resolve()),getComponentName=e=>`${upperFirst(e)}Component`,getComponentModuleName=e=>`${upperFirst(e)}Module`,decodeURIComponent=e=>decodeUriComponent(e.replace(/\+/g," ")),createTar=(e,t)=>new Promise((r,i)=>{tar.pack(e).pipe(fs.createWriteStream(t)).on("finish",r)}),extractTar=(e,t)=>new Promise((r,i)=>{fs.createReadStream(e).pipe(tar.extract(t)).on("finish",r)}),getWebAppPath=e=>`${e}/src/main/webapp`,getLayoutsConfigPath=e=>`${getWebAppPath(e)}/layouts/layouts-config.json`,getLayoutsDirPath=e=>`${getWebAppPath(e)}/layouts`,getPagesDirPath=e=>`${getWebAppPath(e)}/pages`,getPagesConfigPath=e=>`${getWebAppPath(e)}/pages/pages-config.json`,getPrefabsDirPath=e=>`${getWebAppPath(e)}/WEB-INF/prefabs`,getPrefabConfigPath=(e,t)=>`${getPrefabsDirPath(e)}/${t}/webapp/config.json`,getPrefabPagesDirPath=(e,t)=>`${getPrefabsDirPath(e)}/${t}/webapp/pages`,getSecurityConfigPath=e=>`${e}/services/securityService/designtime/intercept-urls.json`,getRolesConfigPath=e=>`${e}/services/securityService/designtime/roles.json`,getAuthInfoFilePath=e=>`${e}/services/securityService/designtime/auth-info.json`,getAppJsFilePath=e=>`${getWebAppPath(e)}/app.js`,getAppVariablesFilePath=e=>`${getWebAppPath(e)}/app.variables.json`,getThemesConfigPropertiesFilePath=e=>`${getWebAppPath(e)}/themes/themes-config.json`,getWmProjectPropertiesFilePath=e=>`${e}/target/ui-resources/wmProperties.js`,getLegacyWmProjectPropertiesFilePath=e=>`${e}/.wmproject.properties`,getIndexHtmlPath=e=>`${getWebAppPath(e)}/index.html`;let codegenPath="./node_modules/@wavemaker/angular-codegen";const setCodegenPath=e=>{e&&(codegenPath=e)},getCodegenPath=()=>codegenPath,generateRandomHash=()=>Array.from(Array(20),()=>Math.floor(36*Math.random()).toString(36)).join(""),formatContents=(e="",t)=>"javascript"===t?js_beautify(e,{}):prettier.format(e,{semi:!1,parser:"typescript",tabWidth:4}),formatMarkup=(e="")=>html_beautify(e),isMobileProject=e=>"MOBILE"===e.platformType,isPrefabProject=e=>"PREFAB"===e.type,isPrismProject=e=>"PRISM"===e.template,readFileSync=(e,t)=>{let r=fs.readFileSync(e);return t?JSON.parse(r):r};function copyFileSync(e,t){try{fs.copyFileSync(e,t)}catch(t){console.error(`Error copying ${e}: ${t.message}`)}}function copyPrefabFiles(e,t){const r=path.resolve(`${e}`);if(fs.existsSync(r)){const e=fs.readdirSync(r).filter(e=>fs.statSync(path.join(r,e)).isDirectory());t=path.resolve(`${t}`),e.forEach(e=>{const i=path.join(r,e),a=path.join(i,"prefab-servicedefs.json");fs.existsSync(a)&©FileSync(a,path.join(t+"/src","servicedefs",`${e}-prefab-servicedefs.json`));const s=path.join(i,"webapp"),o=path.join(t+"/resources",e);fs.existsSync(s)&©DirWithExclusionsSync(s,o,["resources"]);const n=path.join(s,"resources"),c=path.join(t+"/resources",e+"/resources");fs.existsSync(n)&©DirWithExclusionsSync(n,c)})}}const copyDirWithExclusionsSync=(e,t,r=[])=>{fs.existsSync(t)||fs.mkdirSync(t,{recursive:!0});let i=[];try{i=fs.readdirSync(e,{withFileTypes:!0})}catch(e){if("ENOENT"!==e.code)throw e}for(const a of i){const i=path.join(e,a.name),s=path.join(t,a.name);r.includes(a.name)||(a.isDirectory()?copyDirWithExclusionsSync(i,s,r):fs.copyFileSync(i,s))}},initExpressionParser=()=>{const e=require("../dependencies/expression-parser.cjs"),t=require("../dependencies/pipe-provider.cjs");e.setPipeProvider(new t.PipeProvider({},{get:()=>{}},{}))},DESIGN_TOKENS_DIR_NAME="themes",APP_OVERRIDE_CSS_PATH="themes/app.override.css",OVERRIDE_TOKENS_PATH="themes/overrides";module.exports={stat:stat,createDir:createDir,createReadStream:createReadStream,readFile:readFile,writeFile:writeFile,deleteResource:deleteResource,getComponentName:getComponentName,getComponentModuleName:getComponentModuleName,decodeURIComponent:decodeURIComponent,createTar:createTar,extractTar:extractTar,readDir:readDir,rename:rename,searchFileByName:searchFileByName,getWebAppPath:getWebAppPath,getLayoutsConfigPath:getLayoutsConfigPath,getLayoutsDirPath:getLayoutsDirPath,getPagesDirPath:getPagesDirPath,getPagesConfigPath:getPagesConfigPath,getPrefabsDirPath:getPrefabsDirPath,getPrefabConfigPath:getPrefabConfigPath,getPrefabPagesDirPath:getPrefabPagesDirPath,getSecurityConfigPath:getSecurityConfigPath,getRolesConfigPath:getRolesConfigPath,getAuthInfoFilePath:getAuthInfoFilePath,getAppJsFilePath:getAppJsFilePath,getAppVariablesFilePath:getAppVariablesFilePath,getWmProjectPropertiesFilePath:getWmProjectPropertiesFilePath,getThemesConfigPropertiesFilePath:getThemesConfigPropertiesFilePath,getIndexHtmlPath:getIndexHtmlPath,formatContents:formatContents,formatMarkup:formatMarkup,isMobileProject:isMobileProject,isPrefabProject:isPrefabProject,isPrismProject:isPrismProject,readFileSync:readFileSync,getCodegenPath:getCodegenPath,setCodegenPath:setCodegenPath,initExpressionParser:initExpressionParser,copyFileSync:copyFileSync,copyPrefabFiles:copyPrefabFiles,generateRandomHash:generateRandomHash,copyDirWithExclusionsSync:copyDirWithExclusionsSync,DESIGN_TOKENS_DIR_NAME:"themes",APP_OVERRIDE_CSS_PATH:APP_OVERRIDE_CSS_PATH,OVERRIDE_TOKENS_PATH:"themes/overrides",getLegacyWmProjectPropertiesFilePath:getLegacyWmProjectPropertiesFilePath};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Routes } from '@angular/router';
|
|
1
|
+
import { Routes, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
|
|
2
2
|
|
|
3
|
-
import { AppJSResolve, AppExtensionJSResolve, AppVariablesResolve, {{#
|
|
3
|
+
import { AppJSResolve, CanDeactivateNgPageGuard, CanComponentDeactivate, AppExtensionJSResolve, AppVariablesResolve, {{#if enableSecurity}}AuthGuard, RoleGuard, {{/if}} EmptyPageComponent, PageNotFoundGuard } from '@wm/runtime/base';
|
|
4
4
|
|
|
5
5
|
import { LazyLoadScriptsResolve } from './lazy-load-scripts.resolve';
|
|
6
6
|
import { inject } from "@angular/core"
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { ApplicationConfig, importProvidersFrom } from "@angular/core";
|
|
2
|
+
import { provideRouter, RouteReuseStrategy, withComponentInputBinding, withHashLocation } from "@angular/router";
|
|
3
|
+
import { provideHttpClient, withXsrfConfiguration } from "@angular/common/http";
|
|
4
|
+
import { provideAnimations } from "@angular/platform-browser/animations";
|
|
5
|
+
import { routes } from "./app.routes";
|
|
6
|
+
import { HttpServiceImpl } from "@wm/http";
|
|
7
|
+
import { SecurityService } from "@wm/security";
|
|
8
|
+
import { WmComponentsModule } from "@wm/components/base";
|
|
9
|
+
import { VariablesService, MetadataService } from "@wm/variables";
|
|
10
|
+
import { OAuthService } from "@wm/oAuth";
|
|
11
|
+
import { PageDirective{{#if enableSpa}}, SpaPageDirective{{/if}} } from "@wm/components/page";
|
|
12
|
+
import {
|
|
13
|
+
AppJSProvider,
|
|
14
|
+
AppVariablesProvider,
|
|
15
|
+
ComponentRefProvider,
|
|
16
|
+
PrefabConfigProvider,
|
|
17
|
+
WmNgRouteReuseStrategy,
|
|
18
|
+
CanDeactivateNgPageGuard,
|
|
19
|
+
AppExtensionProvider,
|
|
20
|
+
CustomwidgetConfigProvider,
|
|
21
|
+
AppDefaultsService,
|
|
22
|
+
AppExtensionJSResolve,
|
|
23
|
+
AppJSResolve,
|
|
24
|
+
AppManagerService,
|
|
25
|
+
AppRef,
|
|
26
|
+
I18nServiceImpl,
|
|
27
|
+
NavigationServiceImpl,
|
|
28
|
+
SpinnerServiceImpl,
|
|
29
|
+
ToasterServiceImpl,
|
|
30
|
+
DynamicComponentRefProviderService,
|
|
31
|
+
RuntimeBaseModule
|
|
32
|
+
} from "@wm/runtime/base";
|
|
33
|
+
|
|
34
|
+
import { AppJSProviderService } from "../framework/services/app-js-provider.service";
|
|
35
|
+
import { AppVariablesProviderService } from "../framework/services/app-variables-provider.service";
|
|
36
|
+
import { AppExtensionProviderService } from "../framework/services/app-extension.service";
|
|
37
|
+
import { ComponentRefProviderService } from "../framework/services/component-ref-provider.service";
|
|
38
|
+
import { PrefabConfigProviderService } from "../framework/services/prefab-config-provider.service";
|
|
39
|
+
import { CustomwidgetConfigProviderService } from "../framework/services/customwidget-config-provider.service";
|
|
40
|
+
import { LazyLoadScriptsResolve } from "./lazy-load-scripts.resolve";
|
|
41
|
+
import {
|
|
42
|
+
AbstractHttpService,
|
|
43
|
+
AbstractI18nService,
|
|
44
|
+
AbstractNavigationService,
|
|
45
|
+
AbstractSpinnerService,
|
|
46
|
+
AbstractToasterService,
|
|
47
|
+
App,
|
|
48
|
+
AppDefaults,
|
|
49
|
+
CustomWidgetRefProvider,
|
|
50
|
+
DynamicComponentRefProvider,
|
|
51
|
+
PartialRefProvider
|
|
52
|
+
} from "@wm/core";
|
|
53
|
+
import { ModalModule } from "ngx-bootstrap/modal";
|
|
54
|
+
import { ToastNoAnimationModule } from "ngx-toastr";
|
|
55
|
+
import { BsDatepickerModule } from "ngx-bootstrap/datepicker";
|
|
56
|
+
import { NgCircleProgressModule } from "ng-circle-progress";
|
|
57
|
+
import { LocationStrategy, HashLocationStrategy, DatePipe } from "@angular/common";
|
|
58
|
+
import { initPrefabConfig } from "./prefabs/prefab-config";
|
|
59
|
+
|
|
60
|
+
{{#if isPwa}}
|
|
61
|
+
import { ServiceWorkerModule } from "@angular/service-worker";
|
|
62
|
+
import { environment } from "../environments/environment";
|
|
63
|
+
{{/if}}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
export const isPrefabInitialized = initPrefabConfig();
|
|
67
|
+
|
|
68
|
+
const wmModules = [
|
|
69
|
+
importProvidersFrom(
|
|
70
|
+
ModalModule.forRoot(),
|
|
71
|
+
ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true }),
|
|
72
|
+
BsDatepickerModule.forRoot(),
|
|
73
|
+
NgCircleProgressModule.forRoot(),
|
|
74
|
+
WmComponentsModule.forRoot(),
|
|
75
|
+
RuntimeBaseModule.forRoot(),
|
|
76
|
+
{{#if isPwa}}
|
|
77
|
+
ServiceWorkerModule.register("wmsw-worker.js", { enabled: environment.production })
|
|
78
|
+
{{/if}}
|
|
79
|
+
)
|
|
80
|
+
];
|
|
81
|
+
export const xsrfHeaderName = "{{xsrfTokenHeaderName}}";
|
|
82
|
+
|
|
83
|
+
export const appConfig: ApplicationConfig = {
|
|
84
|
+
providers: [
|
|
85
|
+
// Provide Angular core services
|
|
86
|
+
provideRouter(routes, withHashLocation(), withComponentInputBinding()),
|
|
87
|
+
provideHttpClient(
|
|
88
|
+
withXsrfConfiguration({
|
|
89
|
+
cookieName: "wm_xsrf_token",
|
|
90
|
+
headerName: xsrfHeaderName
|
|
91
|
+
})
|
|
92
|
+
),
|
|
93
|
+
provideAnimations(),
|
|
94
|
+
// Provide application-specific services
|
|
95
|
+
{ provide: AppJSProvider, useClass: AppJSProviderService },
|
|
96
|
+
{ provide: AppVariablesProvider, useClass: AppVariablesProviderService },
|
|
97
|
+
{ provide: AppExtensionProvider, useClass: AppExtensionProviderService },
|
|
98
|
+
{ provide: ComponentRefProvider, useClass: ComponentRefProviderService },
|
|
99
|
+
{ provide: CustomWidgetRefProvider, useClass: ComponentRefProviderService },
|
|
100
|
+
{ provide: PrefabConfigProvider, useClass: PrefabConfigProviderService },
|
|
101
|
+
{ provide: CustomwidgetConfigProvider, useClass: CustomwidgetConfigProviderService },
|
|
102
|
+
{ provide: RouteReuseStrategy, useClass: WmNgRouteReuseStrategy },
|
|
103
|
+
{ provide: LocationStrategy, useClass: HashLocationStrategy },
|
|
104
|
+
{ provide: PartialRefProvider, useClass: ComponentRefProviderService },
|
|
105
|
+
{ provide: AbstractI18nService, useClass: I18nServiceImpl },
|
|
106
|
+
{ provide: AppDefaults, useClass: AppDefaultsService },
|
|
107
|
+
{ provide: AbstractHttpService, useClass: HttpServiceImpl },
|
|
108
|
+
{ provide: AbstractSpinnerService, useClass: SpinnerServiceImpl },
|
|
109
|
+
{ provide: App, useClass: AppRef },
|
|
110
|
+
{ provide: AbstractNavigationService, useClass: NavigationServiceImpl },
|
|
111
|
+
{ provide: AbstractToasterService, useClass: ToasterServiceImpl },
|
|
112
|
+
{ provide: DynamicComponentRefProvider, useClass: DynamicComponentRefProviderService, },
|
|
113
|
+
PageDirective,
|
|
114
|
+
AppManagerService,
|
|
115
|
+
DatePipe,
|
|
116
|
+
{{#if enableSpa}}SpaPageDirective,{{/if}}
|
|
117
|
+
AppJSResolve,
|
|
118
|
+
AppExtensionJSResolve,
|
|
119
|
+
SecurityService,
|
|
120
|
+
OAuthService,
|
|
121
|
+
VariablesService,
|
|
122
|
+
MetadataService,
|
|
123
|
+
// Other application-wide services
|
|
124
|
+
CanDeactivateNgPageGuard,
|
|
125
|
+
LazyLoadScriptsResolve,
|
|
126
|
+
...wmModules
|
|
127
|
+
]
|
|
128
|
+
};
|
|
@@ -236,12 +236,10 @@ import { SecurityModule } from "@wm/security";
|
|
|
236
236
|
import { WmComponentsModule } from "@wm/components/base";
|
|
237
237
|
import { VariablesModule } from "@wm/variables";
|
|
238
238
|
import { OAuthModule } from "@wm/oAuth";
|
|
239
|
-
import { MobileRuntimeModule } from "@wm/mobile/runtime";
|
|
240
239
|
import { PageDirective } from "@wm/components/page";
|
|
241
240
|
|
|
242
241
|
const WM_MODULES_FOR_ROOT = [
|
|
243
242
|
WmComponentsModule.forRoot(),
|
|
244
|
-
MobileRuntimeModule.forRoot(),
|
|
245
243
|
CoreModule.forRoot(),
|
|
246
244
|
SecurityModule.forRoot(),
|
|
247
245
|
OAuthModule.forRoot(),
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { Component, Injector, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
|
|
3
2
|
import { UserDefinedExecutionContext } from '@wm/core';
|
|
4
|
-
import { SpaPageDirective } from "@wm/components/page";
|
|
5
3
|
import { BaseLayoutComponent } from '@wm/runtime/base';
|
|
6
|
-
|
|
7
4
|
import { expressionData } from './{{name}}.component.expressions';
|
|
5
|
+
import { CommonModule as NgCommonModule } from '@angular/common';
|
|
6
|
+
import { RuntimeBaseModule } from '@wm/runtime/base';
|
|
7
|
+
|
|
8
|
+
{{WMComponentsImportStmts requiredWMComponents}}
|
|
9
|
+
|
|
10
|
+
{{PartialModuleImportStmts requiredPartials}}
|
|
11
|
+
|
|
12
|
+
const requiredComponentModules = [
|
|
13
|
+
{{WMComponentModuleStmts requiredWMComponents}}
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const requiredPartialModules = [
|
|
17
|
+
{{PartialModuleStmts requiredPartials}}
|
|
18
|
+
];
|
|
19
|
+
|
|
8
20
|
|
|
9
21
|
@Component({
|
|
10
22
|
selector: 'app-page-{{name}}',
|
|
@@ -15,7 +27,17 @@ import { expressionData } from './{{name}}.component.expressions';
|
|
|
15
27
|
provide: UserDefinedExecutionContext,
|
|
16
28
|
useExisting: {{componentName}}
|
|
17
29
|
}
|
|
18
|
-
]
|
|
30
|
+
],
|
|
31
|
+
standalone: true,
|
|
32
|
+
imports: [
|
|
33
|
+
...requiredComponentModules,
|
|
34
|
+
...requiredPartialModules,
|
|
35
|
+
RuntimeBaseModule,
|
|
36
|
+
NgCommonModule,
|
|
37
|
+
],
|
|
38
|
+
{{#if hasCustomElement}}
|
|
39
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
40
|
+
{{/if}}
|
|
19
41
|
})
|
|
20
42
|
export class {{componentName}} extends BaseLayoutComponent {
|
|
21
43
|
layoutName = '{{name}}';
|
|
@@ -1,12 +1,32 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
|
|
1
|
+
import { Component, ViewEncapsulation, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
3
2
|
import { UserDefinedExecutionContext } from '@wm/core';
|
|
4
|
-
|
|
5
3
|
import { initScript } from './{{name}}.component.script';
|
|
6
4
|
import { getVariables } from './{{name}}.component.variables';
|
|
7
5
|
import { expressionData } from './{{name}}.component.expressions';
|
|
6
|
+
import { CommonModule } from '@angular/common';
|
|
7
|
+
import { RuntimeBaseModule } from '@wm/runtime/base';
|
|
8
|
+
import { {{#if enableSpa}}BaseSpaPageComponent{{else}}BasePageComponent{{/if}} } from '@wm/runtime/base';
|
|
9
|
+
|
|
10
|
+
{{WMComponentsImportStmts requiredWMComponents}}
|
|
11
|
+
{{WMCustomComponentsImportStmts requireCustomComponents}}
|
|
12
|
+
{{PartialModuleImportStmts requiredPartials}}
|
|
13
|
+
|
|
14
|
+
{{#if requireCustomComponents}}
|
|
15
|
+
import { initCustomWidgetConfig } from '../../customwidgets/customwidget-config';
|
|
16
|
+
initCustomWidgetConfig();
|
|
17
|
+
{{/if}}
|
|
18
|
+
|
|
19
|
+
const requiredComponentModules = [
|
|
20
|
+
{{WMComponentModuleStmts requiredWMComponents}}
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const requiredCustomWidgetComponents= [
|
|
24
|
+
{{WMCustomComponentStmts requireCustomComponents}}
|
|
25
|
+
]
|
|
8
26
|
|
|
9
|
-
|
|
27
|
+
const requiredPartialModules: any[] = [
|
|
28
|
+
{{PartialModuleStmts requiredPartials}}
|
|
29
|
+
];
|
|
10
30
|
|
|
11
31
|
@Component({
|
|
12
32
|
selector: 'app-page-{{name}}',
|
|
@@ -18,7 +38,18 @@ import { AppRef, {{#if enableSpa}}BaseSpaPageComponent{{else}}BasePageComponent{
|
|
|
18
38
|
provide: UserDefinedExecutionContext,
|
|
19
39
|
useExisting: {{componentName}}
|
|
20
40
|
}
|
|
21
|
-
]
|
|
41
|
+
],
|
|
42
|
+
standalone: true,
|
|
43
|
+
imports: [
|
|
44
|
+
...requiredComponentModules,
|
|
45
|
+
...requiredPartialModules,
|
|
46
|
+
...requiredCustomWidgetComponents,
|
|
47
|
+
CommonModule,
|
|
48
|
+
RuntimeBaseModule
|
|
49
|
+
],
|
|
50
|
+
{{#if hasCustomElement}}
|
|
51
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
|
|
52
|
+
{{/if}}
|
|
22
53
|
})
|
|
23
54
|
export class {{componentName}} extends {{#if enableSpa}}BaseSpaPageComponent{{else}}BasePageComponent{{/if}} {
|
|
24
55
|
|