Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/react-server / dist / serverSideRender / reactApplication.js
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * @file React application middleware, supports server side rendering.
 * @see https://reactjs.org/docs/react-dom-server.html#rendertostaticmarkup
 */
var exotic_1 = require("exotic");
var router_1 = require("@skava/router");
var cacheMiddleware_1 = require("../middleware/cacheMiddleware");
var renderWithServerSide_1 = require("./renderWithServerSide");
exports.render = renderWithServerSide_1.renderUsingServerSideRendering;
var renderWithoutServerSide_1 = require("./renderWithoutServerSide");
var responders_1 = require("./responders");
/**
 * this is the critical first step so we can have a url on the server
 */
function setOneRouterUrl(req) {
    router_1.oneRouter.oneUrl = req.oneUrl;
    router_1.oneRouter.urlFromExpress = req.oneUrl || {
        full: 'webpack_hmr',
    };
}
function reactApplicationMiddleware(req, res) {
    setOneRouterUrl(req);
    /**
     * @todo - probably want to add a header
     */
    if (req.SHOULD_CACHE_SSR) {
        var success = cacheMiddleware_1.fromReqResToRespondFromCacheExistence(req, res);
        if (success === true) {
            return;
        }
    }
    /**
     * Ensure a nonce has been provided to us.
     * @see server/middleware/security.js for more info.
     */
    var nonce = res.locals.nonce;
    if (!exotic_1.isString(nonce)) {
        console.warn('@todo - no nonce');
        // throw new Error('A "nonce" value has not been attached to the res')
    }
    /**
     * It's possible to disable SSR, which can be useful in development mode.
     * In this case traditional client side only rendering will occur.
     */
    if (process.env.DISABLE_SSR === 'true') {
        console.log('[ssr] DISABLED!!!', { requestUrl: router_1.oneRouter.urlFromExpress });
        renderWithoutServerSide_1.renderWithoutServerSide(res, nonce);
    }
    else {
        console.debug('[ssr] ==> Handling react route __WITH__ SSR');
        console.info({ requestUrl: router_1.oneRouter.urlFromExpress });
        try {
            renderWithServerSide_1.renderUsingServerSideRendering(req, res, nonce);
        }
        catch (renderingException) {
            console.error('[EXCEPTION_ALERT] [ssr] renderingException: ', renderingException);
            responders_1.respondError(res, renderingException);
        }
    }
}
exports.reactApplicationMiddleware = reactApplicationMiddleware;
exports.reactApplication = reactApplicationMiddleware;
exports.default = reactApplicationMiddleware;
//# sourceMappingURL=reactApplication.js.map