@may-db/core 0.1.1 → 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 (81) hide show
  1. package/README.md +117 -5
  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 +26 -7
  7. package/dist/MayDb.d.ts.map +1 -1
  8. package/dist/MayDb.js +178 -52
  9. package/dist/MayDb.js.map +1 -1
  10. package/dist/RuntimeIndexHandle.d.ts +29 -0
  11. package/dist/RuntimeIndexHandle.d.ts.map +1 -0
  12. package/dist/RuntimeIndexHandle.js +48 -0
  13. package/dist/RuntimeIndexHandle.js.map +1 -0
  14. package/dist/errors.d.ts +12 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +15 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/indexing/collaborativeSync.d.ts +25 -0
  23. package/dist/indexing/collaborativeSync.d.ts.map +1 -0
  24. package/dist/indexing/collaborativeSync.js +56 -0
  25. package/dist/indexing/collaborativeSync.js.map +1 -0
  26. package/dist/indexing/descriptor.d.ts +6 -0
  27. package/dist/indexing/descriptor.d.ts.map +1 -0
  28. package/dist/indexing/descriptor.js +2 -0
  29. package/dist/indexing/descriptor.js.map +1 -0
  30. package/dist/indexing/errors.d.ts +9 -0
  31. package/dist/indexing/errors.d.ts.map +1 -0
  32. package/dist/indexing/errors.js +11 -0
  33. package/dist/indexing/errors.js.map +1 -0
  34. package/dist/indexing/handle.d.ts +29 -0
  35. package/dist/indexing/handle.d.ts.map +1 -0
  36. package/dist/indexing/handle.js +48 -0
  37. package/dist/indexing/handle.js.map +1 -0
  38. package/dist/indexing/indexRoomStore.d.ts +18 -0
  39. package/dist/indexing/indexRoomStore.d.ts.map +1 -0
  40. package/dist/indexing/indexRoomStore.js +71 -0
  41. package/dist/indexing/indexRoomStore.js.map +1 -0
  42. package/dist/indexing/roomRegistry.d.ts +26 -0
  43. package/dist/indexing/roomRegistry.d.ts.map +1 -0
  44. package/dist/indexing/roomRegistry.js +125 -0
  45. package/dist/indexing/roomRegistry.js.map +1 -0
  46. package/dist/indexing/rows.d.ts +8 -0
  47. package/dist/indexing/rows.d.ts.map +1 -0
  48. package/dist/indexing/rows.js +86 -0
  49. package/dist/indexing/rows.js.map +1 -0
  50. package/dist/indexing/runtime.d.ts +61 -0
  51. package/dist/indexing/runtime.d.ts.map +1 -0
  52. package/dist/indexing/runtime.js +378 -0
  53. package/dist/indexing/runtime.js.map +1 -0
  54. package/dist/indexing.d.ts +93 -0
  55. package/dist/indexing.d.ts.map +1 -0
  56. package/dist/indexing.js +394 -0
  57. package/dist/indexing.js.map +1 -0
  58. package/dist/indexingErrors.d.ts +9 -0
  59. package/dist/indexingErrors.d.ts.map +1 -0
  60. package/dist/indexingErrors.js +11 -0
  61. package/dist/indexingErrors.js.map +1 -0
  62. package/dist/indexingRoomStore.d.ts +26 -0
  63. package/dist/indexingRoomStore.d.ts.map +1 -0
  64. package/dist/indexingRoomStore.js +125 -0
  65. package/dist/indexingRoomStore.js.map +1 -0
  66. package/dist/indexingRows.d.ts +8 -0
  67. package/dist/indexingRows.d.ts.map +1 -0
  68. package/dist/indexingRows.js +114 -0
  69. package/dist/indexingRows.js.map +1 -0
  70. package/dist/indexingTypes.d.ts +9 -0
  71. package/dist/indexingTypes.d.ts.map +1 -0
  72. package/dist/indexingTypes.js +2 -0
  73. package/dist/indexingTypes.js.map +1 -0
  74. package/dist/roomMetadata.d.ts +3 -0
  75. package/dist/roomMetadata.d.ts.map +1 -0
  76. package/dist/roomMetadata.js +3 -0
  77. package/dist/roomMetadata.js.map +1 -0
  78. package/dist/types.d.ts +56 -7
  79. package/dist/types.d.ts.map +1 -1
  80. package/package.json +6 -5
  81. package/patches/matrix-crdt+0.2.1-alpha.1.patch +108 -0
@@ -0,0 +1,114 @@
1
+ import * as Y from "yjs";
2
+ export function buildIndexItem(definition, roomDescriptor, doc) {
3
+ const values = {};
4
+ for (const [columnName, column] of Object.entries(definition.columns)) {
5
+ values[columnName] =
6
+ column.source.kind === "system"
7
+ ? readSystemColumnValue(roomDescriptor, column.source.field)
8
+ : readYTextValue(doc, column.source.path);
9
+ }
10
+ return {
11
+ roomId: roomDescriptor.roomId,
12
+ values,
13
+ };
14
+ }
15
+ export function readQueryRows(rowsMap, where) {
16
+ return Array.from(rowsMap.values())
17
+ .map((value) => parseItem(value))
18
+ .filter((item) => item != null)
19
+ .filter((item) => matchesWhere(item, where));
20
+ }
21
+ export function pageRows(rows, limit, afterRoomId) {
22
+ let startIndex = 0;
23
+ if (afterRoomId) {
24
+ const afterIndex = rows.findIndex((item) => item.roomId === afterRoomId);
25
+ startIndex = afterIndex >= 0 ? afterIndex + 1 : 0;
26
+ }
27
+ const items = rows.slice(startIndex, startIndex + limit);
28
+ const hasMore = startIndex + limit < rows.length;
29
+ return { items, hasMore };
30
+ }
31
+ export function compareIndexItems(left, right, orderBy) {
32
+ const leftValue = left.values[orderBy.column] ?? null;
33
+ const rightValue = right.values[orderBy.column] ?? null;
34
+ const direction = orderBy.direction === "asc" ? 1 : -1;
35
+ const base = comparePrimitive(leftValue, rightValue) * direction;
36
+ if (base !== 0)
37
+ return base;
38
+ return left.roomId.localeCompare(right.roomId);
39
+ }
40
+ function readSystemColumnValue(roomDescriptor, field) {
41
+ switch (field) {
42
+ case "roomId":
43
+ return roomDescriptor.roomId;
44
+ case "roomName":
45
+ return roomDescriptor.roomName;
46
+ case "roomType":
47
+ return roomDescriptor.roomType;
48
+ case "joinedAt":
49
+ return roomDescriptor.joinedAt;
50
+ case "lastActivityAt":
51
+ return roomDescriptor.lastActivityAt;
52
+ }
53
+ }
54
+ function readYTextValue(doc, path) {
55
+ const parts = path.split(".").filter(Boolean);
56
+ if (parts.length === 0)
57
+ return null;
58
+ let current = doc.share.get(parts[0]);
59
+ for (const part of parts.slice(1)) {
60
+ if (current instanceof Y.Map) {
61
+ current = current.get(part);
62
+ continue;
63
+ }
64
+ if (current instanceof Y.Array) {
65
+ const index = Number.parseInt(part, 10);
66
+ if (!Number.isFinite(index))
67
+ return null;
68
+ current = current.get(index);
69
+ continue;
70
+ }
71
+ return null;
72
+ }
73
+ if (current instanceof Y.Text) {
74
+ return current.toString();
75
+ }
76
+ return null;
77
+ }
78
+ function parseItem(encoded) {
79
+ try {
80
+ const parsed = JSON.parse(encoded);
81
+ if (!parsed || typeof parsed.roomId !== "string")
82
+ return null;
83
+ if (!parsed.values || typeof parsed.values !== "object")
84
+ return null;
85
+ return parsed;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ }
91
+ function matchesWhere(item, where) {
92
+ for (const [column, value] of Object.entries(where)) {
93
+ if (item.values[column] !== value) {
94
+ return false;
95
+ }
96
+ }
97
+ return true;
98
+ }
99
+ function comparePrimitive(left, right) {
100
+ if (left === right)
101
+ return 0;
102
+ if (left === null)
103
+ return -1;
104
+ if (right === null)
105
+ return 1;
106
+ if (typeof left === "number" && typeof right === "number") {
107
+ return left - right;
108
+ }
109
+ if (typeof left === "boolean" && typeof right === "boolean") {
110
+ return Number(left) - Number(right);
111
+ }
112
+ return String(left).localeCompare(String(right));
113
+ }
114
+ //# sourceMappingURL=indexingRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexingRows.js","sourceRoot":"","sources":["../src/indexingRows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type RoomDescriptor = {
2
+ roomId: string;
3
+ roomName: string;
4
+ roomType: string;
5
+ ownerRoomId: string | null;
6
+ joinedAt: string;
7
+ lastActivityAt: string;
8
+ };
9
+ //# sourceMappingURL=indexingTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexingTypes.d.ts","sourceRoot":"","sources":["../src/indexingTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=indexingTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexingTypes.js","sourceRoot":"","sources":["../src/indexingTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare const ROOM_TYPE_TEXT_KEY = "__maydb.roomType";
2
+ export declare const ROOM_METADATA_TX_ORIGIN = "maydb:metadata";
3
+ //# sourceMappingURL=roomMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roomMetadata.d.ts","sourceRoot":"","sources":["../src/roomMetadata.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,uBAAuB,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const ROOM_TYPE_TEXT_KEY = "__maydb.roomType";
2
+ export const ROOM_METADATA_TX_ORIGIN = "maydb:metadata";
3
+ //# sourceMappingURL=roomMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roomMetadata.js","sourceRoot":"","sources":["../src/roomMetadata.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type * as sdk from "matrix-js-sdk";
2
+ import type { Doc } from "yjs";
2
3
  export interface Session {
3
4
  homeserver: string;
4
5
  accessToken: string;
@@ -11,16 +12,64 @@ export interface RoomMember {
11
12
  displayName: string;
12
13
  accessLevel: AccessLevel;
13
14
  }
14
- export interface InviteInfo {
15
+ export type MayDbIndexScope = "private" | "collaborative";
16
+ export type MayDbIndexPrimitive = string | number | boolean | null;
17
+ export interface MayDbIndexOrderBy {
18
+ column: string;
19
+ direction: "asc" | "desc";
20
+ }
21
+ export interface MayDbIndexColumnSystemSource {
22
+ kind: "system";
23
+ field: "roomId" | "roomName" | "roomType";
24
+ }
25
+ export interface MayDbIndexColumnYTextSource {
26
+ kind: "ytext";
27
+ path: string;
28
+ }
29
+ export type MayDbIndexColumnSource = MayDbIndexColumnSystemSource | MayDbIndexColumnYTextSource;
30
+ export interface MayDbIndexColumnDefinition {
31
+ source: MayDbIndexColumnSource;
32
+ }
33
+ export interface MayDbCollaborativeIndexResolverInput {
15
34
  roomId: string;
16
35
  roomName: string;
17
- inviter: string;
18
- alias: string | null;
36
+ roomType: string;
37
+ doc: Doc;
38
+ }
39
+ export type MayDbCollaborativeIndexResolver = (input: MayDbCollaborativeIndexResolverInput) => string | string[] | null | undefined;
40
+ export interface MayDbIndexDefinition {
41
+ scope: MayDbIndexScope;
42
+ roomTypes: string[];
43
+ columns: Record<string, MayDbIndexColumnDefinition>;
44
+ defaultOrderBy: MayDbIndexOrderBy;
45
+ maxEntries: number;
46
+ resolveIndexRoomIds?: MayDbCollaborativeIndexResolver;
47
+ }
48
+ export interface MayDbSchema {
49
+ roomTypes: Record<string, object>;
50
+ indexes: Record<string, MayDbIndexDefinition>;
51
+ }
52
+ export interface MayDbIndexItem {
53
+ roomId: string;
54
+ values: Record<string, MayDbIndexPrimitive>;
55
+ }
56
+ export interface MayDbIndexQueryPageOptions {
57
+ where: Record<string, MayDbIndexPrimitive>;
58
+ orderBy: MayDbIndexOrderBy;
59
+ limit: number;
60
+ after: MayDbIndexItem | null;
61
+ }
62
+ export interface MayDbIndexQueryPageResult {
63
+ items: MayDbIndexItem[];
64
+ hasMore: boolean;
19
65
  }
20
- export interface InviteMonitorOptions {
21
- shouldJoin?: (invite: InviteInfo) => boolean;
22
- onJoined: (invite: InviteInfo) => void | Promise<void>;
23
- pollIntervalMs?: number;
66
+ export interface MayDbIndexHandle {
67
+ readonly indexName: string;
68
+ readonly indexRoomId: string | null;
69
+ activate(): () => void;
70
+ ensureReady(): Promise<void>;
71
+ queryPage(options: MayDbIndexQueryPageOptions): Promise<MayDbIndexQueryPageResult>;
72
+ subscribe(listener: () => void): () => void;
24
73
  }
25
74
  export type RoomStatus = "disconnected" | "connecting" | "connected" | "error";
26
75
  export interface RoomState {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,eAAe,CAAC;AAE1C,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAE/E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@may-db/core",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -12,17 +12,18 @@
12
12
  }
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ "patches"
16
17
  ],
17
18
  "dependencies": {
18
- "matrix-crdt": "^0.2.1-alpha.1",
19
- "matrix-js-sdk": "^40.2.0-rc.0",
19
+ "matrix-crdt": "0.2.1-alpha.1",
20
+ "matrix-js-sdk": "40.2.0",
21
+ "patch-package": "^8.0.1",
20
22
  "y-protocols": "^1.0.7",
21
23
  "yjs": "^13.6.29"
22
24
  },
23
25
  "devDependencies": {
24
26
  "eslint": "^9.39.1",
25
- "patch-package": "^8.0.1",
26
27
  "typescript": "~5.9.3"
27
28
  },
28
29
  "scripts": {
@@ -0,0 +1,108 @@
1
+ diff --git a/node_modules/matrix-crdt/dist/matrix-crdt.js b/node_modules/matrix-crdt/dist/matrix-crdt.js
2
+ index fa2af44..5572668 100644
3
+ --- a/node_modules/matrix-crdt/dist/matrix-crdt.js
4
+ +++ b/node_modules/matrix-crdt/dist/matrix-crdt.js
5
+ @@ -4,8 +4,36 @@ var c = (e, s, t) => (Pt(e, typeof s != "symbol" ? s + "" : s, t), t);
6
+ import { lifecycle as ae, event as A } from "vscode-lib";
7
+ import * as b from "yjs";
8
+ import Lt from "another-json";
9
+ -import { RoomEvent as Be, MatrixEvent as Dt, Method as jt, Direction as Bt } from "matrix-js-sdk";
10
+ -import Ft from "simple-peer";
11
+ +import { RoomEvent as Be } from "matrix-js-sdk/lib/models/room.js";
12
+ +import { MatrixEvent as Dt } from "matrix-js-sdk/lib/models/event.js";
13
+ +import { Method as jt } from "matrix-js-sdk/lib/http-api/method.js";
14
+ +import { Direction as Bt } from "matrix-js-sdk/lib/models/event-timeline.js";
15
+ +const Ft = typeof globalThis < "u" ? globalThis.SimplePeer : void 0;
16
+ +function LtEncodeBase64(e) {
17
+ + const s = e instanceof Uint8Array ? e : new Uint8Array(e);
18
+ + if (typeof btoa == "function") {
19
+ + let t = "";
20
+ + for (let n = 0; n < s.byteLength; n++)
21
+ + t += String.fromCharCode(s[n]);
22
+ + return btoa(t);
23
+ + }
24
+ + if (typeof Buffer < "u")
25
+ + return Buffer.from(s.buffer, s.byteOffset, s.byteLength).toString("base64");
26
+ + throw new Error("No base64 encoder available in this environment");
27
+ +}
28
+ +function LtDecodeBase64(e) {
29
+ + if (typeof atob == "function") {
30
+ + const s = atob(e), t = new Uint8Array(s.length);
31
+ + for (let n = 0; n < s.length; n++)
32
+ + t[n] = s.charCodeAt(n);
33
+ + return t;
34
+ + }
35
+ + if (typeof Buffer < "u") {
36
+ + const s = Buffer.from(e, "base64");
37
+ + return new Uint8Array(s.buffer, s.byteOffset, s.byteLength);
38
+ + }
39
+ + throw new Error("No base64 decoder available in this environment");
40
+ +}
41
+ async function Nt(e, s, t, n, r) {
42
+ const o = "ed25519:" + n, l = ((s.signatures || {})[t] || {})[o];
43
+ if (!l)
44
+ @@ -16,10 +44,10 @@ async function Nt(e, s, t, n, r) {
45
+ e.verifySignature(r, d, l);
46
+ }
47
+ function be(e) {
48
+ - return Buffer.from(e).toString("base64");
49
+ + return LtEncodeBase64(e);
50
+ }
51
+ function ot(e) {
52
+ - return Buffer.from(e, "base64");
53
+ + return LtDecodeBase64(e);
54
+ }
55
+ async function Wt(e, s) {
56
+ await e.crypto.signObject(s);
57
+ @@ -177,7 +205,6 @@ class Ht extends ae.Disposable {
58
+ if (!this.disposed)
59
+ try {
60
+ this.pendingPollRequest = this.matrixClient.http.authedRequest(
61
+ - void 0,
62
+ jt.Get,
63
+ "/events",
64
+ {
65
+ @@ -185,7 +212,7 @@ class Ht extends ae.Disposable {
66
+ timeout: Fe + "",
67
+ from: this.latestToken
68
+ },
69
+ - void 0,
70
+ + undefined,
71
+ { localTimeoutMs: Fe * 2 }
72
+ );
73
+ const t = await this.pendingPollRequest;
74
+ @@ -380,15 +407,7 @@ const g = () => new ds(), us = (e) => {
75
+ for (let t = 0; t < e.byteLength; t++)
76
+ s += qt(e[t]);
77
+ return btoa(s);
78
+ -}, _s = (e) => Buffer.from(e.buffer, e.byteOffset, e.byteLength).toString("base64"), Ts = (e) => {
79
+ - const s = atob(e), t = vs(s.length);
80
+ - for (let n = 0; n < s.length; n++)
81
+ - t[n] = s.charCodeAt(n);
82
+ - return t;
83
+ -}, Cs = (e) => {
84
+ - const s = Buffer.from(e, "base64");
85
+ - return new Uint8Array(s.buffer, s.byteOffset, s.byteLength);
86
+ -}, gt = ht ? Ss : _s, mt = ht ? Ts : Cs;
87
+ +}, _s = (e) => LtEncodeBase64(new Uint8Array(e.buffer, e.byteOffset, e.byteLength)), Ts = (e) => LtDecodeBase64(e), Cs = (e) => LtDecodeBase64(e), gt = ht ? Ss : _s, mt = ht ? Ts : Cs;
88
+ class Us {
89
+ constructor(s) {
90
+ this.arr = s, this.pos = 0;
91
+ @@ -974,6 +993,8 @@ class Ye {
92
+ c(this, "connected", !1);
93
+ c(this, "synced", !1);
94
+ c(this, "peer");
95
+ + if (!Ft)
96
+ + throw new Error("matrix-crdt: experimental WebRTC sync requires globalThis.SimplePeer");
97
+ this.remotePeerId = n, this.room = r, j("establishing connection to ", T, n), this.peer = new Ft({ initiator: t, ...r.provider.peerOpts }), this.peer.on("signal", (o) => {
98
+ s.publishSignalingMessage(r, {
99
+ to: n,
100
+ @@ -1370,7 +1391,7 @@ function Cr(e, s, t) {
101
+ }
102
+ var Ur = Cr;
103
+ const Ir = {
104
+ - flushInterval: process.env.NODE_ENV === "test" ? 100 : 100 * 5,
105
+ + flushInterval: typeof process < "u" && process.env && process.env.NODE_ENV === "test" ? 100 : 100 * 5,
106
+ retryIfForbiddenInterval: 1e3 * 30
107
+ };
108
+ class xr extends ae.Disposable {