@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.
- package/README.md +210 -0
- package/dist/IndexRuntime.d.ts +60 -0
- package/dist/IndexRuntime.d.ts.map +1 -0
- package/dist/IndexRuntime.js +340 -0
- package/dist/IndexRuntime.js.map +1 -0
- package/dist/MayDb.d.ts +45 -9
- package/dist/MayDb.d.ts.map +1 -1
- package/dist/MayDb.js +251 -85
- package/dist/MayDb.js.map +1 -1
- package/dist/Room.d.ts +40 -57
- package/dist/Room.d.ts.map +1 -1
- package/dist/Room.js +212 -232
- package/dist/Room.js.map +1 -1
- package/dist/RuntimeIndexHandle.d.ts +29 -0
- package/dist/RuntimeIndexHandle.d.ts.map +1 -0
- package/dist/RuntimeIndexHandle.js +48 -0
- package/dist/RuntimeIndexHandle.js.map +1 -0
- package/dist/authStorage.d.ts +7 -7
- package/dist/authStorage.d.ts.map +1 -1
- package/dist/authStorage.js +8 -8
- package/dist/authStorage.js.map +1 -1
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +15 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/indexing/collaborativeSync.d.ts +25 -0
- package/dist/indexing/collaborativeSync.d.ts.map +1 -0
- package/dist/indexing/collaborativeSync.js +56 -0
- package/dist/indexing/collaborativeSync.js.map +1 -0
- package/dist/indexing/descriptor.d.ts +6 -0
- package/dist/indexing/descriptor.d.ts.map +1 -0
- package/dist/indexing/descriptor.js +2 -0
- package/dist/indexing/descriptor.js.map +1 -0
- package/dist/indexing/errors.d.ts +9 -0
- package/dist/indexing/errors.d.ts.map +1 -0
- package/dist/indexing/errors.js +11 -0
- package/dist/indexing/errors.js.map +1 -0
- package/dist/indexing/handle.d.ts +29 -0
- package/dist/indexing/handle.d.ts.map +1 -0
- package/dist/indexing/handle.js +48 -0
- package/dist/indexing/handle.js.map +1 -0
- package/dist/indexing/indexRoomStore.d.ts +18 -0
- package/dist/indexing/indexRoomStore.d.ts.map +1 -0
- package/dist/indexing/indexRoomStore.js +71 -0
- package/dist/indexing/indexRoomStore.js.map +1 -0
- package/dist/indexing/roomRegistry.d.ts +26 -0
- package/dist/indexing/roomRegistry.d.ts.map +1 -0
- package/dist/indexing/roomRegistry.js +125 -0
- package/dist/indexing/roomRegistry.js.map +1 -0
- package/dist/indexing/rows.d.ts +8 -0
- package/dist/indexing/rows.d.ts.map +1 -0
- package/dist/indexing/rows.js +86 -0
- package/dist/indexing/rows.js.map +1 -0
- package/dist/indexing/runtime.d.ts +61 -0
- package/dist/indexing/runtime.d.ts.map +1 -0
- package/dist/indexing/runtime.js +378 -0
- package/dist/indexing/runtime.js.map +1 -0
- package/dist/indexing.d.ts +93 -0
- package/dist/indexing.d.ts.map +1 -0
- package/dist/indexing.js +394 -0
- package/dist/indexing.js.map +1 -0
- package/dist/indexingErrors.d.ts +9 -0
- package/dist/indexingErrors.d.ts.map +1 -0
- package/dist/indexingErrors.js +11 -0
- package/dist/indexingErrors.js.map +1 -0
- package/dist/indexingRoomStore.d.ts +26 -0
- package/dist/indexingRoomStore.d.ts.map +1 -0
- package/dist/indexingRoomStore.js +125 -0
- package/dist/indexingRoomStore.js.map +1 -0
- package/dist/indexingRows.d.ts +8 -0
- package/dist/indexingRows.d.ts.map +1 -0
- package/dist/indexingRows.js +114 -0
- package/dist/indexingRows.js.map +1 -0
- package/dist/indexingTypes.d.ts +9 -0
- package/dist/indexingTypes.d.ts.map +1 -0
- package/dist/indexingTypes.js +2 -0
- package/dist/indexingTypes.js.map +1 -0
- package/dist/loginFlow.d.ts +10 -3
- package/dist/loginFlow.d.ts.map +1 -1
- package/dist/loginFlow.js +19 -14
- package/dist/loginFlow.js.map +1 -1
- package/dist/matrix-crdt-shim.d.ts +43 -0
- package/dist/matrix-crdt-shim.d.ts.map +1 -0
- package/dist/matrix-crdt-shim.js +2 -0
- package/dist/matrix-crdt-shim.js.map +1 -0
- package/dist/roomMetadata.d.ts +3 -0
- package/dist/roomMetadata.d.ts.map +1 -0
- package/dist/roomMetadata.js +3 -0
- package/dist/roomMetadata.js.map +1 -0
- package/dist/singletonRoom.d.ts.map +1 -1
- package/dist/singletonRoom.js +5 -36
- package/dist/singletonRoom.js.map +1 -1
- package/dist/types.d.ts +63 -13
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -5
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"indexingTypes.js","sourceRoot":"","sources":["../src/indexingTypes.ts"],"names":[],"mappings":""}
|
package/dist/loginFlow.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
1
|
+
import { getStoredSession, clearStoredSession } from "./authStorage";
|
|
2
|
+
import type { Session } from "./types";
|
|
3
|
+
export declare function startSsoLogin(): void;
|
|
4
|
+
export declare function completeSsoLogin(): Promise<Session | null>;
|
|
5
|
+
export declare const Auth: {
|
|
6
|
+
startSsoLogin: typeof startSsoLogin;
|
|
7
|
+
completeSsoLogin: typeof completeSsoLogin;
|
|
8
|
+
getStoredSession: typeof getStoredSession;
|
|
9
|
+
clearStoredSession: typeof clearStoredSession;
|
|
10
|
+
};
|
|
4
11
|
//# sourceMappingURL=loginFlow.d.ts.map
|
package/dist/loginFlow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginFlow.d.ts","sourceRoot":"","sources":["../src/loginFlow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loginFlow.d.ts","sourceRoot":"","sources":["../src/loginFlow.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAiCvC,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAoBhE;AAED,eAAO,MAAM,IAAI;;;;;CAKhB,CAAC"}
|
package/dist/loginFlow.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export function startLogin() {
|
|
3
|
-
// For now, just login with matrix.org all the time. Later, findhomeserver.com will make this good.
|
|
4
|
-
const homeserver = "https://matrix.org";
|
|
5
|
-
saveHomeserver(homeserver);
|
|
6
|
-
const redirectUrl = encodeURIComponent(window.location.origin + window.location.pathname);
|
|
7
|
-
window.location.href = `${homeserver}/_matrix/client/v3/login/sso/redirect?redirectUrl=${redirectUrl}`;
|
|
8
|
-
}
|
|
1
|
+
import { saveStoredSession, saveStoredHomeserver, getStoredHomeserver, clearStoredHomeserver, getStoredSession, clearStoredSession, } from "./authStorage";
|
|
9
2
|
async function exchangeLoginToken(homeserver, loginToken) {
|
|
10
3
|
const response = await fetch(`${homeserver}/_matrix/client/v3/login`, {
|
|
11
4
|
method: "POST",
|
|
@@ -29,20 +22,32 @@ async function exchangeLoginToken(homeserver, loginToken) {
|
|
|
29
22
|
deviceId: data.device_id,
|
|
30
23
|
};
|
|
31
24
|
}
|
|
32
|
-
export
|
|
25
|
+
export function startSsoLogin() {
|
|
26
|
+
const homeserver = "https://matrix.org";
|
|
27
|
+
saveStoredHomeserver(homeserver);
|
|
28
|
+
const redirectUrl = encodeURIComponent(window.location.origin + window.location.pathname);
|
|
29
|
+
window.location.href = `${homeserver}/_matrix/client/v3/login/sso/redirect?redirectUrl=${redirectUrl}`;
|
|
30
|
+
}
|
|
31
|
+
export async function completeSsoLogin() {
|
|
33
32
|
const params = new URLSearchParams(window.location.search);
|
|
34
33
|
const loginToken = params.get("loginToken");
|
|
35
34
|
if (!loginToken) {
|
|
36
35
|
return null;
|
|
37
36
|
}
|
|
38
37
|
window.history.replaceState({}, document.title, window.location.pathname);
|
|
39
|
-
const homeserver =
|
|
38
|
+
const homeserver = getStoredHomeserver();
|
|
40
39
|
if (!homeserver) {
|
|
41
40
|
throw new Error("No homeserver stored for SSO callback");
|
|
42
41
|
}
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return
|
|
42
|
+
const session = await exchangeLoginToken(homeserver, loginToken);
|
|
43
|
+
saveStoredSession(session);
|
|
44
|
+
clearStoredHomeserver();
|
|
45
|
+
return session;
|
|
47
46
|
}
|
|
47
|
+
export const Auth = {
|
|
48
|
+
startSsoLogin,
|
|
49
|
+
completeSsoLogin,
|
|
50
|
+
getStoredSession,
|
|
51
|
+
clearStoredSession,
|
|
52
|
+
};
|
|
48
53
|
//# sourceMappingURL=loginFlow.js.map
|
package/dist/loginFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginFlow.js","sourceRoot":"","sources":["../src/loginFlow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"loginFlow.js","sourceRoot":"","sources":["../src/loginFlow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAGvB,KAAK,UAAU,kBAAkB,CAC/B,UAAkB,EAClB,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,0BAA0B,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,UAAU;SAClB,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GACR,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExB,OAAO;QACL,UAAU;QACV,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,MAAM,EAAE,IAAI,CAAC,OAAO;QACpB,QAAQ,EAAE,IAAI,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,UAAU,GAAG,oBAAoB,CAAC;IACxC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEjC,MAAM,WAAW,GAAG,kBAAkB,CACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAClD,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,UAAU,qDAAqD,WAAW,EAAE,CAAC;AACzG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE1E,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACjE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3B,qBAAqB,EAAE,CAAC;IAExB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;CACnB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { MatrixClient } from "matrix-js-sdk";
|
|
2
|
+
import type { Awareness } from "y-protocols/awareness";
|
|
3
|
+
import type { Doc } from "yjs";
|
|
4
|
+
declare module "matrix-crdt" {
|
|
5
|
+
interface MatrixProviderOptions {
|
|
6
|
+
writer?: {
|
|
7
|
+
flushInterval?: number;
|
|
8
|
+
retryIfForbiddenInterval?: number;
|
|
9
|
+
};
|
|
10
|
+
translator?: {
|
|
11
|
+
updatesAsRegularMessages?: boolean;
|
|
12
|
+
updateEventType?: string;
|
|
13
|
+
snapshotEventType?: string;
|
|
14
|
+
};
|
|
15
|
+
reader?: {
|
|
16
|
+
snapshotInterval?: number;
|
|
17
|
+
};
|
|
18
|
+
enableExperimentalWebrtcSync?: boolean;
|
|
19
|
+
}
|
|
20
|
+
type RoomConfig = {
|
|
21
|
+
type: "id";
|
|
22
|
+
id: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: "alias";
|
|
25
|
+
alias: string;
|
|
26
|
+
};
|
|
27
|
+
type Event<T> = (listener: (e: T) => void) => {
|
|
28
|
+
dispose(): void;
|
|
29
|
+
};
|
|
30
|
+
class MatrixProvider {
|
|
31
|
+
constructor(doc: Doc, matrixClient: MatrixClient, room: RoomConfig, awareness?: Awareness, opts?: MatrixProviderOptions);
|
|
32
|
+
initialize(): void;
|
|
33
|
+
dispose(): void;
|
|
34
|
+
readonly canWrite: boolean;
|
|
35
|
+
readonly roomId: string | undefined;
|
|
36
|
+
onDocumentAvailable: Event<void>;
|
|
37
|
+
onDocumentUnavailable: Event<void>;
|
|
38
|
+
onReceivedEvents: Event<void>;
|
|
39
|
+
onCanWriteChanged: Event<void>;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=matrix-crdt-shim.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-crdt-shim.d.ts","sourceRoot":"","sources":["../src/matrix-crdt-shim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAiB,qBAAqB;QACpC,MAAM,CAAC,EAAE;YACP,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;SACnC,CAAC;QACF,UAAU,CAAC,EAAE;YACX,wBAAwB,CAAC,EAAE,OAAO,CAAC;YACnC,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;QACF,MAAM,CAAC,EAAE;YACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;QACF,4BAA4B,CAAC,EAAE,OAAO,CAAC;KACxC;IAED,KAAY,UAAU,GAClB;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAC1B;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAErC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK;QAAE,OAAO,IAAI,IAAI,CAAA;KAAE,CAAC;IAElE,MAAa,cAAc;oBAEvB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,SAAS,EACrB,IAAI,CAAC,EAAE,qBAAqB;QAG9B,UAAU,IAAI,IAAI;QAClB,OAAO,IAAI,IAAI;QAEf,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAEpC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,qBAAqB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KAChC;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-crdt-shim.js","sourceRoot":"","sources":["../src/matrix-crdt-shim.ts"],"names":[],"mappings":"AAiDA,OAAO,EAAE,CAAC"}
|
|
@@ -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 @@
|
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singletonRoom.d.ts","sourceRoot":"","sources":["../src/singletonRoom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,KAAK,EACT,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"singletonRoom.d.ts","sourceRoot":"","sources":["../src/singletonRoom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,KAAK,EACT,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|
package/dist/singletonRoom.js
CHANGED
|
@@ -1,39 +1,8 @@
|
|
|
1
1
|
export async function getOrCreateSingletonRoomId(db, accountDataKey, roomName) {
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
try {
|
|
8
|
-
const accountData = (await matrixClient.getAccountDataFromServer(namespace));
|
|
9
|
-
roomId = accountData?.[accountDataKey] ?? null;
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
// No account data yet
|
|
13
|
-
}
|
|
14
|
-
if (roomId) {
|
|
15
|
-
try {
|
|
16
|
-
if (!matrixClient.getRoom(roomId)) {
|
|
17
|
-
await matrixClient.joinRoom(roomId);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
// Room not accessible, create a new one
|
|
22
|
-
roomId = null;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (!roomId) {
|
|
26
|
-
roomId = await db.createMatrixRoom(roomName);
|
|
27
|
-
let existingData = {};
|
|
28
|
-
try {
|
|
29
|
-
existingData =
|
|
30
|
-
(await matrixClient.getAccountDataFromServer(namespace)) || {};
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
// No existing data
|
|
34
|
-
}
|
|
35
|
-
await matrixClient.setAccountData(namespace, { ...existingData, [accountDataKey]: roomId });
|
|
36
|
-
}
|
|
37
|
-
return roomId;
|
|
2
|
+
const room = await db.rooms.getOrCreateSingleton({
|
|
3
|
+
key: accountDataKey,
|
|
4
|
+
name: roomName,
|
|
5
|
+
});
|
|
6
|
+
return room.id;
|
|
38
7
|
}
|
|
39
8
|
//# sourceMappingURL=singletonRoom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singletonRoom.js","sourceRoot":"","sources":["../src/singletonRoom.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,EAAS,EACT,cAAsB,EACtB,QAAgB;IAEhB,MAAM,
|
|
1
|
+
{"version":3,"file":"singletonRoom.js","sourceRoot":"","sources":["../src/singletonRoom.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,EAAS,EACT,cAAsB,EACtB,QAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC/C,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,35 +1,85 @@
|
|
|
1
1
|
import type * as sdk from "matrix-js-sdk";
|
|
2
|
-
|
|
2
|
+
import type { Doc } from "yjs";
|
|
3
|
+
export interface Session {
|
|
3
4
|
homeserver: string;
|
|
4
5
|
accessToken: string;
|
|
5
6
|
userId: string;
|
|
6
7
|
deviceId: string;
|
|
7
8
|
}
|
|
8
|
-
export type AccessLevel = "
|
|
9
|
+
export type AccessLevel = "viewer" | "editor" | "owner";
|
|
9
10
|
export interface RoomMember {
|
|
10
11
|
userId: string;
|
|
11
12
|
displayName: string;
|
|
12
13
|
accessLevel: AccessLevel;
|
|
13
14
|
}
|
|
14
|
-
export
|
|
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
|
-
|
|
18
|
-
|
|
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
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
export interface
|
|
27
|
-
|
|
75
|
+
export interface RoomState {
|
|
76
|
+
status: RoomStatus;
|
|
77
|
+
canEdit: boolean;
|
|
78
|
+
name: string | null;
|
|
28
79
|
}
|
|
29
80
|
export type MatrixClient = sdk.MatrixClient;
|
|
30
81
|
/**
|
|
31
|
-
* Interface for what a
|
|
32
|
-
* This allows Room to work with different client implementations.
|
|
82
|
+
* Interface for what a room instance needs from its host client.
|
|
33
83
|
*/
|
|
34
84
|
export interface RoomServices {
|
|
35
85
|
matrixClient: MatrixClient;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,eAAe,CAAC;
|
|
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.
|
|
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": "
|
|
19
|
-
"matrix-js-sdk": "
|
|
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 {
|