matrix-js-sdk 41.7.0 → 41.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/lib/@types/event.d.ts +6 -1
- package/lib/@types/event.d.ts.map +1 -1
- package/lib/@types/event.js +3 -0
- package/lib/@types/event.js.map +1 -1
- package/lib/@types/retention.d.ts +15 -0
- package/lib/@types/retention.d.ts.map +1 -0
- package/lib/@types/retention.js +13 -0
- package/lib/@types/retention.js.map +1 -0
- package/lib/capabilityPoller.d.ts +38 -0
- package/lib/capabilityPoller.d.ts.map +1 -0
- package/lib/capabilityPoller.js +96 -0
- package/lib/capabilityPoller.js.map +1 -0
- package/lib/client.d.ts +7 -0
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +15 -5
- package/lib/client.js.map +1 -1
- package/lib/matrix.d.ts +1 -0
- package/lib/matrix.d.ts.map +1 -1
- package/lib/matrix.js +1 -0
- package/lib/matrix.js.map +1 -1
- package/lib/matrixrtc/MembershipManager.d.ts +2 -0
- package/lib/matrixrtc/MembershipManager.d.ts.map +1 -1
- package/lib/matrixrtc/MembershipManager.js +2 -0
- package/lib/matrixrtc/MembershipManager.js.map +1 -1
- package/lib/matrixrtc/MembershipManagerActionScheduler.d.ts.map +1 -1
- package/lib/matrixrtc/MembershipManagerActionScheduler.js +4 -1
- package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -1
- package/lib/models/room-retention.d.ts +28 -0
- package/lib/models/room-retention.d.ts.map +1 -0
- package/lib/models/room-retention.js +201 -0
- package/lib/models/room-retention.js.map +1 -0
- package/lib/models/room.d.ts +2 -1
- package/lib/models/room.d.ts.map +1 -1
- package/lib/models/room.js +29 -3
- package/lib/models/room.js.map +1 -1
- package/lib/retentionPolicy.d.ts +33 -0
- package/lib/retentionPolicy.d.ts.map +1 -0
- package/lib/retentionPolicy.js +42 -0
- package/lib/retentionPolicy.js.map +1 -0
- package/lib/rust-crypto/backup.d.ts +7 -2
- package/lib/rust-crypto/backup.d.ts.map +1 -1
- package/lib/rust-crypto/backup.js +13 -4
- package/lib/rust-crypto/backup.js.map +1 -1
- package/lib/serverCapabilities.d.ts +4 -23
- package/lib/serverCapabilities.d.ts.map +1 -1
- package/lib/serverCapabilities.js +8 -61
- package/lib/serverCapabilities.js.map +1 -1
- package/lib/store/index.d.ts +7 -0
- package/lib/store/index.d.ts.map +1 -1
- package/lib/store/index.js.map +1 -1
- package/lib/store/indexeddb-local-backend.d.ts +1 -0
- package/lib/store/indexeddb-local-backend.d.ts.map +1 -1
- package/lib/store/indexeddb-local-backend.js +15 -3
- package/lib/store/indexeddb-local-backend.js.map +1 -1
- package/lib/store/indexeddb-remote-backend.d.ts +3 -1
- package/lib/store/indexeddb-remote-backend.d.ts.map +1 -1
- package/lib/store/indexeddb-remote-backend.js +29 -8
- package/lib/store/indexeddb-remote-backend.js.map +1 -1
- package/lib/store/indexeddb.d.ts +7 -5
- package/lib/store/indexeddb.d.ts.map +1 -1
- package/lib/store/indexeddb.js +20 -10
- package/lib/store/indexeddb.js.map +1 -1
- package/lib/store/memory.d.ts +1 -0
- package/lib/store/memory.d.ts.map +1 -1
- package/lib/store/memory.js +3 -0
- package/lib/store/memory.js.map +1 -1
- package/lib/store/stub.d.ts +1 -0
- package/lib/store/stub.d.ts.map +1 -1
- package/lib/store/stub.js +3 -0
- package/lib/store/stub.js.map +1 -1
- package/lib/sync-accumulator.d.ts +1 -0
- package/lib/sync-accumulator.d.ts.map +1 -1
- package/lib/sync-accumulator.js +4 -0
- package/lib/sync-accumulator.js.map +1 -1
- package/package.json +3 -3
- package/src/@types/event.ts +9 -0
- package/src/@types/retention.ts +16 -0
- package/src/capabilityPoller.ts +102 -0
- package/src/client.ts +18 -4
- package/src/matrix.ts +1 -0
- package/src/matrixrtc/MembershipManager.ts +2 -0
- package/src/matrixrtc/MembershipManagerActionScheduler.ts +4 -1
- package/src/models/room-retention.ts +230 -0
- package/src/models/room.ts +17 -1
- package/src/retentionPolicy.ts +65 -0
- package/src/rust-crypto/backup.ts +15 -4
- package/src/serverCapabilities.ts +8 -67
- package/src/store/index.ts +8 -0
- package/src/store/indexeddb-local-backend.ts +10 -0
- package/src/store/indexeddb-remote-backend.ts +24 -5
- package/src/store/indexeddb.ts +20 -8
- package/src/store/memory.ts +4 -0
- package/src/store/stub.ts +3 -0
- package/src/sync-accumulator.ts +9 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MembershipManagerActionScheduler.d.ts","sourceRoot":"","sources":["../../src/matrixrtc/MembershipManagerActionScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAwB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,gBAAgB;AAChB,MAAM,WAAW,MAAM;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,IAAI,EAAE,oBAAoB,CAAC;CAC9B;AAED,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAClB;IACI,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,GACD;IACI,0DAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB,GACD,WAAW,CAAC;AAElB;;;;;;;;GAQG;AACH,qBAAa,eAAe;IASpB,iFAAiF;IACjF,OAAO,CAAC,qBAAqB;IATjC,OAAO,CAAC,MAAM,CAAS;IACvB;;;OAGG;IACI,OAAO,UAAS;;IAGnB,iFAAiF;IACzE,qBAAqB,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,EACpF,YAAY,CAAC,EAAE,MAAM;IAMzB,OAAO,CAAC,MAAM,CAEZ;IACF,OAAO,CAAC,QAAQ,CAAgB;IAChC,IAAW,OAAO,IAAI,MAAM,EAAE,CAE7B;IAED;;;;;;OAMG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MembershipManagerActionScheduler.d.ts","sourceRoot":"","sources":["../../src/matrixrtc/MembershipManagerActionScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAwB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,gBAAgB;AAChB,MAAM,WAAW,MAAM;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,IAAI,EAAE,oBAAoB,CAAC;CAC9B;AAED,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAClB;IACI,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,GACD;IACI,0DAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB,GACD,WAAW,CAAC;AAElB;;;;;;;;GAQG;AACH,qBAAa,eAAe;IASpB,iFAAiF;IACjF,OAAO,CAAC,qBAAqB;IATjC,OAAO,CAAC,MAAM,CAAS;IACvB;;;OAGG;IACI,OAAO,UAAS;;IAGnB,iFAAiF;IACzE,qBAAqB,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,EACpF,YAAY,CAAC,EAAE,MAAM;IAMzB,OAAO,CAAC,MAAM,CAEZ;IACF,OAAO,CAAC,QAAQ,CAAgB;IAChC,IAAW,OAAO,IAAI,MAAM,EAAE,CAE7B;IAED;;;;;;OAMG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DpC,YAAY,IAAI,IAAI;IAGpB,aAAa,IAAI,IAAI;CAG/B"}
|
|
@@ -79,7 +79,10 @@ export class ActionScheduler {
|
|
|
79
79
|
// `this.wakeup` can also be called and sets the `wakeupUpdate` object while we are in the handler.
|
|
80
80
|
handlerResult = yield _this.membershipLoopHandler(nextAction.type);
|
|
81
81
|
} catch (e) {
|
|
82
|
-
|
|
82
|
+
// Preserve the original error as `cause`.
|
|
83
|
+
throw new Error("The MembershipManager shut down because of the end condition: ".concat(e), {
|
|
84
|
+
cause: e
|
|
85
|
+
});
|
|
83
86
|
}
|
|
84
87
|
}
|
|
85
88
|
// remove the processed action only after we are done processing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MembershipManagerActionScheduler.js","names":["logger","rootLogger","sleep","MembershipActionType","ActionScheduler","constructor","membershipLoopHandler","parentLogger","_defineProperty","update","error","getChild","actions","_actions","startWithJoin","_this","_asyncToGenerator","running","ts","Date","now","type","SendDelayedEvent","_loop","sort","a","b","nextAction","wakeupUpdate","undefined","wakeupPromise","Promise","resolve","wakeup","race","handlerResult","debug","concat","e","Error","splice","actionUpdate","replace","push","insert","length","initiateJoin","_this$wakeup","call","initiateLeave","_this$wakeup2","SendScheduledDelayedLeaveEvent"],"sources":["../../src/matrixrtc/MembershipManagerActionScheduler.ts"],"sourcesContent":["import { type Logger, logger as rootLogger } from \"../logger.ts\";\nimport { type EmptyObject } from \"../matrix.ts\";\nimport { sleep } from \"../utils.ts\";\nimport { MembershipActionType } from \"./MembershipManager.ts\";\n\n/** @internal */\nexport interface Action {\n /**\n * When this action should be executed\n */\n ts: number;\n /**\n * The state of the different loops\n * can also be thought of as the type of the action\n */\n type: MembershipActionType;\n}\n\n/** @internal */\nexport type ActionUpdate =\n | {\n /** Replace all existing scheduled actions with this new array */\n replace: Action[];\n }\n | {\n /** Add these actions to the existing scheduled actions */\n insert: Action[];\n }\n | EmptyObject;\n\n/**\n * This scheduler tracks the state of the current membership participation\n * and runs one central timer that wakes up a handler callback with the correct action + state\n * whenever necessary.\n *\n * It can also be awakened whenever a new action is added which is\n * earlier then the current \"next awake\".\n * @internal\n */\nexport class ActionScheduler {\n private logger: Logger;\n /**\n * This is tracking the state of the scheduler loop.\n * Only used to prevent starting the loop twice.\n */\n public running = false;\n\n public constructor(\n /** This is the callback called for each scheduled action (`this.addAction()`) */\n private membershipLoopHandler: (type: MembershipActionType) => Promise<ActionUpdate>,\n parentLogger?: Logger,\n ) {\n this.logger = (parentLogger ?? rootLogger).getChild(`[NewMembershipActionScheduler]`);\n }\n\n // function for the wakeup mechanism (in case we add an action externally and need to leave the current sleep)\n private wakeup: (update: ActionUpdate) => void = (update: ActionUpdate): void => {\n this.logger.error(\"Cannot call wakeup before calling `startWithJoin()`\");\n };\n private _actions: Action[] = [];\n public get actions(): Action[] {\n return this._actions;\n }\n\n /**\n * This starts the main loop of the membership manager that handles event sending, delayed event sending and delayed event restarting.\n * @param initialActions The initial actions the manager will start with. It should be enough to pass: DelayedLeaveActionType.Initial\n * @returns Promise that resolves once all actions have run and no more are scheduled.\n * @throws This throws an error if one of the actions throws.\n * In most other error cases the manager will try to handle any server errors by itself.\n */\n public async startWithJoin(): Promise<void> {\n if (this.running) {\n this.logger.error(\"Cannot call startWithJoin() on NewMembershipActionScheduler while already running\");\n return;\n }\n this.running = true;\n this._actions = [{ ts: Date.now(), type: MembershipActionType.SendDelayedEvent }];\n try {\n while (this._actions.length > 0) {\n // Sort so next (smallest ts) action is at the beginning\n this._actions.sort((a, b) => a.ts - b.ts);\n const nextAction = this._actions[0];\n let wakeupUpdate: ActionUpdate | undefined = undefined;\n\n // while we await for the next action, wakeup has to resolve the wakeupPromise\n const wakeupPromise = new Promise<void>((resolve) => {\n this.wakeup = (update: ActionUpdate): void => {\n wakeupUpdate = update;\n resolve();\n };\n });\n if (nextAction.ts > Date.now()) await Promise.race([wakeupPromise, sleep(nextAction.ts - Date.now())]);\n\n let handlerResult: ActionUpdate = {};\n if (!wakeupUpdate) {\n this.logger.debug(\n `Current MembershipManager processing: ${nextAction.type}\\nQueue:`,\n this._actions,\n `\\nDate.now: \"${Date.now()}`,\n );\n try {\n // `this.wakeup` can also be called and sets the `wakeupUpdate` object while we are in the handler.\n handlerResult = await this.membershipLoopHandler(nextAction.type as MembershipActionType);\n } catch (e) {\n throw Error(`The MembershipManager shut down because of the end condition: ${e}
|
|
1
|
+
{"version":3,"file":"MembershipManagerActionScheduler.js","names":["logger","rootLogger","sleep","MembershipActionType","ActionScheduler","constructor","membershipLoopHandler","parentLogger","_defineProperty","update","error","getChild","actions","_actions","startWithJoin","_this","_asyncToGenerator","running","ts","Date","now","type","SendDelayedEvent","_loop","sort","a","b","nextAction","wakeupUpdate","undefined","wakeupPromise","Promise","resolve","wakeup","race","handlerResult","debug","concat","e","Error","cause","splice","actionUpdate","replace","push","insert","length","initiateJoin","_this$wakeup","call","initiateLeave","_this$wakeup2","SendScheduledDelayedLeaveEvent"],"sources":["../../src/matrixrtc/MembershipManagerActionScheduler.ts"],"sourcesContent":["import { type Logger, logger as rootLogger } from \"../logger.ts\";\nimport { type EmptyObject } from \"../matrix.ts\";\nimport { sleep } from \"../utils.ts\";\nimport { MembershipActionType } from \"./MembershipManager.ts\";\n\n/** @internal */\nexport interface Action {\n /**\n * When this action should be executed\n */\n ts: number;\n /**\n * The state of the different loops\n * can also be thought of as the type of the action\n */\n type: MembershipActionType;\n}\n\n/** @internal */\nexport type ActionUpdate =\n | {\n /** Replace all existing scheduled actions with this new array */\n replace: Action[];\n }\n | {\n /** Add these actions to the existing scheduled actions */\n insert: Action[];\n }\n | EmptyObject;\n\n/**\n * This scheduler tracks the state of the current membership participation\n * and runs one central timer that wakes up a handler callback with the correct action + state\n * whenever necessary.\n *\n * It can also be awakened whenever a new action is added which is\n * earlier then the current \"next awake\".\n * @internal\n */\nexport class ActionScheduler {\n private logger: Logger;\n /**\n * This is tracking the state of the scheduler loop.\n * Only used to prevent starting the loop twice.\n */\n public running = false;\n\n public constructor(\n /** This is the callback called for each scheduled action (`this.addAction()`) */\n private membershipLoopHandler: (type: MembershipActionType) => Promise<ActionUpdate>,\n parentLogger?: Logger,\n ) {\n this.logger = (parentLogger ?? rootLogger).getChild(`[NewMembershipActionScheduler]`);\n }\n\n // function for the wakeup mechanism (in case we add an action externally and need to leave the current sleep)\n private wakeup: (update: ActionUpdate) => void = (update: ActionUpdate): void => {\n this.logger.error(\"Cannot call wakeup before calling `startWithJoin()`\");\n };\n private _actions: Action[] = [];\n public get actions(): Action[] {\n return this._actions;\n }\n\n /**\n * This starts the main loop of the membership manager that handles event sending, delayed event sending and delayed event restarting.\n * @param initialActions The initial actions the manager will start with. It should be enough to pass: DelayedLeaveActionType.Initial\n * @returns Promise that resolves once all actions have run and no more are scheduled.\n * @throws This throws an error if one of the actions throws.\n * In most other error cases the manager will try to handle any server errors by itself.\n */\n public async startWithJoin(): Promise<void> {\n if (this.running) {\n this.logger.error(\"Cannot call startWithJoin() on NewMembershipActionScheduler while already running\");\n return;\n }\n this.running = true;\n this._actions = [{ ts: Date.now(), type: MembershipActionType.SendDelayedEvent }];\n try {\n while (this._actions.length > 0) {\n // Sort so next (smallest ts) action is at the beginning\n this._actions.sort((a, b) => a.ts - b.ts);\n const nextAction = this._actions[0];\n let wakeupUpdate: ActionUpdate | undefined = undefined;\n\n // while we await for the next action, wakeup has to resolve the wakeupPromise\n const wakeupPromise = new Promise<void>((resolve) => {\n this.wakeup = (update: ActionUpdate): void => {\n wakeupUpdate = update;\n resolve();\n };\n });\n if (nextAction.ts > Date.now()) await Promise.race([wakeupPromise, sleep(nextAction.ts - Date.now())]);\n\n let handlerResult: ActionUpdate = {};\n if (!wakeupUpdate) {\n this.logger.debug(\n `Current MembershipManager processing: ${nextAction.type}\\nQueue:`,\n this._actions,\n `\\nDate.now: \"${Date.now()}`,\n );\n try {\n // `this.wakeup` can also be called and sets the `wakeupUpdate` object while we are in the handler.\n handlerResult = await this.membershipLoopHandler(nextAction.type as MembershipActionType);\n } catch (e) {\n // Preserve the original error as `cause`.\n throw new Error(`The MembershipManager shut down because of the end condition: ${e}`, {\n cause: e,\n });\n }\n }\n // remove the processed action only after we are done processing\n this._actions.splice(0, 1);\n // The wakeupUpdate always wins since that is a direct external update.\n const actionUpdate = wakeupUpdate ?? handlerResult;\n\n if (\"replace\" in actionUpdate) {\n this._actions = actionUpdate.replace;\n } else if (\"insert\" in actionUpdate) {\n this._actions.push(...actionUpdate.insert);\n }\n }\n } finally {\n // Set the rtc session running state since we cannot recover from here and the consumer user of the\n // MatrixRTCSession class needs to manually rejoin.\n this.running = false;\n }\n\n this.logger.debug(\"Leave MembershipManager ActionScheduler loop (no more actions)\");\n }\n\n public initiateJoin(): void {\n this.wakeup?.({ replace: [{ ts: Date.now(), type: MembershipActionType.SendDelayedEvent }] });\n }\n public initiateLeave(): void {\n this.wakeup?.({ replace: [{ ts: Date.now(), type: MembershipActionType.SendScheduledDelayedLeaveEvent }] });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MatrixEvent } from "../models/event.ts";
|
|
2
|
+
import { type Room } from "./room.ts";
|
|
3
|
+
import type { RetentionPolicyService } from "../retentionPolicy.ts";
|
|
4
|
+
import type { IStore } from "../store/index.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Applies https://github.com/matrix-org/matrix-spec-proposals/pull/1763 by checking the current
|
|
7
|
+
* state of the room and applying the *latest* retention policy to all preceeding events.
|
|
8
|
+
* Currently does not:
|
|
9
|
+
* - Apply global server policies (requires Synapse work)
|
|
10
|
+
* - React at all to `min_retention` configs.
|
|
11
|
+
* - Loop
|
|
12
|
+
*/
|
|
13
|
+
export declare class RoomRetentionPolicy {
|
|
14
|
+
private readonly room;
|
|
15
|
+
private readonly retentionService;
|
|
16
|
+
private readonly store;
|
|
17
|
+
private maxRetention;
|
|
18
|
+
private retentionTimeout?;
|
|
19
|
+
private readonly logger;
|
|
20
|
+
constructor(room: Room, retentionService: RetentionPolicyService, store: IStore);
|
|
21
|
+
shouldEventBeRetained(ev: MatrixEvent): boolean;
|
|
22
|
+
private readonly handleRetentionUpdate;
|
|
23
|
+
private readonly recalculateRetention;
|
|
24
|
+
private readonly timelineUpdated;
|
|
25
|
+
private readonly scheduleTimelineCheck;
|
|
26
|
+
private processTimeline;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=room-retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-retention.d.ts","sourceRoot":"","sources":["../../src/models/room-retention.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAOxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAP1B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,gBAAgB,CAAC,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAGX,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,sBAAsB,EACxC,KAAK,EAAE,MAAM;IA0B3B,qBAAqB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO;IAQtD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAqBpC;IAEF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CA6DnC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAQpC;IAEF,OAAO,CAAC,eAAe;CAoD1B"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
+
/*
|
|
5
|
+
Copyright 2026 Element Creations Ltd.
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { MatrixEvent } from "../models/event.js";
|
|
21
|
+
import { RoomEvent } from "./room.js";
|
|
22
|
+
import { RoomStateEvent } from "./room-state.js";
|
|
23
|
+
import { logger as rootLogger } from "../logger.js";
|
|
24
|
+
import { EventType } from "../@types/event.js";
|
|
25
|
+
import { ROOM_RETENTION_TYPE } from "../@types/retention.js";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Applies https://github.com/matrix-org/matrix-spec-proposals/pull/1763 by checking the current
|
|
29
|
+
* state of the room and applying the *latest* retention policy to all preceeding events.
|
|
30
|
+
* Currently does not:
|
|
31
|
+
* - Apply global server policies (requires Synapse work)
|
|
32
|
+
* - React at all to `min_retention` configs.
|
|
33
|
+
* - Loop
|
|
34
|
+
*/
|
|
35
|
+
export class RoomRetentionPolicy {
|
|
36
|
+
constructor(room, retentionService, store) {
|
|
37
|
+
var _this = this;
|
|
38
|
+
this.room = room;
|
|
39
|
+
this.retentionService = retentionService;
|
|
40
|
+
this.store = store;
|
|
41
|
+
// minRetention is not implemented.
|
|
42
|
+
_defineProperty(this, "maxRetention", null);
|
|
43
|
+
_defineProperty(this, "retentionTimeout", void 0);
|
|
44
|
+
_defineProperty(this, "logger", void 0);
|
|
45
|
+
_defineProperty(this, "handleRetentionUpdate", /*#__PURE__*/_asyncToGenerator(function* () {
|
|
46
|
+
// First store if we currently have a retention period.
|
|
47
|
+
var hadRetentionPeriod = _this.maxRetention !== null;
|
|
48
|
+
try {
|
|
49
|
+
yield _this.recalculateRetention(_this.room.currentState);
|
|
50
|
+
} catch (err) {
|
|
51
|
+
_this.logger.warn("Failed to recalculate retention policy", err);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Bind/unbind the Timeline event handler based on whether we should be running retention.
|
|
56
|
+
if (hadRetentionPeriod !== (_this.maxRetention !== null)) {
|
|
57
|
+
_this.logger.info("retention recalculated to be", _this.maxRetention);
|
|
58
|
+
// We've changed
|
|
59
|
+
if (_this.maxRetention) {
|
|
60
|
+
_this.room.on(RoomEvent.Timeline, _this.timelineUpdated);
|
|
61
|
+
} else {
|
|
62
|
+
_this.room.off(RoomEvent.Timeline, _this.timelineUpdated);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}));
|
|
66
|
+
_defineProperty(this, "recalculateRetention", /*#__PURE__*/function () {
|
|
67
|
+
var _ref2 = _asyncToGenerator(function* (roomState) {
|
|
68
|
+
var _serverPolicy$policie, _unstableEvent$getCon, _ref3, _serverPolicy$policie2, _serverPolicy$limits2;
|
|
69
|
+
var unstableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.name).find(e => e.getStateKey() === "");
|
|
70
|
+
var stableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.altName).find(e => e.getStateKey() === "");
|
|
71
|
+
var serverPolicy = _this.retentionService.getCached();
|
|
72
|
+
var serverRoomPolicy = serverPolicy === null || serverPolicy === void 0 || (_serverPolicy$policie = serverPolicy.policies) === null || _serverPolicy$policie === void 0 ? void 0 : _serverPolicy$policie[_this.room.roomId];
|
|
73
|
+
var roomStatePolicy = (_unstableEvent$getCon = unstableEvent === null || unstableEvent === void 0 ? void 0 : unstableEvent.getContent()) !== null && _unstableEvent$getCon !== void 0 ? _unstableEvent$getCon : stableEvent === null || stableEvent === void 0 ? void 0 : stableEvent.getContent();
|
|
74
|
+
var content = // * if the homeserver defines a specific retention policy for this room, then use this policy as the effective retention policy of the room.
|
|
75
|
+
(_ref3 = serverRoomPolicy !== null && serverRoomPolicy !== void 0 ? serverRoomPolicy :
|
|
76
|
+
// * otherwise, if the state of the room includes a `m.room.retention` event with an empty state key:
|
|
77
|
+
roomStatePolicy) !== null && _ref3 !== void 0 ? _ref3 : // * otherwise, if the state of the room does not include a m.room.retention event with an empty state key:
|
|
78
|
+
serverPolicy === null || serverPolicy === void 0 || (_serverPolicy$policie2 = serverPolicy.policies) === null || _serverPolicy$policie2 === void 0 ? void 0 : _serverPolicy$policie2["*"];
|
|
79
|
+
if (!content) {
|
|
80
|
+
// * otherwise, don't apply a retention policy in this room.
|
|
81
|
+
_this.maxRetention = null;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
var validatePolicy = !serverRoomPolicy && roomStatePolicy;
|
|
85
|
+
|
|
86
|
+
// Parse it
|
|
87
|
+
var maxLifetime = content.max_lifetime;
|
|
88
|
+
if (!maxLifetime && validatePolicy) {
|
|
89
|
+
var _serverPolicy$limits;
|
|
90
|
+
// if there is no value specified in the room's state, use the limit's min value for the effective retention policy of the room (which can be null or absent).
|
|
91
|
+
maxLifetime = serverPolicy === null || serverPolicy === void 0 || (_serverPolicy$limits = serverPolicy.limits) === null || _serverPolicy$limits === void 0 || (_serverPolicy$limits = _serverPolicy$limits.max_lifetime) === null || _serverPolicy$limits === void 0 ? void 0 : _serverPolicy$limits.min;
|
|
92
|
+
if (!maxLifetime) {
|
|
93
|
+
_this.maxRetention = null;
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (typeof maxLifetime !== "number") {
|
|
98
|
+
throw Error("max_lifetime must be a number, got \"".concat(maxLifetime, "\""));
|
|
99
|
+
}
|
|
100
|
+
if (maxLifetime < 0 || !Number.isInteger(maxLifetime)) {
|
|
101
|
+
throw Error("max_lifetime must be >= 0, got ".concat(maxLifetime));
|
|
102
|
+
}
|
|
103
|
+
_this.maxRetention = maxLifetime;
|
|
104
|
+
if (validatePolicy && serverPolicy !== null && serverPolicy !== void 0 && (_serverPolicy$limits2 = serverPolicy.limits) !== null && _serverPolicy$limits2 !== void 0 && _serverPolicy$limits2.max_lifetime) {
|
|
105
|
+
var _serverPolicy$limits$, _serverPolicy$limits$2;
|
|
106
|
+
// We're using room state so we need to validate this policy matches the server.
|
|
107
|
+
/**
|
|
108
|
+
if the value specified in the room's state complies with the limit, use this value for the effective retention policy of the room.
|
|
109
|
+
if the value specified in the room's state is lower than the limit's min value, use the min value for the effective retention policy of the room.
|
|
110
|
+
if the value specified in the room's state is greater than the limit's max value, use the max value for the effective retention policy of the room.
|
|
111
|
+
*/
|
|
112
|
+
_this.maxRetention = Math.max(_this.maxRetention, (_serverPolicy$limits$ = serverPolicy.limits.max_lifetime.min) !== null && _serverPolicy$limits$ !== void 0 ? _serverPolicy$limits$ : 0);
|
|
113
|
+
_this.maxRetention = Math.min(_this.maxRetention, (_serverPolicy$limits$2 = serverPolicy.limits.max_lifetime.max) !== null && _serverPolicy$limits$2 !== void 0 ? _serverPolicy$limits$2 : Number.MAX_SAFE_INTEGER);
|
|
114
|
+
}
|
|
115
|
+
_this.processTimeline();
|
|
116
|
+
});
|
|
117
|
+
return function (_x) {
|
|
118
|
+
return _ref2.apply(this, arguments);
|
|
119
|
+
};
|
|
120
|
+
}());
|
|
121
|
+
_defineProperty(this, "timelineUpdated", () => {
|
|
122
|
+
this.logger.info("timelineUpdated");
|
|
123
|
+
this.scheduleTimelineCheck(200);
|
|
124
|
+
});
|
|
125
|
+
_defineProperty(this, "scheduleTimelineCheck", nextTs => {
|
|
126
|
+
if (this.retentionTimeout) {
|
|
127
|
+
clearTimeout(this.retentionTimeout);
|
|
128
|
+
}
|
|
129
|
+
this.retentionTimeout = setTimeout(() => {
|
|
130
|
+
this.processTimeline();
|
|
131
|
+
this.retentionTimeout = undefined;
|
|
132
|
+
}, nextTs);
|
|
133
|
+
});
|
|
134
|
+
this.logger = rootLogger.getChild("RetentionPolicy ".concat(room.roomId));
|
|
135
|
+
|
|
136
|
+
// Recalculate on room state update.
|
|
137
|
+
room.on(RoomStateEvent.Events, event => {
|
|
138
|
+
if (event.getStateKey() !== "" || event.getType() !== "org.matrix.msc1763.retention" && event.getType() !== "m.room.retention") {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
void this.handleRetentionUpdate();
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Recalculate our retention whenever the global policy changes.
|
|
145
|
+
this.retentionService.on("update", () => {
|
|
146
|
+
this.logger.info("Got global retention policy update!");
|
|
147
|
+
void this.handleRetentionUpdate();
|
|
148
|
+
});
|
|
149
|
+
// Do an initial check on construction.
|
|
150
|
+
void this.handleRetentionUpdate();
|
|
151
|
+
|
|
152
|
+
// Only bind RoomEvent.Timeline once we know we have a retention policy.
|
|
153
|
+
}
|
|
154
|
+
shouldEventBeRetained(ev) {
|
|
155
|
+
if (!this.maxRetention) {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
var expireBefore = Date.now() - this.maxRetention;
|
|
159
|
+
return ev.getTs() > expireBefore;
|
|
160
|
+
}
|
|
161
|
+
processTimeline() {
|
|
162
|
+
if (!this.maxRetention) {
|
|
163
|
+
return; // No policy, skip.
|
|
164
|
+
}
|
|
165
|
+
this.logger.info("Running processTimeline");
|
|
166
|
+
var expireBefore = Date.now() - this.maxRetention;
|
|
167
|
+
var events = this.room.getLiveTimeline().getEvents().filter(ev => ev.getStateKey() === undefined && !ev.isRedacted() && ev.getType() !== "m.room.redaction");
|
|
168
|
+
var expiredEvents = events.filter(ev => ev.getTs() < expireBefore);
|
|
169
|
+
var _events$filter$sort = events.filter(ev => ev.getTs() >= expireBefore).sort((a, b) => a.getTs() - b.getTs()),
|
|
170
|
+
_events$filter$sort2 = _slicedToArray(_events$filter$sort, 1),
|
|
171
|
+
earliestExpiringEvent = _events$filter$sort2[0];
|
|
172
|
+
if (earliestExpiringEvent) {
|
|
173
|
+
var nextTs = earliestExpiringEvent.getTs() + this.maxRetention - Date.now();
|
|
174
|
+
this.logger.info("Next expiry scheduled for ".concat(nextTs));
|
|
175
|
+
this.scheduleTimelineCheck(nextTs);
|
|
176
|
+
}
|
|
177
|
+
if (expiredEvents.length === 0) {
|
|
178
|
+
this.logger.info("Found no expired events");
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
this.logger.info("Found ".concat(expiredEvents.length, " expired events"));
|
|
182
|
+
for (var event of expiredEvents) {
|
|
183
|
+
this.room.tryApplyRedaction(new MatrixEvent({
|
|
184
|
+
type: EventType.RoomRedaction,
|
|
185
|
+
sender: event.getSender(),
|
|
186
|
+
event_id: "$synthetic_redaction",
|
|
187
|
+
room_id: this.room.roomId,
|
|
188
|
+
redacts: event.getId(),
|
|
189
|
+
content: {
|
|
190
|
+
reason: "Retention policy"
|
|
191
|
+
},
|
|
192
|
+
origin_server_ts: Date.now(),
|
|
193
|
+
unsigned: {}
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
void this.store.removeEventsFromRoom(this.room.roomId, expiredEvents.map(e => e.getId())).catch(ex => {
|
|
197
|
+
this.logger.warn("Failed to remove events from store", ex);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=room-retention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-retention.js","names":["MatrixEvent","RoomEvent","RoomStateEvent","logger","rootLogger","EventType","ROOM_RETENTION_TYPE","RoomRetentionPolicy","constructor","room","retentionService","store","_this","_defineProperty","_asyncToGenerator","hadRetentionPeriod","maxRetention","recalculateRetention","currentState","err","warn","info","on","Timeline","timelineUpdated","off","_ref2","roomState","_serverPolicy$policie","_unstableEvent$getCon","_ref3","_serverPolicy$policie2","_serverPolicy$limits2","unstableEvent","getStateEvents","name","find","e","getStateKey","stableEvent","altName","serverPolicy","getCached","serverRoomPolicy","policies","roomId","roomStatePolicy","getContent","content","validatePolicy","maxLifetime","max_lifetime","_serverPolicy$limits","limits","min","Error","concat","Number","isInteger","_serverPolicy$limits$","_serverPolicy$limits$2","Math","max","MAX_SAFE_INTEGER","processTimeline","_x","apply","arguments","scheduleTimelineCheck","nextTs","retentionTimeout","clearTimeout","setTimeout","undefined","getChild","Events","event","getType","handleRetentionUpdate","shouldEventBeRetained","ev","expireBefore","Date","now","getTs","events","getLiveTimeline","getEvents","filter","isRedacted","expiredEvents","_events$filter$sort","sort","a","b","_events$filter$sort2","_slicedToArray","earliestExpiringEvent","length","tryApplyRedaction","type","RoomRedaction","sender","getSender","event_id","room_id","redacts","getId","reason","origin_server_ts","unsigned","removeEventsFromRoom","map","catch","ex"],"sources":["../../src/models/room-retention.ts"],"sourcesContent":["/*\nCopyright 2026 Element Creations Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { MatrixEvent } from \"../models/event.ts\";\nimport { RoomEvent, type Room } from \"./room.ts\";\nimport { RoomStateEvent, type RoomState } from \"./room-state.ts\";\nimport { type Logger, logger as rootLogger } from \"../logger.ts\";\nimport { EventType } from \"../@types/event.ts\";\nimport type { RetentionPolicyService } from \"../retentionPolicy.ts\";\nimport type { IStore } from \"../store/index.ts\";\nimport { ROOM_RETENTION_TYPE, type RoomRetentionContent } from \"../@types/retention.ts\";\n\n/**\n * Applies https://github.com/matrix-org/matrix-spec-proposals/pull/1763 by checking the current\n * state of the room and applying the *latest* retention policy to all preceeding events.\n * Currently does not:\n * - Apply global server policies (requires Synapse work)\n * - React at all to `min_retention` configs.\n * - Loop\n */\nexport class RoomRetentionPolicy {\n // minRetention is not implemented.\n private maxRetention: number | null = null;\n private retentionTimeout?: ReturnType<typeof setTimeout>;\n private readonly logger: Logger;\n\n public constructor(\n private readonly room: Room,\n private readonly retentionService: RetentionPolicyService,\n private readonly store: IStore,\n ) {\n this.logger = rootLogger.getChild(`RetentionPolicy ${room.roomId}`);\n\n // Recalculate on room state update.\n room.on(RoomStateEvent.Events, (event) => {\n if (\n event.getStateKey() !== \"\" ||\n (event.getType() !== \"org.matrix.msc1763.retention\" && event.getType() !== \"m.room.retention\")\n ) {\n return;\n }\n void this.handleRetentionUpdate();\n });\n\n // Recalculate our retention whenever the global policy changes.\n this.retentionService.on(\"update\", () => {\n this.logger.info(\"Got global retention policy update!\");\n void this.handleRetentionUpdate();\n });\n // Do an initial check on construction.\n void this.handleRetentionUpdate();\n\n // Only bind RoomEvent.Timeline once we know we have a retention policy.\n }\n\n public shouldEventBeRetained(ev: MatrixEvent): boolean {\n if (!this.maxRetention) {\n return true;\n }\n const expireBefore = Date.now() - this.maxRetention;\n return ev.getTs() > expireBefore;\n }\n\n private readonly handleRetentionUpdate = async (): Promise<void> => {\n // First store if we currently have a retention period.\n const hadRetentionPeriod = this.maxRetention !== null;\n\n try {\n await this.recalculateRetention(this.room.currentState);\n } catch (err) {\n this.logger.warn(\"Failed to recalculate retention policy\", err);\n return;\n }\n\n // Bind/unbind the Timeline event handler based on whether we should be running retention.\n if (hadRetentionPeriod !== (this.maxRetention !== null)) {\n this.logger.info(\"retention recalculated to be\", this.maxRetention);\n // We've changed\n if (this.maxRetention) {\n this.room.on(RoomEvent.Timeline, this.timelineUpdated);\n } else {\n this.room.off(RoomEvent.Timeline, this.timelineUpdated);\n }\n }\n };\n\n private readonly recalculateRetention = async (roomState: RoomState): Promise<void> => {\n const unstableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.name).find((e) => e.getStateKey() === \"\");\n const stableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.altName).find((e) => e.getStateKey() === \"\");\n\n const serverPolicy = this.retentionService.getCached();\n\n const serverRoomPolicy = serverPolicy?.policies?.[this.room.roomId];\n const roomStatePolicy =\n unstableEvent?.getContent<RoomRetentionContent>() ?? stableEvent?.getContent<RoomRetentionContent>();\n\n const content =\n // * if the homeserver defines a specific retention policy for this room, then use this policy as the effective retention policy of the room.\n serverRoomPolicy ??\n // * otherwise, if the state of the room includes a `m.room.retention` event with an empty state key:\n roomStatePolicy ??\n // * otherwise, if the state of the room does not include a m.room.retention event with an empty state key:\n serverPolicy?.policies?.[\"*\"];\n\n if (!content) {\n // * otherwise, don't apply a retention policy in this room.\n this.maxRetention = null;\n return;\n }\n\n const validatePolicy = !serverRoomPolicy && roomStatePolicy;\n\n // Parse it\n let { max_lifetime: maxLifetime } = content;\n\n if (!maxLifetime && validatePolicy) {\n // if there is no value specified in the room's state, use the limit's min value for the effective retention policy of the room (which can be null or absent).\n maxLifetime = serverPolicy?.limits?.max_lifetime?.min;\n if (!maxLifetime) {\n this.maxRetention = null;\n return;\n }\n }\n\n if (typeof maxLifetime !== \"number\") {\n throw Error(`max_lifetime must be a number, got \"${maxLifetime}\"`);\n }\n if (maxLifetime < 0 || !Number.isInteger(maxLifetime)) {\n throw Error(`max_lifetime must be >= 0, got ${maxLifetime}`);\n }\n this.maxRetention = maxLifetime;\n\n if (validatePolicy && serverPolicy?.limits?.max_lifetime) {\n // We're using room state so we need to validate this policy matches the server.\n /**\n if the value specified in the room's state complies with the limit, use this value for the effective retention policy of the room.\n if the value specified in the room's state is lower than the limit's min value, use the min value for the effective retention policy of the room.\n if the value specified in the room's state is greater than the limit's max value, use the max value for the effective retention policy of the room.\n */\n this.maxRetention = Math.max(this.maxRetention, serverPolicy.limits.max_lifetime.min ?? 0);\n this.maxRetention = Math.min(\n this.maxRetention,\n serverPolicy.limits.max_lifetime.max ?? Number.MAX_SAFE_INTEGER,\n );\n }\n\n this.processTimeline();\n };\n\n private readonly timelineUpdated = (): void => {\n this.logger.info(\"timelineUpdated\");\n this.scheduleTimelineCheck(200);\n };\n\n private readonly scheduleTimelineCheck = (nextTs: number): void => {\n if (this.retentionTimeout) {\n clearTimeout(this.retentionTimeout);\n }\n this.retentionTimeout = setTimeout(() => {\n this.processTimeline();\n this.retentionTimeout = undefined;\n }, nextTs);\n };\n\n private processTimeline(): void {\n if (!this.maxRetention) {\n return; // No policy, skip.\n }\n this.logger.info(`Running processTimeline`);\n const expireBefore = Date.now() - this.maxRetention;\n const events = this.room\n .getLiveTimeline()\n .getEvents()\n .filter((ev) => ev.getStateKey() === undefined && !ev.isRedacted() && ev.getType() !== \"m.room.redaction\");\n\n const expiredEvents = events.filter((ev) => ev.getTs() < expireBefore);\n const [earliestExpiringEvent] = events\n .filter((ev) => ev.getTs() >= expireBefore)\n .sort((a, b) => a.getTs() - b.getTs());\n\n if (earliestExpiringEvent) {\n const nextTs = earliestExpiringEvent.getTs() + this.maxRetention - Date.now();\n this.logger.info(`Next expiry scheduled for ${nextTs}`);\n this.scheduleTimelineCheck(nextTs);\n }\n\n if (expiredEvents.length === 0) {\n this.logger.info(\"Found no expired events\");\n return;\n }\n this.logger.info(`Found ${expiredEvents.length} expired events`);\n for (const event of expiredEvents) {\n this.room.tryApplyRedaction(\n new MatrixEvent({\n type: EventType.RoomRedaction,\n sender: event.getSender(),\n event_id: \"$synthetic_redaction\",\n room_id: this.room.roomId,\n redacts: event.getId(),\n content: {\n reason: \"Retention policy\",\n },\n origin_server_ts: Date.now(),\n unsigned: {},\n }),\n );\n }\n void this.store\n .removeEventsFromRoom(\n this.room.roomId,\n expiredEvents.map((e) => e.getId()!),\n )\n .catch((ex) => {\n this.logger.warn(`Failed to remove events from store`, ex);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/models/room.d.ts
CHANGED
|
@@ -314,6 +314,7 @@ export declare class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandle
|
|
|
314
314
|
* Stores and tracks sticky events
|
|
315
315
|
*/
|
|
316
316
|
private stickyEvents;
|
|
317
|
+
private readonly retention?;
|
|
317
318
|
/**
|
|
318
319
|
* Construct a new Room.
|
|
319
320
|
*
|
|
@@ -913,7 +914,7 @@ export declare class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandle
|
|
|
913
914
|
* @private
|
|
914
915
|
*/
|
|
915
916
|
private applyEventAsRedaction;
|
|
916
|
-
|
|
917
|
+
readonly tryApplyRedaction: (event: MatrixEvent) => void;
|
|
917
918
|
private processLiveEvent;
|
|
918
919
|
/**
|
|
919
920
|
* Add an event to the end of this room's live timelines. Will fire
|
package/lib/models/room.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/models/room.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/models/room.ts"],"names":[],"mappings":"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"}
|
package/lib/models/room.js
CHANGED
|
@@ -46,6 +46,7 @@ import { compareEventOrdering } from "./compare-event-ordering.js";
|
|
|
46
46
|
import { KnownMembership } from "../@types/membership.js";
|
|
47
47
|
import { RoomVersionStability } from "../serverCapabilities.js";
|
|
48
48
|
import { RoomStickyEventsStore, RoomStickyEventsEvent } from "./room-sticky-events.js";
|
|
49
|
+
import { RoomRetentionPolicy } from "./room-retention.js";
|
|
49
50
|
|
|
50
51
|
// These constants are used as sane defaults when the homeserver doesn't support
|
|
51
52
|
// the m.room_versions capability. In practice, KNOWN_SAFE_ROOM_VERSION should be
|
|
@@ -119,7 +120,7 @@ export class Room extends ReadReceipt {
|
|
|
119
120
|
* @param opts - Configuration options
|
|
120
121
|
*/
|
|
121
122
|
constructor(roomId, client, myUserId) {
|
|
122
|
-
var _this;
|
|
123
|
+
var _this, _this$client;
|
|
123
124
|
var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
124
125
|
// In some cases, we add listeners for every displayed Matrix event, so it's
|
|
125
126
|
// common to have quite a few more than the default limit.
|
|
@@ -243,6 +244,7 @@ export class Room extends ReadReceipt {
|
|
|
243
244
|
* Stores and tracks sticky events
|
|
244
245
|
*/
|
|
245
246
|
_defineProperty(this, "stickyEvents", new RoomStickyEventsStore());
|
|
247
|
+
_defineProperty(this, "retention", void 0);
|
|
246
248
|
_defineProperty(this, "threadTimelineSetsPromise", null);
|
|
247
249
|
_defineProperty(this, "threadsReady", false);
|
|
248
250
|
_defineProperty(this, "updateThreadRootEvents", (thread, toStartOfTimeline, recreateEvent) => {
|
|
@@ -372,6 +374,9 @@ export class Room extends ReadReceipt {
|
|
|
372
374
|
} else {
|
|
373
375
|
this.membersPromise = undefined;
|
|
374
376
|
}
|
|
377
|
+
if ((_this$client = this.client) !== null && _this$client !== void 0 && _this$client._unstable_shouldApplyMessageRetention) {
|
|
378
|
+
this.retention = new RoomRetentionPolicy(this, client.retentionPolicyService, client.store);
|
|
379
|
+
}
|
|
375
380
|
}
|
|
376
381
|
createThreadsTimelineSets() {
|
|
377
382
|
var _this2 = this;
|
|
@@ -1603,6 +1608,11 @@ export class Room extends ReadReceipt {
|
|
|
1603
1608
|
* Fires {@link RoomEvent.Timeline}
|
|
1604
1609
|
*/
|
|
1605
1610
|
addEventsToTimeline(events, toStartOfTimeline, addToState, timeline, paginationToken) {
|
|
1611
|
+
// ALWAYS filter out any events that are past retention
|
|
1612
|
+
events = events.filter(e => {
|
|
1613
|
+
var _this$retention$shoul, _this$retention;
|
|
1614
|
+
return (_this$retention$shoul = (_this$retention = this.retention) === null || _this$retention === void 0 ? void 0 : _this$retention.shouldEventBeRetained(e)) !== null && _this$retention$shoul !== void 0 ? _this$retention$shoul : true;
|
|
1615
|
+
});
|
|
1606
1616
|
timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, addToState, timeline, paginationToken);
|
|
1607
1617
|
}
|
|
1608
1618
|
|
|
@@ -2086,8 +2096,8 @@ export class Room extends ReadReceipt {
|
|
|
2086
2096
|
* This will change if MSC3389 is merged.
|
|
2087
2097
|
*/
|
|
2088
2098
|
eventShouldLiveIn(event, events, roots) {
|
|
2089
|
-
var _this$
|
|
2090
|
-
if (!((_this$
|
|
2099
|
+
var _this$client2;
|
|
2100
|
+
if (!((_this$client2 = this.client) !== null && _this$client2 !== void 0 && _this$client2.supportsThreads())) {
|
|
2091
2101
|
return {
|
|
2092
2102
|
shouldLiveInRoom: true,
|
|
2093
2103
|
shouldLiveInThread: false
|
|
@@ -2173,6 +2183,11 @@ export class Room extends ReadReceipt {
|
|
|
2173
2183
|
* Adds events to a thread's timeline. Will fire "Thread.update"
|
|
2174
2184
|
*/
|
|
2175
2185
|
processThreadedEvents(events, toStartOfTimeline) {
|
|
2186
|
+
// ALWAYS filter out any events that are past retention
|
|
2187
|
+
events = events.filter(e => {
|
|
2188
|
+
var _this$retention$shoul2, _this$retention2;
|
|
2189
|
+
return (_this$retention$shoul2 = (_this$retention2 = this.retention) === null || _this$retention2 === void 0 ? void 0 : _this$retention2.shouldEventBeRetained(e)) !== null && _this$retention$shoul2 !== void 0 ? _this$retention$shoul2 : true;
|
|
2190
|
+
});
|
|
2176
2191
|
events.forEach(this.tryApplyRedaction);
|
|
2177
2192
|
var eventsByThread = {};
|
|
2178
2193
|
for (var event of events) {
|
|
@@ -2662,6 +2677,12 @@ export class Room extends ReadReceipt {
|
|
|
2662
2677
|
throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");
|
|
2663
2678
|
}
|
|
2664
2679
|
|
|
2680
|
+
// ALWAYS filter out any events that are past retention
|
|
2681
|
+
events = events.filter(e => {
|
|
2682
|
+
var _this15$retention$sho, _this15$retention;
|
|
2683
|
+
return (_this15$retention$sho = (_this15$retention = _this15.retention) === null || _this15$retention === void 0 ? void 0 : _this15$retention.shouldEventBeRetained(e)) !== null && _this15$retention$sho !== void 0 ? _this15$retention$sho : true;
|
|
2684
|
+
});
|
|
2685
|
+
|
|
2665
2686
|
// sanity check that the live timeline is still live
|
|
2666
2687
|
_this15.assertTimelineSetsAreLive();
|
|
2667
2688
|
var threadRoots = _this15.findThreadRoots(events);
|
|
@@ -3021,6 +3042,11 @@ export class Room extends ReadReceipt {
|
|
|
3021
3042
|
*/
|
|
3022
3043
|
// eslint-disable-next-line
|
|
3023
3044
|
_unstable_addStickyEvents(events) {
|
|
3045
|
+
// ALWAYS filter out any events that are past retention
|
|
3046
|
+
events = events.filter(e => {
|
|
3047
|
+
var _this$retention$shoul3, _this$retention3;
|
|
3048
|
+
return (_this$retention$shoul3 = (_this$retention3 = this.retention) === null || _this$retention3 === void 0 ? void 0 : _this$retention3.shouldEventBeRetained(e)) !== null && _this$retention$shoul3 !== void 0 ? _this$retention$shoul3 : true;
|
|
3049
|
+
});
|
|
3024
3050
|
return this.stickyEvents.addStickyEvents(events);
|
|
3025
3051
|
}
|
|
3026
3052
|
|