Socket
Socket
Sign inDemoInstall

mx-puppet-bridge

Package Overview
Dependencies
263
Maintainers
1
Versions
112
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.2 to 0.0.3

lib/db/schema/v3.js

118

lib/botprovisioner.js

@@ -31,60 +31,74 @@ "use strict";

switch (arg) {
case "link":
{
if (!this.provisioner.canCreate(sender)) {
yield this.sendMessage(roomId, "ERROR: You don't have permission to use this bridge");
break;
}
if (!this.bridge.hooks.getDataFromStr) {
yield this.sendMessage(roomId, "ERROR: The bridge is still starting up, please try again shortly");
break;
}
const retData = yield this.bridge.hooks.getDataFromStr(param);
if (!retData.success) {
yield this.sendMessage(roomId, `ERROR: ${retData.error}`);
break;
}
const puppetId = yield this.provisioner.new(sender, retData.data, retData.userId);
yield this.sendMessage(roomId, `Created new link with ID ${puppetId}`);
case "link": {
if (!this.provisioner.canCreate(sender)) {
yield this.sendMessage(roomId, "ERROR: You don't have permission to use this bridge");
break;
}
case "unlink":
{
if (!param || !param.trim()) {
yield this.sendMessage(roomId, `ERROR: You need to specify an index to unlink`);
return;
}
const puppetId = Number(param.trim());
if (isNaN(puppetId)) {
yield this.sendMessage(roomId, `ERROR: The index must be a number`);
return;
}
const data = yield this.provisioner.get(puppetId);
if (!data || data.puppetMxid !== sender) {
yield this.sendMessage(roomId, `ERROR: You must own the index`);
return;
}
yield this.provisioner.delete(sender, puppetId);
yield this.sendMessage(roomId, `Removed link with ID ${puppetId}`);
if (!this.bridge.hooks.getDataFromStr) {
yield this.sendMessage(roomId, "ERROR: The bridge is still starting up, please try again shortly");
break;
}
case "list":
{
const descs = yield this.provisioner.getDescMxid(sender);
if (descs.length === 0) {
yield this.sendMessage(roomId, "Nothing linked yet!");
break;
}
let sendStr = "Links:\n";
let html = "<p>Links:</p><ul>";
for (const d of descs) {
sendStr += `${d.puppetId}: ${d.desc}\n`;
html += `<li>${d.puppetId}: ${d.html}</li>`;
}
html += "</ul>";
yield this.sendMessage(roomId, sendStr, html);
const retData = yield this.bridge.hooks.getDataFromStr(param);
if (!retData.success) {
yield this.sendMessage(roomId, `ERROR: ${retData.error}`);
break;
}
const puppetId = yield this.provisioner.new(sender, retData.data, retData.userId);
yield this.sendMessage(roomId, `Created new link with ID ${puppetId}`);
break;
}
case "unlink": {
if (!param || !param.trim()) {
yield this.sendMessage(roomId, `ERROR: You need to specify an index to unlink`);
return;
}
const puppetId = Number(param.trim());
if (isNaN(puppetId)) {
yield this.sendMessage(roomId, `ERROR: The index must be a number`);
return;
}
const data = yield this.provisioner.get(puppetId);
if (!data || data.puppetMxid !== sender) {
yield this.sendMessage(roomId, `ERROR: You must own the index`);
return;
}
yield this.provisioner.delete(sender, puppetId);
yield this.sendMessage(roomId, `Removed link with ID ${puppetId}`);
break;
}
case "list": {
const descs = yield this.provisioner.getDescMxid(sender);
if (descs.length === 0) {
yield this.sendMessage(roomId, "Nothing linked yet!");
break;
}
let sendStr = "Links:\n";
let html = "<p>Links:</p><ul>";
for (const d of descs) {
sendStr += `${d.puppetId}: ${d.desc}\n`;
html += `<li>${d.puppetId}: ${d.html}</li>`;
}
html += "</ul>";
yield this.sendMessage(roomId, sendStr, html);
break;
}
case "setmatrixtoken": {
if (!param || !param.trim()) {
yield this.provisioner.setToken(sender, null);
yield this.sendMessage(roomId, `Removed matrix token!`);
break;
}
const token = param.trim();
const tokenParts = this.provisioner.parseToken(sender, token);
const client = yield this.bridge.userSync.getClientFromTokenCallback(tokenParts);
if (!client) {
yield this.sendMessage(roomId, "ERROR: Invalid matrix token");
break;
}
yield this.provisioner.setToken(sender, token);
yield this.sendMessage(roomId, `Set matrix token`);
break;
}
default:
yield this.sendMessage(roomId, `Available commands: help, list, link, unlink`);
yield this.sendMessage(roomId, `Available commands: help, list, link, unlink, setmatrixtoken`);
}

@@ -110,2 +124,2 @@ });

exports.BotProvisioner = BotProvisioner;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90cHJvdmlzaW9uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm90cHJvdmlzaW9uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBLCtCQUE0QjtBQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRXRDLE1BQWEsY0FBYztJQUUxQixZQUNTLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFFNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0lBRVksWUFBWSxDQUFDLEtBQVU7O1lBQ25DLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtnQkFDcEMsT0FBTyxDQUFDLHFCQUFxQjthQUM3QjtZQUNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM1QixNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUNuQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDakU7WUFDRCxRQUFRLEdBQUcsRUFBRTtnQkFDWixLQUFLLE1BQU07b0JBQ1g7d0JBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90cHJvdmlzaW9uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm90cHJvdmlzaW9uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBLCtCQUE0QjtBQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRXRDLE1BQWEsY0FBYztJQUUxQixZQUNTLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFFNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0lBRVksWUFBWSxDQUFDLEtBQVU7O1lBQ25DLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtnQkFDcEMsT0FBTyxDQUFDLHFCQUFxQjthQUM3QjtZQUNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM1QixNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUNuQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDakU7WUFDRCxRQUFRLEdBQUcsRUFBRTtnQkFDWixLQUFLLE1BQU0sQ0FBQyxDQUFDO29CQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFN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

@@ -15,4 +15,4 @@ "use strict";

const log = new log_1.Log("ChannelSync");
// tslint:disable-next-line:no-magic-numbers
const MXID_LOOKUP_LOCK_TIMEOUT = 1000 * 60;
;
class ChannelSyncroniser {

@@ -43,4 +43,4 @@ constructor(bridge) {

if (!this.bridge.AS.isNamespacedUser(mxid)) {
// TODO: logic if puppeted
return null;
const token = yield this.bridge.provisioner.getToken(mxid);
return yield this.bridge.userSync.getClientFromTokenCallback(token);
}

@@ -50,7 +50,12 @@ return this.bridge.AS.getIntentForUserId(mxid).underlyingClient;

}
maybeGetMxid(data) {
maybeGet(data) {
return __awaiter(this, void 0, void 0, function* () {
const lockKey = `${data.puppetId};${data.roomId}`;
yield this.mxidLock.wait(lockKey);
let chan = yield this.chanStore.getByRemote(data.puppetId, data.roomId);
return yield this.chanStore.getByRemote(data.puppetId, data.roomId);
});
}
maybeGetMxid(data) {
return __awaiter(this, void 0, void 0, function* () {
const chan = yield this.maybeGet(data);
if (!chan) {

@@ -62,3 +67,3 @@ return null;

}
getMxid(data, client, invites) {
getMxid(data, client, invites, doCreate = true) {
return __awaiter(this, void 0, void 0, function* () {

@@ -72,2 +77,3 @@ const lockKey = `${data.puppetId};${data.roomId}`;

let chan = yield this.chanStore.getByRemote(data.puppetId, data.roomId);
log.silly(chan);
const update = {

@@ -82,2 +88,8 @@ name: false,

if (!chan) {
if (!doCreate) {
return {
mxid: "",
created: false,
};
}
log.info("Channel doesn't exist yet, creating entry...");

@@ -88,7 +100,10 @@ this.mxidLock.set(lockKey);

if (this.bridge.hooks.createChan) {
log.verbose("Fetching new override data...");
const newData = yield this.bridge.hooks.createChan(data.puppetId, data.roomId);
if (newData && newData.puppetId === data.puppetId && newData.roomId === data.roomId) {
log.verbose("Got new room data to override");
data = newData;
}
else {
log.warn("Override data is malformed! Old data:", data, "New data:", newData);
}
}

@@ -134,4 +149,4 @@ log.verbose("Creation data:", data);

log.verbose("Updating avatar");
const { doUpdate, mxcUrl, hash } = yield util_1.Util.MaybeUploadFile(client, data, chan.avatarHash);
if (doUpdate) {
const { doUpdate: updateAvatar, mxcUrl, hash } = yield util_1.Util.MaybeUploadFile(client, data, chan.avatarHash);
if (updateAvatar) {
update.avatar = true;

@@ -163,5 +178,14 @@ chan.avatarUrl = data.avatarUrl;

}
delete(data) {
return __awaiter(this, void 0, void 0, function* () {
const chan = yield this.maybeGet(data);
if (!chan) {
return;
}
yield this.deleteEntries([chan]);
});
}
deleteForMxid(mxid) {
return __awaiter(this, void 0, void 0, function* () {
let chan = yield this.chanStore.getByMxid(mxid);
const chan = yield this.chanStore.getByMxid(mxid);
if (!chan) {

@@ -181,5 +205,31 @@ return; // nothing to do

return __awaiter(this, void 0, void 0, function* () {
log.info("Deleting entries", entries);
for (const entry of entries) {
// delete from DB (also OP store), cache and trigger ghosts to quit
yield this.chanStore.delete(entry);
log.info("Removing bot client from room....");
const botIntent = this.bridge.botIntent;
const botRooms = yield botIntent.getJoinedRooms();
if (botRooms.includes(entry.mxid)) {
try {
yield botIntent.leaveRoom(entry.mxid);
}
catch (err) {
log.warn("Failed to make bot client leave", err);
}
}
log.info("Removing ghosts from room....");
const ghosts = yield this.bridge.puppetStore.getGhostsInChan(entry.mxid);
for (const ghost of ghosts) {
const intent = yield this.bridge.userSync.deleteForMxid(ghost);
if (intent) {
try {
yield intent.underlyingClient.leaveRoom(entry.mxid);
}
catch (err) {
log.warn("Failed to trigger client leave room", err);
}
}
}
yield this.bridge.puppetStore.emptyGhostsInChan(entry.mxid);
}

@@ -190,2 +240,2 @@ });

exports.ChannelSyncroniser = ChannelSyncroniser;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHN5bmNyb25pc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NoYW5uZWxzeW5jcm9uaXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsaUNBQThCO0FBQzlCLCtCQUE0QjtBQUc1Qiw0Q0FBeUM7QUFHekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFbkMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLEdBQUMsRUFBRSxDQUFDO0FBS3hDLENBQUM7QUFhRixNQUFhLGtCQUFrQjtJQUc5QixZQUNTLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFFNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksV0FBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVZLGdCQUFnQixDQUFDLElBQVk7O1lBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNaO1lBQ0QsT0FBTztnQkFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUNKLENBQUM7UUFDdEIsQ0FBQztLQUFBO0lBRVksU0FBUyxDQUFDLElBQVk7O1lBQ2xDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNaO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdC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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHN5bmNyb25pc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NoYW5uZWxzeW5jcm9uaXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsaUNBQThCO0FBQzlCLCtCQUE0QjtBQUc1Qiw0Q0FBeUM7QUFHekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFbkMsNENBQTRDO0FBQzVDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQWEzQyxNQUFhLGtCQUFrQjtJQUc5QixZQUNTLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFFNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksV0FBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVZLGdCQUFnQixDQUFDLElBQVk7O1lBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNaO1lBQ0QsT0FBTztnQkFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUNSLENBQUM7UUFDbEIsQ0FBQztLQUFBO0lBRVksU0FBUyxDQUFDLElBQVk7O1lBQ2xDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNaO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFD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

@@ -65,2 +65,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQWEsY0FBYztJQUEzQjtRQUNRLFdBQU0sR0FBeUIsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQzFELFlBQU8sR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzdELGFBQVEsR0FBMkIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hFLGlCQUFZLEdBQStCLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUM1RSxhQUFRLEdBQTJCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQVl4RSxDQUFDO0lBVE8sV0FBVyxDQUFDLFNBQStCLEVBQUUsY0FBb0MsSUFBSTtRQUN6RixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO2dCQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNuRDtpQkFBTTtnQkFDTixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Q7QUFqQkQsd0NBaUJDO0FBRUQsTUFBTSxvQkFBb0I7SUFBMUI7UUFDUSxnQkFBVyxHQUFXLFdBQVcsQ0FBQztJQUkxQyxDQUFDO0NBQUE7QUFFRCxNQUFhLHFCQUFxQjtJQUFsQztRQUNRLFlBQU8sR0FBVyxNQUFNLENBQUM7UUFDekIsbUJBQWMsR0FBVyxvQkFBb0IsQ0FBQztRQUM5QyxVQUFLLEdBQWtCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQUE7QUFKRCxzREFJQztBQUVELE1BQWEsV0FBVztJQUF4QjtRQUVRLFVBQUssR0FBVyxNQUFNLENBQUM7UUFDdkIsYUFBUSxHQUFXLEtBQUssQ0FBQztRQUN6QixZQUFPLEdBQWtCLEtBQUssQ0FBQztRQUMvQixnQkFBVyxHQUFXLFlBQVksQ0FBQztRQUNuQyxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUFBO0FBUkQsa0NBUUM7QUFFRCxNQUFhLHNCQUFzQjtJQUFuQztRQUVRLGFBQVEsR0FBVyxhQUFhLENBQUM7SUFDekMsQ0FBQztDQUFBO0FBSEQsd0RBR0M7QUFFRCxNQUFNLDBCQUEwQjtJQUFoQztRQUNRLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQUE7QUFFRCxNQUFNLHNCQUFzQjtJQUE1QjtRQUNRLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFXLEdBQUcsQ0FBQztJQUMvQixDQUFDO0NBQUEifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQWEsY0FBYztJQUEzQjtRQUNRLFdBQU0sR0FBeUIsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQzFELFlBQU8sR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzdELGFBQVEsR0FBMkIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hFLGlCQUFZLEdBQStCLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUM1RSxhQUFRLEdBQTJCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQVd4RSxDQUFDO0lBVE8sV0FBVyxDQUFDLFNBQStCLEVBQUUsY0FBb0MsSUFBSTtRQUMzRixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO2dCQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNuRDtpQkFBTTtnQkFDTixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Q7QUFoQkQsd0NBZ0JDO0FBRUQsTUFBTSxvQkFBb0I7SUFBMUI7UUFDUSxnQkFBVyxHQUFXLFdBQVcsQ0FBQztJQUkxQyxDQUFDO0NBQUE7QUFFRCxNQUFhLHFCQUFxQjtJQUFsQztRQUNRLFlBQU8sR0FBVyxNQUFNLENBQUM7UUFDekIsbUJBQWMsR0FBVyxvQkFBb0IsQ0FBQztRQUM5QyxVQUFLLEdBQWtCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQUE7QUFKRCxzREFJQztBQUVELE1BQWEsV0FBVztJQUF4QjtRQUVRLFVBQUssR0FBVyxNQUFNLENBQUM7UUFDdkIsYUFBUSxHQUFXLEtBQUssQ0FBQztRQUN6QixZQUFPLEdBQWtCLEtBQUssQ0FBQztRQUMvQixnQkFBVyxHQUFXLFlBQVksQ0FBQztRQUNuQyxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUFBO0FBUkQsa0NBUUM7QUFFRCxNQUFhLHNCQUFzQjtJQUFuQztRQUVRLGFBQVEsR0FBVyxhQUFhLENBQUM7SUFDekMsQ0FBQztDQUFBO0FBSEQsd0RBR0M7QUFFRCxNQUFNLDBCQUEwQjtJQUFoQztRQUNRLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQUE7QUFFRCxNQUFNLHNCQUFzQjtJQUE1QjtRQUNRLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFXLEdBQUcsQ0FBQztJQUMvQixDQUFDO0NBQUEifQ==

@@ -14,2 +14,3 @@ "use strict";

const log = new log_1.Log("DbChanStore");
// tslint:disable-next-line:no-magic-numbers
const CHAN_CACHE_LIFETIME = 1000 * 60 * 60 * 24;

@@ -50,3 +51,3 @@ class DbChanStore {

for (const row of rows) {
let res = this.getFromRow(row);
const res = this.getFromRow(row);
if (res) {

@@ -115,3 +116,3 @@ results.push(res);

});
this.remoteCache.set(`${data.roomId}_${data.puppetId}`, data);
this.remoteCache.set(`${data.puppetId};${data.roomId}`, data);
this.mxidCache.set(data.mxid, data);

@@ -124,3 +125,3 @@ });

yield this.db.Run("DELETE FROM chan_op WHERE chan_mxid=$mxid", { mxid: data.mxid });
this.remoteCache.delete(`${data.roomId}_${data.puppetId}`);
this.remoteCache.delete(`${data.puppetId};${data.roomId}`);
this.mxidCache.delete(data.mxid);

@@ -180,2 +181,2 @@ this.opCache.delete(data.mxid);

exports.DbChanStore = DbChanStore;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RiL2NoYW5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsZ0NBQTZCO0FBQzdCLHlEQUFzRDtBQUV0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUVuQyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBQyxFQUFFLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQztBQWExQyxNQUFhLFdBQVc7SUFJdkIsWUFDUyxFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUU3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksdUJBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSx1QkFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHVCQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsUUFBZ0I7UUFDNUQsT0FBTztZQUNOLElBQUk7WUFDSixNQUFNO1lBQ04sUUFBUTtTQUNXLENBQUM7SUFDdEIsQ0FBQztJQUVZLFdBQVcsQ0FBQyxRQUFnQixFQUFFLE1BQWM7O1lBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxNQUFNLEVBQUU7Z0JBQ1gsT0FBTyxNQUFNLENBQUM7YUFDZDtZQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQzVCLDhFQUE4RSxFQUFFO2dCQUNoRixPQUFPLEVBQUUsTUFBTTtnQkFDZixTQUFTLEVBQUUsUUFBUTthQUNuQixDQUFD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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RiL2NoYW5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsZ0NBQTZCO0FBQzdCLHlEQUFzRDtBQUV0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUVuQyw0Q0FBNEM7QUFDNUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFhaEQsTUFBYSxXQUFXO0lBSXZCLFlBQ1MsRUFBc0I7UUFBdEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFFOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHVCQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksdUJBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFZLEVBQUUsTUFBYyxFQUFFLFFBQWdCO1FBQzVELE9BQU87WUFDTixJQUFJO1lBQ0osTUFBTTtZQUNOLFFBQVE7U0FDVyxDQUFDO0lBQ3RCLENBQUM7SUFFWSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxNQUFjOztZQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzdELElBQUksTUFBTSxFQUFFO2dCQUNYLE9BQU8sTUFBTSxDQUFDO2FBQ2Q7WUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUM1Qiw4RUFBOEUsRUFBRTtnQkFDaEYsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsU0FBUyxFQUFFLFFB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

@@ -96,2 +96,2 @@ "use strict";

exports.Postgres = Postgres;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGdyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvcG9zdGdyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFOzs7Ozs7Ozs7O0FBRUYsd0NBQXdDO0FBQ3hDLGdDQUE2QjtBQUU3QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUVoQyxNQUFNLEdBQUcsR0FBb0IsU0FBUyxDQUFDO0FBQ3RDLHlCQUF5QjtDQUN6QixDQUFDLENBQUM7QUFFSCxNQUFhLFFBQVE7SUFXcEIsWUFBb0IsZ0JBQXdCO1FBQXhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQVZyQyxTQUFJLEdBQUcsVUFBVSxDQUFDO0lBWXpCLENBQUM7SUFWTSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7UUFDeEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsT0FBTyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBT00sSUFBSTtRQUNWLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDdkMsQ0FBQztRQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFWSxHQUFHLENBQUMsR0FBVyxFQUFFLFVBQWtDOztZQUMvRCxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckUsQ0FBQztLQUFBO0lBRVksR0FBRyxDQUFDLEdBQVcsRUFBRSxVQUFrQzs7WUFDL0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSTtnQkFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNyRTtZQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNaLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRztvQkFDOUQsT0FBTyxFQUFFLENBQUM7aUJBQ1Y7Z0JBQ0QsTUFBTSxFQUFFLENBQUM7YUFDVDtRQUNGLENBQUM7S0FBQTtJQUVZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBa0MsRUFBRSxRQUFpQjs7WUFDbEYsSUFBSSxRQUFRLEVBQUU7Z0JBQ2IsR0FBRyxJQUFJLGNBQWMsUUFBUSxFQUFFLENBQUM7YUFDaEM7WUFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ3RCLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ1Y7Z0JBQ0QsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO0tBQUE7SUFFWSxLQUFLOztZQUNqQiwwQ0FBMEM7UUFDM0MsQ0FBQztLQUFBO0lBRVksSUFBSSxDQUFDLEdBQVc7O1lBQzVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsT0FBTztRQUNSLENBQUM7S0FBQTtDQUNEO0FBOURELDRCQThEQyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGdyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvcG9zdGdyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFOzs7Ozs7Ozs7O0FBRUYsd0NBQXdDO0FBQ3hDLGdDQUE2QjtBQUU3QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUVoQyxNQUFNLEdBQUcsR0FBb0IsU0FBUyxDQUFDO0FBQ3RDLHlCQUF5QjtDQUN6QixDQUFDLENBQUM7QUFFSCxNQUFhLFFBQVE7SUFXcEIsWUFBb0IsZ0JBQXdCO1FBQXhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUpyQyxTQUFJLEdBQUcsVUFBVSxDQUFDO0lBTXpCLENBQUM7SUFaTSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7UUFDeEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsT0FBTyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBU00sSUFBSTtRQUNWLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDdkMsQ0FBQztRQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFWSxHQUFHLENBQUMsR0FBVyxFQUFFLFVBQWtDOztZQUMvRCxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckUsQ0FBQztLQUFBO0lBRVksR0FBRyxDQUFDLEdBQVcsRUFBRSxVQUFrQzs7WUFDL0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSTtnQkFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNyRTtZQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNaLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRztvQkFDOUQsT0FBTyxFQUFFLENBQUM7aUJBQ1Y7Z0JBQ0QsTUFBTSxFQUFFLENBQUM7YUFDVDtRQUNGLENBQUM7S0FBQTtJQUVZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBa0MsRUFBRSxRQUFpQjs7WUFDbEYsSUFBSSxRQUFRLEVBQUU7Z0JBQ2IsR0FBRyxJQUFJLGNBQWMsUUFBUSxFQUFFLENBQUM7YUFDaEM7WUFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ3RCLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ1Y7Z0JBQ0QsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO0tBQUE7SUFFWSxLQUFLOztZQUNqQiwwQ0FBMEM7UUFDM0MsQ0FBQztLQUFBO0lBRVksSUFBSSxDQUFDLEdBQVc7O1lBQzVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsT0FBTztRQUNSLENBQUM7S0FBQTtDQUNEO0FBOURELDRCQThEQyJ9

@@ -15,2 +15,3 @@ "use strict";

const log = new log_1.Log("DbPuppetStore");
// tslint:disable:no-magic-numbers
const PUPPET_CACHE_LIFETIME = 1000 * 60 * 60 * 24;

@@ -76,3 +77,3 @@ const MXID_INFO_LOCK_TIMEOUT = 1000;

else {
query = `UPDATE puppet_mxid_store SET
query = `UPDATE puppet_mxid_store SET
name = $name,

@@ -189,2 +190,32 @@ avatar_mxc = $avatarMxc,

}
joinGhostToChan(ghostMxid, chanMxid) {
return __awaiter(this, void 0, void 0, function* () {
const exists = yield this.db.Get("SELECT * FROM ghosts_joined_chans WHERE ghost_mxid = $ghostMxid AND chan_mxid = $chanMxid", {
ghostMxid,
chanMxid,
});
if (exists) {
return; // nothing to do
}
yield this.db.Run("INSERT INTO ghosts_joined_chans (ghost_mxid, chan_mxid) VALUES ($ghostMxid, $chanMxid)", {
ghostMxid,
chanMxid,
});
});
}
getGhostsInChan(chan) {
return __awaiter(this, void 0, void 0, function* () {
const result = [];
const rows = yield this.db.All("SELECT * FROM ghosts_joined_chans WHERE chan_mxid = $chan", { chan });
for (const r of rows) {
result.push(r.ghost_mxid);
}
return result;
});
}
emptyGhostsInChan(chan) {
return __awaiter(this, void 0, void 0, function* () {
yield this.db.Run("DELETE FROM ghosts_joined_chans WHERE chan_mxid = $chan", { chan });
});
}
getRow(row) {

@@ -206,2 +237,2 @@ try {

exports.DbPuppetStore = DbPuppetStore;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVwcGV0c3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvcHVwcGV0c3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLGdDQUE2QjtBQUM3Qix5REFBc0Q7QUFDdEQsNkNBQTBDO0FBRTFDLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXJDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFDO0FBQzVDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBaUJwQyxNQUFhLGFBQWE7SUFHekIsWUFDUyxFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUU5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksdUJBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVksV0FBVyxDQUFDLFVBQWtCOztZQUMxQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLHVEQUF1RCxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDM0csSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxPQUFPLElBQUksQ0FBQzthQUNaO1lBQ0QsT0FBTztnQkFDTixVQUFVO2dCQUNWLElBQUksRUFBRSxHQUFHLENBQUMsSUFBcUI7Z0JBQy9CLFNBQVMsRUFBRSxHQUFHLENBQUMsVUFBMkI7Z0JBQzFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBc0I7YUFDcEIsQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFFWSxtQkFBbUIsQ0FBQyxVQUFrQjs7WUFDbEQsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMs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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVwcGV0c3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvcHVwcGV0c3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLGdDQUE2QjtBQUM3Qix5REFBc0Q7QUFDdEQsNkNBQTBDO0FBRTFDLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXJDLGtDQUFrQztBQUNsQyxNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNsRCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQztBQWtCcEMsTUFBYSxhQUFhO0lBR3pCLFlBQ1MsRUFBc0I7UUFBdEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFFOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHVCQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksV0FBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVZLFdBQVcsQ0FBQyxVQUFrQjs7WUFDMUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyx1REFBdUQsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzNHLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1QsT0FBTyxJQUFJLENBQUM7YUFDWjtZQUNELE9BQU87Z0JBQ04sVUFBVTtnQkFDVixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQXFCO2dCQUMvQixTQUFTLEVBQUUsR0FBRyxDQUFDLFVBQTJCO2dCQUMxQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQXNCO2FBQ3BCLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRVksbUJBQW1CLENBQUMsVUFBa0I7O1lBQ2xELE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENB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

@@ -14,2 +14,3 @@ "use strict";

const log = new log_1.Log("DbUserStore");
// tslint:disable-next-line:no-magic-numbers
const USERS_CACHE_LIFETIME = 1000 * 60 * 60 * 24;

@@ -21,18 +22,20 @@ class DbUserStore {

}
newData(userId) {
newData(puppetId, userId) {
return {
puppetId,
userId,
};
}
get(userId) {
get(puppetId, userId) {
return __awaiter(this, void 0, void 0, function* () {
const cached = this.usersCache.get(userId);
const cacheKey = `${puppetId};${userId}`;
const cached = this.usersCache.get(cacheKey);
if (cached) {
return cached;
}
const row = yield this.db.Get("SELECT * FROM user_store WHERE user_id = $id", { id: userId });
const row = yield this.db.Get("SELECT * FROM user_store WHERE user_id = $id AND puppet_id = $pid", { id: userId, pid: puppetId });
if (!row) {
return null;
}
const data = this.newData(userId);
const data = this.newData(puppetId, userId);
data.name = row.name;

@@ -42,3 +45,3 @@ data.avatarUrl = row.avatar_url;

data.avatarHash = row.avatar_hash;
this.usersCache.set(userId, data);
this.usersCache.set(cacheKey, data);
return data;

@@ -49,3 +52,3 @@ });

return __awaiter(this, void 0, void 0, function* () {
const exists = yield this.db.Get("SELECT * FROM user_store WHERE user_id = $id", { id: data.userId });
const exists = yield this.db.Get("SELECT * FROM user_store WHERE user_id = $id AND puppet_id = $pid", { id: data.userId, pid: data.puppetId });
let query = "";

@@ -55,2 +58,3 @@ if (!exists) {

user_id,
puppet_id,
name,

@@ -62,2 +66,3 @@ avatar_url,

$user_id,
$puppet_id,
$name,

@@ -75,6 +80,7 @@ $avatar_url,

avatar_hash = $avatar_hash
WHERE user_id = $user_id`;
WHERE user_id = $user_id AND puppet_id = $puppet_id`;
}
yield this.db.Run(query, {
user_id: data.userId,
puppet_id: data.puppetId,
name: data.name || null,

@@ -85,7 +91,18 @@ avatar_url: data.avatarUrl || null,

});
this.usersCache.set(data.userId, data);
const cacheKey = `${data.puppetId};${data.userId}`;
this.usersCache.set(cacheKey, data);
});
}
delete(data) {
return __awaiter(this, void 0, void 0, function* () {
yield this.db.Run("DELETE FROM user_store WHERE user_id = $user_id AND puppet_id = $puppet_id", {
user_id: data.userId,
puppet_id: data.puppetId,
});
const cacheKey = `${data.puppetId};${data.userId}`;
this.usersCache.delete(cacheKey);
});
}
}
exports.DbUserStore = DbUserStore;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RiL3VzZXJzdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsZ0NBQTZCO0FBQzdCLHlEQUFzRDtBQUV0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUVuQyxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBQyxFQUFFLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQztBQVUzQyxNQUFhLFdBQVc7SUFFdkIsWUFDUyxFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUU5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksdUJBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxPQUFPLENBQUMsTUFBYztRQUM1QixPQUFPO1lBQ04sTUFBTTtTQUNhLENBQUM7SUFDdEIsQ0FBQztJQUVZLEdBQUcsQ0FBQyxNQUFjOztZQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQyxJQUFJLE1BQU0sRUFBRTtnQkFDWCxPQUFPLE1BQU0sQ0FBQzthQUNkO1lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FDNUIsOENBQThDLEVBQUUsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFDLENBQzVELENBQUM7WUFDRixJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULE9BQU8sSUFBSSxDQUFDO2FBQ1o7WUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQW1CLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsVUFBMkIsQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUEwQixDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQTRCLENBQUM7WUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztLQUFBO0lBRVksR0FBRyxDQUFDLElBQXFCOztZQUNyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUMvQiw4Q0FBOEMsRUFBRSxFQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFDLENBQ2pFLENBQUM7WUFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNaLEtBQUssR0FBRzs7Ozs7Ozs7Ozs7O0tBWU4sQ0FBQzthQUNIO2lCQUFNO2dCQUNOLEtBQUssR0FBRzs7Ozs7NkJBS2tCLENBQUM7YUFDM0I7WUFDRCxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDeEIsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUN2QixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJO2dCQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJO2dCQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJO2FBQ3BDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsQ0FBQztLQUFBO0NBQ0Q7QUF0RUQsa0NBc0VDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RiL3VzZXJzdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsZ0NBQTZCO0FBQzdCLHlEQUFzRDtBQUV0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUVuQyw0Q0FBNEM7QUFDNUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFXakQsTUFBYSxXQUFXO0lBRXZCLFlBQ1MsRUFBc0I7UUFBdEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFFOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sT0FBTyxDQUFDLFFBQWdCLEVBQUUsTUFBYztRQUM5QyxPQUFPO1lBQ04sUUFBUTtZQUNSLE1BQU07U0FDYSxDQUFDO0lBQ3RCLENBQUM7SUFFWSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxNQUFjOztZQUNoRCxNQUFNLFFBQVEsR0FBRyxHQUFHLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxJQUFJLE1BQU0sRUFBRTtnQkFDWCxPQUFPLE1BQU0sQ0FBQzthQUNkO1lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FDNUIsbUVBQW1FLEVBQUUsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUMsQ0FDaEcsQ0FBQztZQUNGLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1QsT0FBTyxJQUFJLENBQUM7YUFDWjtZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQW1CLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsVUFBMkIsQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUEwQixDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQTRCLENBQUM7WUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztLQUFBO0lBRVksR0FBRyxDQUFDLElBQXFCOztZQUNyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUMvQixtRUFBbUUsRUFBRSxFQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLENBQzFHLENBQUM7WUFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNaLEtBQUssR0FBRzs7Ozs7Ozs7Ozs7Ozs7S0FjTixDQUFDO2FBQ0g7aUJBQU07Z0JBQ04sS0FBSyxHQUFHOzs7Ozt3REFLNkMsQ0FBQzthQUN0RDtZQUNELE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSTtnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSTtnQkFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSTtnQkFDbEMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSTthQUNwQyxDQUFDLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0tBQUE7SUFFWSxNQUFNLENBQUMsSUFBcUI7O1lBQ3hDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsNEVBQTRFLEVBQUU7Z0JBQy9GLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3hCLENBQUMsQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQztLQUFBO0NBQ0Q7QUFyRkQsa0NBcUZDIn0=

@@ -42,2 +42,2 @@ "use strict";

exports.PuppetBridgeJoinRoomStrategy = PuppetBridgeJoinRoomStrategy;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pvaW5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUEsK0JBQTRCO0FBRTVCLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXBDLE1BQWEsNEJBQTRCO0lBQ3hDLFlBQ1Msa0JBQXFDLEVBQ3JDLE1BQW9CO1FBRHBCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUN6QixDQUFDO0lBRVEsUUFBUSxDQUFDLGFBQXFCLEVBQUUsTUFBYyxFQUFFLE9BQW1EOztZQUMvRyxJQUFJO2dCQUNILE9BQU8sTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDcEM7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDYixHQUFHLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBQ3hDLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNaLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDaEQ7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDNUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ2pFO3FCQUFNO29CQUNOLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN2QjthQUNEO1FBQ0YsQ0FBQztLQUFBO0NBQ0Q7QUF4QkQsb0VBd0JDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pvaW5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUEsK0JBQTRCO0FBRTVCLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXBDLE1BQWEsNEJBQTRCO0lBQ3hDLFlBQ1Msa0JBQXFDLEVBQ3JDLE1BQW9CO1FBRHBCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUN6QixDQUFDO0lBRVEsUUFBUSxDQUNwQixhQUFxQixFQUNyQixNQUFjLEVBQ2QsT0FBbUQ7O1lBRW5ELElBQUk7Z0JBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNwQztZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ1osTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO2lCQUNoRDtnQkFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3ZELE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO29CQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDakU7cUJBQU07b0JBQ04sT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ3ZCO2FBQ0Q7UUFDRixDQUFDO0tBQUE7Q0FDRDtBQTVCRCxvRUE0QkMifQ==

@@ -53,2 +53,3 @@ "use strict";

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(p);

@@ -59,2 +60,3 @@ }

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(this.presenceQueue[index]);

@@ -76,2 +78,3 @@ }

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(p);

@@ -82,2 +85,3 @@ }

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(this.presenceQueue[index]);

@@ -132,2 +136,2 @@ }

exports.PresenceHandler = PresenceHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VuY2VoYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ByZXNlbmNlaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsK0JBQTRCO0FBRTVCLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFldkMsTUFBYSxlQUFlO0lBRzNCLFlBQ1MsTUFBb0I7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUU1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRVksS0FBSyxDQUFDLFlBQW9COztZQUN0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ1o7WUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLCtDQUErQyxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDdEUsWUFBWSxDQUFDLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRU0sSUFBSTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztZQUNoRCxPQUFPO1NBQ1A7UUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDdEMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN0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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VuY2VoYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ByZXNlbmNlaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsK0JBQTRCO0FBRTVCLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFldkMsTUFBYSxlQUFlO0lBRzNCLFlBQ1MsTUFBb0I7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUU1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRVksS0FBSyxDQUFDLFlBQW9COztZQUN0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ1o7WUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLCtDQUErQyxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDdEUsWUFBWSxDQUFDLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRU0sSUFBSTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztZQUNoRCxPQUFPO1NBQ1A7UUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDdEMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN0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

@@ -33,7 +33,40 @@ "use strict";

}
getMxid(puppetMxid) {
getMxid(puppetId) {
return __awaiter(this, void 0, void 0, function* () {
return yield this.puppetStore.getMxid(puppetMxid);
return yield this.puppetStore.getMxid(puppetId);
});
}
parseToken(mxid, token) {
let hsUrl = mxid.split(":")[1];
if (hsUrl === "localhost") {
hsUrl = "http://" + hsUrl;
}
else {
hsUrl = "https://" + hsUrl;
}
return { token, hsUrl };
}
getToken(puppetId) {
return __awaiter(this, void 0, void 0, function* () {
let mxid = "";
if (typeof puppetId === "string") {
mxid = puppetId;
}
else {
mxid = yield this.getMxid(puppetId);
}
const info = yield this.puppetStore.getMxidInfo(mxid);
if (!info || !info.token) {
return null;
}
return this.parseToken(mxid, info.token);
});
}
setToken(mxid, token) {
return __awaiter(this, void 0, void 0, function* () {
const info = yield this.puppetStore.getOrCreateMxidInfo(mxid);
info.token = token;
yield this.puppetStore.setMxidInfo(info);
});
}
setUserId(puppetId, userId) {

@@ -99,3 +132,3 @@ return __awaiter(this, void 0, void 0, function* () {

const datas = yield this.getForMxid(puppetMxid);
let descs = [];
const descs = [];
for (const data of datas) {

@@ -125,2 +158,2 @@ descs.push(yield this.getDescFromData(data));

exports.Provisioner = Provisioner;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlzaW9uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmlzaW9uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBLCtCQUE0QjtBQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQVFuQyxNQUFhLFdBQVc7SUFFdkIsWUFDUyxNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBRTVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDNUMsQ0FBQztJQUVZLE1BQU07O1lBQ2xCLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLENBQUM7S0FBQTtJQUVZLFVBQVUsQ0FBQyxVQUFrQjs7WUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7S0FBQTtJQUVZLEdBQUcsQ0FBQyxRQUFnQjs7WUFDaEMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUM7S0FBQTtJQUVZLE9BQU8sQ0FBQyxVQUFrQjs7WUFDdEMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7S0FBQTtJQUVZLFNBQVMsQ0FBQyxRQUFnQixFQUFFLE1BQWM7O1lBQ3RELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUM7S0FBQTtJQUVZLE9BQU8sQ0FBQyxRQUFnQixFQUFFLElBQVM7O1lBQy9DLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlzaW9uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmlzaW9uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBLCtCQUE0QjtBQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQWFuQyxNQUFhLFdBQVc7SUFFdkIsWUFDUyxNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBRTVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDNUMsQ0FBQztJQUVZLE1BQU07O1lBQ2xCLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLENBQUM7S0FBQTtJQUVZLFVBQVUsQ0FBQyxVQUFrQjs7WUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7S0FBQTtJQUVZLEdBQUcsQ0FBQyxRQUFnQjs7WUFDaEMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUM7S0FBQTtJQUVZLE9BQU8sQ0FBQyxRQUFnQjs7WUFDcEMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELENBQUM7S0FBQTtJQUVNLFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUM1QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUMxQixLQUFLLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUMxQjthQUFNO1lBQ04sS0FBSyxHQUFHLFVBQVUsR0FBRyxLQUFLLENBQUM7U0FDM0I7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBb0IsQ0FBQztJQUMzQyxDQUFDO0lBRVksUUFBUSxDQUFDLFFBQXlCOztZQUM5QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDakMsSUFBSSxHQUFHLFFBQVEsQ0FBQzthQUNoQjtpQkFBTTtnQkFDTixJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3BDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDekIsT0FBTyxJQUFJLENBQUM7YUFDWjtZQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7S0FBQTtJQUVZLFFBQVEsQ0FBQyxJQUFZLEVBQUUsS0FBb0I7O1lBQ3ZELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUM7S0FBQTtJQUVZLFNBQVMsQ0FBQyxRQUFnQixFQUFFLE1BQWM7O1lBQ3RELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUM7S0FBQTtJQUVZLE9BQU8sQ0FBQyxRQUFnQixFQUFFLElBQVM7O1lBQy9DLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUM7S0FBQTtJQUVNLFNBQVMsQ0FBQyxJQUFZO1FBQzVCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUMxRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE9BQU8sS0FBSyxDQUFDO2FBQ2I7U0FDRDtRQUNELElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDMUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNsQixXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixNQUFNO2FBQ047U0FDRDtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFFWSxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFTLEVBQUUsTUFBZTs7WUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDVjtZQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLDhCQUE4QixRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRVksTUFBTSxDQUFDLFVBQWtCLEVBQUUsUUFBZ0I7O1lBQ3ZELEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7Z0JBQzVDLE9BQU87YUFDUDtZQUNELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7S0FBQTtJQUVZLE9BQU8sQ0FBQyxVQUFrQixFQUFFLFFBQWdCOztZQUN4RCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtnQkFDNUMsT0FBTyxJQUFJLENBQUM7YUFDWjtZQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7S0FBQTtJQUVZLFdBQVcsQ0FBQyxVQUFrQjs7WUFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sS0FBSyxHQUFHLEVBQXdCLENBQUM7WUFDdkMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7Z0JBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDN0M7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVhLGVBQWUsQ0FBQyxJQUFTOztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUMvQixPQUFPO29CQUNOLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsUUFBUSxHQUFHO29CQUM3QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxRQUFRLEdBQUc7aUJBQ3pCLENBQUM7YUFDdEI7WUFDRCxPQUFPO2dCQUNOLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0JBQ3RFLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2FBQ2pELENBQUM7UUFDdkIsQ0FBQztLQUFBO0NBQ0Q7QUFsSUQsa0NBa0lDIn0=

@@ -29,12 +29,5 @@ "use strict";

const log = new log_1.Log("PuppetBridge");
// tslint:disable-next-line:no-magic-numbers
const PUPPET_INVITE_CACHE_LIFETIME = 1000 * 60 * 60 * 24;
;
;
;
;
;
;
;
;
;
const DEFAULT_TYPING_TIMEOUT = 30000;
class PuppetBridge extends events_1.EventEmitter {

@@ -58,3 +51,3 @@ constructor(registrationPath, configPath, features) {

return __awaiter(this, void 0, void 0, function* () {
this.readConfig();
yield this.readConfig();
this.store = new store_1.Store(this.config.database);

@@ -66,3 +59,3 @@ yield this.store.init();

this.presenceHandler = new presencehandler_1.PresenceHandler(this);
this.typingHandler = new typinghandler_1.TypingHandler(this);
this.typingHandler = new typinghandler_1.TypingHandler(this, this.features.typingTimeout || DEFAULT_TYPING_TIMEOUT);
this.botProvisioner = new botprovisioner_1.BotProvisioner(this);

@@ -179,5 +172,20 @@ });

log.verbose("Got request to update a channel");
yield this.chanSync.getMxid(chan);
yield this.chanSync.getMxid(chan, undefined, undefined, false);
});
}
unbridgeChannelByMxid(mxid) {
return __awaiter(this, void 0, void 0, function* () {
const chan = yield this.chanSync.getRemoteHandler(mxid);
yield this.unbridgeChannel(chan);
});
}
unbridgeChannel(chan) {
return __awaiter(this, void 0, void 0, function* () {
if (!chan) {
return;
}
log.info(`Got request to unbridge channel puppetId=${chan.puppetId} roomId=${chan.roomId}`);
yield this.chanSync.delete(chan);
});
}
setUserPresence(user, presence) {

@@ -292,2 +300,3 @@ return __awaiter(this, void 0, void 0, function* () {

body: opts.body,
source: "remote",
};

@@ -338,2 +347,3 @@ if (opts.formatted_body) {

url: fileMxc,
source: "remote",
};

@@ -360,7 +370,17 @@ if (typeof thing === "string") {

const client = yield this.userSync.getClient(params.user);
const { mxid, created } = yield this.chanSync.getMxid(params.chan, client, [puppetMxid]);
const userId = yield client.getUserId();
// we could be the one creating the room, no need to invite ourself
const invites = [];
if (userId !== puppetMxid) {
invites.push(puppetMxid);
}
else {
// else we need the bot client in order to be able to receive matrix messages
invites.push(yield this.botIntent.underlyingClient.getUserId());
}
const { mxid, created } = yield this.chanSync.getMxid(params.chan, client, invites);
// ensure that the intent is in the room
const userId = yield client.getUserId();
if (this.appservice.isNamespacedUser(userId)) {
yield this.appservice.getIntentForUserId(userId).ensureRegisteredAndJoined(mxid);
const intent = this.appservice.getIntentForUserId(userId);
yield intent.ensureRegisteredAndJoined(mxid);
}

@@ -380,4 +400,7 @@ // ensure our puppeted user is in the room

}
yield client.inviteUser(puppetMxid, mxid);
this.ghostInviteCache.set(cacheKey, true);
// we can't really invite ourself...
if ((yield inviteClient.getUserId()) !== puppetMxid) {
yield client.inviteUser(puppetMxid, mxid);
this.ghostInviteCache.set(cacheKey, true);
}
}

@@ -403,5 +426,10 @@ }

if (event.type === "m.room.member" && event.content) {
if (event.content.membership === "join") {
yield this.handleJoinEvent(roomId, event);
return;
switch (event.content.membership) {
case "join":
yield this.handleJoinEvent(roomId, event);
return;
case "ban":
case "leave":
yield this.handleLeaveEvent(roomId, event);
return;
}

@@ -420,3 +448,3 @@ }

// this isn't a room we handle....so let's do provisioning!
this.botProvisioner.processEvent(event);
yield this.botProvisioner.processEvent(event);
return;

@@ -429,4 +457,8 @@ }

log.info(`New message by ${event.sender} of type ${event.type} to process!`);
if (event.content.source === "remote") {
log.verbose("Dropping event due to de-duping...");
return;
}
let msgtype = event.content.msgtype;
if (event.type == "m.sticker") {
if (event.type === "m.sticker") {
msgtype = "m.sticker";

@@ -436,10 +468,11 @@ }

// short-circuit text stuff
const data = {
const msgData = {
body: event.content.body,
emote: msgtype === "m.emote",
notice: msgtype === "m.notice",
};
if (event.content.format) {
data.formatted_body = event.content.formatted_body;
msgData.formatted_body = event.content.formatted_body;
}
this.emit("message", room, data, event);
this.emit("message", room, msgData, event);
return;

@@ -489,2 +522,13 @@ }

}
handleGhostJoinEvent(roomId, ghostId) {
return __awaiter(this, void 0, void 0, function* () {
if (ghostId === this.appservice.botIntent.userId) {
return; // we don't handle ghost user here
}
// we CAN'T check for if the room exists here, as if we create a new room
// the m.room.member event triggers before the room is incerted into the store
log.verbose("adding ghost to chan cache");
yield this.store.puppetStore.joinGhostToChan(ghostId, roomId);
});
}
handleJoinEvent(roomId, event) {

@@ -494,6 +538,8 @@ return __awaiter(this, void 0, void 0, function* () {

const userId = event.state_key;
if (this.appservice.isNamespacedUser(event.sender)) {
return; // we don't handle things from our own namespace
if (this.appservice.isNamespacedUser(userId)) {
// let's add the ghost to the things to quit....
yield this.handleGhostJoinEvent(roomId, userId);
return;
}
const room = yield this.chanSync.getRemoteHandler(event.room_id);
const room = yield this.chanSync.getRemoteHandler(roomId);
if (!room) {

@@ -533,2 +579,24 @@ return; // this isn't a room we handle, just ignore it

}
handleLeaveEvent(roomId, event) {
return __awaiter(this, void 0, void 0, function* () {
const userId = event.state_key;
if (this.appservice.isNamespacedUser(userId)) {
if (userId !== event.sender) {
// puppet got kicked, unbridging room
yield this.unbridgeChannelByMxid(roomId);
}
return;
}
const room = yield this.chanSync.getRemoteHandler(roomId);
if (!room) {
return; // this isn't a room we handle, just ignore it
}
const puppetMxid = yield this.provisioner.getMxid(room.puppetId);
if (userId !== puppetMxid) {
return; // it wasn't us
}
log.verbose(`Received leave event from ${puppetMxid}`);
yield this.unbridgeChannel(room);
});
}
handleInviteEvent(roomId, event) {

@@ -545,2 +613,2 @@ return __awaiter(this, void 0, void 0, function* () {

exports.PuppetBridge = PuppetBridge;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVwcGV0YnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3B1cHBldGJyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLG1EQU13QjtBQUN4QixnQ0FBZ0M7QUFDaEMsZ0NBQWdDO0FBQ2hDLG1DQUFzQztBQUN0Qyw2REFBK0Y7QUFDL0YsdURBQXdFO0FBQ3hFLHFDQUEwQztBQUMxQyxpQ0FBOEI7QUFDOUIsK0JBQTRCO0FBSTVCLCtDQUE0QztBQUM1QyxtQ0FBZ0M7QUFDaEMsd0RBQXFEO0FBQ3JELGlEQUE4RDtBQUM5RCxxREFBa0Q7QUFDbEQsdURBQW9FO0FBQ3BFLG1EQUFnRDtBQUVoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUVwQyxNQUFNLDRCQUE0QixHQUFHLElBQUksR0FBQyxFQUFFLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQztBQUtsRCxDQUFDO0FBT0QsQ0FBQztBQWFELENBQUM7QUFLRCxDQUFDO0FBT0QsQ0FBQztBQU1ELENBQUM7QUFZRCxDQUFDO0FBT0QsQ0FBQztBQWNELENBQUM7QUFFRixNQUFhLFlBQWEsU0FBUSxxQkFBWTtJQWE3QyxZQUNTLGdCQUF3QixFQUN4QixVQUFrQixFQUNsQixRQUErQjtRQUV2QyxLQUFLLEVBQUUsQ0FBQztRQUpBLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBR3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHVCQUFVLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQXdCLENBQUM7SUFDdkMsQ0FBQztJQUVZLFVBQVU7O1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx1QkFBYyxFQUFFLENBQUM7WUFDbkMsSUFBSSxD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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVwcGV0YnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3B1cHBldGJyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLG1EQU13QjtBQUN4QixnQ0FBZ0M7QUFDaEMsZ0NBQWdDO0FBQ2hDLG1DQUFzQztBQUN0Qyw2REFBdUU7QUFDdkUsdURBQWlFO0FBQ2pFLHFDQUEwQztBQUMxQyxpQ0FBOEI7QUFDOUIsK0JBQTRCO0FBSTVCLCtDQUE0QztBQUM1QyxtQ0FBZ0M7QUFDaEMsd0RBQXFEO0FBQ3JELGlEQUE4RDtBQUM5RCxxREFBa0Q7QUFDbEQsdURBQW9FO0FBQ3BFLG1EQUFnRDtBQUVoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUVwQyw0Q0FBNEM7QUFDNUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDekQsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7QUEyRXJDLE1BQWEsWUFBYSxTQUFRLHFCQUFZO0lBYTdDLFlBQ1MsZ0JBQXdCLEVBQ3hCLFVBQWtCLEVBQ2xCLFFBQStCO1FBRXZDLEtBQUssRUFBRSxDQUFDO1FBSkEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBdUI7UUFHdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksdUJBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBd0IsQ0FBQztJQUN2QyxDQUFDO0lBRVksVUFBVTs7WUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHVCQUFjLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFD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

@@ -18,3 +18,3 @@ "use strict";

const log = new log_1.Log("Store");
exports.CURRENT_SCHEMA = 2;
exports.CURRENT_SCHEMA = 4;
class Store {

@@ -68,3 +68,3 @@ constructor(config) {

return __awaiter(this, void 0, void 0, function* () {
this.db.Close();
yield this.db.Close();
});

@@ -133,2 +133,2 @@ }

exports.Store = Store;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLDBDQUF1QztBQUN2Qyw0Q0FBeUM7QUFDekMsK0JBQTRCO0FBRTVCLDhDQUE2QztBQUM3Qyw4Q0FBNkM7QUFDN0Msa0RBQWlEO0FBRWpELE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWhCLFFBQUEsY0FBYyxHQUFHLENBQUMsQ0FBQztBQUVoQyxNQUFhLEtBQUs7SUFNakIsWUFBb0IsTUFBOEI7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFBSSxDQUFDO0lBRXZELElBQUksU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUVZLElBQUksQ0FBQyxpQkFBeUIsQ0FBQzs7WUFDM0MsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxJQUFJLHNCQUFjLENBQUM7WUFDdEQsR0FBRyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsT0FBTyx1QkFBdUIsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNyRixPQUFPLE9BQU8sR0FBRyxZQUFZLEVBQUU7Z0JBQzlCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLDBDQUF1QztBQUN2Qyw0Q0FBeUM7QUFDekMsK0JBQTRCO0FBRTVCLDhDQUE2QztBQUM3Qyw4Q0FBNkM7QUFDN0Msa0RBQWlEO0FBRWpELE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWhCLFFBQUEsY0FBYyxHQUFHLENBQUMsQ0FBQztBQUVoQyxNQUFhLEtBQUs7SUFNakIsWUFBb0IsTUFBOEI7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFBSSxDQUFDO0lBRXZELElBQUksU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUVZLElBQUksQ0FBQyxpQkFBeUIsQ0FBQzs7WUFDM0MsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxJQUFJLHNCQUFjLENBQUM7WUFDdEQsR0FBRyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsT0FBTyx1QkFBdUIsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNyRixPQUFPLE9BQU8sR0FBRyxZQUFZLEVBQUU7Z0JBQzlCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JB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

@@ -25,3 +25,4 @@ "use strict";

const p = new Promise((resolve) => {
// first we check if the lock has the key....if not, e.g. if it got released too quickly, we still want to resolve our promise
// first we check if the lock has the key....if not, e.g. if it
// got released too quickly, we still want to resolve our promise
if (!this.locks.has(key)) {

@@ -66,2 +67,2 @@ resolve();

exports.Lock = Lock;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3R1cmVzL2xvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE1BQWEsSUFBSTtJQUdoQixZQUNTLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRXZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFNO1FBQ2hCLDZEQUE2RDtRQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE9BQU87U0FDUDtRQUVELG1GQUFtRjtRQUNuRixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFLLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckMsOEhBQThIO1lBQzlILElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekIsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTzthQUNQO1lBQ0Qsc0VBQXNFO1lBQ3RFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQiwwQkFBMEI7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBTTtRQUNwQixrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDUDtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1Q7UUFDRCxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVksSUFBSSxDQUFDLEdBQU07O1lBQ3ZCLDBEQUEwRDtZQUMxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxJQUFJLE9BQU8sRUFBRTtnQkFDWixNQUFNLE9BQU8sQ0FBQzthQUNkO1FBQ0YsQ0FBQztLQUFBO0NBQ0Q7QUExREQsb0JBMERDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3R1cmVzL2xvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE1BQWEsSUFBSTtJQUdoQixZQUNTLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRXZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFNO1FBQ2hCLDZEQUE2RDtRQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE9BQU87U0FDUDtRQUVELG1GQUFtRjtRQUNuRixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFLLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckMsK0RBQStEO1lBQy9ELGlFQUFpRTtZQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU87YUFDUDtZQUNELHNFQUFzRTtZQUN0RSxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakIsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQU07UUFDcEIsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QixPQUFPO1NBQ1A7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNUO1FBQ0QsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVZLElBQUksQ0FBQyxHQUFNOztZQUN2QiwwREFBMEQ7WUFDMUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0MsSUFBSSxPQUFPLEVBQUU7Z0JBQ1osTUFBTSxPQUFPLENBQUM7YUFDZDtRQUNGLENBQUM7S0FBQTtDQUNEO0FBM0RELG9CQTJEQyJ9

@@ -14,4 +14,5 @@ "use strict";

class TypingHandler {
constructor(bridge) {
constructor(bridge, timeout) {
this.bridge = bridge;
this.timeout = timeout;
}

@@ -32,3 +33,3 @@ set(mxid, roomId, typing) {

typing,
timeout: 30000,
timeout: this.timeout,
});

@@ -46,2 +47,2 @@ }

exports.TypingHandler = TypingHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwaW5naGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBpbmdoYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSwrQkFBNEI7QUFFNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFckMsTUFBYSxhQUFhO0lBQ3pCLFlBQ1MsTUFBb0I7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUN6QixDQUFDO0lBRVEsR0FBRyxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsTUFBZTs7WUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU87YUFDUDtZQUNELEdBQUcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLElBQUksWUFBWSxNQUFNLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJO2dCQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sR0FBRyxHQUFHLDRCQUE0QixTQUFTLFdBQVcsT0FBTyxFQUFFLENBQUM7Z0JBQ3RFLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtvQkFDekQsTUFBTTtvQkFDTixPQUFPLEVBQUUsS0FBSztpQkFDZCxDQUFDLENBQUM7YUFDSDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDMUM7UUFDRixDQUFDO0tBQUE7SUFFTyxPQUFPLENBQUMsSUFBWTtRQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDdkYsQ0FBQztDQUNEO0FBNUJELHNDQTRCQyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwaW5naGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBpbmdoYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSwrQkFBNEI7QUFFNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFckMsTUFBYSxhQUFhO0lBQ3pCLFlBQ1MsTUFBb0IsRUFDcEIsT0FBZTtRQURmLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUNwQixDQUFDO0lBRVEsR0FBRyxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsTUFBZTs7WUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU87YUFDUDtZQUNELEdBQUcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLElBQUksWUFBWSxNQUFNLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJO2dCQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sR0FBRyxHQUFHLDRCQUE0QixTQUFTLFdBQVcsT0FBTyxFQUFFLENBQUM7Z0JBQ3RFLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtvQkFDekQsTUFBTTtvQkFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ3JCLENBQUMsQ0FBQzthQUNIO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUMxQztRQUNGLENBQUM7S0FBQTtJQUVPLE9BQU8sQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUN2RixDQUFDO0NBQ0Q7QUE3QkQsc0NBNkJDIn0=

@@ -11,2 +11,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const matrix_bot_sdk_1 = require("matrix-bot-sdk");
const util_1 = require("./util");

@@ -16,2 +17,3 @@ const log_1 = require("./log");

const log = new log_1.Log("UserSync");
// tslint:disable-next-line:no-magic-numbers
const CLIENT_LOOKUP_LOCK_TIMEOUT = 1000 * 60;

@@ -24,7 +26,33 @@ class UserSyncroniser {

}
getClientFromTokenCallback(token) {
return __awaiter(this, void 0, void 0, function* () {
if (!token) {
return null;
}
const client = new matrix_bot_sdk_1.MatrixClient(token.hsUrl, token.token);
try {
yield client.getUserId();
return client;
}
catch (err) {
log.verbose("Invalid client config");
}
return null;
});
}
getClient(data) {
return __awaiter(this, void 0, void 0, function* () {
// first we look if we can puppet this user to the matrix side
const puppetData = yield this.bridge.provisioner.get(data.puppetId);
if (puppetData && puppetData.userId === data.userId) {
const token = yield this.bridge.provisioner.getToken(data.puppetId);
const puppetClient = yield this.getClientFromTokenCallback(token);
if (puppetClient) {
return puppetClient;
}
}
// now we fetch the ghost client
yield this.clientLock.wait(data.userId);
log.info("Fetching client for " + data.userId);
let user = yield this.userStore.get(data.userId);
let user = yield this.userStore.get(data.puppetId, data.userId);
const update = {

@@ -41,11 +69,14 @@ name: false,

if (this.bridge.hooks.createUser) {
log.verbose("Fetching new override data...");
const newData = yield this.bridge.hooks.createUser(data.puppetId, data.userId);
if (newData && newData.userId === data.userId && newData.puppetId === data.puppetId) {
log.verbose("got new user data to override");
data = newData;
}
else {
log.warn("Override data is malformed! Old data:", data, "New data:", newData);
}
}
update.name = data.name ? true : false;
update.avatar = data.avatarUrl ? true : false;
user = this.userStore.newData(data.userId);
user = this.userStore.newData(data.puppetId, data.userId);
}

@@ -61,2 +92,5 @@ else {

log.verbose("Updating name");
// we *don't* await here as setting the name might take a
// while due to updating all those m.room.member events, we can do that in the BG
// tslint:disable-next-line:no-floating-promises
client.setDisplayName(data.name || "");

@@ -67,4 +101,4 @@ user.name = data.name;

log.verbose("Updating avatar");
const { doUpdate, mxcUrl, hash } = yield util_1.Util.MaybeUploadFile(client, data, user.avatarHash);
if (doUpdate) {
const { doUpdate: updateAvatar, mxcUrl, hash } = yield util_1.Util.MaybeUploadFile(client, data, user.avatarHash);
if (updateAvatar) {
update.avatar = true;

@@ -76,2 +110,3 @@ user.avatarUrl = data.avatarUrl;

// and we might as well do this in the background
// tslint:disable-next-line:no-floating-promises
client.setAvatarUrl(user.avatarMxc || "");

@@ -94,4 +129,37 @@ }

}
getPartsFromMxid(mxid) {
const suffix = this.bridge.AS.getSuffixForUserId(mxid);
if (!suffix) {
return null;
}
const MXID_MATCH_PUPPET_ID = 1;
const MXID_MATCH_USER_ID = 2;
const matches = suffix.match(/^(\d+)_(.*)/);
if (!matches) {
return null;
}
const puppetId = Number(matches[MXID_MATCH_PUPPET_ID]);
const userId = util_1.Util.mxid2str(matches[MXID_MATCH_USER_ID]);
if (isNaN(puppetId)) {
return null;
}
return {
puppetId,
userId,
};
}
deleteForMxid(mxid) {
return __awaiter(this, void 0, void 0, function* () {
const user = this.getPartsFromMxid(mxid);
if (!user) {
return null;
}
log.info(`Deleting ghost ${mxid}`);
yield this.userStore.delete(user);
const intent = this.bridge.AS.getIntentForUserId(mxid);
return intent;
});
}
}
exports.UserSyncroniser = UserSyncroniser;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnN5bmNyb25pc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VzZXJzeW5jcm9uaXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUEsaUNBQThCO0FBQzlCLCtCQUE0QjtBQUU1Qiw0Q0FBeUM7QUFFekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFaEMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUMsRUFBRSxDQUFDO0FBVzNDLE1BQWEsZUFBZTtJQUczQixZQUNTLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFFNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksV0FBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVZLFNBQVMsQ0FBQyxJQUF3Qjs7WUFDOUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsTUFBTSxNQUFNLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLEtBQUs7YUFDYixDQUFDO1lBQ0YsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1YsR0FBRyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnN5bmNyb25pc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VzZXJzeW5jcm9uaXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsbURBQXNEO0FBQ3RELGlDQUE4QjtBQUM5QiwrQkFBNEI7QUFFNUIsNENBQXlDO0FBR3pDLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRWhDLDRDQUE0QztBQUM1QyxNQUFNLDBCQUEwQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFXN0MsTUFBYSxlQUFlO0lBRzNCLFlBQ1MsTUFBb0I7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUU1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxXQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRVksMEJBQTBCLENBQUMsS0FBNEI7O1lBQ25FLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1gsT0FBTyxJQUFJLENBQUM7YUFDWjtZQUNELE1BQU0sTUFBTSxHQUFHLElBQUksNkJBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxJQUFJO2dCQUNILE1BQU0sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLE1BQU0sQ0FBQzthQUNkO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ2IsR0FBRyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO0tBQUE7SUFFWSxTQUFTLENBQUMsSUFBaUI7O1lBQ3ZDLDhEQUE4RDtZQUM5RCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdB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

@@ -56,8 +56,9 @@ "use strict";

static str2mxid(a) {
let buf = buffer_1.Buffer.from(a);
let encoded = '';
for (let b of buf) {
if (b == 0x5F) {
// tslint:disable:no-magic-numbers
const buf = buffer_1.Buffer.from(a);
let encoded = "";
for (const b of buf) {
if (b === 0x5F) {
// underscore
encoded += '__';
encoded += "__";
}

@@ -69,21 +70,23 @@ else if ((b >= 0x61 && b <= 0x7A) || (b >= 0x30 && b <= 0x39)) {

else if (b >= 0x41 && b <= 0x5A) {
encoded += '_' + String.fromCharCode(b + 0x20);
encoded += "_" + String.fromCharCode(b + 0x20);
}
else if (b < 16) {
encoded += '=0' + b.toString(16);
encoded += "=0" + b.toString(16);
}
else {
encoded += '=' + b.toString(16);
encoded += "=" + b.toString(16);
}
}
return encoded;
// tslint:enable:no-magic-numbers
}
static mxid2str(b) {
let decoded = buffer_1.Buffer.alloc(b.length);
// tslint:disable:no-magic-numbers
const decoded = buffer_1.Buffer.alloc(b.length);
let j = 0;
for (let i = 0; i < b.length; i++) {
let char = b[i];
if (char == '_') {
const char = b[i];
if (char === "_") {
i++;
if (b[i] == '_') {
if (b[i] === "_") {
decoded[j] = 0x5F;

@@ -95,3 +98,3 @@ }

}
else if (char == '=') {
else if (char === "=") {
i++;

@@ -106,3 +109,4 @@ decoded[j] = parseInt(b[i] + b[i + 1], 16);

}
return decoded.toString('utf8', 0, j);
return decoded.toString("utf8", 0, j);
// tslint:enable:no-magic-numbers
}

@@ -125,3 +129,2 @@ static sleep(timeout) {

return __awaiter(this, void 0, void 0, function* () {
let updateAvatar = true; // we might set this to false if our hashes are the same
let buffer = data.avatarBuffer;

@@ -170,2 +173,2 @@ if ((!buffer && !data.avatarUrl) || (buffer && buffer.byteLength === 0)) {

exports.Util = Util;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNDQUFzQztBQUN0QyxtQ0FBZ0M7QUFDaEMsK0JBQStCO0FBRS9CLCtCQUE0QjtBQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU1QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFPcEIsTUFBYSxJQUFJO0lBQ1QsTUFBTSxDQUFPLFlBQVksQ0FBQyxHQUFXLEVBQUUsVUFBZSxFQUFFOztZQUM5RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN0QyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzVCLEVBQUUsR0FBRyxLQUFLLENBQUM7aUJBQ1g7cUJBQU07b0JBQ04sRUFBRSxHQUFHLElBQUksQ0FBQztpQkFDVjtnQkFDRCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDeEMsSUFBSSxNQUFNLEdBQUcsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLE9BQU8sRUFBRTt3QkFDL0IsTUFBTSxDQUFDLHdCQUF3QixHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztxQkFDbEQ7b0JBQ0QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDcEIsTUFBTSxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckMs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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNDQUFzQztBQUN0QyxtQ0FBZ0M7QUFDaEMsK0JBQStCO0FBRS9CLCtCQUE0QjtBQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU1QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFPcEIsTUFBYSxJQUFJO0lBQ1QsTUFBTSxDQUFPLFlBQVksQ0FBQyxHQUFXLEVBQUUsVUFBZSxFQUFFOztZQUM5RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN0QyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzVCLEVBQUUsR0FBRyxLQUFLLENBQUM7aUJBQ1g7cUJBQU07b0JBQ04sRUFBRSxHQUFHLElBQUksQ0FBQztpQkFDVjtnQkFDRCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDeEMsSUFBSSxNQUFNLEdBQUcsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLE9BQU8sRUFBRTt3QkFDL0IsTUFBTSxDQUFDLHdCQUF3QixHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztxQkFDbEQ7b0JBQ0QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDcEIsTUFBTSxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckMs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
{
"name": "mx-puppet-bridge",
"version": "0.0.2",
"version": "0.0.3",
"description": "Matrix Puppeting Bridge library",

@@ -15,2 +15,3 @@ "repository": {

"prepublishOnly": "npm run build",
"lint": "tslint --project ./tsconfig.json -t stylish",
"build": "tsc",

@@ -26,3 +27,3 @@ "test": "echo \"Error: no test specified\" && exit 1"

"js-yaml": "^3.13.1",
"matrix-bot-sdk": "git://github.com/Sorunome/matrix-js-bot-sdk.git#4a79d976eea1a187e0e28872745591dd19f7df27",
"matrix-bot-sdk": "^0.4.0-beta.1",
"pg-promise": "^8.7.2",

@@ -29,0 +30,0 @@ "tslint": "^5.17.0",

@@ -27,4 +27,3 @@ import { PuppetBridge } from "./puppetbridge";

switch (arg) {
case "link":
{
case "link": {
if (!this.provisioner.canCreate(sender)) {

@@ -47,4 +46,3 @@ await this.sendMessage(roomId, "ERROR: You don't have permission to use this bridge");

}
case "unlink":
{
case "unlink": {
if (!param || !param.trim()) {

@@ -68,4 +66,3 @@ await this.sendMessage(roomId, `ERROR: You need to specify an index to unlink`);

}
case "list":
{
case "list": {
const descs = await this.provisioner.getDescMxid(sender);

@@ -86,4 +83,21 @@ if (descs.length === 0) {

}
case "setmatrixtoken": {
if (!param || !param.trim()) {
await this.provisioner.setToken(sender, null);
await this.sendMessage(roomId, `Removed matrix token!`);
break;
}
const token = param.trim();
const tokenParts = this.provisioner.parseToken(sender, token);
const client = await this.bridge.userSync.getClientFromTokenCallback(tokenParts);
if (!client) {
await this.sendMessage(roomId, "ERROR: Invalid matrix token");
break;
}
await this.provisioner.setToken(sender, token);
await this.sendMessage(roomId, `Set matrix token`);
break;
}
default:
await this.sendMessage(roomId, `Available commands: help, list, link, unlink`);
await this.sendMessage(roomId, `Available commands: help, list, link, unlink, setmatrixtoken`);
}

@@ -90,0 +104,0 @@ }

@@ -11,13 +11,9 @@ import { PuppetBridge } from "./puppetbridge";

const MXID_LOOKUP_LOCK_TIMEOUT = 1000*60;
// tslint:disable-next-line:no-magic-numbers
const MXID_LOOKUP_LOCK_TIMEOUT = 1000 * 60;
export interface IRemoteChanSend {
export interface IRemoteChan {
roomId: string;
puppetId: number;
};
export interface IRemoteChanReceive {
roomId: string;
puppetId: number;
avatarUrl?: string | null;

@@ -40,3 +36,3 @@ avatarBuffer?: Buffer | null;

public async getRemoteHandler(mxid: string): Promise<IRemoteChanSend | null> {
public async getRemoteHandler(mxid: string): Promise<IRemoteChan | null> {
const chan = await this.chanStore.getByMxid(mxid);

@@ -49,3 +45,3 @@ if (!chan) {

puppetId: chan.puppetId,
} as IRemoteChanSend;
} as IRemoteChan;
}

@@ -59,4 +55,4 @@

if (!this.bridge.AS.isNamespacedUser(mxid)) {
// TODO: logic if puppeted
return null;
const token = await this.bridge.provisioner.getToken(mxid);
return await this.bridge.userSync.getClientFromTokenCallback(token);
}

@@ -66,6 +62,10 @@ return this.bridge.AS.getIntentForUserId(mxid).underlyingClient;

public async maybeGetMxid(data: IRemoteChanReceive): Promise<string | null> {
public async maybeGet(data: IRemoteChan): Promise<IChanStoreEntry | null> {
const lockKey = `${data.puppetId};${data.roomId}`;
await this.mxidLock.wait(lockKey);
let chan = await this.chanStore.getByRemote(data.puppetId, data.roomId);
return await this.chanStore.getByRemote(data.puppetId, data.roomId);
}
public async maybeGetMxid(data: IRemoteChan): Promise<string | null> {
const chan = await this.maybeGet(data);
if (!chan) {

@@ -77,3 +77,8 @@ return null;

public async getMxid(data: IRemoteChanReceive, client?: MatrixClient, invites?: string[]): Promise<{mxid: string; created: boolean;}> {
public async getMxid(
data: IRemoteChan,
client?: MatrixClient,
invites?: string[],
doCreate: boolean = true,
): Promise<{ mxid: string; created: boolean; }> {
const lockKey = `${data.puppetId};${data.roomId}`;

@@ -86,2 +91,3 @@ await this.mxidLock.wait(lockKey);

let chan = await this.chanStore.getByRemote(data.puppetId, data.roomId);
log.silly(chan);
const update = {

@@ -96,2 +102,8 @@ name: false,

if (!chan) {
if (!doCreate) {
return {
mxid: "",
created: false,
};
}
log.info("Channel doesn't exist yet, creating entry...");

@@ -102,6 +114,8 @@ this.mxidLock.set(lockKey);

if (this.bridge.hooks.createChan) {
log.verbose("Fetching new override data...");
const newData = await this.bridge.hooks.createChan(data.puppetId, data.roomId);
if (newData && newData.puppetId === data.puppetId && newData.roomId === data.roomId) {
log.verbose("Got new room data to override");
data = newData;
} else {
log.warn("Override data is malformed! Old data:", data, "New data:", newData);
}

@@ -153,4 +167,4 @@ }

log.verbose("Updating avatar");
const { doUpdate, mxcUrl, hash } = await Util.MaybeUploadFile(client!, data, chan.avatarHash);
if (doUpdate) {
const { doUpdate: updateAvatar, mxcUrl, hash } = await Util.MaybeUploadFile(client!, data, chan.avatarHash);
if (updateAvatar) {
update.avatar = true;

@@ -195,4 +209,12 @@ chan.avatarUrl = data.avatarUrl;

public async delete(data: IRemoteChan) {
const chan = await this.maybeGet(data);
if (!chan) {
return;
}
await this.deleteEntries([ chan ]);
}
public async deleteForMxid(mxid: string) {
let chan = await this.chanStore.getByMxid(mxid);
const chan = await this.chanStore.getByMxid(mxid);
if (!chan) {

@@ -210,7 +232,33 @@ return; // nothing to do

private async deleteEntries(entries: IChanStoreEntry[]) {
log.info("Deleting entries", entries);
for (const entry of entries) {
// delete from DB (also OP store), cache and trigger ghosts to quit
await this.chanStore.delete(entry);
log.info("Removing bot client from room....");
const botIntent = this.bridge.botIntent;
const botRooms = await botIntent.getJoinedRooms();
if (botRooms.includes(entry.mxid)) {
try {
await botIntent.leaveRoom(entry.mxid);
} catch (err) {
log.warn("Failed to make bot client leave", err);
}
}
log.info("Removing ghosts from room....");
const ghosts = await this.bridge.puppetStore.getGhostsInChan(entry.mxid);
for (const ghost of ghosts) {
const intent = await this.bridge.userSync.deleteForMxid(ghost);
if (intent) {
try {
await intent.underlyingClient.leaveRoom(entry.mxid);
} catch (err) {
log.warn("Failed to trigger client leave room", err);
}
}
}
await this.bridge.puppetStore.emptyGhostsInChan(entry.mxid);
}
}
}

@@ -7,6 +7,5 @@ export class MxBridgeConfig {

public presence: MxBridgeConfigPresence = new MxBridgeConfigPresence();
public applyConfig(newConfig: {[key: string]: any}, configLayer: {[key: string]: any} = this) {
Object.keys(newConfig).forEach((key) => {
Object.keys(newConfig).forEach((key) => {
if (configLayer[key] instanceof Object && !(configLayer[key] instanceof Array)) {

@@ -23,3 +22,3 @@ this.applyConfig(newConfig[key], configLayer[key]);

public bindAddress: string = "localhost";
public port: number;
public port: number;
public domain: string;

@@ -26,0 +25,0 @@ public homeserverUrl: string;

@@ -7,3 +7,4 @@ import { IDatabaseConnector, ISqlRow } from "./connector";

const CHAN_CACHE_LIFETIME = 1000*60*60*24;
// tslint:disable-next-line:no-magic-numbers
const CHAN_CACHE_LIFETIME = 1000 * 60 * 60 * 24;

@@ -25,4 +26,4 @@ export interface IChanStoreEntry {

private opCache: TimedCache<string, string>;
constructor (
private db:IDatabaseConnector,
constructor(
private db: IDatabaseConnector,
) {

@@ -62,3 +63,3 @@ this.remoteCache = new TimedCache(CHAN_CACHE_LIFETIME);

for (const row of rows) {
let res = this.getFromRow(row);
const res = this.getFromRow(row);
if (res) {

@@ -77,3 +78,3 @@ results.push(res);

const row = await this.db.Get(
"SELECT * FROM chan_store WHERE mxid = $mxid", { mxid }
"SELECT * FROM chan_store WHERE mxid = $mxid", { mxid },
);

@@ -85,3 +86,3 @@ return this.getFromRow(row);

const exists = await this.db.Get(
"SELECT * FROM chan_store WHERE mxid = $mxid", {mxid: data.mxid}
"SELECT * FROM chan_store WHERE mxid = $mxid", {mxid: data.mxid},
);

@@ -130,3 +131,3 @@ let query = "";

});
this.remoteCache.set(`${data.roomId}_${data.puppetId}`, data);
this.remoteCache.set(`${data.puppetId};${data.roomId}`, data);
this.mxidCache.set(data.mxid, data);

@@ -137,8 +138,8 @@ }

await this.db.Run(
"DELETE FROM chan_store WHERE mxid = $mxid", { mxid: data.mxid }
"DELETE FROM chan_store WHERE mxid = $mxid", { mxid: data.mxid },
);
await this.db.Run(
"DELETE FROM chan_op WHERE chan_mxid=$mxid", { mxid: data.mxid }
"DELETE FROM chan_op WHERE chan_mxid=$mxid", { mxid: data.mxid },
);
this.remoteCache.delete(`${data.roomId}_${data.puppetId}`);
this.remoteCache.delete(`${data.puppetId};${data.roomId}`);
this.mxidCache.delete(data.mxid);

@@ -177,3 +178,3 @@ this.opCache.delete(data.mxid);

this.opCache.set(chanMxid, userMxid);
return userMxid
return userMxid;
}

@@ -180,0 +181,0 @@

@@ -27,4 +27,2 @@ /*

export class Postgres implements IDatabaseConnector {
public type = "postgres";
public static ParameterizeSql(sql: string): string {

@@ -36,2 +34,4 @@ return sql.replace(/\$((\w|\d|_)+)+/g, (k) => {

public type = "postgres";
// tslint:disable-next-line no-any

@@ -38,0 +38,0 @@ private db: pgPromise.IDatabase<any>;

@@ -8,4 +8,6 @@ import { IDatabaseConnector, ISqlRow } from "./connector";

const PUPPET_CACHE_LIFETIME = 1000*60*60*24;
// tslint:disable:no-magic-numbers
const PUPPET_CACHE_LIFETIME = 1000 * 60 * 60 * 24;
const MXID_INFO_LOCK_TIMEOUT = 1000;
// tslint:enable:no-magic-numbers

@@ -85,3 +87,3 @@ export interface IPuppet {

} else {
query = `UPDATE puppet_mxid_store SET
query = `UPDATE puppet_mxid_store SET
name = $name,

@@ -175,3 +177,5 @@ avatar_mxc = $avatarMxc,

}
const puppetId = await this.db.Run("INSERT INTO puppet_store (puppet_mxid, data, user_id) VALUES ($mxid, $data, $uid)", {
const puppetId = await this.db.Run(
"INSERT INTO puppet_store (puppet_mxid, data, user_id) VALUES ($mxid, $data, $uid)"
, {
mxid: puppetMxid,

@@ -189,2 +193,31 @@ data: dataStr,

public async joinGhostToChan(ghostMxid: string, chanMxid: string) {
const exists = await this.db.Get(
"SELECT * FROM ghosts_joined_chans WHERE ghost_mxid = $ghostMxid AND chan_mxid = $chanMxid"
, {
ghostMxid,
chanMxid,
});
if (exists) {
return; // nothing to do
}
await this.db.Run("INSERT INTO ghosts_joined_chans (ghost_mxid, chan_mxid) VALUES ($ghostMxid, $chanMxid)", {
ghostMxid,
chanMxid,
});
}
public async getGhostsInChan(chan: string): Promise<string[]> {
const result = [] as string[];
const rows = await this.db.All("SELECT * FROM ghosts_joined_chans WHERE chan_mxid = $chan", { chan });
for (const r of rows) {
result.push(r.ghost_mxid as string);
}
return result;
}
public async emptyGhostsInChan(chan: string) {
await this.db.Run("DELETE FROM ghosts_joined_chans WHERE chan_mxid = $chan", { chan });
}
private getRow(row: ISqlRow): IPuppet | null {

@@ -191,0 +224,0 @@ try {

@@ -7,5 +7,7 @@ import { IDatabaseConnector } from "./connector";

const USERS_CACHE_LIFETIME = 1000*60*60*24;
// tslint:disable-next-line:no-magic-numbers
const USERS_CACHE_LIFETIME = 1000 * 60 * 60 * 24;
export interface IUserStoreEntry {
puppetId: number;
userId: string;

@@ -26,4 +28,5 @@ name?: string | null;

public newData(userId: string): IUserStoreEntry {
public newData(puppetId: number, userId: string): IUserStoreEntry {
return {
puppetId,
userId,

@@ -33,4 +36,5 @@ } as IUserStoreEntry;

public async get(userId: string): Promise<IUserStoreEntry | null> {
const cached = this.usersCache.get(userId);
public async get(puppetId: number, userId: string): Promise<IUserStoreEntry | null> {
const cacheKey = `${puppetId};${userId}`;
const cached = this.usersCache.get(cacheKey);
if (cached) {

@@ -40,3 +44,3 @@ return cached;

const row = await this.db.Get(
"SELECT * FROM user_store WHERE user_id = $id", {id: userId},
"SELECT * FROM user_store WHERE user_id = $id AND puppet_id = $pid", {id: userId, pid: puppetId},
);

@@ -46,3 +50,3 @@ if (!row) {

}
const data = this.newData(userId);
const data = this.newData(puppetId, userId);
data.name = row.name as string|null;

@@ -52,3 +56,3 @@ data.avatarUrl = row.avatar_url as string | null;

data.avatarHash = row.avatar_hash as string | null;
this.usersCache.set(userId, data);
this.usersCache.set(cacheKey, data);
return data;

@@ -59,3 +63,3 @@ }

const exists = await this.db.Get(
"SELECT * FROM user_store WHERE user_id = $id", {id: data.userId},
"SELECT * FROM user_store WHERE user_id = $id AND puppet_id = $pid", {id: data.userId, pid: data.puppetId},
);

@@ -66,2 +70,3 @@ let query = "";

user_id,
puppet_id,
name,

@@ -73,2 +78,3 @@ avatar_url,

$user_id,
$puppet_id,
$name,

@@ -85,6 +91,7 @@ $avatar_url,

avatar_hash = $avatar_hash
WHERE user_id = $user_id`;
WHERE user_id = $user_id AND puppet_id = $puppet_id`;
}
await this.db.Run(query, {
user_id: data.userId,
puppet_id: data.puppetId,
name: data.name || null,

@@ -95,4 +102,14 @@ avatar_url: data.avatarUrl || null,

});
this.usersCache.set(data.userId, data);
const cacheKey = `${data.puppetId};${data.userId}`;
this.usersCache.set(cacheKey, data);
}
public async delete(data: IUserStoreEntry) {
await this.db.Run("DELETE FROM user_store WHERE user_id = $user_id AND puppet_id = $puppet_id", {
user_id: data.userId,
puppet_id: data.puppetId,
});
const cacheKey = `${data.puppetId};${data.userId}`;
this.usersCache.delete(cacheKey);
}
}

@@ -5,1 +5,3 @@ export * from "./puppetbridge";

export * from "./structures/lock";
export { IRemoteChan } from "./channelsyncroniser";
export { IRemoteUser } from "./usersyncroniser";

@@ -13,3 +13,7 @@ import { IJoinRoomStrategy } from "matrix-bot-sdk";

public async joinRoom(roomIdOrAlias: string, userId: string, apiCall: (roomIdOrAlias: string) => Promise<string>): Promise<string> {
public async joinRoom(
roomIdOrAlias: string,
userId: string,
apiCall: (roomIdOrAlias: string) => Promise<string>,
): Promise<string> {
try {

@@ -16,0 +20,0 @@ return await apiCall(roomIdOrAlias);

@@ -65,2 +65,3 @@ import { PuppetBridge } from "./puppetbridge";

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(p);

@@ -70,2 +71,3 @@ } else {

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(this.presenceQueue[index]);

@@ -88,2 +90,3 @@ }

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(p);

@@ -93,2 +96,3 @@ } else {

// do this async in the BG for live updates
// tslint:disable-next-line:no-floating-promises
this.setMatrixPresence(this.presenceQueue[index]);

@@ -95,0 +99,0 @@ }

@@ -13,2 +13,7 @@ import { PuppetBridge } from "./puppetbridge";

export interface ITokenResponse {
token: string;
hsUrl: string;
}
export class Provisioner {

@@ -34,6 +39,36 @@ private puppetStore: DbPuppetStore;

public async getMxid(puppetMxid: number): Promise<string> {
return await this.puppetStore.getMxid(puppetMxid);
public async getMxid(puppetId: number): Promise<string> {
return await this.puppetStore.getMxid(puppetId);
}
public parseToken(mxid: string, token: string): ITokenResponse {
let hsUrl = mxid.split(":")[1];
if (hsUrl === "localhost") {
hsUrl = "http://" + hsUrl;
} else {
hsUrl = "https://" + hsUrl;
}
return { token, hsUrl } as ITokenResponse;
}
public async getToken(puppetId: number | string): Promise<ITokenResponse | null> {
let mxid = "";
if (typeof puppetId === "string") {
mxid = puppetId;
} else {
mxid = await this.getMxid(puppetId);
}
const info = await this.puppetStore.getMxidInfo(mxid);
if (!info || !info.token) {
return null;
}
return this.parseToken(mxid, info.token);
}
public async setToken(mxid: string, token: string | null) {
const info = await this.puppetStore.getOrCreateMxidInfo(mxid);
info.token = token;
await this.puppetStore.setMxidInfo(info);
}
public async setUserId(puppetId: number, userId: string) {

@@ -74,3 +109,3 @@ await this.puppetStore.setUserId(puppetId, userId);

public async delete(puppetMxid: string, puppetId: number) {
log.info(`Deleting puppet with id ${puppetId}`)
log.info(`Deleting puppet with id ${puppetId}`);
const data = await this.get(puppetId);

@@ -95,3 +130,3 @@ if (!data || data.puppetMxid !== puppetMxid) {

const datas = await this.getForMxid(puppetMxid);
let descs = [] as IProvisionerDesc[];
const descs = [] as IProvisionerDesc[];
for (const data of datas) {

@@ -115,4 +150,4 @@ descs.push(await this.getDescFromData(data));

html: await this.bridge.hooks.getDesc(data.puppetId, data.data, true),
} as IProvisionerDesc
} as IProvisionerDesc;
}
}

@@ -12,4 +12,4 @@ import * as fs from "fs";

import { EventEmitter } from "events";
import { ChannelSyncroniser, IRemoteChanSend, IRemoteChanReceive } from "./channelsyncroniser";
import { UserSyncroniser, IRemoteUserReceive } from "./usersyncroniser";
import { ChannelSyncroniser, IRemoteChan } from "./channelsyncroniser";
import { UserSyncroniser, IRemoteUser } from "./usersyncroniser";
import { MxBridgeConfig } from "./config";

@@ -31,3 +31,5 @@ import { Util } from "./util";

const PUPPET_INVITE_CACHE_LIFETIME = 1000*60*60*24;
// tslint:disable-next-line:no-magic-numbers
const PUPPET_INVITE_CACHE_LIFETIME = 1000 * 60 * 60 * 24;
const DEFAULT_TYPING_TIMEOUT = 30000;

@@ -37,3 +39,3 @@ interface ISendInfo {

mxid: string;
};
}

@@ -45,3 +47,3 @@ export interface IPuppetBridgeRegOpts {

botUser?: string;
};
}

@@ -59,16 +61,12 @@ export interface IPuppetBridgeFeatures {

presence?: boolean;
};
// typing
typingTimeout?: number;
}
export interface IReceiveParams {
chan: IRemoteChanReceive;
user: IRemoteUserReceive;
};
chan: IRemoteChan;
user: IRemoteUser;
}
export interface ISendMessageOpts {
body: string;
formatted_body?: string;
emote?: boolean;
notice?: boolean;
};
export interface IMessageEvent {

@@ -78,3 +76,4 @@ body: string;

emote: boolean;
};
notice?: boolean;
}

@@ -91,3 +90,3 @@ export interface IFileEvent {

url: string;
};
}

@@ -99,6 +98,6 @@ export interface IRetData {

userId?: string;
};
}
export type CreateChanHook = (puppetId: number, chanId: string) => Promise<IRemoteChanReceive | null>;
export type CreateUserHook = (puppetId: number, userId: string) => Promise<IRemoteUserReceive | null>;
export type CreateChanHook = (puppetId: number, chanId: string) => Promise<IRemoteChan | null>;
export type CreateUserHook = (puppetId: number, userId: string) => Promise<IRemoteUser | null>;
export type GetDescHook = (puppetId: number, data: any, html: boolean) => Promise<string>;

@@ -114,3 +113,3 @@ export type GetDataFromStrHook = (str: string) => Promise<IRetData>;

getDataFromStr?: GetDataFromStrHook;
};
}

@@ -147,3 +146,3 @@ export class PuppetBridge extends EventEmitter {

public async init() {
this.readConfig();
await this.readConfig();
this.store = new Store(this.config.database);

@@ -156,3 +155,3 @@ await this.store.init();

this.presenceHandler = new PresenceHandler(this);
this.typingHandler = new TypingHandler(this);
this.typingHandler = new TypingHandler(this, this.features.typingTimeout || DEFAULT_TYPING_TIMEOUT);

@@ -270,3 +269,3 @@ this.botProvisioner = new BotProvisioner(this);

public async updateUser(user: IRemoteUserReceive) {
public async updateUser(user: IRemoteUser) {
log.verbose("Got request to update a user");

@@ -276,8 +275,21 @@ await this.userSync.getClient(user);

public async updateChannel(chan: IRemoteChanReceive) {
public async updateChannel(chan: IRemoteChan) {
log.verbose("Got request to update a channel");
await this.chanSync.getMxid(chan);
await this.chanSync.getMxid(chan, undefined, undefined, false);
}
public async setUserPresence(user: IRemoteUserReceive, presence: MatrixPresence) {
public async unbridgeChannelByMxid(mxid: string) {
const chan = await this.chanSync.getRemoteHandler(mxid);
await this.unbridgeChannel(chan);
}
public async unbridgeChannel(chan: IRemoteChan | null) {
if (!chan) {
return;
}
log.info(`Got request to unbridge channel puppetId=${chan.puppetId} roomId=${chan.roomId}`);
await this.chanSync.delete(chan);
}
public async setUserPresence(user: IRemoteUser, presence: MatrixPresence) {
const client = await this.userSync.getClient(user);

@@ -288,3 +300,3 @@ const userId = await client.getUserId();

public async setUserStatus(user: IRemoteUserReceive, status: string) {
public async setUserStatus(user: IRemoteUser, status: string) {
const client = await this.userSync.getClient(user);

@@ -303,3 +315,3 @@ const userId = await client.getUserId();

public async getMxidForUser(user: IRemoteUserReceive): Promise<string> {
public async getMxidForUser(user: IRemoteUser): Promise<string> {
const puppetData = await this.provisioner.get(user.puppetId);

@@ -369,3 +381,3 @@ if (puppetData && puppetData.userId === user.userId) {

public async sendMessage(params: IReceiveParams, opts: ISendMessageOpts) {
public async sendMessage(params: IReceiveParams, opts: IMessageEvent) {
const { client, mxid } = await this.prepareSend(params);

@@ -381,2 +393,3 @@ let msgtype = "m.text";

body: opts.body,
source: "remote",
} as any;

@@ -428,2 +441,3 @@ if (opts.formatted_body) {

url: fileMxc,
source: "remote",
} as any;

@@ -448,8 +462,17 @@ if (typeof thing === "string") {

const client = await this.userSync.getClient(params.user);
const { mxid, created } = await this.chanSync.getMxid(params.chan, client, [puppetMxid]);
const userId = await client.getUserId();
// we could be the one creating the room, no need to invite ourself
const invites: string[] = [];
if (userId !== puppetMxid) {
invites.push(puppetMxid);
} else {
// else we need the bot client in order to be able to receive matrix messages
invites.push(await this.botIntent.underlyingClient.getUserId());
}
const { mxid, created } = await this.chanSync.getMxid(params.chan, client, invites);
// ensure that the intent is in the room
const userId = await client.getUserId();
if (this.appservice.isNamespacedUser(userId)) {
await this.appservice.getIntentForUserId(userId).ensureRegisteredAndJoined(mxid);
const intent = this.appservice.getIntentForUserId(userId);
await intent.ensureRegisteredAndJoined(mxid);
}

@@ -470,4 +493,7 @@

}
await client.inviteUser(puppetMxid, mxid);
this.ghostInviteCache.set(cacheKey, true);
// we can't really invite ourself...
if (await inviteClient.getUserId() !== puppetMxid) {
await client.inviteUser(puppetMxid, mxid);
this.ghostInviteCache.set(cacheKey, true);
}
}

@@ -491,5 +517,10 @@ } catch (err) {

if (event.type === "m.room.member" && event.content) {
if (event.content.membership === "join") {
await this.handleJoinEvent(roomId, event);
return;
switch (event.content.membership) {
case "join":
await this.handleJoinEvent(roomId, event);
return;
case "ban":
case "leave":
await this.handleLeaveEvent(roomId, event);
return;
}

@@ -508,3 +539,3 @@ }

// this isn't a room we handle....so let's do provisioning!
this.botProvisioner.processEvent(event);
await this.botProvisioner.processEvent(event);
return;

@@ -517,4 +548,8 @@ }

log.info(`New message by ${event.sender} of type ${event.type} to process!`);
if (event.content.source === "remote") {
log.verbose("Dropping event due to de-duping...");
return;
}
let msgtype = event.content.msgtype;
if (event.type == "m.sticker") {
if (event.type === "m.sticker") {
msgtype = "m.sticker";

@@ -524,10 +559,11 @@ }

// short-circuit text stuff
const data = {
const msgData = {
body: event.content.body,
emote: msgtype === "m.emote",
notice: msgtype === "m.notice",
} as IMessageEvent;
if (event.content.format) {
data.formatted_body = event.content.formatted_body;
msgData.formatted_body = event.content.formatted_body;
}
this.emit("message", room, data, event);
this.emit("message", room, msgData, event);
return;

@@ -577,9 +613,23 @@ }

private async handleGhostJoinEvent(roomId: string, ghostId: string) {
if (ghostId === this.appservice.botIntent.userId) {
return; // we don't handle ghost user here
}
// we CAN'T check for if the room exists here, as if we create a new room
// the m.room.member event triggers before the room is incerted into the store
log.verbose("adding ghost to chan cache");
await this.store.puppetStore.joinGhostToChan(ghostId, roomId);
}
private async handleJoinEvent(roomId: string, event: any) {
// okay, we want to catch *puppet* profile changes, nothing of the ghosts
const userId = event.state_key;
if (this.appservice.isNamespacedUser(event.sender)) {
return; // we don't handle things from our own namespace
if (this.appservice.isNamespacedUser(userId)) {
// let's add the ghost to the things to quit....
await this.handleGhostJoinEvent(roomId, userId);
return;
}
const room = await this.chanSync.getRemoteHandler(event.room_id);
const room = await this.chanSync.getRemoteHandler(roomId);
if (!room) {

@@ -619,2 +669,25 @@ return; // this isn't a room we handle, just ignore it

private async handleLeaveEvent(roomId: string, event: any) {
const userId = event.state_key;
if (this.appservice.isNamespacedUser(userId)) {
if (userId !== event.sender) {
// puppet got kicked, unbridging room
await this.unbridgeChannelByMxid(roomId);
}
return;
}
const room = await this.chanSync.getRemoteHandler(roomId);
if (!room) {
return; // this isn't a room we handle, just ignore it
}
const puppetMxid = await this.provisioner.getMxid(room.puppetId);
if (userId !== puppetMxid) {
return; // it wasn't us
}
log.verbose(`Received leave event from ${puppetMxid}`);
await this.unbridgeChannel(room);
}
private async handleInviteEvent(roomId: string, event: any) {

@@ -621,0 +694,0 @@ const userId = event.state_key;

@@ -12,3 +12,3 @@ import { IDbSchema } from "./db/schema/dbschema";

export const CURRENT_SCHEMA = 2;
export const CURRENT_SCHEMA = 4;

@@ -66,3 +66,3 @@ export class Store {

public async close() {
this.db.Close();
await this.db.Close();
}

@@ -69,0 +69,0 @@

@@ -21,3 +21,4 @@ export class Lock<T> {

const p = new Promise<{}>((resolve) => {
// first we check if the lock has the key....if not, e.g. if it got released too quickly, we still want to resolve our promise
// first we check if the lock has the key....if not, e.g. if it
// got released too quickly, we still want to resolve our promise
if (!this.locks.has(key)) {

@@ -24,0 +25,0 @@ resolve();

@@ -7,4 +7,5 @@ import { PuppetBridge } from "./puppetbridge";

export class TypingHandler {
constructor (
constructor(
private bridge: PuppetBridge,
private timeout: number,
) { }

@@ -25,3 +26,3 @@

typing,
timeout: 30000,
timeout: this.timeout,
});

@@ -28,0 +29,0 @@ } catch (err) {

import { PuppetBridge } from "./puppetbridge";
import { MatrixClient } from "matrix-bot-sdk";
import { MatrixClient, Intent } from "matrix-bot-sdk";
import { Util } from "./util";

@@ -7,11 +7,13 @@ import { Log } from "./log";

import { Lock } from "./structures/lock";
import { ITokenResponse } from "./provisioner";
const log = new Log("UserSync");
const CLIENT_LOOKUP_LOCK_TIMEOUT = 1000*60;
// tslint:disable-next-line:no-magic-numbers
const CLIENT_LOOKUP_LOCK_TIMEOUT = 1000 * 60;
export interface IRemoteUserReceive {
export interface IRemoteUser {
userId: string;
puppetId: number;
avatarUrl?: string | null;

@@ -32,6 +34,31 @@ avatarBuffer?: Buffer | null;

public async getClient(data: IRemoteUserReceive): Promise<MatrixClient> {
public async getClientFromTokenCallback(token: ITokenResponse | null): Promise<MatrixClient | null> {
if (!token) {
return null;
}
const client = new MatrixClient(token.hsUrl, token.token);
try {
await client.getUserId();
return client;
} catch (err) {
log.verbose("Invalid client config");
}
return null;
}
public async getClient(data: IRemoteUser): Promise<MatrixClient> {
// first we look if we can puppet this user to the matrix side
const puppetData = await this.bridge.provisioner.get(data.puppetId);
if (puppetData && puppetData.userId === data.userId) {
const token = await this.bridge.provisioner.getToken(data.puppetId);
const puppetClient = await this.getClientFromTokenCallback(token);
if (puppetClient) {
return puppetClient;
}
}
// now we fetch the ghost client
await this.clientLock.wait(data.userId);
log.info("Fetching client for " + data.userId);
let user = await this.userStore.get(data.userId);
let user = await this.userStore.get(data.puppetId, data.userId);
const update = {

@@ -48,6 +75,8 @@ name: false,

if (this.bridge.hooks.createUser) {
log.verbose("Fetching new override data...");
const newData = await this.bridge.hooks.createUser(data.puppetId, data.userId);
if (newData && newData.userId === data.userId && newData.puppetId === data.puppetId) {
log.verbose("got new user data to override");
data = newData;
} else {
log.warn("Override data is malformed! Old data:", data, "New data:", newData);
}

@@ -57,3 +86,3 @@ }

update.avatar = data.avatarUrl ? true : false;
user = this.userStore.newData(data.userId);
user = this.userStore.newData(data.puppetId, data.userId);
} else {

@@ -68,2 +97,5 @@ update.name = data.name !== undefined && data.name !== user.name;

log.verbose("Updating name");
// we *don't* await here as setting the name might take a
// while due to updating all those m.room.member events, we can do that in the BG
// tslint:disable-next-line:no-floating-promises
client.setDisplayName(data.name || "");

@@ -74,4 +106,4 @@ user.name = data.name;

log.verbose("Updating avatar");
const { doUpdate, mxcUrl, hash } = await Util.MaybeUploadFile(client, data, user.avatarHash);
if (doUpdate) {
const { doUpdate: updateAvatar, mxcUrl, hash } = await Util.MaybeUploadFile(client, data, user.avatarHash);
if (updateAvatar) {
update.avatar = true;

@@ -83,2 +115,3 @@ user.avatarUrl = data.avatarUrl;

// and we might as well do this in the background
// tslint:disable-next-line:no-floating-promises
client.setAvatarUrl(user.avatarMxc || "");

@@ -103,2 +136,35 @@ }

}
public getPartsFromMxid(mxid: string): {puppetId: number; userId: string} | null {
const suffix = this.bridge.AS.getSuffixForUserId(mxid);
if (!suffix) {
return null;
}
const MXID_MATCH_PUPPET_ID = 1;
const MXID_MATCH_USER_ID = 2;
const matches = suffix.match(/^(\d+)_(.*)/);
if (!matches) {
return null;
}
const puppetId = Number(matches[MXID_MATCH_PUPPET_ID]);
const userId = Util.mxid2str(matches[MXID_MATCH_USER_ID]);
if (isNaN(puppetId)) {
return null;
}
return {
puppetId,
userId,
};
}
public async deleteForMxid(mxid: string): Promise<Intent | null> {
const user = this.getPartsFromMxid(mxid);
if (!user) {
return null;
}
log.info(`Deleting ghost ${mxid}`);
await this.userStore.delete(user);
const intent = this.bridge.AS.getIntentForUserId(mxid);
return intent;
}
}

@@ -54,8 +54,9 @@ import * as http from "http";

public static str2mxid(a: string): string {
let buf = Buffer.from(a);
let encoded = '';
for (let b of buf) {
if (b == 0x5F) {
// tslint:disable:no-magic-numbers
const buf = Buffer.from(a);
let encoded = "";
for (const b of buf) {
if (b === 0x5F) {
// underscore
encoded += '__';
encoded += "__";
} else if ((b >= 0x61 && b <= 0x7A) || (b >= 0x30 && b <= 0x39)) {

@@ -65,20 +66,22 @@ // [a-z0-9]

} else if (b >= 0x41 && b <= 0x5A) {
encoded += '_' + String.fromCharCode(b + 0x20);
encoded += "_" + String.fromCharCode(b + 0x20);
} else if (b < 16) {
encoded += '=0' + b.toString(16);
encoded += "=0" + b.toString(16);
} else {
encoded += '=' + b.toString(16);
encoded += "=" + b.toString(16);
}
}
return encoded;
// tslint:enable:no-magic-numbers
}
public static mxid2str(b: string): string {
let decoded = Buffer.alloc(b.length);
// tslint:disable:no-magic-numbers
const decoded = Buffer.alloc(b.length);
let j = 0;
for (let i = 0; i < b.length; i++) {
let char = b[i];
if (char == '_') {
const char = b[i];
if (char === "_") {
i++;
if (b[i] == '_') {
if (b[i] === "_") {
decoded[j] = 0x5F;

@@ -88,5 +91,5 @@ } else {

}
} else if (char == '=') {
} else if (char === "=") {
i++;
decoded[j] = parseInt(b[i]+b[i+1], 16);
decoded[j] = parseInt(b[i] + b[i + 1], 16);
i++;

@@ -98,3 +101,4 @@ } else {

}
return decoded.toString('utf8', 0, j);
return decoded.toString("utf8", 0, j);
// tslint:enable:no-magic-numbers
}

@@ -114,4 +118,7 @@

public static async MaybeUploadFile(client: MatrixClient, data: IMakeUploadFileData, oldHash?: string | null): Promise<{doUpdate: boolean; mxcUrl: string|undefined; hash: string;}> {
let updateAvatar = true; // we might set this to false if our hashes are the same
public static async MaybeUploadFile(
client: MatrixClient,
data: IMakeUploadFileData,
oldHash?: string | null,
): Promise<{ doUpdate: boolean; mxcUrl: string|undefined; hash: string; }> {
let buffer = data.avatarBuffer;

@@ -124,3 +131,3 @@ if ((!buffer && !data.avatarUrl) || (buffer && buffer.byteLength === 0)) {

hash: "",
}
};
}

@@ -139,3 +146,3 @@ if (!buffer) {

hash,
}
};
}

@@ -158,5 +165,5 @@ try {

hash,
}
};
}
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc