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;
							 | 
						||
| 
								 | 
							
								};
							 |