UNPKG

infrastructure-components

Version:

Infrastructure-Components configure the infrastructure of your React-App as part of your React-Components.

92 lines 5.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const react_router_1 = require("react-router"); const react_router_dom_1 = require("react-router-dom"); //import {useContext} from "react" //import {__RouterContext} from "react-router" const redirect_w_status_1 = __importDefault(require("./redirect-w-status")); ; class RawRoutedApp extends react_1.default.Component { componentWillMount() { if (this.props.listen) { this.unlisten = this.props.history.listen(this.props.listen); } } componentWillUnmount() { if (this.unlisten) { this.unlisten(); } } render() { //.filter(({ customType }) => customType !== Types.IFRAME) // (p) => render(Object.assign({},p, props)) //console.log("RoutedApp: " , useContext(__RouterContext)) const ForceLogin = require("infrastructure-components").ForceLogin; const routes = this.props.routes.map(({ path, exact, component, render, isSecured }, i) => { //console.log("routepath: ", path) // NOT using routeConfig.pathToRoute(path) for the Router includes a basename already! if (render !== undefined) { const wrappedRender = (p) => isSecured ? react_1.default.createElement(ForceLogin, null, render(p)) : render(p); return react_1.default.createElement(react_router_dom_1.Route, { key: 'ROUTE_' + i, exact: exact, path: path, render: wrappedRender }); } else if (isSecured) { const C = component; return react_1.default.createElement(react_router_dom_1.Route, { key: 'ROUTE_' + i, exact: exact, path: path, render: (p) => react_1.default.createElement(ForceLogin, null, react_1.default.createElement(C, Object.assign({}, p))) }); } else { return react_1.default.createElement(react_router_dom_1.Route, { key: 'ROUTE_' + i, exact: exact, path: path, component: component }); } }); const redirects = this.props.redirects.map(({ from, to, status }, i) => react_1.default.createElement(redirect_w_status_1.default, { key: 'REDIRECT_' + i, from: from, to: to, status: status })); return react_1.default.createElement(react_router_dom_1.Switch, null, routes, redirects); } } ; const RoutedApp = react_router_dom_1.withRouter(RawRoutedApp); /** * TODO when we use an internal link that attaches a path-parameter, do we get this here? maybe we need to force a reload from the server * * @param routes * @param redirects * @param basename * @returns {any} */ exports.createClientApp = (routes, redirects, basename, listen, authCallback) => { const AttachRequest = require("infrastructure-components").AttachRequest; const AttachRoutes = require("infrastructure-components").AttachRoutes; const AttachUser = require("infrastructure-components").AttachUser; const AttachAuth = require("infrastructure-components").AttachAuth; return react_1.default.createElement(react_router_dom_1.BrowserRouter, { basename: basename }, react_1.default.createElement(AttachRequest, null, react_1.default.createElement(AttachUser, null, react_1.default.createElement(AttachAuth, { authCallback: authCallback }, react_1.default.createElement(AttachRoutes, { routes: routes }, react_1.default.createElement(RoutedApp, { routes: routes, redirects: redirects, listen: listen })))))); }; exports.createServerApp = (routes, redirects, basename, url, context, request, authCallback) => { const AttachRequest = require("infrastructure-components").AttachRequest; const AttachRoutes = require("infrastructure-components").AttachRoutes; const AttachUser = require("infrastructure-components").AttachUser; const AttachAuth = require("infrastructure-components").AttachAuth; return react_1.default.createElement(react_router_1.StaticRouter, { context: context, location: url, basename: basename }, react_1.default.createElement(AttachRequest, { request: request }, react_1.default.createElement(AttachUser, null, react_1.default.createElement(AttachAuth, { authCallback: authCallback }, react_1.default.createElement(AttachRoutes, { routes: routes }, react_1.default.createElement(RoutedApp, { routes: routes, redirects: redirects })))))); }; exports.createSinglePageApp = (routes, redirects) => { // a single page app does not support Identities (so far). There is no identityKey={identityKey} const AttachRoutes = require("infrastructure-components").AttachRoutes; return react_1.default.createElement(react_router_dom_1.HashRouter, null, react_1.default.createElement(AttachRoutes, { routes: routes }, react_1.default.createElement(RoutedApp, { routes: routes, redirects: redirects }))); }; //# sourceMappingURL=routed-app.js.map