• Jump To … +
    ClientController.js ClientRequest.js ExpressServerRequest.js ReactServerAgent.js Cache.js Plugins.js Request.js handlePage.js loggingClient.js ClientRequestSpec.js NormalValuesPage.js NullValuePromisesPage.js NullValuesPage.js reactMiddlewareSpec.js client.js common.js History.js RootContainer.js RootElement.js TheFold.js config.js constants.js Navigator.js RequestContext.js logging.js client.js common.js response.js server.js stats.js renderMiddleware.js server.js ClientCssHelper.js DebugUtil.js PageUtil.js RequestLocalStorage.js StringEscapeUtil.js bundleNameUtil.js navigateTo.js
  • handlePage.js

  • ¶
    import {Suite}              from "benchmark";
    import Navigator            from "../context/Navigator.js";
    import ExpressServerRequest from "../ExpressServerRequest.js";
    import RequestLocalStorage  from "../util/RequestLocalStorage.js";
    
    class Middleware {
    	handleRoute        (next){return next()};
    	getHeaders         (next){return next()};
    	getTitle           (next){return next()};
    	getScripts         (next){return next()};
    	getHeadStylesheets (next){return next()};
    	getMetaTags        (next){return next()};
    	getLinkTags        (next){return next()};
    	getBase            (next){return next()};
    	getBodyClasses     (next){return next()};
    	getElements        (next){return next()};
    }
    
    function run (n) {
    	const m         = new Array(n).join(".").split(".").map(() => Middleware);
    	const navigator = new Navigator({}, {routes: {}});
    	const request   = new ExpressServerRequest({ query: {} })
    
    	class Page extends Middleware { static middleware() {return m} }
    
    	return function (deferred) {
    		navigator.once('navigateDone', function() { deferred.resolve() });
    		RequestLocalStorage.startRequest(() => {
    			navigator.handlePage(Page, request, "pageload");
    		});
    	}
    }
    
    new Suite()
    	.add("1",    run(   1), { defer: true })
    	.add("10",   run(  10), { defer: true })
    	.add("100",  run( 100), { defer: true })
    	.add("1000", run(1000), { defer: true })
    	.on('cycle', (v) => console.log(v.target.name + "\t" + v.target.stats.mean)) // eslint-disable-line no-console
    	.run();