@multiplatform.one/frappe 6.6.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/common/types.native.js.map +1 -1
- package/dist/cjs/core/http.cjs +45 -1
- package/dist/cjs/core/http.native.js +72 -1
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/core/types.native.js.map +1 -1
- package/dist/cjs/core/wire.native.js.map +1 -1
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/cjs/devtools/index.native.js.map +1 -1
- package/dist/cjs/devtools/plugin.native.js.map +1 -1
- package/dist/cjs/devtools/theme.native.js.map +1 -1
- package/dist/cjs/doctype.cjs +15 -2
- package/dist/cjs/doctype.native.js +22 -5
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/fixtures.native.js.map +1 -1
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +55 -1
- package/dist/cjs/frappeReact.native.js +67 -2
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +8 -0
- package/dist/cjs/index.native.js +10 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/optimistic.cjs +32 -2
- package/dist/cjs/optimistic.native.js +34 -1
- package/dist/cjs/optimistic.native.js.map +1 -1
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/plugin/index.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +234 -11
- package/dist/cjs/realtime.native.js +368 -18
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/filters.native.js.map +1 -1
- package/dist/cjs/sync/index.cjs +45 -1
- package/dist/cjs/sync/index.native.js +71 -1
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.cjs +51 -15
- package/dist/cjs/sync/mutationEngine.native.js +69 -16
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.cjs +8 -0
- package/dist/cjs/sync/mutationJournal.native.js +10 -0
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.native.js.map +1 -1
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.native.js +1 -1
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/common/types.native.js.map +1 -1
- package/dist/esm/core/http.mjs +45 -2
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +74 -4
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/core/types.native.js.map +1 -1
- package/dist/esm/core/wire.native.js.map +1 -1
- package/dist/esm/db.native.js +1 -1
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js +2 -2
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/esm/devtools/index.native.js +2 -2
- package/dist/esm/devtools/index.native.js.map +1 -1
- package/dist/esm/devtools/plugin.native.js +1 -1
- package/dist/esm/devtools/plugin.native.js.map +1 -1
- package/dist/esm/devtools/theme.native.js.map +1 -1
- package/dist/esm/doctype.mjs +15 -2
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +23 -6
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.native.js +1 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/fixtures.native.js.map +1 -1
- package/dist/esm/frappeApp.native.js +7 -7
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +55 -3
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +73 -10
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +22 -22
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/optimistic.mjs +27 -1
- package/dist/esm/optimistic.mjs.map +1 -1
- package/dist/esm/optimistic.native.js +30 -1
- package/dist/esm/optimistic.native.js.map +1 -1
- package/dist/esm/pacer.mjs.map +1 -1
- package/dist/esm/pacer.native.js +4 -4
- package/dist/esm/pacer.native.js.map +1 -1
- package/dist/esm/plugin/index.native.js.map +1 -1
- package/dist/esm/realtime.mjs +234 -11
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +369 -19
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.native.js +1 -1
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/filters.native.js.map +1 -1
- package/dist/esm/sync/index.mjs +45 -1
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +79 -9
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.mjs +51 -15
- package/dist/esm/sync/mutationEngine.mjs.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +73 -20
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.mjs +8 -0
- package/dist/esm/sync/mutationJournal.mjs.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +11 -1
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.native.js +2 -2
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.native.js +1 -1
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.native.js +1 -1
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +4 -4
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.mjs.map +1 -1
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +1 -1
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.native.js.map +1 -1
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +45 -2
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +72 -1
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +15 -2
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +22 -5
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +55 -3
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +66 -1
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +5 -5
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -5
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +8 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/optimistic.mjs +27 -1
- package/dist/jsx/optimistic.mjs.map +1 -1
- package/dist/jsx/optimistic.native.js +34 -1
- package/dist/jsx/optimistic.native.js.map +1 -1
- package/dist/jsx/pacer.mjs.map +1 -1
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +234 -11
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +368 -18
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +45 -1
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +71 -1
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.mjs +51 -15
- package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js +69 -16
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.mjs +8 -0
- package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js +10 -0
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/types.mjs.map +1 -1
- package/dist/jsx/sync/types.native.js.map +1 -1
- package/package.json +8 -8
- package/src/core/http.spec.ts +81 -0
- package/src/core/http.ts +80 -3
- package/src/doctype.spec.ts +82 -3
- package/src/doctype.ts +51 -7
- package/src/frappeReact.ts +126 -4
- package/src/index.ts +28 -3
- package/src/optimistic.spec.ts +113 -2
- package/src/optimistic.ts +95 -0
- package/src/pacer.ts +8 -0
- package/src/realtime.spec.ts +62 -0
- package/src/realtime.ts +440 -14
- package/src/realtimeSse.spec.ts +547 -0
- package/src/sync/index.ts +44 -1
- package/src/sync/mutationEngine.spec.ts +7 -2
- package/src/sync/mutationEngine.ts +83 -27
- package/src/sync/mutationJournal.ts +9 -0
- package/src/sync/mutations.spec.ts +1 -1
- package/src/sync/syncModule.spec.ts +255 -1
- package/src/sync/types.ts +20 -0
- package/types/core/http.d.ts +11 -0
- package/types/core/http.d.ts.map +1 -1
- package/types/doctype.d.ts +7 -0
- package/types/doctype.d.ts.map +1 -1
- package/types/frappeReact.d.ts +50 -2
- package/types/frappeReact.d.ts.map +1 -1
- package/types/index.d.ts +8 -6
- package/types/index.d.ts.map +1 -1
- package/types/optimistic.d.ts +38 -0
- package/types/optimistic.d.ts.map +1 -1
- package/types/pacer.d.ts +8 -0
- package/types/pacer.d.ts.map +1 -1
- package/types/realtime.d.ts +183 -1
- package/types/realtime.d.ts.map +1 -1
- package/types/sync/index.d.ts +16 -1
- package/types/sync/index.d.ts.map +1 -1
- package/types/sync/mutationEngine.d.ts +7 -0
- package/types/sync/mutationEngine.d.ts.map +1 -1
- package/types/sync/mutationJournal.d.ts +6 -0
- package/types/sync/mutationJournal.d.ts.map +1 -1
- package/types/sync/types.d.ts +20 -0
- package/types/sync/types.d.ts.map +1 -1
package/dist/jsx/realtime.mjs
CHANGED
|
@@ -12,11 +12,20 @@ function docRoomKey(doctype, name) {
|
|
|
12
12
|
}
|
|
13
13
|
class RealtimeModule {
|
|
14
14
|
socket;
|
|
15
|
+
/** Live EventSource when the `"sse"` transport is active. */
|
|
16
|
+
eventSource;
|
|
15
17
|
handlerMap = /* @__PURE__ */new Map();
|
|
16
18
|
/** Tracks events with socket listeners attached to prevent duplicates. */
|
|
17
19
|
attachedSocketEvents = /* @__PURE__ */new Set();
|
|
18
20
|
/** Stored socket event handler references for proper cleanup. */
|
|
19
21
|
socketEventHandlers = /* @__PURE__ */new Map();
|
|
22
|
+
/** Tracks SSE event types with listeners attached to prevent duplicates. */
|
|
23
|
+
attachedSseEvents = /* @__PURE__ */new Set();
|
|
24
|
+
/** Stored SSE listener references for proper cleanup. */
|
|
25
|
+
sseListeners = /* @__PURE__ */new Map();
|
|
26
|
+
/** One-shot debug notices for SSE's one-way limitations. */
|
|
27
|
+
sseRoomNoticeLogged = false;
|
|
28
|
+
sseEmitNoticeLogged = false;
|
|
20
29
|
/** Active doc rooms — re-emitted on every (re)connect. */
|
|
21
30
|
docRooms = /* @__PURE__ */new Map();
|
|
22
31
|
/** Active list rooms — re-emitted on every (re)connect. */
|
|
@@ -43,6 +52,18 @@ class RealtimeModule {
|
|
|
43
52
|
}
|
|
44
53
|
getSocketURL() {
|
|
45
54
|
const base = this.config.baseURL.replace(/\/$/, "");
|
|
55
|
+
if (this.config.socketBaseURL) {
|
|
56
|
+
const socketBase = this.config.socketBaseURL.replace(/\/$/, "");
|
|
57
|
+
let siteName = this.config.siteName;
|
|
58
|
+
if (!siteName) {
|
|
59
|
+
try {
|
|
60
|
+
siteName = new URL(base).hostname;
|
|
61
|
+
} catch {
|
|
62
|
+
siteName = base.replace(/^https?:\/\//, "").split(/[/:]/)[0];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return `${socketBase}/${siteName}`;
|
|
66
|
+
}
|
|
46
67
|
try {
|
|
47
68
|
const url = new URL(base);
|
|
48
69
|
const port = this.config.socketPort ? String(this.config.socketPort) : url.port;
|
|
@@ -131,8 +152,11 @@ class RealtimeModule {
|
|
|
131
152
|
for (const resolve of this.healthyWaiters) resolve(ok);
|
|
132
153
|
this.healthyWaiters.clear();
|
|
133
154
|
}
|
|
155
|
+
isSSE() {
|
|
156
|
+
return this.config.transport === "sse";
|
|
157
|
+
}
|
|
134
158
|
waitUntilHealthy(timeoutMs = 2e4) {
|
|
135
|
-
if (this.
|
|
159
|
+
if (this.isHealthy()) return Promise.resolve(true);
|
|
136
160
|
return new Promise(resolve => {
|
|
137
161
|
const timer = setTimeout(() => {
|
|
138
162
|
this.healthyWaiters.delete(onReady);
|
|
@@ -146,8 +170,8 @@ class RealtimeModule {
|
|
|
146
170
|
});
|
|
147
171
|
}
|
|
148
172
|
async ensureConnected() {
|
|
149
|
-
if (this.
|
|
150
|
-
if (!this.socket && !this.isConnecting) {
|
|
173
|
+
if (this.isHealthy()) return;
|
|
174
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) {
|
|
151
175
|
await this.connect();
|
|
152
176
|
}
|
|
153
177
|
await this.waitUntilHealthy();
|
|
@@ -161,7 +185,16 @@ class RealtimeModule {
|
|
|
161
185
|
this.socket.emit("doctype_subscribe", room.doctype);
|
|
162
186
|
}
|
|
163
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Open the realtime transport now. Room-driven auto-connect
|
|
190
|
+
* (subscribeDoc/subscribeList) remains the primary lifecycle in both
|
|
191
|
+
* transports — this is public for SSE consumers that use no doc/list room
|
|
192
|
+
* bookkeeping: a one-way stream has nothing to emit on join, so nothing
|
|
193
|
+
* else would ever open it. Idempotent while a transport exists or a
|
|
194
|
+
* connect is in flight.
|
|
195
|
+
*/
|
|
164
196
|
async connect() {
|
|
197
|
+
if (this.isSSE()) return this.connectSSE();
|
|
165
198
|
if (this.socket || this.isConnecting) return;
|
|
166
199
|
this.isConnecting = true;
|
|
167
200
|
try {
|
|
@@ -190,6 +223,153 @@ class RealtimeModule {
|
|
|
190
223
|
throw err;
|
|
191
224
|
}
|
|
192
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* SSE branch of connect(): construct an EventSource against the configured
|
|
228
|
+
* stream URL. EventSource connects at construction, auto-reconnects on
|
|
229
|
+
* failure, and resumes missed frames itself by sending the stream's last
|
|
230
|
+
* `id:` as the `Last-Event-ID` request header — none of that is
|
|
231
|
+
* reimplemented here.
|
|
232
|
+
*/
|
|
233
|
+
async connectSSE() {
|
|
234
|
+
if (this.eventSource || this.isConnecting) return;
|
|
235
|
+
this.isConnecting = true;
|
|
236
|
+
try {
|
|
237
|
+
const sse = this.config.sse;
|
|
238
|
+
const EventSourceCtor = sse?.EventSource ?? globalThis.EventSource;
|
|
239
|
+
if (!EventSourceCtor) {
|
|
240
|
+
throw new Error('[RealtimeModule] transport "sse" needs an EventSource implementation, and this runtime has no global EventSource (React Native and Node < 22 ship none). Pass a constructor via config.sse.EventSource \u2014 e.g. the "eventsource" npm package on Node or "react-native-sse" on React Native.');
|
|
241
|
+
}
|
|
242
|
+
const url = await this.buildSSEURL();
|
|
243
|
+
this.eventSource = new EventSourceCtor(url, {
|
|
244
|
+
withCredentials: sse?.withCredentials
|
|
245
|
+
});
|
|
246
|
+
this.initSSEHandlers();
|
|
247
|
+
} catch (err) {
|
|
248
|
+
this.isConnecting = false;
|
|
249
|
+
this.resolveHealthyWaiters(false);
|
|
250
|
+
throw err;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async buildSSEURL() {
|
|
254
|
+
const sse = this.config.sse;
|
|
255
|
+
let url;
|
|
256
|
+
if (sse?.url) {
|
|
257
|
+
url = sse.url;
|
|
258
|
+
} else if (sse?.path) {
|
|
259
|
+
const base = this.config.baseURL.replace(/\/$/, "");
|
|
260
|
+
url = `${base}${sse.path.startsWith("/") ? "" : "/"}${sse.path}`;
|
|
261
|
+
} else {
|
|
262
|
+
throw new Error('[RealtimeModule] transport "sse" requires config.sse.url or config.sse.path. There is no default stream path: SSE endpoints are server-specific (the SHC daemon serves "/api/method/shc.events.stream"; a real Frappe bench has no SSE endpoint at all), so a framework default would only ever 404.');
|
|
263
|
+
}
|
|
264
|
+
const params = Object.entries(this.config.sse?.queryParams ?? {});
|
|
265
|
+
if (params.length === 0) return url;
|
|
266
|
+
const parts = [];
|
|
267
|
+
for (const [key, value] of params) {
|
|
268
|
+
const resolved = typeof value === "function" ? await value() : value;
|
|
269
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(resolved)}`);
|
|
270
|
+
}
|
|
271
|
+
return `${url}${url.includes("?") ? "&" : "?"}${parts.join("&")}`;
|
|
272
|
+
}
|
|
273
|
+
initSSEHandlers() {
|
|
274
|
+
this.attachedSseEvents.clear();
|
|
275
|
+
this.sseListeners.clear();
|
|
276
|
+
this.attachSSEListener("open");
|
|
277
|
+
this.attachSSEListener("error");
|
|
278
|
+
this.attachSSEListener("message");
|
|
279
|
+
for (const type of this.config.sse?.events ?? []) {
|
|
280
|
+
this.attachSSEListener(type);
|
|
281
|
+
}
|
|
282
|
+
for (const event of this.handlerMap.keys()) {
|
|
283
|
+
this.attachSSEListener(event);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
attachSSEListener(type) {
|
|
287
|
+
if (!this.eventSource || this.attachedSseEvents.has(type)) return;
|
|
288
|
+
const listener = event => {
|
|
289
|
+
this.handleSSEEvent(type, event);
|
|
290
|
+
};
|
|
291
|
+
this.sseListeners.set(type, listener);
|
|
292
|
+
this.attachedSseEvents.add(type);
|
|
293
|
+
this.eventSource.addEventListener(type, listener);
|
|
294
|
+
}
|
|
295
|
+
detachSSEListener(type) {
|
|
296
|
+
if (this.isCoreSSEType(type)) return;
|
|
297
|
+
if (!this.eventSource || !this.attachedSseEvents.has(type)) return;
|
|
298
|
+
const listener = this.sseListeners.get(type);
|
|
299
|
+
if (listener) {
|
|
300
|
+
this.eventSource.removeEventListener(type, listener);
|
|
301
|
+
this.sseListeners.delete(type);
|
|
302
|
+
}
|
|
303
|
+
this.attachedSseEvents.delete(type);
|
|
304
|
+
}
|
|
305
|
+
isCoreSSEType(type) {
|
|
306
|
+
return type === "open" || type === "error" || type === "message" || (this.config.sse?.events ?? []).includes(type);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Single entry point for everything the EventSource dispatches. Dataless
|
|
310
|
+
* events are transport lifecycle (`open`/`error` as plain Events); anything
|
|
311
|
+
* carrying `data` is a server frame — including frames the server
|
|
312
|
+
* classified `event: error`, which arrive as MessageEvents WITH data and
|
|
313
|
+
* must not be mistaken for connection errors.
|
|
314
|
+
*/
|
|
315
|
+
handleSSEEvent(type, event) {
|
|
316
|
+
if (event?.data === void 0) {
|
|
317
|
+
if (type === "open") {
|
|
318
|
+
this.isConnecting = false;
|
|
319
|
+
this.socketHealthy = true;
|
|
320
|
+
this.emitToHandlers("connected", {
|
|
321
|
+
transport: "sse"
|
|
322
|
+
});
|
|
323
|
+
this.resolveHealthyWaiters(true);
|
|
324
|
+
} else if (type === "error") {
|
|
325
|
+
this.isConnecting = false;
|
|
326
|
+
this.socketHealthy = false;
|
|
327
|
+
this.emitToHandlers("disconnect", {
|
|
328
|
+
reason: "sse-error"
|
|
329
|
+
});
|
|
330
|
+
this.resolveHealthyWaiters(false);
|
|
331
|
+
}
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
const frame = {
|
|
335
|
+
type,
|
|
336
|
+
data: String(event.data),
|
|
337
|
+
lastEventId: event.lastEventId ?? ""
|
|
338
|
+
};
|
|
339
|
+
const mapFrame = this.config.sse?.mapFrame;
|
|
340
|
+
if (mapFrame) {
|
|
341
|
+
let mapped;
|
|
342
|
+
try {
|
|
343
|
+
mapped = mapFrame(frame);
|
|
344
|
+
} catch (err) {
|
|
345
|
+
console.warn("[RealtimeModule] sse.mapFrame threw; frame dropped:", err);
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
if (!mapped) return;
|
|
349
|
+
for (const {
|
|
350
|
+
event: mappedEvent,
|
|
351
|
+
payload: payload2
|
|
352
|
+
} of mapped) {
|
|
353
|
+
this.emitToHandlers(mappedEvent, payload2);
|
|
354
|
+
}
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
let payload = frame.data;
|
|
358
|
+
try {
|
|
359
|
+
payload = JSON.parse(frame.data);
|
|
360
|
+
} catch {}
|
|
361
|
+
this.emitToHandlers(frame.type, payload);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Logged once: SSE is one-way, so doc/list room membership can't be sent
|
|
365
|
+
* upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
|
|
366
|
+
* for mapFrame-driven filtering and for a future two-way transport.
|
|
367
|
+
*/
|
|
368
|
+
logSSERoomNoticeOnce() {
|
|
369
|
+
if (this.sseRoomNoticeLogged) return;
|
|
370
|
+
this.sseRoomNoticeLogged = true;
|
|
371
|
+
console.debug("[RealtimeModule] SSE transport is one-way: doc/list room subscriptions are recorded client-side only (getDocRooms()/getListRooms()) and nothing is sent to the server \u2014 filter server-side via sse.queryParams or route frames with sse.mapFrame.");
|
|
372
|
+
}
|
|
193
373
|
/**
|
|
194
374
|
* Tear down the socket without clearing app handlers or room subscriptions.
|
|
195
375
|
* Used by auth refresh so listeners/rooms survive credential rotation.
|
|
@@ -202,8 +382,17 @@ class RealtimeModule {
|
|
|
202
382
|
this.socket.disconnect();
|
|
203
383
|
this.socket = void 0;
|
|
204
384
|
}
|
|
385
|
+
if (this.eventSource) {
|
|
386
|
+
for (const [type, listener] of this.sseListeners) {
|
|
387
|
+
this.eventSource.removeEventListener(type, listener);
|
|
388
|
+
}
|
|
389
|
+
this.eventSource.close();
|
|
390
|
+
this.eventSource = void 0;
|
|
391
|
+
}
|
|
205
392
|
this.attachedSocketEvents.clear();
|
|
206
393
|
this.socketEventHandlers.clear();
|
|
394
|
+
this.attachedSseEvents.clear();
|
|
395
|
+
this.sseListeners.clear();
|
|
207
396
|
this.socketHealthy = false;
|
|
208
397
|
this.isConnecting = false;
|
|
209
398
|
this.resolveHealthyWaiters(false);
|
|
@@ -280,7 +469,11 @@ class RealtimeModule {
|
|
|
280
469
|
this.handlerMap.set(event, handlerSet);
|
|
281
470
|
}
|
|
282
471
|
handlerSet.add(handler);
|
|
283
|
-
this.
|
|
472
|
+
if (this.isSSE()) {
|
|
473
|
+
this.attachSSEListener(event);
|
|
474
|
+
} else {
|
|
475
|
+
this.attachSocketListener(event);
|
|
476
|
+
}
|
|
284
477
|
}
|
|
285
478
|
off(event, handler) {
|
|
286
479
|
const handlerSet = this.handlerMap.get(event);
|
|
@@ -288,7 +481,11 @@ class RealtimeModule {
|
|
|
288
481
|
handlerSet.delete(handler);
|
|
289
482
|
if (handlerSet.size === 0) {
|
|
290
483
|
this.handlerMap.delete(event);
|
|
291
|
-
this.
|
|
484
|
+
if (this.isSSE()) {
|
|
485
|
+
this.detachSSEListener(event);
|
|
486
|
+
} else {
|
|
487
|
+
this.detachSocketListener(event);
|
|
488
|
+
}
|
|
292
489
|
}
|
|
293
490
|
}
|
|
294
491
|
async subscribeDoc(doctype, name) {
|
|
@@ -296,14 +493,15 @@ class RealtimeModule {
|
|
|
296
493
|
doctype,
|
|
297
494
|
name
|
|
298
495
|
});
|
|
496
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
299
497
|
await this.ensureConnected();
|
|
300
|
-
if (this.socket && this.socketHealthy) {
|
|
498
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
301
499
|
this.socket.emit("doc_subscribe", doctype, name);
|
|
302
500
|
}
|
|
303
501
|
}
|
|
304
502
|
unsubscribeDoc(doctype, name) {
|
|
305
503
|
this.docRooms.delete(docRoomKey(doctype, name));
|
|
306
|
-
if (this.socket && this.socketHealthy) {
|
|
504
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
307
505
|
this.socket.emit("doc_unsubscribe", doctype, name);
|
|
308
506
|
}
|
|
309
507
|
this.teardownWhenIdle();
|
|
@@ -320,14 +518,15 @@ class RealtimeModule {
|
|
|
320
518
|
doctype,
|
|
321
519
|
filters
|
|
322
520
|
});
|
|
521
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
323
522
|
await this.ensureConnected();
|
|
324
|
-
if (this.socket && this.socketHealthy) {
|
|
523
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
325
524
|
this.socket.emit("doctype_subscribe", doctype);
|
|
326
525
|
}
|
|
327
526
|
}
|
|
328
527
|
unsubscribeList(doctype) {
|
|
329
528
|
this.listRooms.delete(doctype);
|
|
330
|
-
if (this.socket && this.socketHealthy) {
|
|
529
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
331
530
|
this.socket.emit("doctype_unsubscribe", doctype);
|
|
332
531
|
}
|
|
333
532
|
this.teardownWhenIdle();
|
|
@@ -343,13 +542,14 @@ class RealtimeModule {
|
|
|
343
542
|
*/
|
|
344
543
|
teardownWhenIdle() {
|
|
345
544
|
if (this.docRooms.size > 0 || this.listRooms.size > 0) return;
|
|
346
|
-
if (!this.socket && !this.isConnecting) return;
|
|
545
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) return;
|
|
347
546
|
this.emitToHandlers("disconnect", {
|
|
348
547
|
reason: "idle-teardown"
|
|
349
548
|
});
|
|
350
549
|
this.softDisconnect();
|
|
351
550
|
}
|
|
352
551
|
isHealthy() {
|
|
552
|
+
if (this.isSSE()) return this.socketHealthy && this.eventSource !== void 0;
|
|
353
553
|
return this.socketHealthy && this.socket?.connected === true;
|
|
354
554
|
}
|
|
355
555
|
disconnect() {
|
|
@@ -360,13 +560,20 @@ class RealtimeModule {
|
|
|
360
560
|
}
|
|
361
561
|
async updateAuth(auth) {
|
|
362
562
|
this.config.auth = auth;
|
|
363
|
-
const shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0;
|
|
563
|
+
const shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0 || this.isSSE() && this.eventSource !== void 0;
|
|
364
564
|
this.softDisconnect();
|
|
365
565
|
if (shouldReconnect) {
|
|
366
566
|
await this.connect();
|
|
367
567
|
}
|
|
368
568
|
}
|
|
369
569
|
emit(event, data) {
|
|
570
|
+
if (this.isSSE()) {
|
|
571
|
+
if (!this.sseEmitNoticeLogged) {
|
|
572
|
+
this.sseEmitNoticeLogged = true;
|
|
573
|
+
console.debug("[RealtimeModule] emit() is a no-op under the SSE transport \u2014 SSE is one-way (server \u2192 client). Use HTTP calls for client \u2192 server communication.");
|
|
574
|
+
}
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
370
577
|
if (this.socket && this.socketHealthy) {
|
|
371
578
|
this.socket.emit(event, data);
|
|
372
579
|
}
|
|
@@ -374,6 +581,22 @@ class RealtimeModule {
|
|
|
374
581
|
getSocket() {
|
|
375
582
|
return this.socket;
|
|
376
583
|
}
|
|
584
|
+
/** Live EventSource when the SSE transport is connected (undefined otherwise). */
|
|
585
|
+
getEventSource() {
|
|
586
|
+
return this.eventSource;
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Doc rooms recorded by subscribeDoc. Under SSE these are client-side
|
|
590
|
+
* bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
|
|
591
|
+
* consult them to filter or route frames.
|
|
592
|
+
*/
|
|
593
|
+
getDocRooms() {
|
|
594
|
+
return [...this.docRooms.values()];
|
|
595
|
+
}
|
|
596
|
+
/** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
|
|
597
|
+
getListRooms() {
|
|
598
|
+
return [...this.listRooms.values()];
|
|
599
|
+
}
|
|
377
600
|
}
|
|
378
601
|
export { RealtimeModule, RealtimePlatform };
|
|
379
602
|
//# sourceMappingURL=realtime.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isNative","io","isBrowser","isGjs","RealtimePlatform","RealtimePlatform2","docRoomKey","doctype","name","RealtimeModule","socket","handlerMap","Map","attachedSocketEvents","Set","socketEventHandlers","docRooms","listRooms","socketHealthy","isConnecting","healthyWaiters","config","authRefreshInflight","constructor","platform","detectPlatform","navigator","product","userAgent","includes","getSocketURL","base","baseURL","replace","url","URL","port","socketPort","String","host","hostname","siteName","protocol","result","split","getAuthOptions","authOptions","extraHeaders","Origin","origin","auth","sessionId","Cookie","useToken","token","authType","type","Authorization","transportOptions","websocket","polling","refreshSocketAuth","Promise","resolve","manager","opts","Object","assign","resolveHealthyWaiters","ok","clear","waitUntilHealthy","timeoutMs","connected","timer","setTimeout","delete","onReady","clearTimeout","add","ensureConnected","connect","resubscribeRooms","room","values","emit","socketURL","transports","autoConnect","path","randomizationFactor","reconnection","reconnectionAttempts","Number","POSITIVE_INFINITY","reconnectionDelay","reconnectionDelayMax","timeout","withCredentials","socketOptions","initHandlers","err","softDisconnect","removeAllListeners","disconnect","on","emitToHandlers","sid","id","reason","error","event","keys","attachSocketListener","has","handler","payload","set","detachSocketListener","get","off","handlerSet","size","subscribeDoc","unsubscribeDoc","teardownWhenIdle","subscribeList","filters","unsubscribeList","isHealthy","updateAuth","shouldReconnect","data","getSocket"],"sources":["../../src/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["isNative","io","isBrowser","isGjs","RealtimePlatform","RealtimePlatform2","docRoomKey","doctype","name","RealtimeModule","socket","eventSource","handlerMap","Map","attachedSocketEvents","Set","socketEventHandlers","attachedSseEvents","sseListeners","sseRoomNoticeLogged","sseEmitNoticeLogged","docRooms","listRooms","socketHealthy","isConnecting","healthyWaiters","config","authRefreshInflight","constructor","platform","detectPlatform","navigator","product","userAgent","includes","getSocketURL","base","baseURL","replace","socketBaseURL","socketBase","siteName","URL","hostname","split","url","port","socketPort","String","host","protocol","result","getAuthOptions","authOptions","extraHeaders","Origin","origin","auth","sessionId","Cookie","useToken","token","authType","type","Authorization","transportOptions","websocket","polling","refreshSocketAuth","Promise","resolve","manager","opts","Object","assign","resolveHealthyWaiters","ok","clear","isSSE","transport","waitUntilHealthy","timeoutMs","isHealthy","timer","setTimeout","delete","onReady","clearTimeout","add","ensureConnected","connect","resubscribeRooms","room","values","emit","connectSSE","socketURL","transports","autoConnect","path","randomizationFactor","reconnection","reconnectionAttempts","Number","POSITIVE_INFINITY","reconnectionDelay","reconnectionDelayMax","timeout","withCredentials","socketOptions","initHandlers","err","sse","EventSourceCtor","EventSource","globalThis","Error","buildSSEURL","initSSEHandlers","startsWith","params","entries","queryParams","length","parts","key","value","resolved","push","encodeURIComponent","join","attachSSEListener","events","event","keys","has","listener","handleSSEEvent","set","addEventListener","detachSSEListener","isCoreSSEType","get","removeEventListener","data","emitToHandlers","reason","frame","lastEventId","mapFrame","mapped","console","warn","mappedEvent","payload","payload2","JSON","parse","logSSERoomNoticeOnce","debug","softDisconnect","removeAllListeners","disconnect","close","on","sid","id","error","attachSocketListener","handler","detachSocketListener","off","handlerSet","size","subscribeDoc","unsubscribeDoc","teardownWhenIdle","subscribeList","filters","unsubscribeList","connected","updateAuth","shouldReconnect","getSocket","getEventSource","getDocRooms","getListRooms"],"sources":["../../src/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|