first commit

This commit is contained in:
Myk
2025-07-31 23:47:20 +03:00
commit 2186b278a0
5149 changed files with 537218 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
import { StateEvent } from "./RoomEvent";
/**
* The content definition for m.room.aliases events
* @category Matrix event contents
* @see AliasesEvent
*/
export interface AliasesEventContent {
/**
* The aliases this domain has published to the room.
*/
aliases: string[];
}
/**
* Represents an m.room.aliases state event
* @category Matrix events
*/
export declare class AliasesEvent extends StateEvent<AliasesEventContent> {
constructor(event: any);
/**
* The domain the aliases belong to.
*/
get forDomain(): string;
/**
* The aliases the domain has published to the room.
*/
get aliases(): string[];
}

View File

@@ -0,0 +1,27 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AliasesEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.aliases state event
* @category Matrix events
*/
class AliasesEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The domain the aliases belong to.
*/
get forDomain() {
return this.stateKey;
}
/**
* The aliases the domain has published to the room.
*/
get aliases() {
return this.content.aliases || [];
}
}
exports.AliasesEvent = AliasesEvent;
//# sourceMappingURL=AliasesEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AliasesEvent.js","sourceRoot":"","sources":["../../../src/models/events/AliasesEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAczC;;;GAGG;AACH,MAAa,YAAa,SAAQ,sBAA+B;IAC7D,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,CAAC;CACJ;AAlBD,oCAkBC"}

View File

@@ -0,0 +1,23 @@
import { StateEvent } from "./RoomEvent";
/**
* The content definition for m.room.canonical_alias events
* @category Matrix event contents
* @see CanonicalAliasEvent
*/
export interface CanonicalAliasEventContent {
/**
* The canonical alias for the room.
*/
alias: string;
}
/**
* Represents an m.room.canonical_alias state event
* @category Matrix events
*/
export declare class CanonicalAliasEvent extends StateEvent<CanonicalAliasEventContent> {
constructor(event: any);
/**
* The alias the room is considering canonical
*/
get aliases(): string;
}

View File

@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CanonicalAliasEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.canonical_alias state event
* @category Matrix events
*/
class CanonicalAliasEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The alias the room is considering canonical
*/
get aliases() {
return this.content.alias;
}
}
exports.CanonicalAliasEvent = CanonicalAliasEvent;
//# sourceMappingURL=CanonicalAliasEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CanonicalAliasEvent.js","sourceRoot":"","sources":["../../../src/models/events/CanonicalAliasEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAczC;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,sBAAsC;IAC3E,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9B,CAAC;CACJ;AAXD,kDAWC"}

View File

@@ -0,0 +1,62 @@
import { StateEvent } from "./RoomEvent";
/**
* Information about the previous room.
* @category Matrix event info
* @see CreateEventContent
*/
export interface PreviousRoomInfo {
/**
* The old room ID.
*/
room_id: string;
/**
* The last known event ID in the old room.
*/
event_id: string;
}
/**
* The content definition for m.room.create events
* @category Matrix event contents
* @see CreateEvent
*/
export interface CreateEventContent extends Record<string, unknown> {
/**
* The user ID who created the room.
*/
creator: string;
/**
* Whether or not this room is federated. Default true.
*/
"m.federate"?: boolean;
/**
* The version of the room. Default "1".
*/
room_version?: string;
/**
* Information about the old room.
*/
predecessor?: PreviousRoomInfo;
/**
* The type of the room, if applicable. For example, `m.space`.
*/
type?: string;
}
/**
* Represents an m.room.create state event
* @category Matrix events
*/
export declare class CreateEvent extends StateEvent<CreateEventContent> {
constructor(event: any);
/**
* The user ID who created the room.
*/
get creator(): string;
/**
* The version of the room. Defaults to "1".
*/
get version(): string;
/**
* Whether or not the room is federated. Default true (federated).
*/
get federated(): boolean;
}

View File

@@ -0,0 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.create state event
* @category Matrix events
*/
class CreateEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The user ID who created the room.
*/
get creator() {
return this.content.creator || this.sender;
}
/**
* The version of the room. Defaults to "1".
*/
get version() {
return this.content.room_version || "1";
}
/**
* Whether or not the room is federated. Default true (federated).
*/
get federated() {
return this.content['m.federate'] !== false;
}
}
exports.CreateEvent = CreateEvent;
//# sourceMappingURL=CreateEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CreateEvent.js","sourceRoot":"","sources":["../../../src/models/events/CreateEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAmDzC;;;GAGG;AACH,MAAa,WAAY,SAAQ,sBAA8B;IAC3D,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC;IAChD,CAAC;CACJ;AAzBD,kCAyBC"}

View File

@@ -0,0 +1,42 @@
import { RoomEvent } from "./RoomEvent";
import { EncryptionAlgorithm, IMegolmEncrypted } from "../Crypto";
/**
* The content definition for m.room.encrypted events
* @category Matrix event contents
* @see EncryptedRoomEvent
*/
export interface EncryptedRoomEventContent {
algorithm: EncryptionAlgorithm;
/**
* For m.megolm.v1.aes-sha2 messages. The sender's Curve25519 key.
*/
sender_key?: string;
/**
* For m.megolm.v1.aes-sha2 messages. The session ID established by the sender.
*/
session_id?: string;
/**
* For m.megolm.v1.aes-sha2 messages. The encrypted payload.
*/
ciphertext?: string;
/**
* For m.megolm.v1.aes-sha2 messages. The sender's device ID.
*/
device_id?: string;
}
/**
* Represents an m.room.encrypted room event
* @category Matrix events
*/
export declare class EncryptedRoomEvent extends RoomEvent<EncryptedRoomEventContent> {
constructor(event: any);
/**
* The encryption algorithm used on the event. Should match the m.room.encryption
* state config.
*/
get algorithm(): EncryptionAlgorithm;
/**
* The Megolm encrypted payload information.
*/
get megolmProperties(): IMegolmEncrypted;
}

View File

@@ -0,0 +1,28 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EncryptedRoomEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.encrypted room event
* @category Matrix events
*/
class EncryptedRoomEvent extends RoomEvent_1.RoomEvent {
constructor(event) {
super(event);
}
/**
* The encryption algorithm used on the event. Should match the m.room.encryption
* state config.
*/
get algorithm() {
return this.content.algorithm;
}
/**
* The Megolm encrypted payload information.
*/
get megolmProperties() {
return this.content;
}
}
exports.EncryptedRoomEvent = EncryptedRoomEvent;
//# sourceMappingURL=EncryptedRoomEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"EncryptedRoomEvent.js","sourceRoot":"","sources":["../../../src/models/events/EncryptedRoomEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAkCxC;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,qBAAoC;IACxE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,OAA2B,CAAC;IAC5C,CAAC;CACJ;AAnBD,gDAmBC"}

View File

@@ -0,0 +1,47 @@
import { StateEvent } from "./RoomEvent";
/**
* The kinds of room encryption algorithms allowed by the spec.
* @category Models
* @see EncryptionEvent
*/
export declare enum RoomEncryptionAlgorithm {
MegolmV1AesSha2 = "m.megolm.v1.aes-sha2"
}
/**
* The content definition for m.room.encryption events
* @category Matrix event contents
* @see EncryptionEvent
*/
export interface EncryptionEventContent {
/**
* The encryption algorithm for the room.
*/
algorithm: string | RoomEncryptionAlgorithm;
/**
* How long a session should be used before changing it.
*/
rotation_period_ms?: number;
/**
* How many messages should be sent before changing the session.
*/
rotation_period_msgs?: number;
}
/**
* Represents an m.room.encryption state event
* @category Matrix events
*/
export declare class EncryptionEvent extends StateEvent<EncryptionEventContent> {
constructor(event: any);
/**
* The encryption algorithm for the room.
*/
get algorithm(): string | RoomEncryptionAlgorithm;
/**
* How long a session should be used before changing it. Defaults to a week.
*/
get rotationPeriodMs(): number;
/**
* How many messages should be sent before a session changes. Defaults to 100.
*/
get rotationPeriodMessages(): number;
}

View File

@@ -0,0 +1,42 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EncryptionEvent = exports.RoomEncryptionAlgorithm = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* The kinds of room encryption algorithms allowed by the spec.
* @category Models
* @see EncryptionEvent
*/
var RoomEncryptionAlgorithm;
(function (RoomEncryptionAlgorithm) {
RoomEncryptionAlgorithm["MegolmV1AesSha2"] = "m.megolm.v1.aes-sha2";
})(RoomEncryptionAlgorithm || (exports.RoomEncryptionAlgorithm = RoomEncryptionAlgorithm = {}));
/**
* Represents an m.room.encryption state event
* @category Matrix events
*/
class EncryptionEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The encryption algorithm for the room.
*/
get algorithm() {
return this.content.algorithm;
}
/**
* How long a session should be used before changing it. Defaults to a week.
*/
get rotationPeriodMs() {
return this.content.rotation_period_ms ?? 604800000; // 1 week
}
/**
* How many messages should be sent before a session changes. Defaults to 100.
*/
get rotationPeriodMessages() {
return this.content.rotation_period_msgs ?? 100;
}
}
exports.EncryptionEvent = EncryptionEvent;
//# sourceMappingURL=EncryptionEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"EncryptionEvent.js","sourceRoot":"","sources":["../../../src/models/events/EncryptionEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAEzC;;;;GAIG;AACH,IAAY,uBAEX;AAFD,WAAY,uBAAuB;IAC/B,mEAAwC,CAAA;AAC5C,CAAC,EAFW,uBAAuB,uCAAvB,uBAAuB,QAElC;AAwBD;;;GAGG;AACH,MAAa,eAAgB,SAAQ,sBAAkC;IACnE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,SAAS,CAAC,CAAC,SAAS;IAClE,CAAC;IAED;;OAEG;IACH,IAAW,sBAAsB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,GAAG,CAAC;IACpD,CAAC;CACJ;AAzBD,0CAyBC"}

View File

@@ -0,0 +1,26 @@
/**
* A Matrix event.
* @category Matrix events
*/
export declare class MatrixEvent<T extends (Object | unknown) = unknown> {
protected event: any;
constructor(event: any);
/**
* The user ID who sent this event.
*/
get sender(): string;
/**
* The type of this event.
*/
get type(): string;
/**
* The content for this event. May have no properties.
*/
get content(): T;
/**
* Gets the raw event that this MatrixEvent is using.
* Note that there's no guarantees on formats here - it is the exact
* same input to the constructor.
*/
get raw(): any;
}

View File

@@ -0,0 +1,41 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MatrixEvent = void 0;
/**
* A Matrix event.
* @category Matrix events
*/
class MatrixEvent {
event;
constructor(event) {
this.event = event;
}
/**
* The user ID who sent this event.
*/
get sender() {
return this.event['sender'];
}
/**
* The type of this event.
*/
get type() {
return this.event['type'];
}
/**
* The content for this event. May have no properties.
*/
get content() {
return this.event['content'] || {};
}
/**
* Gets the raw event that this MatrixEvent is using.
* Note that there's no guarantees on formats here - it is the exact
* same input to the constructor.
*/
get raw() {
return this.event;
}
}
exports.MatrixEvent = MatrixEvent;
//# sourceMappingURL=Event.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../../src/models/events/Event.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,WAAW;IACE;IAAtB,YAAsB,KAAU;QAAV,UAAK,GAAL,KAAK,CAAK;IAChC,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CACJ;AAjCD,kCAiCC"}

View File

@@ -0,0 +1,15 @@
/**
* Represents the different kinds of events a bot/appservice might see.
* @category Matrix events
*/
export declare enum EventKind {
/**
* A room event. This could be a message event or a state event, and is associated with
* a room.
*/
RoomEvent = "room",
/**
* An ephemeral event, such as typing notifications or presence.
*/
EphemeralEvent = "ephemeral"
}

View File

@@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventKind = void 0;
/**
* Represents the different kinds of events a bot/appservice might see.
* @category Matrix events
*/
var EventKind;
(function (EventKind) {
/**
* A room event. This could be a message event or a state event, and is associated with
* a room.
*/
EventKind["RoomEvent"] = "room";
/**
* An ephemeral event, such as typing notifications or presence.
*/
EventKind["EphemeralEvent"] = "ephemeral";
})(EventKind || (exports.EventKind = EventKind = {}));
//# sourceMappingURL=EventKind.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"EventKind.js","sourceRoot":"","sources":["../../../src/models/events/EventKind.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,SAWX;AAXD,WAAY,SAAS;IACjB;;;OAGG;IACH,+BAAkB,CAAA;IAElB;;OAEG;IACH,yCAA4B,CAAA;AAChC,CAAC,EAXW,SAAS,yBAAT,SAAS,QAWpB"}

View File

@@ -0,0 +1,14 @@
/**
* Thrown when an event is invalid.
* @category Matrix events
*/
export declare class InvalidEventError extends Error {
constructor(message?: string);
}
/**
* Thrown when an event is redacted.
* @category Matrix events
*/
export declare class EventRedactedError extends InvalidEventError {
constructor(message?: string);
}

View File

@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventRedactedError = exports.InvalidEventError = void 0;
/**
* Thrown when an event is invalid.
* @category Matrix events
*/
class InvalidEventError extends Error {
constructor(message = null) {
super(message);
}
}
exports.InvalidEventError = InvalidEventError;
/**
* Thrown when an event is redacted.
* @category Matrix events
*/
class EventRedactedError extends InvalidEventError {
constructor(message = null) {
super(message);
}
}
exports.EventRedactedError = EventRedactedError;
//# sourceMappingURL=InvalidEventError.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"InvalidEventError.js","sourceRoot":"","sources":["../../../src/models/events/InvalidEventError.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IACxC,YAAY,UAAkB,IAAI;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,8CAIC;AAED;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,iBAAiB;IACrD,YAAY,UAAkB,IAAI;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,gDAIC"}

View File

@@ -0,0 +1,29 @@
import { StateEvent } from "./RoomEvent";
/**
* The types of join rules that are valid in Matrix.
* @category Matrix event info
* @see JoinRulesEventContent
*/
export type JoinRule = "public" | "knock" | "invite" | "private";
/**
* The content definition for m.room.join_rules events
* @category Matrix event contents
* @see JoinRulesEvent
*/
export interface JoinRulesEventContent {
/**
* The join rule for the room.
*/
join_rule: JoinRule;
}
/**
* Represents an m.room.join_rules state event
* @category Matrix events
*/
export declare class JoinRulesEvent extends StateEvent<JoinRulesEventContent> {
constructor(event: any);
/**
* The join rule for the room.
*/
get rule(): JoinRule;
}

View File

@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.JoinRulesEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.join_rules state event
* @category Matrix events
*/
class JoinRulesEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The join rule for the room.
*/
get rule() {
return this.content.join_rule;
}
}
exports.JoinRulesEvent = JoinRulesEvent;
//# sourceMappingURL=JoinRulesEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"JoinRulesEvent.js","sourceRoot":"","sources":["../../../src/models/events/JoinRulesEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAqBzC;;;GAGG;AACH,MAAa,cAAe,SAAQ,sBAAiC;IACjE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;CACJ;AAXD,wCAWC"}

View File

@@ -0,0 +1,59 @@
import { StateEvent } from "./RoomEvent";
/**
* The types of membership that are valid in Matrix.
* @category Matrix event info
* @see MembershipEventContent
*/
export type Membership = "join" | "leave" | "ban" | "invite";
/**
* The effective membership states a user can be in.
* @category Matrix event info
* @see MembershipEventContent
*/
export type EffectiveMembership = "join" | "leave" | "invite";
/**
* The content definition for m.room.member events
* @category Matrix event contents
* @see MembershipEvent
*/
export interface MembershipEventContent {
avatar_url?: string;
displayname?: string;
reason?: string;
membership: Membership;
is_direct?: boolean;
unsigned?: any;
third_party_invite?: {
display_name: string;
signed: any;
};
}
/**
* Represents an m.room.member state event
* @category Matrix events
*/
export declare class MembershipEvent extends StateEvent<MembershipEventContent> {
constructor(event: any);
/**
* True if the membership event targets the sender. False otherwise.
*
* This will typically by false for kicks and bans.
*/
get ownMembership(): boolean;
/**
* The reason why a user may have sent this membership.
*/
get reason(): string | undefined;
/**
* The user ID the membership affects.
*/
get membershipFor(): string;
/**
* The user's membership.
*/
get membership(): Membership;
/**
* The user's effective membership.
*/
get effectiveMembership(): EffectiveMembership;
}

View File

@@ -0,0 +1,55 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MembershipEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
const InvalidEventError_1 = require("./InvalidEventError");
/**
* Represents an m.room.member state event
* @category Matrix events
*/
class MembershipEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* True if the membership event targets the sender. False otherwise.
*
* This will typically by false for kicks and bans.
*/
get ownMembership() {
return this.membershipFor === this.sender;
}
/**
* The reason why a user may have sent this membership.
*/
get reason() {
return this.content.reason;
}
/**
* The user ID the membership affects.
*/
get membershipFor() {
return this.stateKey;
}
/**
* The user's membership.
*/
get membership() {
const membership = this.content.membership;
if (!membership)
throw new InvalidEventError_1.InvalidEventError("no membership field in content");
return membership;
}
/**
* The user's effective membership.
*/
get effectiveMembership() {
if (this.membership === "join")
return "join";
if (this.membership === "invite")
return "invite";
return "leave";
}
}
exports.MembershipEvent = MembershipEvent;
//# sourceMappingURL=MembershipEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"MembershipEvent.js","sourceRoot":"","sources":["../../../src/models/events/MembershipEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AACzC,2DAAwD;AAkCxD;;;GAGG;AACH,MAAa,eAAgB,SAAQ,sBAAkC;IACnE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,qCAAiB,CAAC,gCAAgC,CAAC,CAAC;QAC/E,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAC1B,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM;YAAE,OAAO,MAAM,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAClD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AA7CD,0CA6CC"}

View File

@@ -0,0 +1,233 @@
import { RoomEvent } from "./RoomEvent";
/**
* The types of messages that are valid in Matrix.
* @category Matrix event info
* @see MessageEventContent
*/
export type MessageType = "m.text" | "m.emote" | "m.notice" | "m.image" | "m.file" | "m.audio" | "m.location" | "m.video" | string;
/**
* Information about a file in Matrix
* @category Matrix event info
* @see MessageEventContent
*/
export interface FileInfo {
/**
* The size of the file in bytes.
*/
size?: number;
/**
* The type of file.
*/
mimetype?: string;
}
/**
* Information about a thumbnail in Matrix
* @category Matrix event info
* @see MessageEventContent
*/
export interface ThumbnailInfo {
/**
* The size of the thumbnail in bytes.
*/
size?: number;
/**
* The type of thumbnail.
*/
mimetype?: string;
/**
* The intended height of the thumbnail in pixels.
*/
h: number;
/**
* The intended width of the thumbnail in pixels.
*/
w: number;
}
/**
* Information about a file's thumbnail.
* @category Matrix event info
* @see MessageEventContent
*/
export interface ThumbnailedFileInfo {
/**
* A URL to a thumbnail for the file, if unencrypted.
*/
thumbnail_url?: string;
/**
* The encrypted thumbnail file information, if encrypted.
*/
thumbnail_file?: EncryptedFile;
/**
* Information about the thumbnail. Optionally included if a thumbnail_url is specified.
*/
thumbnail_info?: ThumbnailInfo;
}
/**
* Information about a file that has a thumbnail
* @category Matrix event info
* @see MessageEventContent
*/
export interface FileWithThumbnailInfo extends FileInfo, ThumbnailedFileInfo {
}
/**
* Information about a file that has a width and height.
* @category Matrix event info
* @see MessageEventContent
*/
export interface DimensionalFileInfo extends FileWithThumbnailInfo {
/**
* The intended height of the media in pixels.
*/
h: number;
/**
* The intended width of the media in pixels.
*/
w: number;
}
/**
* Information about a file that has a time dimension.
* @category Matrix event info
* @see MessageEventContent
*/
export interface TimedFileInfo extends FileInfo {
/**
* The duration of the media in milliseconds.
*/
duration: number;
}
/**
* Information about a video file.
* @category Matrix event info
* @see MessageEventContent
*/
export interface VideoFileInfo extends DimensionalFileInfo, TimedFileInfo {
}
/**
* The content definition for m.room.message events with a type of m.audio
* @category Matrix event contents
* @see MessageEvent
*/
export interface AudioMessageEventContent extends FileMessageEventContent {
/**
* Information about the file.
*/
info?: TimedFileInfo;
}
/**
* The content definition for m.room.message events with a type of m.video
* @category Matrix event contents
* @see MessageEvent
*/
export interface VideoMessageEventContent extends FileMessageEventContent {
/**
* Information about the file.
*/
info?: VideoFileInfo;
}
/**
* The content definition for m.room.message events with a type of m.image
* @category Matrix event contents
* @see MessageEvent
*/
export interface ImageMessageEventContent extends FileMessageEventContent {
/**
* Information about the file.
*/
info?: DimensionalFileInfo;
}
/**
* The content definition for m.room.message events with a type of m.file
* @category Matrix event contents
* @see MessageEvent
*/
export interface FileMessageEventContent extends MessageEventContent {
/**
* Information about the file.
*/
info?: FileWithThumbnailInfo;
/**
* URL to the file, if unencrypted.
*/
url: string;
/**
* The encrypted file, if encrypted.
*/
file: EncryptedFile;
}
/**
* An encrypted file.
* @category Matrix event contents
* @see MessageEvent
*/
export interface EncryptedFile {
url: string;
key: {
kty: "oct";
key_ops: string[];
alg: "A256CTR";
k: string;
ext: true;
};
iv: string;
hashes: {
sha256: string;
};
v: "v2";
}
/**
* The content definition for m.room.message events with a type of m.location
* @category Matrix event contents
* @see MessageEvent
*/
export interface LocationMessageEventContent extends MessageEventContent {
/**
* Information about the location.
*/
info?: ThumbnailedFileInfo;
/**
* A geo URI of the location.
*/
geo_uri?: string;
}
/**
* The content definition for m.room.message events with types of m.text, m.emote, and m.notice
* @category Matrix event contents
* @see MessageEvent
*/
export interface TextualMessageEventContent extends MessageEventContent {
format?: string;
formatted_body?: string;
}
/**
* The content definition for m.room.message events
* @category Matrix event contents
* @see MessageEvent
*/
export interface MessageEventContent {
body: string;
msgtype: MessageType;
external_url?: string;
}
/**
* Represents an m.room.message room event
* @category Matrix events
*/
export declare class MessageEvent<T extends MessageEventContent> extends RoomEvent<T> {
constructor(event: any);
/**
* Whether or not the event is redacted (or looked redacted).
*/
get isRedacted(): boolean;
/**
* The message's type.
*/
get messageType(): MessageType;
/**
* The `body` of the message.
*/
get textBody(): string;
/**
* The `external_url` of the message, if it exists
*/
get externalUrl(): string | undefined;
}

View File

@@ -0,0 +1,49 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
const InvalidEventError_1 = require("./InvalidEventError");
/**
* Represents an m.room.message room event
* @category Matrix events
*/
class MessageEvent extends RoomEvent_1.RoomEvent {
constructor(event) {
super(event);
}
/**
* Whether or not the event is redacted (or looked redacted).
*/
get isRedacted() {
// Presume the event redacted if we're missing a body or message type
const noContent = !this.content.body && this.content.body !== "";
const noMsgtype = !this.content.msgtype && this.content.msgtype !== "";
return noContent || noMsgtype;
}
/**
* The message's type.
*/
get messageType() {
const type = this.content.msgtype;
if (!type && type !== "")
throw new InvalidEventError_1.EventRedactedError("missing msgtype");
return type;
}
/**
* The `body` of the message.
*/
get textBody() {
const body = this.content.body;
if (!body && body !== "")
throw new InvalidEventError_1.EventRedactedError("missing body");
return body;
}
/**
* The `external_url` of the message, if it exists
*/
get externalUrl() {
return this.content.external_url || undefined;
}
}
exports.MessageEvent = MessageEvent;
//# sourceMappingURL=MessageEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"MessageEvent.js","sourceRoot":"","sources":["../../../src/models/events/MessageEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,2DAAyD;AAuPzD;;;GAGG;AACH,MAAa,YAA4C,SAAQ,qBAAY;IACzE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACjB,qEAAqE;QACrE,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;QACvE,OAAO,SAAS,IAAI,SAAS,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE;YAAE,MAAM,IAAI,sCAAkB,CAAC,iBAAiB,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE;YAAE,MAAM,IAAI,sCAAkB,CAAC,cAAc,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC;IAClD,CAAC;CACJ;AAvCD,oCAuCC"}

View File

@@ -0,0 +1,23 @@
import { StateEvent } from "./RoomEvent";
/**
* The content definition for m.room.pinned_events events
* @category Matrix event contents
* @see PinnedEventsEvent
*/
export interface PinnedEventsEventContent {
/**
* The event IDs that are pinned in the room.
*/
pinned: string[];
}
/**
* Represents an m.room.pinned_events state event
* @category Matrix events
*/
export declare class PinnedEventsEvent extends StateEvent<PinnedEventsEventContent> {
constructor(event: any);
/**
* The event IDs that are pinned in the room.
*/
get pinnedEventIds(): string[];
}

View File

@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PinnedEventsEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.pinned_events state event
* @category Matrix events
*/
class PinnedEventsEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The event IDs that are pinned in the room.
*/
get pinnedEventIds() {
return this.content.pinned || [];
}
}
exports.PinnedEventsEvent = PinnedEventsEvent;
//# sourceMappingURL=PinnedEventsEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"PinnedEventsEvent.js","sourceRoot":"","sources":["../../../src/models/events/PinnedEventsEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAczC;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,sBAAoC;IACvE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,CAAC;CACJ;AAXD,8CAWC"}

View File

@@ -0,0 +1,96 @@
import { StateEvent } from "./RoomEvent";
/**
* The content definition for m.room.power_levels events
* @category Matrix event contents
* @see PowerLevelsEvent
*/
export interface PowerLevelsEventContent {
/**
* The power level required to ban. Default 50.
*/
ban?: number;
/**
* A map of event types to the power level required to send them.
*/
events?: {
[eventType: string]: number;
};
/**
* The power level required to send events in the room. Default 50.
*/
events_default?: number;
/**
* The power level required to invite users to the room. Default 50.
*/
invite?: number;
/**
* The power level required to kick users from the room. Default 50.
*/
kick?: number;
/**
* The power level required to redact other people's events in the room. Default 50.
*/
redact?: number;
/**
* The power level required to send state events in the room. Default 50.
*/
state_default?: number;
/**
* A map of user IDs to power levels.
*/
users?: {
[userId: string]: number;
};
/**
* The power level of users not listed in `users`. Default 0.
*/
users_default?: number;
/**
* Power levels required to send certain kinds of notifications.
*/
notifications?: {
/**
* The power level required to send "@room" notifications. Default 50.
*/
room?: number;
};
}
/**
* Represents an m.room.power_levels state event
* @category Matrix events
*/
export declare class PowerLevelsEvent extends StateEvent<PowerLevelsEventContent> {
constructor(event: any);
/**
* The power level required to ban users.
*/
get banLevel(): number;
/**
* The power level required to invite users.
*/
get inviteLevel(): number;
/**
* The power level required to kick users.
*/
get kickLevel(): number;
/**
* The power level required to redact messages sent by other users.
*/
get redactLevel(): number;
/**
* The power level required to send "@room" notifications.
*/
get notifyWholeRoomLevel(): number;
/**
* The default power level for users.
*/
get defaultUserLevel(): number;
/**
* The default power level required to send state events.
*/
get defaultStateEventLevel(): number;
/**
* The default power level required to send room events.
*/
get defaultEventLevel(): number;
}

View File

@@ -0,0 +1,70 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PowerLevelsEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
function defaultNum(val, def) {
if (!val && val !== 0)
return def;
return val;
}
/**
* Represents an m.room.power_levels state event
* @category Matrix events
*/
class PowerLevelsEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The power level required to ban users.
*/
get banLevel() {
return defaultNum(this.content.ban, 50);
}
/**
* The power level required to invite users.
*/
get inviteLevel() {
return defaultNum(this.content.invite, 50);
}
/**
* The power level required to kick users.
*/
get kickLevel() {
return defaultNum(this.content.kick, 50);
}
/**
* The power level required to redact messages sent by other users.
*/
get redactLevel() {
return defaultNum(this.content.redact, 50);
}
/**
* The power level required to send "@room" notifications.
*/
get notifyWholeRoomLevel() {
if (!this.content.notifications)
return 50;
return defaultNum(this.content.notifications.room, 50);
}
/**
* The default power level for users.
*/
get defaultUserLevel() {
return defaultNum(this.content.users_default, 0);
}
/**
* The default power level required to send state events.
*/
get defaultStateEventLevel() {
return defaultNum(this.content.state_default, 50);
}
/**
* The default power level required to send room events.
*/
get defaultEventLevel() {
return defaultNum(this.content.events_default, 50);
}
}
exports.PowerLevelsEvent = PowerLevelsEvent;
//# sourceMappingURL=PowerLevelsEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"PowerLevelsEvent.js","sourceRoot":"","sources":["../../../src/models/events/PowerLevelsEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAgEzC,SAAS,UAAU,CAAC,GAAuB,EAAE,GAAW;IACpD,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,sBAAmC;IACrE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAW,oBAAoB;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,IAAW,sBAAsB;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;CACJ;AA7DD,4CA6DC"}

View File

@@ -0,0 +1,56 @@
import { MatrixEvent } from "./Event";
/**
* The allowed states of presence in Matrix.
*
* * `online`: The default state when the user is connected to an event stream.
* * `unavailable`: The user is not reachable at this time e.g. they are idle.
* * `offline`: The user is not connected to an event stream or is explicitly suppressing their profile information from being sent.
*
* @category Matrix event info
* @see PresenceEventContent
*/
export type PresenceState = "online" | "offline" | "unavailable";
/**
* Event content for m.presence events
* @category Matrix event contents
* @see PresenceEvent
*/
export interface PresenceEventContent {
/**
* The avatar URL for the user, if any.
*/
avatar_url?: string;
/**
* The display name for the user, if any.
*/
displayname?: string;
/**
* How long ago the user performed some action, in milliseconds.
*/
last_active_ago?: number;
/**
* The user's presence state.
*
* @see {@link PresenceState} for a description of each presence key.
*/
presence: PresenceState;
/**
* Whether or not the user is currently active.
*/
currently_active?: boolean;
/**
* A status message associated with this presence.
*/
status_msg?: string;
}
/**
* Wraps a m.presence ephemeral event in Matrix
* @category Matrix events
*/
export declare class PresenceEvent extends MatrixEvent<PresenceEventContent> {
constructor(event: any);
/**
* The current presence state for the user.
*/
get presence(): PresenceState;
}

View File

@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PresenceEvent = void 0;
const Event_1 = require("./Event");
/**
* Wraps a m.presence ephemeral event in Matrix
* @category Matrix events
*/
class PresenceEvent extends Event_1.MatrixEvent {
constructor(event) {
super(event);
}
/**
* The current presence state for the user.
*/
get presence() {
return this.content.presence;
}
}
exports.PresenceEvent = PresenceEvent;
//# sourceMappingURL=PresenceEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"PresenceEvent.js","sourceRoot":"","sources":["../../../src/models/events/PresenceEvent.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAqDtC;;;GAGG;AACH,MAAa,aAAc,SAAQ,mBAAiC;IAChE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjC,CAAC;CACJ;AAXD,sCAWC"}

View File

@@ -0,0 +1,28 @@
import { RoomEvent } from "./RoomEvent";
/**
* The content definition for m.room.redaction events
* @category Matrix event contents
* @see RedactionEvent
*/
export interface RedactionEventContent {
/**
* The event ID or IDs this event redacts.
*/
redacts?: string | string[];
}
/**
* Represents an m.room.redaction room event
* @category Matrix events
*/
export declare class RedactionEvent extends RoomEvent<RedactionEventContent> {
constructor(event: any);
/**
* The event ID this event redacts.
* @deprecated It is possible for multiple events to be redacted depending on the room version.
*/
get redactsEventId(): string;
/**
* The event IDs this event redacts.
*/
get redactsEventIds(): string[];
}

View File

@@ -0,0 +1,36 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RedactionEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.redaction room event
* @category Matrix events
*/
class RedactionEvent extends RoomEvent_1.RoomEvent {
constructor(event) {
super(event);
}
/**
* The event ID this event redacts.
* @deprecated It is possible for multiple events to be redacted depending on the room version.
*/
get redactsEventId() {
return this.redactsEventIds[0];
}
/**
* The event IDs this event redacts.
*/
get redactsEventIds() {
if (Array.isArray(this.content.redacts)) {
return this.content.redacts;
}
else if (this.content.redacts) {
return [this.content.redacts];
}
else {
return [this.event['redacts']];
}
}
}
exports.RedactionEvent = RedactionEvent;
//# sourceMappingURL=RedactionEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"RedactionEvent.js","sourceRoot":"","sources":["../../../src/models/events/RedactionEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAcxC;;;GAGG;AACH,MAAa,cAAe,SAAQ,qBAAgC;IAChE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAC/B;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACjC;aAAM;YACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;SAClC;IACL,CAAC;CACJ;AAzBD,wCAyBC"}

View File

@@ -0,0 +1,28 @@
import { StateEvent } from "./RoomEvent";
import { DimensionalFileInfo } from "./MessageEvent";
/**
* The content definition for m.room.avatar events
* @category Matrix event contents
* @see RoomAvatarEvent
*/
export interface RoomAvatarEventContent {
/**
* The URL to the image for the avatar of the room.
*/
url: string;
/**
* Optional information about the avatar.
*/
info?: DimensionalFileInfo;
}
/**
* Represents an m.room.avatar state event
* @category Matrix events
*/
export declare class RoomAvatarEvent extends StateEvent<RoomAvatarEventContent> {
constructor(event: any);
/**
* The URL for the avatar of the room.
*/
get avatarUrl(): string;
}

View File

@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoomAvatarEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.avatar state event
* @category Matrix events
*/
class RoomAvatarEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The URL for the avatar of the room.
*/
get avatarUrl() {
return this.content.url;
}
}
exports.RoomAvatarEvent = RoomAvatarEvent;
//# sourceMappingURL=RoomAvatarEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"RoomAvatarEvent.js","sourceRoot":"","sources":["../../../src/models/events/RoomAvatarEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAoBzC;;;GAGG;AACH,MAAa,eAAgB,SAAQ,sBAAkC;IACnE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC5B,CAAC;CACJ;AAXD,0CAWC"}

View File

@@ -0,0 +1,58 @@
import { MatrixEvent } from "./Event";
/**
* The typical unsigned data found on an event.
* @category Matrix event info
* @see RoomEvent
*/
export interface TypicalUnsigned {
/**
* The age of this event in seconds.
*/
age?: number;
/**
* Other properties which may be included.
*/
[prop: string]: any;
}
/**
* Empty room event content.
* @category Matrix event contents
*/
export interface RoomEventContent {
}
/**
* A Matrix room event.
* @category Matrix events
*/
export declare class RoomEvent<T extends (Object | unknown) = unknown> extends MatrixEvent<T> {
protected event: any;
constructor(event: any);
/**
* The event ID of this event.
*/
get eventId(): string;
/**
* The timestamp in milliseconds this event was sent.
*/
get timestamp(): number;
/**
* The unsigned content for this event. May have no properties.
*/
get unsigned(): TypicalUnsigned;
}
/**
* A room state event.
* @category Matrix events
*/
export declare class StateEvent<T extends (Object | unknown) = unknown> extends RoomEvent<T> {
constructor(event: any);
/**
* The state key for this event. May be an empty string.
*/
get stateKey(): string;
/**
* The previous content for this state event. Will be an empty
* object if there is no previous content.
*/
get previousContent(): T;
}

View File

@@ -0,0 +1,58 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.StateEvent = exports.RoomEvent = void 0;
const Event_1 = require("./Event");
/**
* A Matrix room event.
* @category Matrix events
*/
class RoomEvent extends Event_1.MatrixEvent {
event;
constructor(event) {
super(event);
this.event = event;
}
/**
* The event ID of this event.
*/
get eventId() {
return this.event['event_id'];
}
/**
* The timestamp in milliseconds this event was sent.
*/
get timestamp() {
return this.event['origin_server_ts'];
}
/**
* The unsigned content for this event. May have no properties.
*/
get unsigned() {
return this.event['unsigned'] || {};
}
}
exports.RoomEvent = RoomEvent;
/**
* A room state event.
* @category Matrix events
*/
class StateEvent extends RoomEvent {
constructor(event) {
super(event);
}
/**
* The state key for this event. May be an empty string.
*/
get stateKey() {
return this.event['state_key'];
}
/**
* The previous content for this state event. Will be an empty
* object if there is no previous content.
*/
get previousContent() {
return this.unsigned['prev_content'] || this.event['prev_content'] || {}; // v2, v1, fallback
}
}
exports.StateEvent = StateEvent;
//# sourceMappingURL=RoomEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"RoomEvent.js","sourceRoot":"","sources":["../../../src/models/events/RoomEvent.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AA2BtC;;;GAGG;AACH,MAAa,SAAkD,SAAQ,mBAAc;IAC3D;IAAtB,YAAsB,KAAU;QAC5B,KAAK,CAAC,KAAK,CAAC,CAAC;QADK,UAAK,GAAL,KAAK,CAAK;IAEhC,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;CACJ;AAzBD,8BAyBC;AAED;;;GAGG;AACH,MAAa,UAAmD,SAAQ,SAAY;IAChF,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB;IACjG,CAAC;CACJ;AAnBD,gCAmBC"}

View File

@@ -0,0 +1,20 @@
import { StateEvent } from "./RoomEvent";
/**
* The content definition for m.room.name events
* @category Matrix event contents
* @see RoomNameEvent
*/
export interface RoomNameEventContent {
name: string;
}
/**
* Represents an m.room.name state event
* @category Matrix events
*/
export declare class RoomNameEvent extends StateEvent<RoomNameEventContent> {
constructor(event: any);
/**
* The name of the room.
*/
get name(): string;
}

View File

@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoomNameEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.name state event
* @category Matrix events
*/
class RoomNameEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The name of the room.
*/
get name() {
return this.content.name;
}
}
exports.RoomNameEvent = RoomNameEvent;
//# sourceMappingURL=RoomNameEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"RoomNameEvent.js","sourceRoot":"","sources":["../../../src/models/events/RoomNameEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAWzC;;;GAGG;AACH,MAAa,aAAc,SAAQ,sBAAgC;IAC/D,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;CACJ;AAXD,sCAWC"}

View File

@@ -0,0 +1,20 @@
import { StateEvent } from "./RoomEvent";
/**
* The content definition for m.room.topic events
* @category Matrix event contents
* @see RoomTopicEvent
*/
export interface RoomTopicEventContent {
topic: string;
}
/**
* Represents an m.room.topic state event
* @category Matrix events
*/
export declare class RoomTopicEvent extends StateEvent<RoomTopicEventContent> {
constructor(event: any);
/**
* The topic of the room.
*/
get topic(): string;
}

View File

@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoomTopicEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.room.topic state event
* @category Matrix events
*/
class RoomTopicEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The topic of the room.
*/
get topic() {
return this.content.topic;
}
}
exports.RoomTopicEvent = RoomTopicEvent;
//# sourceMappingURL=RoomTopicEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"RoomTopicEvent.js","sourceRoot":"","sources":["../../../src/models/events/RoomTopicEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAWzC;;;GAGG;AACH,MAAa,cAAe,SAAQ,sBAAiC;IACjE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9B,CAAC;CACJ;AAXD,wCAWC"}

View File

@@ -0,0 +1,53 @@
import { StateEvent } from "./RoomEvent";
/**
* The content definition for m.space.child events
* @category Matrix event contents
* @see SpaceChildEvent
*/
export interface SpaceChildEventContent {
/**
* The servers the client should provide to the server when trying to join the room.
* When not provided or empty, the child is considered not part of the space.
*/
via: string[];
/**
* A short string to differentiate the rendering order of entities.
* @see validateSpaceOrderString
*/
order?: string;
/**
* Whether or not the entity is intended to be a suggested entity.
*/
suggested?: boolean;
}
/**
* Represents an m.space.child state event
* @category Matrix events
*/
export declare class SpaceChildEvent extends StateEvent<SpaceChildEventContent> {
constructor(event: any);
/**
* The room ID of the space or room this child represents.
*/
get entityRoomId(): string;
/**
* Whether or not this child is "active" or valid. Inactive children are
* not considered part of a space.
*/
get isActiveChild(): boolean;
/**
* The servers the client should provide to the homeserver when trying to
* join the entity (room). May be empty or falsey to denote the child is
* inactive.
*/
get viaServers(): string[];
/**
* An optional short string to differentiate the rendering order of entities.
* @see validateSpaceOrderString
*/
get order(): string;
/**
* Whether or not the child is a suggested entity for users to join.
*/
get suggested(): boolean;
}

View File

@@ -0,0 +1,49 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SpaceChildEvent = void 0;
const RoomEvent_1 = require("./RoomEvent");
/**
* Represents an m.space.child state event
* @category Matrix events
*/
class SpaceChildEvent extends RoomEvent_1.StateEvent {
constructor(event) {
super(event);
}
/**
* The room ID of the space or room this child represents.
*/
get entityRoomId() {
return this.stateKey;
}
/**
* Whether or not this child is "active" or valid. Inactive children are
* not considered part of a space.
*/
get isActiveChild() {
return !!this.viaServers?.length;
}
/**
* The servers the client should provide to the homeserver when trying to
* join the entity (room). May be empty or falsey to denote the child is
* inactive.
*/
get viaServers() {
return this.content.via;
}
/**
* An optional short string to differentiate the rendering order of entities.
* @see validateSpaceOrderString
*/
get order() {
return this.content.order;
}
/**
* Whether or not the child is a suggested entity for users to join.
*/
get suggested() {
return this.content.suggested ?? false;
}
}
exports.SpaceChildEvent = SpaceChildEvent;
//# sourceMappingURL=SpaceChildEvent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SpaceChildEvent.js","sourceRoot":"","sources":["../../../src/models/events/SpaceChildEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AA0BzC;;;GAGG;AACH,MAAa,eAAgB,SAAQ,sBAAkC;IACnE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAW,aAAa;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,CAAC;CACJ;AA3CD,0CA2CC"}

View File

@@ -0,0 +1,8 @@
import { RoomEvent } from "./RoomEvent";
/**
* Wraps a room event into a more suitable container.
* @param {any} event The event object to wrap.
* @returns {RoomEvent<any>} An instance of the most suitable container for the event.
* @category Matrix events
*/
export declare function wrapRoomEvent(event: any): RoomEvent<any>;

View File

@@ -0,0 +1,51 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.wrapRoomEvent = void 0;
const MembershipEvent_1 = require("./MembershipEvent");
const RoomEvent_1 = require("./RoomEvent");
const MessageEvent_1 = require("./MessageEvent");
/**
* Wraps a room event into a more suitable container.
* @param {any} event The event object to wrap.
* @returns {RoomEvent<any>} An instance of the most suitable container for the event.
* @category Matrix events
*/
function wrapRoomEvent(event) {
if (!event)
return null;
if (typeof (event['state_key']) === 'string') {
if (event['type'] === 'm.room.member') {
return new MembershipEvent_1.MembershipEvent(event);
}
else {
return new RoomEvent_1.StateEvent(event);
}
}
else if (event['type'] === 'm.room.message') {
const content = event['content'];
const msgtype = content ? content['msgtype'] : null;
if (msgtype === "m.text" || msgtype === "m.notice" || msgtype === "m.emote") {
return new MessageEvent_1.MessageEvent(event);
}
else if (msgtype === "m.audio") {
return new MessageEvent_1.MessageEvent(event);
}
else if (msgtype === "m.video") {
return new MessageEvent_1.MessageEvent(event);
}
else if (msgtype === "m.image") {
return new MessageEvent_1.MessageEvent(event);
}
else if (msgtype === "m.location") {
return new MessageEvent_1.MessageEvent(event);
}
else {
return new MessageEvent_1.MessageEvent(event);
}
}
else {
return new RoomEvent_1.RoomEvent(event);
}
}
exports.wrapRoomEvent = wrapRoomEvent;
//# sourceMappingURL=converter.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/models/events/converter.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AACpD,2CAAoD;AACpD,iDAQwB;AAExB;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAU;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE;QAC1C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,eAAe,EAAE;YACnC,OAAO,IAAI,iCAAe,CAAC,KAAK,CAAC,CAAC;SACrC;aAAM;YACH,OAAO,IAAI,sBAAU,CAAM,KAAK,CAAC,CAAC;SACrC;KACJ;SAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,gBAAgB,EAAE;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,SAAS,EAAE;YACzE,OAAO,IAAI,2BAAY,CAA6B,KAAK,CAAC,CAAC;SAC9D;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE;YAC9B,OAAO,IAAI,2BAAY,CAA2B,KAAK,CAAC,CAAC;SAC5D;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE;YAC9B,OAAO,IAAI,2BAAY,CAA2B,KAAK,CAAC,CAAC;SAC5D;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE;YAC9B,OAAO,IAAI,2BAAY,CAA2B,KAAK,CAAC,CAAC;SAC5D;aAAM,IAAI,OAAO,KAAK,YAAY,EAAE;YACjC,OAAO,IAAI,2BAAY,CAA8B,KAAK,CAAC,CAAC;SAC/D;aAAM;YACH,OAAO,IAAI,2BAAY,CAAsB,KAAK,CAAC,CAAC;SACvD;KACJ;SAAM;QACH,OAAO,IAAI,qBAAS,CAAM,KAAK,CAAC,CAAC;KACpC;AACL,CAAC;AA5BD,sCA4BC"}