From 8eb4c47f7988fe754e60e8a4173258516be3ef29 Mon Sep 17 00:00:00 2001 From: Amish Shah Date: Sat, 12 Dec 2015 17:28:37 +0000 Subject: [PATCH] Client now emits unknown and hidden some properties of Cache Cache.discrim and Cache.discrimCache are now hidden from for..in --- lib/Client/InternalClient.js | 3 +++ src/Client/InternalClient.js | 3 +++ src/Util/Cache.js | 31 +++++++++++++++++-------------- test/msgbot.js | 16 +++++++--------- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 4951789a0..6c2be7fb1 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1548,6 +1548,9 @@ var InternalClient = (function () { client.emit("warn", "user unbanned but user/server not in cache."); } break; + default: + client.emit("unknown", packet); + break; } }; }; diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index f7c9138a0..85f239bfd 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -1370,6 +1370,9 @@ export default class InternalClient { client.emit("warn", "user unbanned but user/server not in cache."); } break; + default: + client.emit("unknown", packet); + break; } }; } diff --git a/src/Util/Cache.js b/src/Util/Cache.js index 7fab1bece..b6981134b 100644 --- a/src/Util/Cache.js +++ b/src/Util/Cache.js @@ -1,15 +1,18 @@ "use strict"; +var discrimS = Symbol(); +var discrimCacheS = Symbol(); + export default class Cache extends Array { constructor(discrim, limit) { super(); - this["discrim"] = discrim || "id"; - this["discrimCache"] = {}; + this[discrimS] = discrim || "id"; + this[discrimCacheS] = {}; } get(key, value) { - if (key === this.discrim) - return this.discrimCache[value] || null; + if (key === this[discrimS]) + return this[discrimCacheS][value] || null; var l = this.length; for (var i = 0; i < l; i++) @@ -19,11 +22,11 @@ export default class Cache extends Array { } has(object) { - return !!this.get(this.discrim, object[this.discrim]); + return !!this.get(this[discrimS], object[this[discrimS]]); } getAll(key, value) { - var found = new Cache(this.discrim); + var found = new Cache(this[discrimS]); this.forEach((val, index, array) => { if (val.hasOwnProperty(key) && val[key] == value) { found.push(val); @@ -34,24 +37,24 @@ export default class Cache extends Array { } add(data) { - var cacheKey = this.discrim === "id" ? data.id : data[this.discrim]; - if (this.discrimCache[cacheKey]) { - return this.discrimCache[cacheKey]; + var cacheKey = this[discrimS] === "id" ? data.id : data[this[discrimS]]; + if (this[discrimCacheS][cacheKey]) { + return this[discrimCacheS][cacheKey]; } if (this.limit && this.length >= this.limit) { this.splice(0, 1); } this.push(data); - this.discrimCache[cacheKey] = data; + this[discrimCacheS][cacheKey] = data; return data; } update(old, data) { - var item = this.get(this.discrim, old[this.discrim]); + var item = this.get(this[discrimS], old[this[discrimS]]); if (item) { var index = this.indexOf(item); this[index] = data; - this.discrimCache[data[this.discrim]] = this[index]; + this[discrimCacheS][data[this[discrimS]]] = this[index]; return this[index]; } else { return false; @@ -63,12 +66,12 @@ export default class Cache extends Array { } remove(data) { - delete this.discrimCache[data[this.discrim]]; + delete this[discrimCacheS][data[this[discrimS]]]; var index = this.indexOf(data); if (~index) { this.splice(index, 1); } else { - var item = this.get(this.discrim, data[this.discrim]); + var item = this.get(this[discrimS], data[this[discrimS]]); if (item) { this.splice(this.indexOf(item), 1); } diff --git a/test/msgbot.js b/test/msgbot.js index 7cc66e01f..c59f0c01b 100644 --- a/test/msgbot.js +++ b/test/msgbot.js @@ -7,15 +7,9 @@ var request = require("superagent"); client.on("ready", () => { console.log("ready"); - for (var server of client.servers) { - if (!(server instanceof Discord.Server)) { - console.log("FOUNDED"); - } + for (var server in client.servers) { + console.log(server); } - setTimeout(() => { - if(client.internal.websocket) - client.internal.websocket.close(); - }, 5000); }); @@ -53,7 +47,11 @@ client.on("message", msg => { console.log("INIT"); -client.on("debug", console.log) +client.on("debug", console.log); + +client.on("unknown", p => { + console.log(p); +}); client.login(process.env["ds_email"], process.env["ds_password"]).catch(console.log);