aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/datastructures.es6.js
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-09-13 23:57:01 +0200
committerMaximilian Hils <git@maximilianhils.com>2014-09-13 23:57:01 +0200
commit7b74d207f39e642e5029a4855da47314ce224a33 (patch)
treeb893ea277d1b7d9fa8172df982cbcb6799d75e54 /web/src/js/datastructures.es6.js
parentd2475e6a146534b5e7aaf2cc7b0b9a75e418415e (diff)
downloadmitmproxy-7b74d207f39e642e5029a4855da47314ce224a33.tar.gz
mitmproxy-7b74d207f39e642e5029a4855da47314ce224a33.tar.bz2
mitmproxy-7b74d207f39e642e5029a4855da47314ce224a33.zip
update Gruntfile
Diffstat (limited to 'web/src/js/datastructures.es6.js')
-rw-r--r--web/src/js/datastructures.es6.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/web/src/js/datastructures.es6.js b/web/src/js/datastructures.es6.js
new file mode 100644
index 00000000..4bc781b2
--- /dev/null
+++ b/web/src/js/datastructures.es6.js
@@ -0,0 +1,101 @@
+class EventEmitter {
+ constructor(){
+ this._listeners = {};
+ }
+ emit(event){
+ if(!(event in this._listeners)){
+ return;
+ }
+ this._listeners[event].forEach(function (listener) {
+ listener(event, this);
+ }.bind(this));
+ }
+ addListener(event, f){
+ this._listeners[event] = this._listeners[event] || [];
+ this._listeners[event].push(f);
+ }
+ removeListener(event, f){
+ if(!(event in this._listeners)){
+ return false;
+ }
+ var index = this._listeners.indexOf(f);
+ if (index >= 0) {
+ this._listeners.splice(this._listeners.indexOf(f), 1);
+ }
+ }
+}
+
+var FLOW_CHANGED = "flow.changed";
+
+class FlowStore extends EventEmitter{
+ constructor() {
+ super();
+ this.flows = [];
+ this._listeners = [];
+ }
+
+ getAll() {
+ return this.flows;
+ }
+
+ emitChange() {
+ return this.emit(FLOW_CHANGED);
+ }
+
+ addChangeListener(f) {
+ this.addListener(FLOW_CHANGED, f);
+ }
+
+ removeChangeListener(f) {
+ this.removeListener(FLOW_CHANGED, f);
+ }
+}
+
+class DummyFlowStore extends FlowStore {
+ constructor(flows) {
+ super();
+ this.flows = flows;
+ }
+
+ addFlow(f) {
+ this.flows.push(f);
+ this.emitChange();
+ }
+}
+
+
+var SETTINGS_CHANGED = "settings.change";
+
+class Settings extends EventEmitter {
+ constructor(){
+ super();
+ this.settings = false;
+ }
+
+ getAll(){
+ return this.settings;
+ }
+
+ emitChange() {
+ return this.emit(SETTINGS_CHANGED);
+ }
+
+ addChangeListener(f) {
+ this.addListener(SETTINGS_CHANGED, f);
+ }
+
+ removeChangeListener(f) {
+ this.removeListener(SETTINGS_CHANGED, f);
+ }
+}
+
+class DummySettings extends Settings {
+ constructor(settings){
+ super();
+ this.settings = settings;
+ }
+ update(obj){
+ _.merge(this.settings, obj);
+ this.emitChange();
+ }
+} \ No newline at end of file