@may-db/core 0.1.0 → 0.1.2

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.
Files changed (100) hide show
  1. package/README.md +210 -0
  2. package/dist/IndexRuntime.d.ts +60 -0
  3. package/dist/IndexRuntime.d.ts.map +1 -0
  4. package/dist/IndexRuntime.js +340 -0
  5. package/dist/IndexRuntime.js.map +1 -0
  6. package/dist/MayDb.d.ts +45 -9
  7. package/dist/MayDb.d.ts.map +1 -1
  8. package/dist/MayDb.js +251 -85
  9. package/dist/MayDb.js.map +1 -1
  10. package/dist/Room.d.ts +40 -57
  11. package/dist/Room.d.ts.map +1 -1
  12. package/dist/Room.js +212 -232
  13. package/dist/Room.js.map +1 -1
  14. package/dist/RuntimeIndexHandle.d.ts +29 -0
  15. package/dist/RuntimeIndexHandle.d.ts.map +1 -0
  16. package/dist/RuntimeIndexHandle.js +48 -0
  17. package/dist/RuntimeIndexHandle.js.map +1 -0
  18. package/dist/authStorage.d.ts +7 -7
  19. package/dist/authStorage.d.ts.map +1 -1
  20. package/dist/authStorage.js +8 -8
  21. package/dist/authStorage.js.map +1 -1
  22. package/dist/errors.d.ts +12 -0
  23. package/dist/errors.d.ts.map +1 -0
  24. package/dist/errors.js +15 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/index.d.ts +4 -4
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -3
  29. package/dist/index.js.map +1 -1
  30. package/dist/indexing/collaborativeSync.d.ts +25 -0
  31. package/dist/indexing/collaborativeSync.d.ts.map +1 -0
  32. package/dist/indexing/collaborativeSync.js +56 -0
  33. package/dist/indexing/collaborativeSync.js.map +1 -0
  34. package/dist/indexing/descriptor.d.ts +6 -0
  35. package/dist/indexing/descriptor.d.ts.map +1 -0
  36. package/dist/indexing/descriptor.js +2 -0
  37. package/dist/indexing/descriptor.js.map +1 -0
  38. package/dist/indexing/errors.d.ts +9 -0
  39. package/dist/indexing/errors.d.ts.map +1 -0
  40. package/dist/indexing/errors.js +11 -0
  41. package/dist/indexing/errors.js.map +1 -0
  42. package/dist/indexing/handle.d.ts +29 -0
  43. package/dist/indexing/handle.d.ts.map +1 -0
  44. package/dist/indexing/handle.js +48 -0
  45. package/dist/indexing/handle.js.map +1 -0
  46. package/dist/indexing/indexRoomStore.d.ts +18 -0
  47. package/dist/indexing/indexRoomStore.d.ts.map +1 -0
  48. package/dist/indexing/indexRoomStore.js +71 -0
  49. package/dist/indexing/indexRoomStore.js.map +1 -0
  50. package/dist/indexing/roomRegistry.d.ts +26 -0
  51. package/dist/indexing/roomRegistry.d.ts.map +1 -0
  52. package/dist/indexing/roomRegistry.js +125 -0
  53. package/dist/indexing/roomRegistry.js.map +1 -0
  54. package/dist/indexing/rows.d.ts +8 -0
  55. package/dist/indexing/rows.d.ts.map +1 -0
  56. package/dist/indexing/rows.js +86 -0
  57. package/dist/indexing/rows.js.map +1 -0
  58. package/dist/indexing/runtime.d.ts +61 -0
  59. package/dist/indexing/runtime.d.ts.map +1 -0
  60. package/dist/indexing/runtime.js +378 -0
  61. package/dist/indexing/runtime.js.map +1 -0
  62. package/dist/indexing.d.ts +93 -0
  63. package/dist/indexing.d.ts.map +1 -0
  64. package/dist/indexing.js +394 -0
  65. package/dist/indexing.js.map +1 -0
  66. package/dist/indexingErrors.d.ts +9 -0
  67. package/dist/indexingErrors.d.ts.map +1 -0
  68. package/dist/indexingErrors.js +11 -0
  69. package/dist/indexingErrors.js.map +1 -0
  70. package/dist/indexingRoomStore.d.ts +26 -0
  71. package/dist/indexingRoomStore.d.ts.map +1 -0
  72. package/dist/indexingRoomStore.js +125 -0
  73. package/dist/indexingRoomStore.js.map +1 -0
  74. package/dist/indexingRows.d.ts +8 -0
  75. package/dist/indexingRows.d.ts.map +1 -0
  76. package/dist/indexingRows.js +114 -0
  77. package/dist/indexingRows.js.map +1 -0
  78. package/dist/indexingTypes.d.ts +9 -0
  79. package/dist/indexingTypes.d.ts.map +1 -0
  80. package/dist/indexingTypes.js +2 -0
  81. package/dist/indexingTypes.js.map +1 -0
  82. package/dist/loginFlow.d.ts +10 -3
  83. package/dist/loginFlow.d.ts.map +1 -1
  84. package/dist/loginFlow.js +19 -14
  85. package/dist/loginFlow.js.map +1 -1
  86. package/dist/matrix-crdt-shim.d.ts +43 -0
  87. package/dist/matrix-crdt-shim.d.ts.map +1 -0
  88. package/dist/matrix-crdt-shim.js +2 -0
  89. package/dist/matrix-crdt-shim.js.map +1 -0
  90. package/dist/roomMetadata.d.ts +3 -0
  91. package/dist/roomMetadata.d.ts.map +1 -0
  92. package/dist/roomMetadata.js +3 -0
  93. package/dist/roomMetadata.js.map +1 -0
  94. package/dist/singletonRoom.d.ts.map +1 -1
  95. package/dist/singletonRoom.js +5 -36
  96. package/dist/singletonRoom.js.map +1 -1
  97. package/dist/types.d.ts +63 -13
  98. package/dist/types.d.ts.map +1 -1
  99. package/package.json +6 -5
  100. package/patches/matrix-crdt+0.2.1-alpha.1.patch +108 -0
package/dist/MayDb.d.ts CHANGED
@@ -1,20 +1,56 @@
1
1
  import { Room } from "./Room";
2
- import type { AuthData, MatrixClient, InviteInfo, InviteMonitorOptions } from "./types";
2
+ import type { MayDbIndexHandle, MayDbSchema, MatrixClient, Session } from "./types";
3
3
  export declare class MayDb {
4
- readonly auth: AuthData;
4
+ readonly session: Session;
5
5
  readonly userId: string;
6
6
  readonly namespace: string;
7
+ readonly schema: MayDbSchema;
7
8
  /** @internal */
8
9
  readonly matrixClient: MatrixClient;
9
10
  private readonly roomCache;
10
- constructor(auth: AuthData, namespace: string);
11
- getRoom(roomId: string): Room;
12
- createRoom(title: string): Promise<Room>;
13
- createMatrixRoom(title: string): Promise<string>;
14
- fetchPendingInvites(): Promise<InviteInfo[]>;
15
- startInviteMonitor(options: InviteMonitorOptions): () => void;
16
- hasMarkerEvent(roomId: string): Promise<boolean>;
11
+ private readonly indexRuntime;
12
+ private invitePollInterval;
13
+ private invitePollInFlight;
14
+ private readonly inviteJoinInFlight;
15
+ private readonly inviteJoinRetryState;
16
+ constructor(options: {
17
+ session: Session;
18
+ namespace: string;
19
+ schema: MayDbSchema;
20
+ });
21
+ readonly rooms: {
22
+ open: (roomId: string) => Room;
23
+ create: (options: {
24
+ name: string;
25
+ roomType: string;
26
+ }) => Promise<Room>;
27
+ getOrCreateSingleton: (options: {
28
+ key: string;
29
+ name: string;
30
+ roomType: string;
31
+ }) => Promise<Room>;
32
+ };
33
+ readonly indexes: {
34
+ open: (options: {
35
+ indexName: string;
36
+ indexRoomId?: string;
37
+ }) => MayDbIndexHandle;
38
+ };
17
39
  disposeAll(): void;
18
40
  logout(): Promise<void>;
41
+ private openRoom;
42
+ private createMatrixRoom;
43
+ private resolveSingletonRoom;
44
+ private startInviteIndexer;
45
+ private stopInviteIndexer;
46
+ private pollPendingInvites;
47
+ private runInvitePoll;
48
+ private joinPendingInvite;
49
+ private msUntilInviteJoinAllowed;
50
+ private scheduleInviteJoinRetry;
51
+ private clearInviteJoinRetry;
52
+ private pruneInviteJoinRetryState;
53
+ private fetchPendingInvites;
54
+ private persistRoomTypeInDocument;
19
55
  }
20
56
  //# sourceMappingURL=MayDb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MayDb.d.ts","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,qBAAa,KAAK;IAChB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEzC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;IAY7C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAavB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BhD,mBAAmB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAwElD,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAuCvD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStD,UAAU,IAAI,IAAI;IAOZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAY9B"}
1
+ {"version":3,"file":"MayDb.d.ts","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EAEZ,OAAO,EACR,MAAM,SAAS,CAAC;AAiBjB,qBAAa,KAAK;IAChB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,gBAAgB;IAChB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA2C;gBAEpE,OAAO,EAAE;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,WAAW,CAAC;KACrB;IAqBD,QAAQ,CAAC,KAAK;uBACG,MAAM,KAAG,IAAI;0BAEJ;YACtB,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;SAClB,KAAG,OAAO,CAAC,IAAI,CAAC;wCAUqB;YACpC,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;SAClB,KAAG,OAAO,CAAC,IAAI,CAAC;MASjB;IAEF,QAAQ,CAAC,OAAO;wBACE;YACd,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,KAAG,gBAAgB;MACpB;IAEF,UAAU,IAAI,IAAI;IASZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7B,OAAO,CAAC,QAAQ;YAcF,gBAAgB;YAkChB,oBAAoB;IAiElC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;YAQX,kBAAkB;YAWlB,aAAa;YAcb,iBAAiB;IA+B/B,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,yBAAyB;YAQnB,mBAAmB;YA2EnB,yBAAyB;CAexC"}
package/dist/MayDb.js CHANGED
@@ -1,25 +1,89 @@
1
1
  import * as sdk from "matrix-js-sdk";
2
2
  import { Room } from "./Room";
3
- import { removeAuth } from "./authStorage";
3
+ import { clearStoredSession } from "./authStorage";
4
+ import { IndexRuntime } from "./indexing/runtime";
5
+ import { ROOM_METADATA_TX_ORIGIN, ROOM_TYPE_TEXT_KEY } from "./roomMetadata";
6
+ const INVITE_POLL_INTERVAL_MS = 30000;
7
+ const INVITE_JOIN_BACKOFF_BASE_MS = 1000;
8
+ const INVITE_JOIN_BACKOFF_MAX_MS = 5 * 60 * 1000;
9
+ const INVITE_JOIN_BACKOFF_JITTER_RATIO = 0.2;
4
10
  export class MayDb {
5
- auth;
11
+ session;
6
12
  userId;
7
13
  namespace;
14
+ schema;
8
15
  /** @internal */
9
16
  matrixClient;
10
17
  roomCache = new Map();
11
- constructor(auth, namespace) {
12
- this.auth = auth;
13
- this.userId = auth.userId;
18
+ indexRuntime;
19
+ invitePollInterval = null;
20
+ invitePollInFlight = null;
21
+ inviteJoinInFlight = new Set();
22
+ inviteJoinRetryState = new Map();
23
+ constructor(options) {
24
+ const { session, namespace, schema } = options;
25
+ this.session = session;
26
+ this.userId = session.userId;
14
27
  this.namespace = namespace;
28
+ this.schema = schema;
15
29
  this.matrixClient = sdk.createClient({
16
- baseUrl: auth.homeserver,
17
- accessToken: auth.accessToken,
18
- userId: auth.userId,
19
- deviceId: auth.deviceId,
30
+ baseUrl: session.homeserver,
31
+ accessToken: session.accessToken,
32
+ userId: session.userId,
33
+ deviceId: session.deviceId,
20
34
  });
35
+ this.indexRuntime = new IndexRuntime({
36
+ namespace: this.namespace,
37
+ matrixClient: this.matrixClient,
38
+ schema: this.schema,
39
+ openRoom: (roomId) => this.openRoom(roomId),
40
+ });
41
+ this.startInviteIndexer();
21
42
  }
22
- getRoom(roomId) {
43
+ rooms = {
44
+ open: (roomId) => this.openRoom(roomId),
45
+ create: async (options) => {
46
+ this.indexRuntime.validateRoomType(options.roomType);
47
+ const roomId = await this.createMatrixRoom(options);
48
+ await this.indexRuntime.ensureRoomIndexed({
49
+ roomId,
50
+ roomNameHint: options.name,
51
+ });
52
+ return this.openRoom(roomId);
53
+ },
54
+ getOrCreateSingleton: async (options) => {
55
+ this.indexRuntime.validateRoomType(options.roomType);
56
+ const roomId = await this.resolveSingletonRoom({
57
+ key: options.key,
58
+ name: options.name,
59
+ roomType: options.roomType,
60
+ });
61
+ return this.openRoom(roomId);
62
+ },
63
+ };
64
+ indexes = {
65
+ open: (options) => this.indexRuntime.openIndex(options),
66
+ };
67
+ disposeAll() {
68
+ this.stopInviteIndexer();
69
+ this.indexRuntime.dispose();
70
+ for (const room of this.roomCache.values()) {
71
+ room.dispose();
72
+ }
73
+ this.roomCache.clear();
74
+ }
75
+ async logout() {
76
+ this.disposeAll();
77
+ try {
78
+ await this.matrixClient.logout();
79
+ }
80
+ catch {
81
+ // Ignore logout errors (e.g. network issues during logout)
82
+ }
83
+ this.matrixClient.stopClient();
84
+ clearStoredSession();
85
+ }
86
+ openRoom(roomId) {
23
87
  let room = this.roomCache.get(roomId);
24
88
  if (!room) {
25
89
  const services = {
@@ -28,23 +92,20 @@ export class MayDb {
28
92
  };
29
93
  room = new Room(services, roomId);
30
94
  this.roomCache.set(roomId, room);
95
+ this.indexRuntime.trackRoom(room);
31
96
  }
32
97
  return room;
33
98
  }
34
- async createRoom(title) {
35
- const roomId = await this.createMatrixRoom(title);
36
- return this.getRoom(roomId);
37
- }
38
- async createMatrixRoom(title) {
99
+ async createMatrixRoom(options) {
100
+ const { name, roomType } = options;
39
101
  const timestamp = Date.now();
40
102
  const randomSuffix = Math.random().toString(36).substring(2, 8);
41
103
  const localAlias = `${this.namespace}-${timestamp}-${randomSuffix}`;
42
- const response = await this.matrixClient.createRoom({
43
- name: title,
104
+ const createRoomOptions = {
105
+ name,
44
106
  room_alias_name: localAlias,
45
107
  visibility: sdk.Visibility.Private,
46
108
  preset: sdk.Preset.PrivateChat,
47
- creation_content: { type: "m.space" },
48
109
  initial_state: [
49
110
  {
50
111
  type: "m.room.history_visibility",
@@ -53,18 +114,165 @@ export class MayDb {
53
114
  {
54
115
  type: this.namespace,
55
116
  state_key: "",
56
- content: { version: 1 },
117
+ content: {
118
+ version: 1,
119
+ },
57
120
  },
58
121
  ],
59
- });
122
+ };
123
+ const response = await this.matrixClient.createRoom(createRoomOptions);
124
+ await this.persistRoomTypeInDocument(response.room_id, roomType);
60
125
  return response.room_id;
61
126
  }
127
+ async resolveSingletonRoom(options) {
128
+ const { key, name, roomType } = options;
129
+ const userId = this.matrixClient.getUserId();
130
+ if (!userId)
131
+ throw new Error("Not logged in");
132
+ let roomId = null;
133
+ try {
134
+ const accountData = (await this.matrixClient.getAccountDataFromServer(this.namespace));
135
+ roomId = accountData?.[key] ?? null;
136
+ }
137
+ catch {
138
+ // No account data yet
139
+ }
140
+ if (roomId) {
141
+ try {
142
+ if (!this.matrixClient.getRoom(roomId)) {
143
+ await this.matrixClient.joinRoom(roomId);
144
+ }
145
+ }
146
+ catch {
147
+ roomId = null;
148
+ }
149
+ }
150
+ if (!roomId) {
151
+ roomId = await this.createMatrixRoom({
152
+ name,
153
+ roomType,
154
+ });
155
+ let existingData = {};
156
+ try {
157
+ existingData =
158
+ (await this.matrixClient.getAccountDataFromServer(this.namespace)) || {};
159
+ }
160
+ catch {
161
+ // No existing data
162
+ }
163
+ await this.matrixClient.setAccountData(this.namespace, { ...existingData, [key]: roomId });
164
+ await this.indexRuntime.ensureRoomIndexed({
165
+ roomId,
166
+ roomNameHint: name,
167
+ });
168
+ }
169
+ return roomId;
170
+ }
171
+ startInviteIndexer() {
172
+ if (!this.indexRuntime.hasIndexes())
173
+ return;
174
+ void this.pollPendingInvites();
175
+ this.invitePollInterval = setInterval(() => {
176
+ void this.pollPendingInvites();
177
+ }, INVITE_POLL_INTERVAL_MS);
178
+ }
179
+ stopInviteIndexer() {
180
+ if (!this.invitePollInterval)
181
+ return;
182
+ clearInterval(this.invitePollInterval);
183
+ this.invitePollInterval = null;
184
+ this.inviteJoinInFlight.clear();
185
+ this.inviteJoinRetryState.clear();
186
+ }
187
+ async pollPendingInvites() {
188
+ if (this.invitePollInFlight) {
189
+ return this.invitePollInFlight;
190
+ }
191
+ this.invitePollInFlight = this.runInvitePoll().finally(() => {
192
+ this.invitePollInFlight = null;
193
+ });
194
+ return this.invitePollInFlight;
195
+ }
196
+ async runInvitePoll() {
197
+ try {
198
+ const invites = await this.fetchPendingInvites();
199
+ const inviteRoomIds = new Set(invites.map((invite) => invite.roomId));
200
+ this.pruneInviteJoinRetryState(inviteRoomIds);
201
+ for (const invite of invites) {
202
+ await this.joinPendingInvite(invite);
203
+ }
204
+ }
205
+ catch (error) {
206
+ console.error("Invite index poll error:", error);
207
+ }
208
+ }
209
+ async joinPendingInvite(invite) {
210
+ if (this.matrixClient.getRoom(invite.roomId)) {
211
+ this.clearInviteJoinRetry(invite.roomId);
212
+ return;
213
+ }
214
+ if (this.inviteJoinInFlight.has(invite.roomId))
215
+ return;
216
+ const waitMs = this.msUntilInviteJoinAllowed(invite.roomId);
217
+ if (waitMs > 0)
218
+ return;
219
+ this.inviteJoinInFlight.add(invite.roomId);
220
+ try {
221
+ await this.matrixClient.joinRoom(invite.roomId);
222
+ this.clearInviteJoinRetry(invite.roomId);
223
+ await this.indexRuntime.ensureRoomIndexed({
224
+ roomId: invite.roomId,
225
+ roomNameHint: invite.roomName,
226
+ });
227
+ }
228
+ catch (error) {
229
+ const retryInMs = this.scheduleInviteJoinRetry(invite.roomId);
230
+ console.warn(`Invite join failed for ${invite.roomId}; retrying in ${Math.ceil(retryInMs / 1000)}s`, error);
231
+ }
232
+ finally {
233
+ this.inviteJoinInFlight.delete(invite.roomId);
234
+ }
235
+ }
236
+ msUntilInviteJoinAllowed(roomId) {
237
+ const retryState = this.inviteJoinRetryState.get(roomId);
238
+ if (!retryState)
239
+ return 0;
240
+ return Math.max(0, retryState.nextAttemptAt - Date.now());
241
+ }
242
+ scheduleInviteJoinRetry(roomId) {
243
+ const previous = this.inviteJoinRetryState.get(roomId);
244
+ const attempt = (previous?.attempt ?? 0) + 1;
245
+ const uncappedDelayMs = INVITE_JOIN_BACKOFF_BASE_MS * 2 ** Math.max(0, attempt - 1);
246
+ const delayMs = Math.min(uncappedDelayMs, INVITE_JOIN_BACKOFF_MAX_MS);
247
+ const jitterMultiplier = 1 + Math.random() * INVITE_JOIN_BACKOFF_JITTER_RATIO;
248
+ const jitteredDelayMs = Math.round(delayMs * jitterMultiplier);
249
+ this.inviteJoinRetryState.set(roomId, {
250
+ attempt,
251
+ nextAttemptAt: Date.now() + jitteredDelayMs,
252
+ });
253
+ return jitteredDelayMs;
254
+ }
255
+ clearInviteJoinRetry(roomId) {
256
+ this.inviteJoinRetryState.delete(roomId);
257
+ }
258
+ pruneInviteJoinRetryState(activeInviteRoomIds) {
259
+ for (const roomId of this.inviteJoinRetryState.keys()) {
260
+ if (!activeInviteRoomIds.has(roomId)) {
261
+ this.inviteJoinRetryState.delete(roomId);
262
+ }
263
+ }
264
+ }
62
265
  async fetchPendingInvites() {
63
266
  const filter = {
64
267
  room: {
65
268
  include_leave: false,
66
269
  state: {
67
- types: ["m.room.name", "m.room.member", "m.room.canonical_alias"],
270
+ types: [
271
+ "m.room.name",
272
+ "m.room.member",
273
+ "m.room.canonical_alias",
274
+ this.namespace,
275
+ ],
68
276
  lazy_load_members: true,
69
277
  },
70
278
  timeline: { limit: 0 },
@@ -90,73 +298,31 @@ export class MayDb {
90
298
  const inviteRooms = data.rooms?.invite || {};
91
299
  for (const [roomId, roomData] of Object.entries(inviteRooms)) {
92
300
  const inviteState = roomData.invite_state?.events || [];
93
- const nameEvent = inviteState.find((e) => e.type === "m.room.name");
94
- const roomName = nameEvent?.content?.name || "Untitled";
95
- const aliasEvent = inviteState.find((e) => e.type === "m.room.canonical_alias");
96
- const alias = aliasEvent?.content?.alias || null;
97
- const memberEvent = inviteState.find((e) => e.type === "m.room.member" &&
98
- e.state_key === this.matrixClient.getUserId());
99
- const inviter = memberEvent?.sender || "unknown";
100
- invites.push({ roomId, roomName, inviter, alias });
301
+ const nameEvent = inviteState.find((event) => event.type === "m.room.name");
302
+ const roomName = typeof nameEvent?.content?.name === "string"
303
+ ? nameEvent.content.name
304
+ : "Untitled";
305
+ const appState = inviteState.find((event) => event.type === this.namespace && event.state_key === "");
306
+ if (!appState)
307
+ continue;
308
+ invites.push({
309
+ roomId,
310
+ roomName,
311
+ });
101
312
  }
102
313
  return invites;
103
314
  }
104
- startInviteMonitor(options) {
105
- const { shouldJoin = (invite) => invite.alias?.startsWith(`#${this.namespace}-`) ?? false, onJoined, pollIntervalMs = 30000, } = options;
106
- let stopped = false;
107
- const checkInvites = async () => {
108
- if (stopped)
109
- return;
110
- try {
111
- const invites = await this.fetchPendingInvites();
112
- for (const invite of invites) {
113
- if (!shouldJoin(invite))
114
- continue;
115
- if (this.matrixClient.getRoom(invite.roomId))
116
- continue;
117
- await this.matrixClient.joinRoom(invite.roomId);
118
- await onJoined(invite);
119
- }
120
- }
121
- catch (err) {
122
- console.error("Invite monitor error:", err);
123
- }
124
- };
125
- checkInvites();
126
- const interval = setInterval(() => {
127
- if (!stopped)
128
- checkInvites();
129
- }, pollIntervalMs);
130
- return () => {
131
- stopped = true;
132
- clearInterval(interval);
133
- };
134
- }
135
- async hasMarkerEvent(roomId) {
136
- try {
137
- const state = await this.matrixClient.roomState(roomId);
138
- return state.some((e) => e.type === this.namespace);
139
- }
140
- catch {
141
- return false;
142
- }
143
- }
144
- disposeAll() {
145
- for (const room of this.roomCache.values()) {
146
- room.dispose();
147
- }
148
- this.roomCache.clear();
149
- }
150
- async logout() {
151
- this.disposeAll();
152
- try {
153
- await this.matrixClient.logout();
154
- }
155
- catch {
156
- // Ignore logout errors (e.g. network issues during logout)
157
- }
158
- this.matrixClient.stopClient();
159
- removeAuth();
315
+ async persistRoomTypeInDocument(roomId, roomType) {
316
+ const room = this.openRoom(roomId);
317
+ await room.ensureJoined();
318
+ await room.connect();
319
+ const roomTypeText = room.doc.getText(ROOM_TYPE_TEXT_KEY);
320
+ if (roomTypeText.toString() === roomType)
321
+ return;
322
+ room.doc.transact(() => {
323
+ roomTypeText.delete(0, roomTypeText.length);
324
+ roomTypeText.insert(0, roomType);
325
+ }, ROOM_METADATA_TX_ORIGIN);
160
326
  }
161
327
  }
162
328
  //# sourceMappingURL=MayDb.js.map
package/dist/MayDb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"MayDb.js","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MayDb.js","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"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"}
package/dist/Room.d.ts CHANGED
@@ -1,81 +1,64 @@
1
1
  import { Doc } from "yjs";
2
- import type { RoomStatus, RoomMetadata, RoomMember, AccessLevel, RoomServices } from "./types";
2
+ import type { RoomStatus, RoomMember, AccessLevel, RoomServices, RoomState } from "./types";
3
3
  import type { ToDeviceEvent } from "./presence";
4
- export interface RoomEvents {
5
- onStatusChange: (status: RoomStatus) => void;
6
- onMetadataChange: (metadata: RoomMetadata) => void;
7
- onCanWriteChange: (canWrite: boolean) => void;
4
+ export interface RoomDelegate {
5
+ roomId: string;
6
+ name: string;
8
7
  }
9
8
  export declare class Room {
10
- readonly roomId: string;
9
+ readonly id: string;
11
10
  readonly doc: Doc;
12
- services: RoomServices;
11
+ private readonly services;
13
12
  private provider;
14
13
  private connectPromise;
15
- private _status;
16
- private _canWrite;
17
- private _metadata;
14
+ private _state;
18
15
  private listeners;
19
16
  constructor(services: RoomServices, roomId: string);
17
+ get state(): RoomState;
20
18
  get status(): RoomStatus;
21
- get canWrite(): boolean;
19
+ get canEdit(): boolean;
22
20
  get isConnected(): boolean;
23
- get metadata(): RoomMetadata | null;
21
+ get name(): string | null;
24
22
  get userId(): string | null;
25
23
  get userDisplayName(): string | null;
26
- subscribe(listener: Partial<RoomEvents>): () => void;
27
- getRoomName(roomId?: string): Promise<string>;
28
- getMembers(): Promise<RoomMember[]>;
29
- isMember(): Promise<boolean>;
30
- getRoomMemberIds(): Promise<string[]>;
31
- /**
32
- * Resolve delegate rooms currently allowed via restricted join rules.
33
- */
34
- getDelegateRoomIds(): Promise<string[]>;
35
- /**
36
- * Poll for to-device events using a minimal Matrix sync.
37
- * Returns new events and the next sync token for incremental polling.
38
- */
39
- pollToDeviceEvents(sinceToken: string | null): Promise<{
40
- events: ToDeviceEvent[];
41
- nextBatch: string;
42
- }>;
43
- /**
44
- * Connect the Y.js store to Matrix for this room.
45
- * Safe to call multiple times - will no-op if already connected.
46
- * Resolves when the Y.js document is available (synced from Matrix).
47
- */
24
+ subscribe(listener: (state: RoomState) => void): () => void;
25
+ readonly members: {
26
+ list: () => Promise<RoomMember[]>;
27
+ invite: (userId: string, access: AccessLevel) => Promise<void>;
28
+ setAccess: (userId: string, access: AccessLevel) => Promise<void>;
29
+ remove: (userId: string) => Promise<void>;
30
+ };
31
+ readonly delegates: {
32
+ list: () => Promise<RoomDelegate[]>;
33
+ add: (delegateRoomId: string) => Promise<void>;
34
+ remove: (delegateRoomId: string) => Promise<void>;
35
+ };
36
+ readonly toDevice: {
37
+ send: (eventType: string, content: unknown) => Promise<void>;
38
+ poll: (sinceToken: string | null) => Promise<{
39
+ events: ToDeviceEvent[];
40
+ nextBatch: string;
41
+ }>;
42
+ };
48
43
  connect(): Promise<void>;
49
44
  disconnect(): void;
50
- /**
51
- * Fully dispose this room instance (disconnects and removes from cache).
52
- */
53
45
  dispose(): void;
54
- refreshMetadata(): Promise<RoomMetadata>;
55
- setRoomName(title: string): Promise<void>;
56
- invite(userId: string, access: AccessLevel): Promise<void>;
57
- setAccess(userId: string, access: AccessLevel): Promise<void>;
58
- kick(userId: string): Promise<void>;
59
- join(): Promise<boolean>;
60
- /**
61
- * Ensure the current user is a member of this room.
62
- * No-op if already joined. Attempts to join otherwise.
63
- * Throws if the join fails.
64
- */
46
+ refresh(): Promise<RoomState>;
47
+ rename(name: string): Promise<void>;
65
48
  ensureJoined(): Promise<void>;
66
- addDelegateRoom(delegateRoomId: string): Promise<void>;
67
- removeDelegateRoom(delegateRoomId: string): Promise<void>;
68
- sendToDevice(eventType: string, content: unknown): Promise<void>;
69
- /**
70
- * Internal/private implementation details.
71
- */
72
49
  private get matrixClient();
50
+ private emitState;
51
+ private setStatus;
73
52
  private doConnect;
74
- private canEdit;
53
+ private getRoomName;
54
+ private getMembers;
55
+ private isMember;
56
+ private getRoomMemberIds;
57
+ private getDelegateRoomIds;
58
+ private pollToDeviceEvents;
59
+ private canUserEdit;
75
60
  private accessToPowerLevel;
76
61
  private powerLevelToAccess;
77
62
  private setUserPowerLevel;
78
- private emit;
79
- private setStatus;
80
63
  }
81
64
  //# sourceMappingURL=Room.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Room.d.ts","sourceRoot":"","sources":["../src/Room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Room.d.ts","sourceRoot":"","sources":["../src/Room.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,IAAI;IACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,MAAM,CAIZ;IACF,OAAO,CAAC,SAAS,CAAyC;gBAE9C,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAMlD,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAInC;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAK3D,QAAQ,CAAC,OAAO;oBACE,OAAO,CAAC,UAAU,EAAE,CAAC;yBAEd,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC;4BAMxC,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC;yBAK9C,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAG7C;IAEF,QAAQ,CAAC,SAAS;oBACA,OAAO,CAAC,YAAY,EAAE,CAAC;8BAUX,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iCAoBnB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAsBrD;IAEF,QAAQ,CAAC,QAAQ;0BACS,MAAM,WAAW,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;2BAmBvC,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC;YAC/C,MAAM,EAAE,aAAa,EAAE,CAAC;YACxB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;MACF;IAEI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,UAAU,IAAI,IAAI;IAalB,OAAO,IAAI,IAAI;IAMT,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAc7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;YAUH,SAAS;YAkDT,WAAW;YAYX,UAAU;YAwBV,QAAQ;YAaR,gBAAgB;YAQhB,kBAAkB;YAsBlB,kBAAkB;YAmClB,WAAW;IAkBzB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,kBAAkB;YAMZ,iBAAiB;CAyBhC"}