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