UNPKG

@jamarsto/kiunzi-micro-frontend-tools

Version:
1 lines 42.3 kB
{"version":3,"file":"jamarsto-kiunzi-micro-frontend-tools.mjs","sources":["../../../projects/kiunzi-micro-frontend-tools/src/lib/component/not-found/not-found.component.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/component/not-found/not-found.component.html","../../../projects/kiunzi-micro-frontend-tools/src/lib/component/root/root.component.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/component/root/root.component.html","../../../projects/kiunzi-micro-frontend-tools/src/lib/component/unauthorised/unauthorised.component.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/component/unauthorised/unauthorised.component.html","../../../projects/kiunzi-micro-frontend-tools/src/lib/function/module-route/module-route.function.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/function/initialise-module-routes/initialise-module-routes.function.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/function/micro-front-end-route/micro-front-end-route.function.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/function/initialise-shell-routes/initialise-shell-routes.function.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/module/micro-front-end/micro-front-end.module.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/service/active-module-path/active-module-path.service.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/service/all-routes-guard/all-routes-guard.service.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/service/partial-routes-guard/partial-routes-guard.service.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/service/sync-route-module/sync-route-module.service.ts","../../../projects/kiunzi-micro-frontend-tools/src/lib/service/sync-route-shell/sync-route-shell.service.ts","../../../projects/kiunzi-micro-frontend-tools/src/public-api.ts","../../../projects/kiunzi-micro-frontend-tools/src/jamarsto-kiunzi-micro-frontend-tools.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.sass']\n})\nexport class NotFoundComponent implements OnInit {\n\n constructor() {}\n\n ngOnInit() {}\n}\n","<article>\r\n <header>\r\n <h2>Page Not Found</h2>\r\n </header>\r\n <main>\r\n <p><a href=\"/\">Home</a></p>\r\n </main>\r\n</article>\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n templateUrl: './root.component.html',\n styleUrls: ['./root.component.sass']\n})\nexport class RootComponent implements OnInit {\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<article class=\"d-flex flex-column overflow-hidden min-vh-minus-footer vh-minus-footer\">\r\n <main role=\"main\" class=\"container-fluid flex-grow-1 overflow-auto bg-light ps-0 pe-0\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n</article>\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n templateUrl: './unauthorised.component.html',\n styleUrls: ['./unauthorised.component.sass']\n})\nexport class UnauthorisedComponent implements OnInit {\n\n constructor() {}\n\n ngOnInit() {}\n}\n","<article>\r\n <header>\r\n <h2>Not Authorised to Page</h2>\r\n </header>\r\n <main>\r\n <p><a href=\"/\">Home</a></p>\r\n </main>\r\n</article>\r\n","import { Route, UrlMatcher, UrlSegment } from '@angular/router';\r\nimport { RootComponent } from '../../component/root/root.component';\r\nimport { ModuleRoute } from '../../types/module-route/module-route.type';\r\n\r\nexport function moduleRoute(moduleRoute: ModuleRoute) : Route {\r\n const moduleRouteComponent: any =\r\n typeof moduleRoute.component === 'undefined'\r\n ? RootComponent\r\n : moduleRoute.component;\r\n // provided a role without a guard. Hence don't try to guard\r\n if(\r\n typeof moduleRoute.guards === 'undefined'\r\n || moduleRoute.guards === null\r\n || moduleRoute.guards.length === 0) {\r\n return { matcher: modulePath(),\r\n component: moduleRouteComponent,\r\n children: moduleRoute.children\r\n };\r\n }\r\n // provided guard(s) without role(s). Just do authorized check\r\n if(typeof moduleRoute.roles === 'undefined'\r\n || moduleRoute.roles === null\r\n || moduleRoute.roles.length === 0) {\r\n return { matcher: modulePath(),\r\n component: moduleRouteComponent,\r\n canLoad: moduleRoute.guards,\r\n canActivate: moduleRoute.guards,\r\n canActivateChild: moduleRoute.guards,\r\n children: moduleRoute.children\r\n };\r\n }\r\n // provided guard(s) and role(s). Do full check\r\n return { matcher: modulePath(),\r\n component: moduleRouteComponent,\r\n canLoad: moduleRoute.guards,\r\n canActivate: moduleRoute.guards,\r\n canActivateChild: moduleRoute.guards,\r\n data: { role: moduleRoute.roles },\r\n children: moduleRoute.children\r\n };\r\n}\r\n\r\nfunction modulePath(): UrlMatcher {\r\n return (url: UrlSegment[]) => {\r\n if(url.length > 0) {\r\n return ({ consumed: [url[0]] });\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Routes } from \"@angular/router\";\r\nimport { CustomModuleRoutes } from \"../../types/custom-module-routes/custom-module-routes.type\";\r\nimport { moduleRoute } from \"../module-route/module-route.function\";\r\n\r\nexport function initialiseModuleRoutes(customRoutes: CustomModuleRoutes): Routes {\r\n const routes: Routes = [];\r\n customRoutes.headRoutes.forEach((route) => routes.push(route));\r\n routes.push(moduleRoute(customRoutes.moduleRoute));\r\n customRoutes.tailRoutes.forEach((route) => routes.push(route));\r\n return routes;\r\n}\r\n","import { Route, UrlMatcher, UrlSegment } from '@angular/router';\r\nimport { WebComponentWrapper, WebComponentWrapperOptions } from '@angular-architects/module-federation-tools';\r\nimport { Module } from '../../types/module/module.type';\r\n\r\nexport function microFrontEndRoute(module: Module) : Route {\r\n // provided a role without a guard. Hence don't try to guard\r\n if(\r\n typeof module.guards === 'undefined'\r\n || module.guards === null\r\n || module.guards.length === 0\r\n || (module.guards.length > 0 && typeof module.guards[0] === 'string')) {\r\n return {\r\n matcher: shellPath(module.prefix),\r\n component: WebComponentWrapper,\r\n data: {\r\n type: 'module',\r\n remoteEntry: '/mfe/' + module.name + '/remoteEntry.js',\r\n exposedModule: './RemoteAppModule',\r\n elementName: 'mfe-' + module.name,\r\n } as WebComponentWrapperOptions\r\n }\r\n }\r\n // provided guard(s) without role(s). Just do authorized check\r\n if(typeof module.roles === 'undefined'\r\n || module.roles === null\r\n || module.roles.length === 0) {\r\n return {\r\n matcher: shellPath(module.prefix),\r\n component: WebComponentWrapper,\r\n data: {\r\n type: 'module',\r\n remoteEntry: '/mfe/' + module.name + '/remoteEntry.js',\r\n exposedModule: './RemoteAppModule',\r\n elementName: 'mfe-' + module.name,\r\n } as WebComponentWrapperOptions, canLoad: module.guards, canActivate: module.guards, canActivateChild: module.guards\r\n }\r\n }\r\n // provided guard(s) and role(s). Do full check\r\n return {\r\n matcher: shellPath(module.prefix),\r\n component: WebComponentWrapper,\r\n data: {\r\n type: 'module',\r\n remoteEntry: '/mfe/' + module.name + '/remoteEntry.js',\r\n exposedModule: './RemoteAppModule',\r\n elementName: 'mfe-' + module.name,\r\n role: module.roles,\r\n } as WebComponentWrapperOptions, canLoad: module.guards, canActivate: module.guards, canActivateChild: module.guards\r\n }\r\n}\r\n\r\nfunction shellPath(shellPath: string): UrlMatcher {\r\n return (url: UrlSegment[]) => {\r\n if(url.length > 0 && url[0].path === shellPath) {\r\n return ({ consumed: url });\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Routes } from \"@angular/router\";\r\nimport { CustomShellRoutes } from \"../../types/custom-shell-routes/custom-shell-routes.type\";\r\nimport { microFrontEndRoute } from \"../micro-front-end-route/micro-front-end-route.function\";\r\n\r\n\r\nexport function initialiseShellRoutes(customRoutes: CustomShellRoutes): Routes {\r\n const routes: Routes = [];\r\n customRoutes.headRoutes.forEach((route) => routes.push(route));\r\n customRoutes.moduleRoutes.forEach((module) => routes.push(microFrontEndRoute(module)));\r\n customRoutes.tailRoutes.forEach((route) => routes.push(route));\r\n return routes;\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NotFoundComponent } from '../../component/not-found/not-found.component';\nimport { RootComponent } from '../../component/root/root.component';\nimport { UnauthorisedComponent } from '../../component/unauthorised/unauthorised.component';\n\n@NgModule({\n declarations: [\n NotFoundComponent,\n RootComponent,\n UnauthorisedComponent,\n ],\n imports: [\n RouterModule\n ],\n providers: [\n ],\n exports: [\n NotFoundComponent,\n RootComponent,\n UnauthorisedComponent,\n ]\n})\nexport class MicroFrontEndModule { }\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActiveModulePath {\n constructor() {}\n\n get(): string {\n var segments: string[] = window.location.pathname.split('/');\n if(segments.length > 1) {\n return segments[1];\n }\n return '#';\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { OidcSecurityService, AutoLoginAllRoutesGuard } from 'angular-auth-oidc-client';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AutoLoginAllRoutesWithRoleGuard implements CanActivate, CanActivateChild, CanLoad {\n constructor(\n private oidcSecurityService: OidcSecurityService,\n private router: Router,\n private autoLoginAllRoutesGuard: AutoLoginAllRoutesGuard,\n ) { }\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this\n .autoLoginAllRoutesGuard\n .canActivate(next, state)\n .pipe(mergeMap(result => this.checkRoleForActivate(result, next)));\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this\n .autoLoginAllRoutesGuard\n .canActivateChild(next, state)\n .pipe(mergeMap(result => this.checkRoleForActivateChild(result, next)));\n }\n\n canLoad(route: Route, url: UrlSegment[]): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this\n .autoLoginAllRoutesGuard\n .canLoad()\n .pipe(mergeMap(result => this.checkRoleForLoad(result, route, url)));\n }\n\n private checkRoleForActivate(isAuthenticated: boolean | UrlTree, next: ActivatedRouteSnapshot): Observable<boolean | UrlTree> {\n if(typeof isAuthenticated !== 'boolean' || isAuthenticated !== true) {\n return of(isAuthenticated);\n }\n return this\n .isInRole(next.data['role'])\n .pipe(map(isInRole => {\n if(isInRole === true) {\n return true;\n }\n return this.router.parseUrl('/unauthorized');\n }));\n }\n\n private checkRoleForActivateChild(isAuthenticated: boolean | UrlTree, next: ActivatedRouteSnapshot): Observable<boolean | UrlTree> {\n if(typeof isAuthenticated !== 'boolean' || isAuthenticated !== true) {\n return of(isAuthenticated);\n }\n const data = next.parent != null ? next.parent.data : next.data;\n return this\n .isInRole(data['role'])\n .pipe(map(isInRole => {\n if(isInRole === true) {\n return true;\n }\n return this.router.parseUrl('/unauthorized');\n }));\n }\n\n private checkRoleForLoad(isAuthenticated: boolean | UrlTree, next: Route, url: UrlSegment[]): Observable<boolean | UrlTree> {\n if(typeof isAuthenticated !== 'boolean' || isAuthenticated !== true || typeof next.data === 'undefined') {\n return of(isAuthenticated);\n }\n return this\n .isInRole(next.data['role'])\n .pipe(map(isInRole => {\n if(isInRole === true) {\n return true;\n }\n return this.router.parseUrl('/unauthorized');\n }));\n }\n\n private isInRole(role: string | string[]): Observable<boolean> {\n if(typeof role === 'object') {\n return this.isInRoleArray(role);\n }\n return this.isInRoleString(role);\n }\n\n private isInRoleArray(role: string[]): Observable<boolean> {\n if(role.length === 0) {\n return of(true);\n }\n return this\n .oidcSecurityService\n .userData$\n .pipe(map(({ userData }) => {\n const roles: string[] = userData.roles;\n if(typeof roles !== 'undefined' && roles != null) {\n var matchedAll: boolean = true;\n role.forEach((strRole) => {\n if(!(typeof strRole === 'undefined' || strRole === null || strRole.trim() === '' || roles.indexOf(strRole) >= 0)) {\n matchedAll = false;\n }\n });\n return matchedAll;\n }\n return false;\n }));\n }\n\n private isInRoleString(role: string): Observable<boolean> {\n if(typeof role === 'undefined' || role === null || role.trim() === '') {\n return of(true);\n }\n return this\n .oidcSecurityService\n .userData$\n .pipe(map(({ userData }) => {\n const roles: string[] = userData.roles;\n if(typeof roles !== 'undefined' && roles != null && roles.indexOf(role) >= 0) {\n return true;\n }\n return false;\n }));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { OidcSecurityService, AutoLoginPartialRoutesGuard } from 'angular-auth-oidc-client';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AutoLoginPartialRoutesWithRoleGuard implements CanActivate, CanActivateChild, CanLoad {\n constructor(\n private oidcSecurityService: OidcSecurityService,\n private router: Router,\n private autoLoginPartialRoutesGuard: AutoLoginPartialRoutesGuard,\n ) { }\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this\n .autoLoginPartialRoutesGuard\n .canActivate(next, state)\n .pipe(mergeMap(result => this.checkRoleForActivate(result, next)));\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this\n .autoLoginPartialRoutesGuard\n .canActivateChild(next, state)\n .pipe(mergeMap(result => this.checkRoleForActivateChild(result, next)));\n }\n\n canLoad(route: Route, url: UrlSegment[]): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this\n .autoLoginPartialRoutesGuard\n .canLoad()\n .pipe(mergeMap(result => this.checkRoleForLoad(result, route, url)));\n }\n\n private checkRoleForActivate(isAuthenticated: boolean | UrlTree, next: ActivatedRouteSnapshot): Observable<boolean | UrlTree> {\n if(typeof isAuthenticated !== 'boolean' || isAuthenticated !== true) {\n return of(isAuthenticated);\n }\n return this\n .isInRole(next.data['role'])\n .pipe(map(isInRole => {\n if(isInRole === true) {\n return true;\n }\n return this.router.parseUrl('/unauthorized');\n }));\n }\n\n private checkRoleForActivateChild(isAuthenticated: boolean | UrlTree, next: ActivatedRouteSnapshot): Observable<boolean | UrlTree> {\n if(typeof isAuthenticated !== 'boolean' || isAuthenticated !== true) {\n return of(isAuthenticated);\n }\n const data = next.parent != null ? next.parent.data : next.data;\n return this\n .isInRole(data['role'])\n .pipe(map(isInRole => {\n if(isInRole === true) {\n return true;\n }\n return this.router.parseUrl('/unauthorized');\n }));\n }\n\n private checkRoleForLoad(isAuthenticated: boolean | UrlTree, next: Route, url: UrlSegment[]): Observable<boolean | UrlTree> {\n if(typeof isAuthenticated !== 'boolean' || isAuthenticated !== true || typeof next.data === 'undefined') {\n return of(isAuthenticated);\n }\n return this\n .isInRole(next.data['role'])\n .pipe(map(isInRole => {\n if(isInRole === true) {\n return true;\n }\n return this.router.parseUrl('/unauthorized');\n }));\n }\n\n private isInRole(role: string | string[]): Observable<boolean> {\n if(typeof role === 'object') {\n return this.isInRoleArray(role);\n }\n return this.isInRoleString(role);\n }\n\n private isInRoleArray(role: string[]): Observable<boolean> {\n if(role.length === 0) {\n return of(true);\n }\n return this\n .oidcSecurityService\n .userData$\n .pipe(map(({ userData }) => {\n const roles: string[] = userData.roles;\n if(typeof roles !== 'undefined' && roles != null) {\n var matchedAll: boolean = true;\n role.forEach((strRole) => {\n if(!(typeof strRole === 'undefined' || strRole === null || strRole.trim() === '' || roles.indexOf(strRole) >= 0)) {\n matchedAll = false;\n }\n });\n return matchedAll;\n }\n return false;\n }));\n }\n\n private isInRoleString(role: string): Observable<boolean> {\n if(typeof role === 'undefined' || role === null || role.trim() === '') {\n return of(true);\n }\n return this\n .oidcSecurityService\n .userData$\n .pipe(map(({ userData }) => {\n const roles = userData.roles;\n if(typeof roles !== 'undefined' && roles != null && roles.indexOf(role) >= 0) {\n return true;\n }\n return false;\n }));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { ActiveModulePath } from '../active-module-path/active-module-path.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SyncRouteModule {\n constructor(private activeModulePath: ActiveModulePath) {}\n\n sync(router: Router, module: string): void {\n router\n .events\n .pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd))\n .subscribe(() => this.dispatchEvent(module));\n window.addEventListener('popstate', () => this.navigate(router));\n window.addEventListener('shellNavigationEvent', (event) => this.updateRoute(router, event as CustomEvent, module));\n this.navigate(router);\n }\n\n private details(module: string): CustomEventInit {\n return { detail: module };\n }\n\n private dispatchEvent(module: string): void {\n window.dispatchEvent(new CustomEvent('mfeNavigationEvent', this.details(module)));\n }\n\n private navigate(router: Router): void {\n router.navigateByUrl(window.location.pathname);\n }\n\n private updateRoute(router: Router, event: CustomEvent, module: string): void {\n if(event.detail === module) {\n this.navigate(router);\n }\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { CustomShellRoutes } from '../../types/custom-shell-routes/custom-shell-routes.type';\nimport { ActiveModulePath } from '../active-module-path/active-module-path.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SyncRouteShell {\n constructor(private activeModulePath: ActiveModulePath) {}\n\n sync(router: Router, customRoutes: CustomShellRoutes): void {\n const moduleByPath: Map<string,string> = this.getModuleByPath(customRoutes);\n const pathByModule: Map<string,string> = this.getPathByModule(customRoutes);\n router\n .events\n .pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd))\n .subscribe(() => this.dispatchEvent(moduleByPath));\n window.addEventListener('popstate', () => this.navigate(router));\n window.addEventListener('mfeNavigationEvent', (event) => this.updateRoute(router, event as CustomEvent, pathByModule));\n this.navigate(router);\n }\n\n private details(moduleByPath: Map<string,string>): CustomEventInit {\n return { detail: moduleByPath.get(this.activeModulePath.get()) };\n }\n\n private dispatchEvent(moduleByPath: Map<string,string>): void {\n window.dispatchEvent(new CustomEvent('shellNavigationEvent', this.details(moduleByPath)));\n }\n\n private getModuleByPath(customRoutes: CustomShellRoutes): Map<string,string> {\n const moduleByPath: Map<string,string> = new Map<string,string>();\n customRoutes.moduleRoutes.forEach((item) => moduleByPath.set(item.prefix, item.name));\n return moduleByPath;\n }\n\n private getPathByModule(customRoutes: CustomShellRoutes): Map<string,string> {\n const pathByModule: Map<string,string> = new Map<string,string>();\n customRoutes.moduleRoutes.forEach((item) => pathByModule.set(item.name, item.prefix));\n return pathByModule;\n }\n\n private navigate(router: Router): void {\n router.navigateByUrl(window.location.pathname);\n }\n\n private updateRoute(router: Router, event: CustomEvent, pathByModule: Map<string,string>): void {\n if(this.activeModulePath.get() === pathByModule.get(event.detail)) {\n this.navigate(router);\n }\n }\n}\n\n","/*\n * Public API Surface of lib-micro-front-end\n */\n\nexport * from './lib/component/not-found/not-found.component';\nexport * from './lib/component/root/root.component';\nexport * from './lib/component/unauthorised/unauthorised.component';\nexport * from './lib/function/initialise-module-routes/initialise-module-routes.function';\nexport * from './lib/function/initialise-shell-routes/initialise-shell-routes.function';\nexport * from './lib/module/micro-front-end/micro-front-end.module';\nexport * from './lib/types/custom-module-routes/custom-module-routes.type';\nexport * from './lib/types/custom-shell-routes/custom-shell-routes.type';\nexport * from './lib/types/guards/guards.type';\nexport * from './lib/types/json-menu-items/json-menu-items.type';\nexport * from './lib/types/menu-item/menu-item.type';\nexport * from './lib/types/menu-items/menu-items.type';\nexport * from './lib/types/module/module.type';\nexport * from './lib/types/modules/modules.type';\nexport * from './lib/types/roles/roles.type';\nexport * from './lib/service/active-module-path/active-module-path.service';\nexport * from './lib/service/all-routes-guard/all-routes-guard.service';\nexport * from './lib/service/partial-routes-guard/partial-routes-guard.service';\nexport * from './lib/service/sync-route-module/sync-route-module.service';\nexport * from './lib/service/sync-route-shell/sync-route-shell.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.ActiveModulePath"],"mappings":"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"}