@may-db/core 0.1.2 → 0.1.4

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 (83) hide show
  1. package/dist/MayDb.d.ts.map +1 -1
  2. package/dist/MayDb.js +23 -6
  3. package/dist/MayDb.js.map +1 -1
  4. package/dist/Room.d.ts +32 -0
  5. package/dist/Room.d.ts.map +1 -1
  6. package/dist/Room.js +35 -0
  7. package/dist/Room.js.map +1 -1
  8. package/dist/indexing/runtime.d.ts.map +1 -1
  9. package/dist/indexing/runtime.js +2 -4
  10. package/dist/indexing/runtime.js.map +1 -1
  11. package/package.json +2 -2
  12. package/dist/Client.d.ts +0 -20
  13. package/dist/Client.d.ts.map +0 -1
  14. package/dist/Client.js +0 -163
  15. package/dist/Client.js.map +0 -1
  16. package/dist/IndexRuntime.d.ts +0 -60
  17. package/dist/IndexRuntime.d.ts.map +0 -1
  18. package/dist/IndexRuntime.js +0 -340
  19. package/dist/IndexRuntime.js.map +0 -1
  20. package/dist/RuntimeIndexHandle.d.ts +0 -29
  21. package/dist/RuntimeIndexHandle.d.ts.map +0 -1
  22. package/dist/RuntimeIndexHandle.js +0 -48
  23. package/dist/RuntimeIndexHandle.js.map +0 -1
  24. package/dist/errors.d.ts +0 -12
  25. package/dist/errors.d.ts.map +0 -1
  26. package/dist/errors.js +0 -15
  27. package/dist/errors.js.map +0 -1
  28. package/dist/hooks/useAllowedRooms.d.ts +0 -12
  29. package/dist/hooks/useAllowedRooms.d.ts.map +0 -1
  30. package/dist/hooks/useAllowedRooms.js +0 -29
  31. package/dist/hooks/useAllowedRooms.js.map +0 -1
  32. package/dist/hooks/useAsync.d.ts +0 -8
  33. package/dist/hooks/useAsync.d.ts.map +0 -1
  34. package/dist/hooks/useAsync.js +0 -29
  35. package/dist/hooks/useAsync.js.map +0 -1
  36. package/dist/hooks/useAuth.d.ts +0 -11
  37. package/dist/hooks/useAuth.d.ts.map +0 -1
  38. package/dist/hooks/useAuth.js +0 -45
  39. package/dist/hooks/useAuth.js.map +0 -1
  40. package/dist/hooks/usePresence.d.ts +0 -30
  41. package/dist/hooks/usePresence.d.ts.map +0 -1
  42. package/dist/hooks/usePresence.js +0 -95
  43. package/dist/hooks/usePresence.js.map +0 -1
  44. package/dist/hooks/useRoom.d.ts +0 -11
  45. package/dist/hooks/useRoom.d.ts.map +0 -1
  46. package/dist/hooks/useRoom.js +0 -37
  47. package/dist/hooks/useRoom.js.map +0 -1
  48. package/dist/hooks/useRoomMembers.d.ts +0 -12
  49. package/dist/hooks/useRoomMembers.d.ts.map +0 -1
  50. package/dist/hooks/useRoomMembers.js +0 -37
  51. package/dist/hooks/useRoomMembers.js.map +0 -1
  52. package/dist/indexing/roomRegistry.d.ts +0 -26
  53. package/dist/indexing/roomRegistry.d.ts.map +0 -1
  54. package/dist/indexing/roomRegistry.js +0 -125
  55. package/dist/indexing/roomRegistry.js.map +0 -1
  56. package/dist/indexing.d.ts +0 -93
  57. package/dist/indexing.d.ts.map +0 -1
  58. package/dist/indexing.js +0 -394
  59. package/dist/indexing.js.map +0 -1
  60. package/dist/indexingErrors.d.ts +0 -9
  61. package/dist/indexingErrors.d.ts.map +0 -1
  62. package/dist/indexingErrors.js +0 -11
  63. package/dist/indexingErrors.js.map +0 -1
  64. package/dist/indexingRoomStore.d.ts +0 -26
  65. package/dist/indexingRoomStore.d.ts.map +0 -1
  66. package/dist/indexingRoomStore.js +0 -125
  67. package/dist/indexingRoomStore.js.map +0 -1
  68. package/dist/indexingRows.d.ts +0 -8
  69. package/dist/indexingRows.d.ts.map +0 -1
  70. package/dist/indexingRows.js +0 -114
  71. package/dist/indexingRows.js.map +0 -1
  72. package/dist/indexingTypes.d.ts +0 -9
  73. package/dist/indexingTypes.d.ts.map +0 -1
  74. package/dist/indexingTypes.js +0 -2
  75. package/dist/indexingTypes.js.map +0 -1
  76. package/dist/matrix-crdt-shim.d.ts +0 -43
  77. package/dist/matrix-crdt-shim.d.ts.map +0 -1
  78. package/dist/matrix-crdt-shim.js +0 -2
  79. package/dist/matrix-crdt-shim.js.map +0 -1
  80. package/dist/singletonRoom.d.ts +0 -3
  81. package/dist/singletonRoom.d.ts.map +0 -1
  82. package/dist/singletonRoom.js +0 -8
  83. package/dist/singletonRoom.js.map +0 -1
@@ -1,11 +0,0 @@
1
- import { Client } from "../Client";
2
- import type { RoomConfig } from "../types";
3
- type AuthState = "loading" | "unauthenticated" | "authenticated";
4
- export declare function useAuth(config: RoomConfig): {
5
- state: AuthState;
6
- client: Client | null;
7
- error: string | null;
8
- logout: () => Promise<void>;
9
- };
10
- export {};
11
- //# sourceMappingURL=useAuth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,KAAK,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEjE,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU;;;;;EA2CzC"}
@@ -1,45 +0,0 @@
1
- import { useState, useEffect, useCallback } from "react";
2
- import { Client } from "../Client";
3
- import { getAuth } from "../authStorage";
4
- import { completeLogin } from "../loginFlow";
5
- export function useAuth(config) {
6
- const [state, setState] = useState("loading");
7
- const [client, setClient] = useState(null);
8
- const [error, setError] = useState(null);
9
- useEffect(() => {
10
- async function init() {
11
- try {
12
- const callbackAuth = await completeLogin();
13
- if (callbackAuth) {
14
- setClient(new Client(callbackAuth, config));
15
- setState("authenticated");
16
- return;
17
- }
18
- const storedAuth = getAuth();
19
- if (storedAuth) {
20
- try {
21
- setClient(new Client(storedAuth, config));
22
- setState("authenticated");
23
- return;
24
- }
25
- catch {
26
- // Stored auth invalid, continue to login
27
- }
28
- }
29
- setState("unauthenticated");
30
- }
31
- catch (err) {
32
- setError(err instanceof Error ? err.message : "Initialization failed");
33
- setState("unauthenticated");
34
- }
35
- }
36
- init();
37
- }, [config]);
38
- const logout = useCallback(async () => {
39
- await client?.logout();
40
- setClient(null);
41
- setState("unauthenticated");
42
- }, [client]);
43
- return { state, client, error, logout };
44
- }
45
- //# sourceMappingURL=useAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,MAAM,UAAU,OAAO,CAAC,MAAkB;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY,SAAS,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,UAAU,IAAI;YACjB,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,aAAa,EAAE,CAAC;gBAC3C,IAAI,YAAY,EAAE,CAAC;oBACjB,SAAS,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC5C,QAAQ,CAAC,eAAe,CAAC,CAAC;oBAC1B,OAAO;gBACT,CAAC;gBAED,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;gBAC7B,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC;wBACH,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;wBAC1C,QAAQ,CAAC,eAAe,CAAC,CAAC;wBAC1B,OAAO;oBACT,CAAC;oBAAC,MAAM,CAAC;wBACP,yCAAyC;oBAC3C,CAAC;gBACH,CAAC;gBAED,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;gBACvE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC"}
@@ -1,30 +0,0 @@
1
- import type { Room } from '../Room';
2
- export declare const PRESENCE_EVENT = "com.matrixsheets.presence";
3
- export interface PresenceContent {
4
- roomId: string;
5
- focus: string | null;
6
- timestamp: number;
7
- user: {
8
- id: string;
9
- name: string;
10
- color: string;
11
- };
12
- }
13
- export interface RemotePresence {
14
- userId: string;
15
- name: string;
16
- color: string;
17
- focus: string;
18
- }
19
- export interface UsePresenceOptions {
20
- room: Room;
21
- }
22
- /**
23
- * Hook for managing presence via Matrix to-device messages.
24
- * Broadcasts local focus changes to room members and receives their presence updates.
25
- */
26
- export declare function usePresence({ room }: UsePresenceOptions): {
27
- remotePresences: RemotePresence[];
28
- setLocalFocus: (focus: string | null) => void;
29
- };
30
- //# sourceMappingURL=usePresence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePresence.d.ts","sourceRoot":"","sources":["../../src/hooks/usePresence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAKpC,eAAO,MAAM,cAAc,8BAA8B,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB;;2BAsC5C,MAAM,GAAG,IAAI;EA6DxB"}
@@ -1,95 +0,0 @@
1
- import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
2
- import { getUserColor } from '../utils/presenceColors';
3
- const PRESENCE_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
4
- const SYNC_POLL_INTERVAL_MS = 2500; // Poll every 2.5 seconds
5
- export const PRESENCE_EVENT = "com.matrixsheets.presence";
6
- /**
7
- * Hook for managing presence via Matrix to-device messages.
8
- * Broadcasts local focus changes to room members and receives their presence updates.
9
- */
10
- export function usePresence({ room }) {
11
- const roomId = room.roomId;
12
- const localUserId = room.userId;
13
- const localUserName = room.userDisplayName || localUserId;
14
- const localColor = useMemo(() => getUserColor(localUserId), [localUserId]);
15
- const [remotePresences, setRemotePresences] = useState([]);
16
- // Track sync token for incremental sync
17
- const syncTokenRef = useRef(null);
18
- // Track current local focus to avoid duplicate sends
19
- const localFocusRef = useRef(null);
20
- const sendPresence = useCallback(async (focus) => {
21
- const presence = {
22
- roomId,
23
- focus,
24
- timestamp: Date.now(),
25
- user: {
26
- id: localUserId,
27
- name: localUserName,
28
- color: localColor,
29
- },
30
- };
31
- try {
32
- await room.sendToDevice(PRESENCE_EVENT, presence);
33
- }
34
- catch (err) {
35
- console.error('Failed to send presence:', err);
36
- }
37
- }, [room, roomId, localUserId, localUserName, localColor]);
38
- const setLocalFocus = useCallback((focus) => {
39
- if (localFocusRef.current === focus)
40
- return;
41
- localFocusRef.current = focus;
42
- sendPresence(focus);
43
- }, [sendPresence]);
44
- useEffect(() => {
45
- let stopped = false;
46
- const poll = async () => {
47
- try {
48
- const { events, nextBatch } = await room.pollToDeviceEvents(syncTokenRef.current);
49
- syncTokenRef.current = nextBatch;
50
- const now = Date.now();
51
- for (const event of events) {
52
- if (event.type !== PRESENCE_EVENT)
53
- continue;
54
- const content = event.content;
55
- if (content.roomId !== roomId)
56
- continue;
57
- if (content.user.id === localUserId)
58
- continue;
59
- if (now - content.timestamp >= PRESENCE_TIMEOUT_MS)
60
- continue;
61
- const userId = content.user.id;
62
- if (content.focus === null) {
63
- setRemotePresences(prev => prev.filter(p => p.userId !== userId));
64
- }
65
- else {
66
- setRemotePresences(prev => [
67
- ...prev.filter(p => p.userId !== userId),
68
- { userId, name: content.user.name, color: content.user.color, focus: content.focus },
69
- ]);
70
- }
71
- }
72
- }
73
- catch (err) {
74
- console.error('Presence poll error:', err);
75
- }
76
- };
77
- poll();
78
- const interval = setInterval(() => {
79
- if (!stopped)
80
- poll();
81
- }, SYNC_POLL_INTERVAL_MS);
82
- return () => {
83
- stopped = true;
84
- clearInterval(interval);
85
- };
86
- }, [room, roomId, localUserId]);
87
- // Send null presence when unmounting (leaving room)
88
- useEffect(() => {
89
- return () => {
90
- sendPresence(null);
91
- };
92
- }, [sendPresence]);
93
- return { remotePresences, setLocalFocus };
94
- }
95
- //# sourceMappingURL=usePresence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePresence.js","sourceRoot":"","sources":["../../src/hooks/usePresence.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { Room } from "../Room";
2
- import type { RoomStatus, RoomMetadata } from "../types";
3
- export declare function useRoom(room: Room): {
4
- room: Room;
5
- status: RoomStatus;
6
- isConnected: boolean;
7
- canWrite: boolean;
8
- metadata: RoomMetadata | null;
9
- error: Error | null;
10
- };
11
- //# sourceMappingURL=useRoom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRoom.d.ts","sourceRoot":"","sources":["../../src/hooks/useRoom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI;;;;;;;EAqCjC"}
@@ -1,37 +0,0 @@
1
- import { useState, useEffect } from "react";
2
- export function useRoom(room) {
3
- const [status, setStatus] = useState(room.status);
4
- const [canWrite, setCanWrite] = useState(room.canWrite);
5
- const [metadata, setMetadata] = useState(room.metadata);
6
- const [error, setError] = useState(null);
7
- useEffect(() => {
8
- const unsubscribe = room.subscribe({
9
- onStatusChange: setStatus,
10
- onCanWriteChange: setCanWrite,
11
- onMetadataChange: setMetadata,
12
- });
13
- return unsubscribe;
14
- }, [room]);
15
- // Auto-connect effect (no cleanup - rooms are cached and stay connected)
16
- useEffect(() => {
17
- if (room.isConnected)
18
- return;
19
- (async () => {
20
- try {
21
- await room.connect();
22
- }
23
- catch (err) {
24
- setError(err instanceof Error ? err : new Error("Failed to connect"));
25
- }
26
- })();
27
- }, [room]);
28
- return {
29
- room,
30
- status,
31
- isConnected: status === "connected",
32
- canWrite,
33
- metadata,
34
- error,
35
- };
36
- }
37
- //# sourceMappingURL=useRoom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRoom.js","sourceRoot":"","sources":["../../src/hooks/useRoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI5C,MAAM,UAAU,OAAO,CAAC,IAAU;IAChC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAa,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAsB,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,cAAc,EAAE,SAAS;YACzB,gBAAgB,EAAE,WAAW;YAC7B,gBAAgB,EAAE,WAAW;SAC9B,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,yEAAyE;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO;QACL,IAAI;QACJ,MAAM;QACN,WAAW,EAAE,MAAM,KAAK,WAAW;QACnC,QAAQ;QACR,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { Room } from "../Room";
2
- import type { RoomMember, AccessLevel } from "../types";
3
- export declare function useRoomMembers(room: Room): {
4
- members: RoomMember[];
5
- loading: boolean;
6
- error: Error | null;
7
- refresh: () => Promise<void>;
8
- invite: (userId: string, access: AccessLevel) => Promise<void>;
9
- setAccess: (userId: string, access: AccessLevel) => Promise<void>;
10
- kick: (userId: string) => Promise<void>;
11
- };
12
- //# sourceMappingURL=useRoomMembers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRoomMembers.d.ts","sourceRoot":"","sources":["../../src/hooks/useRoomMembers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI;;;;;qBA0BO,MAAM,UAAU,WAAW;wBAQ3B,MAAM,UAAU,WAAW;mBAQ3B,MAAM;EAQxB"}
@@ -1,37 +0,0 @@
1
- import { useState, useEffect, useCallback } from "react";
2
- export function useRoomMembers(room) {
3
- const [members, setMembers] = useState([]);
4
- const [loading, setLoading] = useState(true);
5
- const [error, setError] = useState(null);
6
- const refresh = useCallback(async () => {
7
- setLoading(true);
8
- setError(null);
9
- try {
10
- const memberList = await room.getMembers();
11
- setMembers(memberList);
12
- }
13
- catch (err) {
14
- setError(err instanceof Error ? err : new Error("Failed to load members"));
15
- }
16
- finally {
17
- setLoading(false);
18
- }
19
- }, [room]);
20
- useEffect(() => {
21
- refresh();
22
- }, [refresh]);
23
- const invite = useCallback(async (userId, access) => {
24
- await room.invite(userId, access);
25
- await refresh();
26
- }, [room, refresh]);
27
- const setAccess = useCallback(async (userId, access) => {
28
- await room.setAccess(userId, access);
29
- await refresh();
30
- }, [room, refresh]);
31
- const kick = useCallback(async (userId) => {
32
- await room.kick(userId);
33
- await refresh();
34
- }, [room, refresh]);
35
- return { members, loading, error, refresh, invite, setAccess, kick };
36
- }
37
- //# sourceMappingURL=useRoomMembers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRoomMembers.js","sourceRoot":"","sources":["../../src/hooks/useRoomMembers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIzD,MAAM,UAAU,cAAc,CAC5B,IAAU;IAEV,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,UAAU,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CACN,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CACjE,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,MAAc,EAAE,MAAmB,EAAE,EAAE;QAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,KAAK,EAAE,MAAc,EAAE,MAAmB,EAAE,EAAE;QAC5C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAC;IAEF,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,EAAE,MAAc,EAAE,EAAE;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC"}
@@ -1,26 +0,0 @@
1
- import { Room } from "../Room";
2
- import type { MatrixClient, MayDbIndexScope } from "../types";
3
- export declare class IndexRoomStore {
4
- private readonly namespace;
5
- private readonly matrixClient;
6
- private readonly openRoom;
7
- constructor(options: {
8
- namespace: string;
9
- matrixClient: MatrixClient;
10
- openRoom: (roomId: string) => Room;
11
- });
12
- resolveIndexRoomId(options: {
13
- indexName: string;
14
- scope: MayDbIndexScope;
15
- ownerRoomId: string | null;
16
- }): Promise<string>;
17
- private resolvePrivateIndexRoomId;
18
- private resolveCollaborativeIndexRoomId;
19
- private ensureJoined;
20
- private getAccountDataMapping;
21
- private getOwnerRoomIndexMapping;
22
- private createIndexMatrixRoom;
23
- private privateIndexAccountDataType;
24
- private ownerIndexMappingStateType;
25
- }
26
- //# sourceMappingURL=roomRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roomRegistry.d.ts","sourceRoot":"","sources":["../../src/indexing/roomRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9D,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;gBAExC,OAAO,EAAE;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,YAAY,CAAC;QAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC;IAMK,kBAAkB,CAAC,OAAO,EAAE;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,eAAe,CAAC;QACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC;YAOL,yBAAyB;YAoBzB,+BAA+B;YA4C/B,YAAY;YAKZ,qBAAqB;YAcrB,wBAAwB;YAiBxB,qBAAqB;IAgCnC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,0BAA0B;CAGnC"}
@@ -1,125 +0,0 @@
1
- import * as sdk from "matrix-js-sdk";
2
- import { Room } from "../Room";
3
- export class IndexRoomStore {
4
- namespace;
5
- matrixClient;
6
- openRoom;
7
- constructor(options) {
8
- this.namespace = options.namespace;
9
- this.matrixClient = options.matrixClient;
10
- this.openRoom = options.openRoom;
11
- }
12
- async resolveIndexRoomId(options) {
13
- if (options.scope === "private") {
14
- return this.resolvePrivateIndexRoomId(options.indexName);
15
- }
16
- return this.resolveCollaborativeIndexRoomId(options.indexName, options.ownerRoomId);
17
- }
18
- async resolvePrivateIndexRoomId(indexName) {
19
- const eventType = this.privateIndexAccountDataType();
20
- let mapping = await this.getAccountDataMapping(eventType);
21
- const existing = mapping[indexName];
22
- if (typeof existing === "string") {
23
- return existing;
24
- }
25
- const roomId = await this.createIndexMatrixRoom({
26
- indexName,
27
- scope: "private",
28
- });
29
- mapping = { ...mapping, [indexName]: roomId };
30
- await this.matrixClient.setAccountData(eventType, mapping);
31
- return roomId;
32
- }
33
- async resolveCollaborativeIndexRoomId(indexName, ownerRoomId) {
34
- if (!ownerRoomId) {
35
- throw new Error(`Collaborative index "${indexName}" missing ownerRoomId`);
36
- }
37
- let mapping = await this.getOwnerRoomIndexMapping(ownerRoomId);
38
- const existing = mapping[indexName];
39
- if (typeof existing === "string") {
40
- await this.ensureJoined(existing);
41
- return existing;
42
- }
43
- const ownerRoom = this.openRoom(ownerRoomId);
44
- await ownerRoom.ensureJoined();
45
- await ownerRoom.connect();
46
- if (!ownerRoom.canEdit) {
47
- throw new Error(`Cannot create index "${indexName}" without owner room write access`);
48
- }
49
- const roomId = await this.createIndexMatrixRoom({
50
- indexName,
51
- scope: "collaborative",
52
- });
53
- const indexRoom = this.openRoom(roomId);
54
- await indexRoom.ensureJoined();
55
- await indexRoom.connect();
56
- await indexRoom.delegates.add(ownerRoomId);
57
- mapping = { ...mapping, [indexName]: roomId };
58
- await this.matrixClient.sendStateEvent(ownerRoomId, this.ownerIndexMappingStateType(), mapping, "");
59
- return roomId;
60
- }
61
- async ensureJoined(roomId) {
62
- if (this.matrixClient.getRoom(roomId))
63
- return;
64
- await this.matrixClient.joinRoom(roomId);
65
- }
66
- async getAccountDataMapping(eventType) {
67
- try {
68
- const data = await this.matrixClient.getAccountDataFromServer(eventType);
69
- if (!data || typeof data !== "object")
70
- return {};
71
- return data;
72
- }
73
- catch {
74
- return {};
75
- }
76
- }
77
- async getOwnerRoomIndexMapping(ownerRoomId) {
78
- try {
79
- const state = await this.matrixClient.roomState(ownerRoomId);
80
- const event = state.find((entry) => entry.type === this.ownerIndexMappingStateType() &&
81
- entry.state_key === "");
82
- if (!event || typeof event.content !== "object")
83
- return {};
84
- return event.content;
85
- }
86
- catch {
87
- return {};
88
- }
89
- }
90
- async createIndexMatrixRoom(options) {
91
- const timestamp = Date.now();
92
- const randomSuffix = Math.random().toString(36).substring(2, 8);
93
- const localAlias = `${this.namespace}-index-${timestamp}-${randomSuffix}`;
94
- const response = await this.matrixClient.createRoom({
95
- name: `Index: ${options.indexName}`,
96
- room_alias_name: localAlias,
97
- visibility: sdk.Visibility.Private,
98
- preset: sdk.Preset.PrivateChat,
99
- initial_state: [
100
- {
101
- type: "m.room.history_visibility",
102
- content: { history_visibility: "shared" },
103
- },
104
- {
105
- type: this.namespace,
106
- state_key: "",
107
- content: {
108
- version: 1,
109
- roomType: "__index__",
110
- indexName: options.indexName,
111
- indexScope: options.scope,
112
- },
113
- },
114
- ],
115
- });
116
- return response.room_id;
117
- }
118
- privateIndexAccountDataType() {
119
- return `${this.namespace}.private_indexes`;
120
- }
121
- ownerIndexMappingStateType() {
122
- return `${this.namespace}.index_rooms`;
123
- }
124
- }
125
- //# sourceMappingURL=roomRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roomRegistry.js","sourceRoot":"","sources":["../../src/indexing/roomRegistry.ts"],"names":[],"mappings":"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"}
@@ -1,93 +0,0 @@
1
- import * as Y from "yjs";
2
- import { Room } from "./Room";
3
- import type { MayDbIndexDefinition, MayDbIndexHandle, MayDbIndexQueryPageOptions, MayDbIndexQueryPageResult, MayDbSchema, MatrixClient } from "./types";
4
- export declare class IndexCapacityError extends Error {
5
- readonly indexName: string;
6
- readonly ownerRoomId: string | null;
7
- constructor(options: {
8
- indexName: string;
9
- ownerRoomId: string | null;
10
- });
11
- }
12
- declare class RuntimeIndexHandle implements MayDbIndexHandle {
13
- readonly indexName: string;
14
- readonly ownerRoomId: string | null;
15
- readonly definition: MayDbIndexDefinition;
16
- activeCount: number;
17
- paused: boolean;
18
- indexRoom: Room | null;
19
- rowsMap: Y.Map<string> | null;
20
- roomObserverCleanup: (() => void) | null;
21
- readyPromise: Promise<void> | null;
22
- private readonly runtime;
23
- private readonly listeners;
24
- constructor(options: {
25
- runtime: IndexRuntime;
26
- indexName: string;
27
- ownerRoomId: string | null;
28
- definition: MayDbIndexDefinition;
29
- });
30
- activate(): () => void;
31
- ensureReady(): Promise<void>;
32
- queryPage(options: MayDbIndexQueryPageOptions): Promise<MayDbIndexQueryPageResult>;
33
- subscribe(listener: () => void): () => void;
34
- notifyChange(): void;
35
- }
36
- export declare class IndexRuntime {
37
- private readonly namespace;
38
- private readonly matrixClient;
39
- private readonly schema;
40
- private readonly openRoom;
41
- private readonly roomStore;
42
- private readonly indexEntries;
43
- private readonly roomDescriptors;
44
- private readonly trackedRooms;
45
- private readonly handles;
46
- private readonly activeHandles;
47
- private readonly roomTypesInIndexes;
48
- constructor(options: {
49
- namespace: string;
50
- matrixClient: MatrixClient;
51
- schema: MayDbSchema;
52
- openRoom: (roomId: string) => Room;
53
- });
54
- hasIndexes(): boolean;
55
- isRoomTypeIndexed(roomType: string): boolean;
56
- validateRoomType(roomType: string): void;
57
- openIndex(options: {
58
- indexName: string;
59
- ownerRoomId?: string;
60
- }): MayDbIndexHandle;
61
- dispose(): void;
62
- registerRoom(room: Room): void;
63
- onRoomAcquired(options: {
64
- roomId: string;
65
- roomName: string;
66
- roomType: string;
67
- ownerRoomId?: string | null;
68
- activityAt?: string;
69
- }): Promise<void>;
70
- onHandleActivated(handle: RuntimeIndexHandle): void;
71
- onHandleDeactivated(handle: RuntimeIndexHandle): void;
72
- ensureHandleReady(handle: RuntimeIndexHandle): Promise<void>;
73
- queryHandlePage(handle: RuntimeIndexHandle, options: MayDbIndexQueryPageOptions): Promise<MayDbIndexQueryPageResult>;
74
- private validateSchemaIndexes;
75
- private getIndexDefinition;
76
- private validateIndexScopeOptions;
77
- private getOrCreateHandle;
78
- private initializeHandle;
79
- private maybeAttachRoomActivityListener;
80
- private onRoomActivity;
81
- private upsertRoomAcrossAllRelevantIndexes;
82
- private upsertRoomAcrossActiveIndexes;
83
- private isDescriptorRelevantForHandle;
84
- private upsertRoomToIndex;
85
- private getRoomDescriptor;
86
- private readRoomDescriptorFromState;
87
- private resolveRoomName;
88
- private readRoomNameFromState;
89
- private nowIso;
90
- private handleKey;
91
- }
92
- export {};
93
- //# sourceMappingURL=indexing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexing.d.ts","sourceRoot":"","sources":["../src/indexing.ts"],"names":[],"mappings":"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"}