ableton-js
Advanced tools
Comparing version 1.1.0 to 1.2.0
33
index.js
@@ -54,2 +54,4 @@ "use strict"; | ||
this.eventListeners = new Map(); | ||
this.connectListeners = []; | ||
this.disconnectListeners = []; | ||
this.song = new song_1.Song(this); | ||
@@ -75,2 +77,18 @@ this.client = dgram_1["default"].createSocket("udp4"); | ||
} | ||
if (data.event === "disconnect") { | ||
this.msgMap.clear(); | ||
this.eventListeners.clear(); | ||
for (var _i = 0, _a = this.disconnectListeners; _i < _a.length; _i++) { | ||
var listener = _a[_i]; | ||
listener(); | ||
} | ||
return; | ||
} | ||
if (data.event === "connect") { | ||
for (var _b = 0, _c = this.connectListeners; _b < _c.length; _b++) { | ||
var listener = _c[_b]; | ||
listener(); | ||
} | ||
return; | ||
} | ||
var eventCallback = this.eventListeners.get(data.event); | ||
@@ -112,2 +130,17 @@ if (eventCallback) { | ||
}; | ||
Ableton.prototype.addConnectionListener = function (event, listener) { | ||
(event === "connect" | ||
? this.connectListeners | ||
: this.disconnectListeners).push(listener); | ||
}; | ||
Ableton.prototype.removeConnectionListener = function (event, listener) { | ||
switch (event) { | ||
case "connect": | ||
this.connectListeners = this.connectListeners.filter(function (l) { return l !== listener; }); | ||
break; | ||
case "disconnect": | ||
this.disconnectListeners = this.disconnectListeners.filter(function (l) { return l !== listener; }); | ||
break; | ||
} | ||
}; | ||
Ableton.prototype.getProp = function (ns, nsid, prop) { | ||
@@ -114,0 +147,0 @@ return __awaiter(this, void 0, void 0, function () { |
{ | ||
"name": "ableton-js", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "Control Ableton Live from Node", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -14,3 +14,3 @@ import dgram from "dgram"; | ||
uuid: string; | ||
event: "result" | "error" | string; | ||
event: "result" | "error" | "connect" | "disconnect" | string; | ||
data: any; | ||
@@ -26,2 +26,4 @@ } | ||
private eventListeners = new Map<string, (data: any) => any>(); | ||
private connectListeners: (() => any)[] = []; | ||
private disconnectListeners: (() => any)[] = []; | ||
@@ -59,2 +61,18 @@ public song = new Song(this); | ||
if (data.event === "disconnect") { | ||
this.msgMap.clear(); | ||
this.eventListeners.clear(); | ||
for (const listener of this.disconnectListeners) { | ||
listener(); | ||
} | ||
return; | ||
} | ||
if (data.event === "connect") { | ||
for (const listener of this.connectListeners) { | ||
listener(); | ||
} | ||
return; | ||
} | ||
const eventCallback = this.eventListeners.get(data.event); | ||
@@ -100,2 +118,27 @@ if (eventCallback) { | ||
addConnectionListener(event: "connect" | "disconnect", listener: () => any) { | ||
(event === "connect" | ||
? this.connectListeners | ||
: this.disconnectListeners | ||
).push(listener); | ||
} | ||
removeConnectionListener( | ||
event: "connect" | "disconnect", | ||
listener: () => any, | ||
) { | ||
switch (event) { | ||
case "connect": | ||
this.connectListeners = this.connectListeners.filter( | ||
l => l !== listener, | ||
); | ||
break; | ||
case "disconnect": | ||
this.disconnectListeners = this.disconnectListeners.filter( | ||
l => l !== listener, | ||
); | ||
break; | ||
} | ||
} | ||
async getProp(ns: string, nsid: string | undefined, prop: string) { | ||
@@ -102,0 +145,0 @@ return this.sendCommand(ns, nsid, "get_prop", { prop }); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
47105
1395