mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-11-04 07:39:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var Immutable = require("immutable");
 | 
						|
 | 
						|
module.exports.init = function (ui, bs) {
 | 
						|
 | 
						|
    var timeout = 0;
 | 
						|
    var optPath = ["remote-debug", "latency"];
 | 
						|
 | 
						|
    ui.setOptionIn(optPath, Immutable.Map({
 | 
						|
        name: "latency",
 | 
						|
        title: "Latency",
 | 
						|
        active: false,
 | 
						|
        tagline: "Simulate slower connections by throttling the response time of each request.",
 | 
						|
        rate: 0
 | 
						|
    }));
 | 
						|
 | 
						|
    var methods = {
 | 
						|
        toggle: function (value) {
 | 
						|
            if (value !== true) {
 | 
						|
                value = false;
 | 
						|
            }
 | 
						|
            if (value) {
 | 
						|
                ui.setOptionIn(optPath.concat("active"), true);
 | 
						|
                bs.addMiddleware("*", function (req, res, next) {
 | 
						|
                    setTimeout(next, timeout);
 | 
						|
                }, {id: "cp-latency", override: true});
 | 
						|
            } else {
 | 
						|
                ui.setOptionIn(optPath.concat("active"), false);
 | 
						|
                bs.removeMiddleware("cp-latency");
 | 
						|
            }
 | 
						|
        },
 | 
						|
        adjust: function (data) {
 | 
						|
            timeout   = parseFloat(data.rate) * 1000;
 | 
						|
            var saved = ui.options.getIn(optPath.concat("rate"));
 | 
						|
            if (saved !== data.rate) {
 | 
						|
                ui.setOptionIn(optPath.concat("rate"), timeout/1000);
 | 
						|
            }
 | 
						|
        },
 | 
						|
        event: function (event) {
 | 
						|
            methods[event.event](event.data);
 | 
						|
        }
 | 
						|
    };
 | 
						|
 | 
						|
    return methods;
 | 
						|
}; |