mx-puppet-bridge
Advanced tools
Comparing version 0.0.9 to 0.0.10-1
@@ -28,2 +28,3 @@ /// <reference types="node" /> | ||
edit?: boolean; | ||
reply?: boolean; | ||
} | ||
@@ -139,2 +140,4 @@ export interface IReceiveParams { | ||
sendRedact(params: IReceiveParams, eventId: string): Promise<void>; | ||
sendReply(params: IReceiveParams, eventId: string, opts: IMessageEvent): Promise<void>; | ||
sendReaction(params: IReceiveParams, eventId: string, reaction: string): Promise<void>; | ||
private sendFileByType; | ||
@@ -141,0 +144,0 @@ private maybePrepareSend; |
@@ -425,2 +425,62 @@ "use strict"; | ||
} | ||
sendReply(params, eventId, opts) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
log.verbose(`Received reply to send`); | ||
const { client, mxid } = yield this.prepareSend(params); | ||
let msgtype = "m.text"; | ||
if (opts.emote) { | ||
msgtype = "m.emote"; | ||
} | ||
else if (opts.notice) { | ||
msgtype = "m.notice"; | ||
} | ||
const origEvents = yield this.eventStore.getMatrix(params.chan.puppetId, eventId); | ||
const origEvent = origEvents[0]; | ||
const send = { | ||
msgtype, | ||
body: opts.body, | ||
source: "remote", | ||
}; | ||
if (origEvent) { | ||
send["m.relates_to"] = { | ||
"m.in_reply_to": { | ||
event_id: origEvent, | ||
}, | ||
}; | ||
} | ||
else { | ||
log.warn("Couldn't find event, sending as normal message..."); | ||
} | ||
if (opts.formattedBody) { | ||
send.format = "org.matrix.custom.html"; | ||
send.formatted_body = opts.formattedBody; | ||
} | ||
const matrixEventId = yield client.sendMessage(mxid, send); | ||
if (matrixEventId && params.eventId) { | ||
yield this.eventStore.insert(params.chan.puppetId, matrixEventId, params.eventId); | ||
} | ||
}); | ||
} | ||
sendReaction(params, eventId, reaction) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
log.verbose(`Received reaction to send`); | ||
const { client, mxid } = yield this.prepareSend(params); | ||
const origEvents = yield this.eventStore.getMatrix(params.chan.puppetId, eventId); | ||
const origEvent = origEvents[0]; | ||
if (!origEvent) { | ||
return; // nothing to do | ||
} | ||
const send = { | ||
"m.relates_to": { | ||
rel_type: "m.annotation", | ||
event_id: origEvent, | ||
key: reaction, | ||
}, | ||
}; | ||
const matrixEventId = yield client.sendEvent(mxid, "m.reaction", send); | ||
if (matrixEventId && params.eventId) { | ||
yield this.eventStore.insert(params.chan.puppetId, matrixEventId, params.eventId); | ||
} | ||
}); | ||
} | ||
sendFileByType(msgtype, params, thing, name) { | ||
@@ -573,5 +633,12 @@ return __awaiter(this, void 0, void 0, function* () { | ||
const relate = event.content["m.relates_to"]; | ||
const msgData = { | ||
body: event.content.body, | ||
emote: msgtype === "m.emote", | ||
notice: msgtype === "m.notice", | ||
eventId: event.event_id, | ||
}; | ||
if (relate) { | ||
// relation events | ||
const relEvent = (yield this.eventStore.getRemote(room.puppetId, relate.event_id))[0]; | ||
const relEvent = (yield this.eventStore.getRemote(room.puppetId, relate.event_id || relate["m.in_reply_to"].event_id))[0]; | ||
log.silly(relEvent); | ||
if (relEvent) { | ||
@@ -592,10 +659,13 @@ if (this.features.edit && relate.rel_type === "m.replace") { | ||
} | ||
if (this.features.reply && (relate.rel_type === "m.in_reply_to" || relate["m.in_reply_to"])) { | ||
this.emit("reply", room, relEvent, msgData, event); | ||
return; | ||
} | ||
if (relate.rel_type === "m.annotation") { | ||
// no feature setting as reactions are hidden if they aren't supported | ||
this.emit("reaction", room, relEvent, relate.key, event); | ||
return; | ||
} | ||
} | ||
} | ||
const msgData = { | ||
body: event.content.body, | ||
emote: msgtype === "m.emote", | ||
notice: msgtype === "m.notice", | ||
eventId: event.event_id, | ||
}; | ||
if (event.content.format) { | ||
@@ -624,3 +694,3 @@ msgData.formattedBody = event.content.formatted_body; | ||
} | ||
const validTypes = ["m.room.message", "m.sticker"]; | ||
const validTypes = ["m.room.message", "m.sticker", "m.reaction"]; | ||
if (!validTypes.includes(event.type)) { | ||
@@ -649,6 +719,6 @@ return; // we don't handle this here, silently drop the event | ||
let msgtype = event.content.msgtype; | ||
if (event.type === "m.sticker") { | ||
msgtype = "m.sticker"; | ||
if (event.type !== "m.room.message") { | ||
msgtype = event.type; | ||
} | ||
if (msgtype === "m.emote" || msgtype === "m.notice" || msgtype === "m.text") { | ||
if (!["m.file", "m.image", "m.audio", "m.sticker", "m.video"].includes(msgtype)) { | ||
// short-circuit text stuff | ||
@@ -655,0 +725,0 @@ yield this.handleTextEvent(room, event); |
{ | ||
"name": "mx-puppet-bridge", | ||
"version": "0.0.9", | ||
"version": "0.0.10-1", | ||
"description": "Matrix Puppeting Bridge library", | ||
@@ -27,3 +27,3 @@ "repository": { | ||
"js-yaml": "^3.13.1", | ||
"matrix-bot-sdk": "git+https://github.com/Sorunome/matrix-js-bot-sdk.git#957f94828c17a043b797e152417d128cc48641b7", | ||
"matrix-bot-sdk": "0.4.0-beta.3", | ||
"pg-promise": "^8.7.2", | ||
@@ -30,0 +30,0 @@ "tslint": "^5.17.0", |
@@ -63,4 +63,5 @@ import * as fs from "fs"; | ||
// edits | ||
// event types | ||
edit?: boolean; | ||
reply?: boolean; | ||
} | ||
@@ -528,2 +529,58 @@ | ||
public async sendReply(params: IReceiveParams, eventId: string, opts: IMessageEvent) { | ||
log.verbose(`Received reply to send`); | ||
const { client, mxid } = await this.prepareSend(params); | ||
let msgtype = "m.text"; | ||
if (opts.emote) { | ||
msgtype = "m.emote"; | ||
} else if (opts.notice) { | ||
msgtype = "m.notice"; | ||
} | ||
const origEvents = await this.eventStore.getMatrix(params.chan.puppetId, eventId); | ||
const origEvent = origEvents[0]; | ||
const send = { | ||
msgtype, | ||
body: opts.body, | ||
source: "remote", | ||
} as any; | ||
if (origEvent) { | ||
send["m.relates_to"] = { | ||
"m.in_reply_to": { | ||
event_id: origEvent, | ||
}, | ||
}; | ||
} else { | ||
log.warn("Couldn't find event, sending as normal message..."); | ||
} | ||
if (opts.formattedBody) { | ||
send.format = "org.matrix.custom.html"; | ||
send.formatted_body = opts.formattedBody; | ||
} | ||
const matrixEventId = await client.sendMessage(mxid, send); | ||
if (matrixEventId && params.eventId) { | ||
await this.eventStore.insert(params.chan.puppetId, matrixEventId, params.eventId); | ||
} | ||
} | ||
public async sendReaction(params: IReceiveParams, eventId: string, reaction: string) { | ||
log.verbose(`Received reaction to send`); | ||
const { client, mxid } = await this.prepareSend(params); | ||
const origEvents = await this.eventStore.getMatrix(params.chan.puppetId, eventId); | ||
const origEvent = origEvents[0]; | ||
if (!origEvent) { | ||
return; // nothing to do | ||
} | ||
const send = { | ||
"m.relates_to": { | ||
rel_type: "m.annotation", | ||
event_id: origEvent, | ||
key: reaction, | ||
}, | ||
}; | ||
const matrixEventId = await client.sendEvent(mxid, "m.reaction", send); | ||
if (matrixEventId && params.eventId) { | ||
await this.eventStore.insert(params.chan.puppetId, matrixEventId, params.eventId); | ||
} | ||
} | ||
private async sendFileByType(msgtype: string, params: IReceiveParams, thing: string | Buffer, name?: string) { | ||
@@ -673,5 +730,13 @@ log.verbose(`Received file to send. thing=${typeof thing === "string" ? thing : "<Buffer>"} name=${name}`); | ||
const relate = event.content["m.relates_to"]; | ||
const msgData = { | ||
body: event.content.body, | ||
emote: msgtype === "m.emote", | ||
notice: msgtype === "m.notice", | ||
eventId: event.event_id, | ||
} as IMessageEvent; | ||
if (relate) { | ||
// relation events | ||
const relEvent = (await this.eventStore.getRemote(room.puppetId, relate.event_id))[0]; | ||
const relEvent = (await this.eventStore.getRemote(room.puppetId, | ||
relate.event_id || relate["m.in_reply_to"].event_id))[0]; | ||
log.silly(relEvent); | ||
if (relEvent) { | ||
@@ -692,10 +757,13 @@ if (this.features.edit && relate.rel_type === "m.replace") { | ||
} | ||
if (this.features.reply && (relate.rel_type === "m.in_reply_to" || relate["m.in_reply_to"])) { | ||
this.emit("reply", room, relEvent, msgData, event); | ||
return; | ||
} | ||
if (relate.rel_type === "m.annotation") { | ||
// no feature setting as reactions are hidden if they aren't supported | ||
this.emit("reaction", room, relEvent, relate.key, event); | ||
return; | ||
} | ||
} | ||
} | ||
const msgData = { | ||
body: event.content.body, | ||
emote: msgtype === "m.emote", | ||
notice: msgtype === "m.notice", | ||
eventId: event.event_id, | ||
} as IMessageEvent; | ||
if (event.content.format) { | ||
@@ -723,3 +791,3 @@ msgData.formattedBody = event.content.formatted_body; | ||
} | ||
const validTypes = ["m.room.message", "m.sticker"]; | ||
const validTypes = ["m.room.message", "m.sticker", "m.reaction"]; | ||
if (!validTypes.includes(event.type)) { | ||
@@ -748,6 +816,6 @@ return; // we don't handle this here, silently drop the event | ||
let msgtype = event.content.msgtype; | ||
if (event.type === "m.sticker") { | ||
msgtype = "m.sticker"; | ||
if (event.type !== "m.room.message") { | ||
msgtype = event.type; | ||
} | ||
if (msgtype === "m.emote" || msgtype === "m.notice" || msgtype === "m.text") { | ||
if (!["m.file", "m.image", "m.audio", "m.sticker", "m.video"].includes(msgtype)) { | ||
// short-circuit text stuff | ||
@@ -754,0 +822,0 @@ await this.handleTextEvent(room, event); |
Git dependency
Supply chain riskContains a dependency which resolves to a remote git URL. Dependencies fetched from git URLs are not immutable can be used to inject untrusted code or reduce the likelihood of a reproducible install.
Found 1 instance in 1 package
283509
7518
0
+ Added@types/node@10.17.60(transitive)
+ Addedaccepts@1.3.8(transitive)
+ Addedajv@6.12.6(transitive)
+ Addedarray-flatten@1.1.1(transitive)
+ Addedasn1@0.2.6(transitive)
+ Addedassert-plus@1.0.0(transitive)
+ Addedasynckit@0.4.0(transitive)
+ Addedaws-sign2@0.7.0(transitive)
+ Addedaws4@1.13.0(transitive)
+ Addedbasic-auth@2.0.1(transitive)
+ Addedbcrypt-pbkdf@1.0.2(transitive)
+ Addedbluebird@3.7.2(transitive)
+ Addedbody-parser@1.20.2(transitive)
+ Addedbytes@3.1.2(transitive)
+ Addedcall-bind@1.0.7(transitive)
+ Addedcaseless@0.12.0(transitive)
+ Addedcombined-stream@1.0.8(transitive)
+ Addedcontent-disposition@0.5.4(transitive)
+ Addedcontent-type@1.0.5(transitive)
+ Addedcookie@0.6.0(transitive)
+ Addedcookie-signature@1.0.6(transitive)
+ Addedcore-util-is@1.0.2(transitive)
+ Addeddashdash@1.14.1(transitive)
+ Addeddebug@2.6.9(transitive)
+ Addeddefine-data-property@1.1.4(transitive)
+ Addeddelayed-stream@1.0.0(transitive)
+ Addeddepd@2.0.0(transitive)
+ Addeddestroy@1.2.0(transitive)
+ Addeddom-serializer@1.4.1(transitive)
+ Addeddomelementtype@2.3.0(transitive)
+ Addeddomhandler@3.3.04.3.1(transitive)
+ Addeddomutils@2.8.0(transitive)
+ Addedecc-jsbn@0.1.2(transitive)
+ Addedee-first@1.1.1(transitive)
+ Addedencodeurl@1.0.2(transitive)
+ Addedentities@2.2.0(transitive)
+ Addedes-define-property@1.0.0(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedetag@1.8.1(transitive)
+ Addedexpress@4.19.2(transitive)
+ Addedextend@3.0.2(transitive)
+ Addedextsprintf@1.3.0(transitive)
+ Addedfast-deep-equal@3.1.3(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedfinalhandler@1.2.0(transitive)
+ Addedforever-agent@0.6.1(transitive)
+ Addedform-data@2.3.3(transitive)
+ Addedforwarded@0.2.0(transitive)
+ Addedfresh@0.5.2(transitive)
+ Addedget-intrinsic@1.2.4(transitive)
+ Addedgetpass@0.1.7(transitive)
+ Addedgopd@1.0.1(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedhar-schema@2.0.0(transitive)
+ Addedhar-validator@5.1.5(transitive)
+ Addedhas-property-descriptors@1.0.2(transitive)
+ Addedhas-proto@1.0.3(transitive)
+ Addedhas-symbols@1.0.3(transitive)
+ Addedhash.js@1.1.7(transitive)
+ Addedhtmlencode@0.0.4(transitive)
+ Addedhtmlparser2@4.1.0(transitive)
+ Addedhttp-errors@2.0.0(transitive)
+ Addedhttp-signature@1.2.0(transitive)
+ Addediconv-lite@0.4.24(transitive)
+ Addedipaddr.js@1.9.1(transitive)
+ Addedis-promise@2.2.2(transitive)
+ Addedis-typedarray@1.0.0(transitive)
+ Addedisstream@0.1.2(transitive)
+ Addedjsbn@0.1.1(transitive)
+ Addedjson-schema@0.4.0(transitive)
+ Addedjson-schema-traverse@0.4.1(transitive)
+ Addedjson-stringify-safe@5.0.1(transitive)
+ Addedjsprim@1.4.2(transitive)
+ Addedlodash@4.17.21(transitive)
+ Addedlowdb@1.0.0(transitive)
+ Addedlru-cache@5.1.1(transitive)
+ Addedmatrix-bot-sdk@0.4.0-beta.3(transitive)
+ Addedmedia-typer@0.3.0(transitive)
+ Addedmerge-descriptors@1.0.1(transitive)
+ Addedmethods@1.1.2(transitive)
+ Addedmime@1.6.0(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedminimalistic-assert@1.0.1(transitive)
+ Addedmorgan@1.10.0(transitive)
+ Addedms@2.0.0(transitive)
+ Addednegotiator@0.6.3(transitive)
+ Addedoauth-sign@0.9.0(transitive)
+ Addedobject-inspect@1.13.1(transitive)
+ Addedon-finished@2.3.02.4.1(transitive)
+ Addedon-headers@1.0.2(transitive)
+ Addedparse-srcset@1.0.2(transitive)
+ Addedparseurl@1.3.3(transitive)
+ Addedpath-to-regexp@0.1.7(transitive)
+ Addedperformance-now@2.1.0(transitive)
+ Addedpicocolors@0.2.1(transitive)
+ Addedpify@3.0.0(transitive)
+ Addedpostcss@7.0.39(transitive)
+ Addedproxy-addr@2.0.7(transitive)
+ Addedpsl@1.9.0(transitive)
+ Addedpunycode@2.3.1(transitive)
+ Addedqs@6.11.06.5.3(transitive)
+ Addedrange-parser@1.2.1(transitive)
+ Addedraw-body@2.5.2(transitive)
+ Addedrequest@2.88.2(transitive)
+ Addedrequest-promise@4.2.6(transitive)
+ Addedrequest-promise-core@1.1.4(transitive)
+ Addedsafe-buffer@5.1.2(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsanitize-html@1.27.5(transitive)
+ Addedsend@0.18.0(transitive)
+ Addedserve-static@1.15.0(transitive)
+ Addedset-function-length@1.2.2(transitive)
+ Addedsetprototypeof@1.2.0(transitive)
+ Addedside-channel@1.0.6(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addedsshpk@1.18.0(transitive)
+ Addedstatuses@2.0.1(transitive)
+ Addedstealthy-require@1.1.1(transitive)
+ Addedsteno@0.4.4(transitive)
+ Addedtoidentifier@1.0.1(transitive)
+ Addedtough-cookie@2.5.0(transitive)
+ Addedtunnel-agent@0.6.0(transitive)
+ Addedtweetnacl@0.14.5(transitive)
+ Addedtype-is@1.6.18(transitive)
+ Addedunpipe@1.0.0(transitive)
+ Addeduri-js@4.4.1(transitive)
+ Addedutils-merge@1.0.1(transitive)
+ Addedvary@1.1.2(transitive)
+ Addedverror@1.10.0(transitive)
Updatedmatrix-bot-sdk@0.4.0-beta.3