@multiplatform.one/frappe 6.6.0 → 6.7.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/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.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.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.native.js +1 -1
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +3 -2
- package/dist/cjs/index.native.js.map +1 -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 +222 -11
- package/dist/cjs/realtime.native.js +352 -14
- 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.native.js.map +1 -1
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- 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.native.js +2 -2
- 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.native.js +1 -1
- 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.native.js +7 -7
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- 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.native.js.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 +222 -11
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +353 -15
- 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.native.js +8 -8
- 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.native.js +4 -4
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +1 -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.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/index.js +2 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +1 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +222 -11
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +352 -14
- package/dist/jsx/realtime.native.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +13 -1
- package/src/realtime.ts +406 -14
- package/src/realtimeSse.spec.ts +547 -0
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/realtime.d.ts +166 -1
- package/types/realtime.d.ts.map +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isNative } from "@multiplatform.one/platform";
|
|
2
2
|
import { io } from "socket.io-client";
|
|
3
|
-
import { isBrowser, isGjs } from "./util";
|
|
3
|
+
import { isBrowser, isGjs } from "./util.native.js";
|
|
4
4
|
function _class_call_check(instance, Constructor) {
|
|
5
5
|
if (!(instance instanceof Constructor)) {
|
|
6
6
|
throw new TypeError("Cannot call a class as a function");
|
|
@@ -48,9 +48,14 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
48
48
|
function RealtimeModule2(config) {
|
|
49
49
|
_class_call_check(this, RealtimeModule2);
|
|
50
50
|
_define_property(this, "socket", void 0);
|
|
51
|
+
_define_property(this, "eventSource", void 0);
|
|
51
52
|
_define_property(this, "handlerMap", /* @__PURE__ */new Map());
|
|
52
53
|
_define_property(this, "attachedSocketEvents", /* @__PURE__ */new Set());
|
|
53
54
|
_define_property(this, "socketEventHandlers", /* @__PURE__ */new Map());
|
|
55
|
+
_define_property(this, "attachedSseEvents", /* @__PURE__ */new Set());
|
|
56
|
+
_define_property(this, "sseListeners", /* @__PURE__ */new Map());
|
|
57
|
+
_define_property(this, "sseRoomNoticeLogged", false);
|
|
58
|
+
_define_property(this, "sseEmitNoticeLogged", false);
|
|
54
59
|
_define_property(this, "docRooms", /* @__PURE__ */new Map());
|
|
55
60
|
_define_property(this, "listRooms", /* @__PURE__ */new Map());
|
|
56
61
|
_define_property(this, "socketHealthy", false);
|
|
@@ -196,13 +201,17 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
196
201
|
}
|
|
197
202
|
this.healthyWaiters.clear();
|
|
198
203
|
}
|
|
204
|
+
}, {
|
|
205
|
+
key: "isSSE",
|
|
206
|
+
value: function isSSE() {
|
|
207
|
+
return this.config.transport === "sse";
|
|
208
|
+
}
|
|
199
209
|
}, {
|
|
200
210
|
key: "waitUntilHealthy",
|
|
201
211
|
value: function waitUntilHealthy() {
|
|
202
212
|
var _this = this;
|
|
203
213
|
var timeoutMs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 2e4;
|
|
204
|
-
|
|
205
|
-
if (this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected)) return Promise.resolve(true);
|
|
214
|
+
if (this.isHealthy()) return Promise.resolve(true);
|
|
206
215
|
return new Promise(function (resolve) {
|
|
207
216
|
var timer = setTimeout(function () {
|
|
208
217
|
_this.healthyWaiters.delete(onReady);
|
|
@@ -218,9 +227,8 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
218
227
|
}, {
|
|
219
228
|
key: "ensureConnected",
|
|
220
229
|
value: async function ensureConnected() {
|
|
221
|
-
|
|
222
|
-
if (this.
|
|
223
|
-
if (!this.socket && !this.isConnecting) {
|
|
230
|
+
if (this.isHealthy()) return;
|
|
231
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) {
|
|
224
232
|
await this.connect();
|
|
225
233
|
}
|
|
226
234
|
await this.waitUntilHealthy();
|
|
@@ -276,7 +284,17 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
276
284
|
}
|
|
277
285
|
}, {
|
|
278
286
|
key: "connect",
|
|
279
|
-
value:
|
|
287
|
+
value: (
|
|
288
|
+
/**
|
|
289
|
+
* Open the realtime transport now. Room-driven auto-connect
|
|
290
|
+
* (subscribeDoc/subscribeList) remains the primary lifecycle in both
|
|
291
|
+
* transports — this is public for SSE consumers that use no doc/list room
|
|
292
|
+
* bookkeeping: a one-way stream has nothing to emit on join, so nothing
|
|
293
|
+
* else would ever open it. Idempotent while a transport exists or a
|
|
294
|
+
* connect is in flight.
|
|
295
|
+
*/
|
|
296
|
+
async function connect() {
|
|
297
|
+
if (this.isSSE()) return this.connectSSE();
|
|
280
298
|
if (this.socket || this.isConnecting) return;
|
|
281
299
|
this.isConnecting = true;
|
|
282
300
|
try {
|
|
@@ -304,7 +322,259 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
304
322
|
this.resolveHealthyWaiters(false);
|
|
305
323
|
throw err;
|
|
306
324
|
}
|
|
325
|
+
})
|
|
326
|
+
}, {
|
|
327
|
+
key: "connectSSE",
|
|
328
|
+
value: (
|
|
329
|
+
/**
|
|
330
|
+
* SSE branch of connect(): construct an EventSource against the configured
|
|
331
|
+
* stream URL. EventSource connects at construction, auto-reconnects on
|
|
332
|
+
* failure, and resumes missed frames itself by sending the stream's last
|
|
333
|
+
* `id:` as the `Last-Event-ID` request header — none of that is
|
|
334
|
+
* reimplemented here.
|
|
335
|
+
*/
|
|
336
|
+
async function connectSSE() {
|
|
337
|
+
if (this.eventSource || this.isConnecting) return;
|
|
338
|
+
this.isConnecting = true;
|
|
339
|
+
try {
|
|
340
|
+
var _ref;
|
|
341
|
+
var sse = this.config.sse;
|
|
342
|
+
var EventSourceCtor = (_ref = sse === null || sse === void 0 ? void 0 : sse.EventSource) !== null && _ref !== void 0 ? _ref : globalThis.EventSource;
|
|
343
|
+
if (!EventSourceCtor) {
|
|
344
|
+
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.');
|
|
345
|
+
}
|
|
346
|
+
var url = await this.buildSSEURL();
|
|
347
|
+
this.eventSource = new EventSourceCtor(url, {
|
|
348
|
+
withCredentials: sse === null || sse === void 0 ? void 0 : sse.withCredentials
|
|
349
|
+
});
|
|
350
|
+
this.initSSEHandlers();
|
|
351
|
+
} catch (err) {
|
|
352
|
+
this.isConnecting = false;
|
|
353
|
+
this.resolveHealthyWaiters(false);
|
|
354
|
+
throw err;
|
|
355
|
+
}
|
|
356
|
+
})
|
|
357
|
+
}, {
|
|
358
|
+
key: "buildSSEURL",
|
|
359
|
+
value: async function buildSSEURL() {
|
|
360
|
+
var _ref;
|
|
361
|
+
var _this_config_sse;
|
|
362
|
+
var sse = this.config.sse;
|
|
363
|
+
var url;
|
|
364
|
+
if (sse === null || sse === void 0 ? void 0 : sse.url) {
|
|
365
|
+
url = sse.url;
|
|
366
|
+
} else if (sse === null || sse === void 0 ? void 0 : sse.path) {
|
|
367
|
+
var base = this.config.baseURL.replace(/\/$/, "");
|
|
368
|
+
url = `${base}${sse.path.startsWith("/") ? "" : "/"}${sse.path}`;
|
|
369
|
+
} else {
|
|
370
|
+
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.');
|
|
371
|
+
}
|
|
372
|
+
var params = Object.entries((_ref = (_this_config_sse = this.config.sse) === null || _this_config_sse === void 0 ? void 0 : _this_config_sse.queryParams) !== null && _ref !== void 0 ? _ref : {});
|
|
373
|
+
if (params.length === 0) return url;
|
|
374
|
+
var parts = [];
|
|
375
|
+
var _iteratorNormalCompletion = true,
|
|
376
|
+
_didIteratorError = false,
|
|
377
|
+
_iteratorError = void 0;
|
|
378
|
+
try {
|
|
379
|
+
for (var _iterator = params[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
380
|
+
var [key, value] = _step.value;
|
|
381
|
+
var resolved = typeof value === "function" ? await value() : value;
|
|
382
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(resolved)}`);
|
|
383
|
+
}
|
|
384
|
+
} catch (err) {
|
|
385
|
+
_didIteratorError = true;
|
|
386
|
+
_iteratorError = err;
|
|
387
|
+
} finally {
|
|
388
|
+
try {
|
|
389
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
390
|
+
_iterator.return();
|
|
391
|
+
}
|
|
392
|
+
} finally {
|
|
393
|
+
if (_didIteratorError) {
|
|
394
|
+
throw _iteratorError;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return `${url}${url.includes("?") ? "&" : "?"}${parts.join("&")}`;
|
|
399
|
+
}
|
|
400
|
+
}, {
|
|
401
|
+
key: "initSSEHandlers",
|
|
402
|
+
value: function initSSEHandlers() {
|
|
403
|
+
var _ref;
|
|
404
|
+
var _this_config_sse;
|
|
405
|
+
this.attachedSseEvents.clear();
|
|
406
|
+
this.sseListeners.clear();
|
|
407
|
+
this.attachSSEListener("open");
|
|
408
|
+
this.attachSSEListener("error");
|
|
409
|
+
this.attachSSEListener("message");
|
|
410
|
+
var _iteratorNormalCompletion = true,
|
|
411
|
+
_didIteratorError = false,
|
|
412
|
+
_iteratorError = void 0;
|
|
413
|
+
try {
|
|
414
|
+
for (var _iterator = ((_ref = (_this_config_sse = this.config.sse) === null || _this_config_sse === void 0 ? void 0 : _this_config_sse.events) !== null && _ref !== void 0 ? _ref : [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
415
|
+
var type = _step.value;
|
|
416
|
+
this.attachSSEListener(type);
|
|
417
|
+
}
|
|
418
|
+
} catch (err) {
|
|
419
|
+
_didIteratorError = true;
|
|
420
|
+
_iteratorError = err;
|
|
421
|
+
} finally {
|
|
422
|
+
try {
|
|
423
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
424
|
+
_iterator.return();
|
|
425
|
+
}
|
|
426
|
+
} finally {
|
|
427
|
+
if (_didIteratorError) {
|
|
428
|
+
throw _iteratorError;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
var _iteratorNormalCompletion1 = true,
|
|
433
|
+
_didIteratorError1 = false,
|
|
434
|
+
_iteratorError1 = void 0;
|
|
435
|
+
try {
|
|
436
|
+
for (var _iterator1 = this.handlerMap.keys()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
437
|
+
var event = _step1.value;
|
|
438
|
+
this.attachSSEListener(event);
|
|
439
|
+
}
|
|
440
|
+
} catch (err) {
|
|
441
|
+
_didIteratorError1 = true;
|
|
442
|
+
_iteratorError1 = err;
|
|
443
|
+
} finally {
|
|
444
|
+
try {
|
|
445
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
446
|
+
_iterator1.return();
|
|
447
|
+
}
|
|
448
|
+
} finally {
|
|
449
|
+
if (_didIteratorError1) {
|
|
450
|
+
throw _iteratorError1;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
307
454
|
}
|
|
455
|
+
}, {
|
|
456
|
+
key: "attachSSEListener",
|
|
457
|
+
value: function attachSSEListener(type) {
|
|
458
|
+
var _this = this;
|
|
459
|
+
if (!this.eventSource || this.attachedSseEvents.has(type)) return;
|
|
460
|
+
var listener = function listener2(event) {
|
|
461
|
+
_this.handleSSEEvent(type, event);
|
|
462
|
+
};
|
|
463
|
+
this.sseListeners.set(type, listener);
|
|
464
|
+
this.attachedSseEvents.add(type);
|
|
465
|
+
this.eventSource.addEventListener(type, listener);
|
|
466
|
+
}
|
|
467
|
+
}, {
|
|
468
|
+
key: "detachSSEListener",
|
|
469
|
+
value: function detachSSEListener(type) {
|
|
470
|
+
if (this.isCoreSSEType(type)) return;
|
|
471
|
+
if (!this.eventSource || !this.attachedSseEvents.has(type)) return;
|
|
472
|
+
var listener = this.sseListeners.get(type);
|
|
473
|
+
if (listener) {
|
|
474
|
+
this.eventSource.removeEventListener(type, listener);
|
|
475
|
+
this.sseListeners.delete(type);
|
|
476
|
+
}
|
|
477
|
+
this.attachedSseEvents.delete(type);
|
|
478
|
+
}
|
|
479
|
+
}, {
|
|
480
|
+
key: "isCoreSSEType",
|
|
481
|
+
value: function isCoreSSEType(type) {
|
|
482
|
+
var _ref;
|
|
483
|
+
var _this_config_sse;
|
|
484
|
+
return type === "open" || type === "error" || type === "message" || ((_ref = (_this_config_sse = this.config.sse) === null || _this_config_sse === void 0 ? void 0 : _this_config_sse.events) !== null && _ref !== void 0 ? _ref : []).includes(type);
|
|
485
|
+
}
|
|
486
|
+
}, {
|
|
487
|
+
key: "handleSSEEvent",
|
|
488
|
+
value: (
|
|
489
|
+
/**
|
|
490
|
+
* Single entry point for everything the EventSource dispatches. Dataless
|
|
491
|
+
* events are transport lifecycle (`open`/`error` as plain Events); anything
|
|
492
|
+
* carrying `data` is a server frame — including frames the server
|
|
493
|
+
* classified `event: error`, which arrive as MessageEvents WITH data and
|
|
494
|
+
* must not be mistaken for connection errors.
|
|
495
|
+
*/
|
|
496
|
+
function handleSSEEvent(type, event) {
|
|
497
|
+
var _event_lastEventId;
|
|
498
|
+
var _this_config_sse;
|
|
499
|
+
if ((event === null || event === void 0 ? void 0 : event.data) === void 0) {
|
|
500
|
+
if (type === "open") {
|
|
501
|
+
this.isConnecting = false;
|
|
502
|
+
this.socketHealthy = true;
|
|
503
|
+
this.emitToHandlers("connected", {
|
|
504
|
+
transport: "sse"
|
|
505
|
+
});
|
|
506
|
+
this.resolveHealthyWaiters(true);
|
|
507
|
+
} else if (type === "error") {
|
|
508
|
+
this.isConnecting = false;
|
|
509
|
+
this.socketHealthy = false;
|
|
510
|
+
this.emitToHandlers("disconnect", {
|
|
511
|
+
reason: "sse-error"
|
|
512
|
+
});
|
|
513
|
+
this.resolveHealthyWaiters(false);
|
|
514
|
+
}
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
var frame = {
|
|
518
|
+
type,
|
|
519
|
+
data: String(event.data),
|
|
520
|
+
lastEventId: (_event_lastEventId = event.lastEventId) !== null && _event_lastEventId !== void 0 ? _event_lastEventId : ""
|
|
521
|
+
};
|
|
522
|
+
var mapFrame = (_this_config_sse = this.config.sse) === null || _this_config_sse === void 0 ? void 0 : _this_config_sse.mapFrame;
|
|
523
|
+
if (mapFrame) {
|
|
524
|
+
var mapped;
|
|
525
|
+
try {
|
|
526
|
+
mapped = mapFrame(frame);
|
|
527
|
+
} catch (err) {
|
|
528
|
+
console.warn("[RealtimeModule] sse.mapFrame threw; frame dropped:", err);
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
if (!mapped) return;
|
|
532
|
+
var _iteratorNormalCompletion = true,
|
|
533
|
+
_didIteratorError = false,
|
|
534
|
+
_iteratorError = void 0;
|
|
535
|
+
try {
|
|
536
|
+
for (var _iterator = mapped[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
537
|
+
var {
|
|
538
|
+
event: mappedEvent,
|
|
539
|
+
payload
|
|
540
|
+
} = _step.value;
|
|
541
|
+
this.emitToHandlers(mappedEvent, payload);
|
|
542
|
+
}
|
|
543
|
+
} catch (err) {
|
|
544
|
+
_didIteratorError = true;
|
|
545
|
+
_iteratorError = err;
|
|
546
|
+
} finally {
|
|
547
|
+
try {
|
|
548
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
549
|
+
_iterator.return();
|
|
550
|
+
}
|
|
551
|
+
} finally {
|
|
552
|
+
if (_didIteratorError) {
|
|
553
|
+
throw _iteratorError;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
var payload1 = frame.data;
|
|
560
|
+
try {
|
|
561
|
+
payload1 = JSON.parse(frame.data);
|
|
562
|
+
} catch (unused) {}
|
|
563
|
+
this.emitToHandlers(frame.type, payload1);
|
|
564
|
+
})
|
|
565
|
+
}, {
|
|
566
|
+
key: "logSSERoomNoticeOnce",
|
|
567
|
+
value: (
|
|
568
|
+
/**
|
|
569
|
+
* Logged once: SSE is one-way, so doc/list room membership can't be sent
|
|
570
|
+
* upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
|
|
571
|
+
* for mapFrame-driven filtering and for a future two-way transport.
|
|
572
|
+
*/
|
|
573
|
+
function logSSERoomNoticeOnce() {
|
|
574
|
+
if (this.sseRoomNoticeLogged) return;
|
|
575
|
+
this.sseRoomNoticeLogged = true;
|
|
576
|
+
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.");
|
|
577
|
+
})
|
|
308
578
|
}, {
|
|
309
579
|
key: "softDisconnect",
|
|
310
580
|
value: (
|
|
@@ -320,8 +590,36 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
320
590
|
this.socket.disconnect();
|
|
321
591
|
this.socket = void 0;
|
|
322
592
|
}
|
|
593
|
+
if (this.eventSource) {
|
|
594
|
+
var _iteratorNormalCompletion = true,
|
|
595
|
+
_didIteratorError = false,
|
|
596
|
+
_iteratorError = void 0;
|
|
597
|
+
try {
|
|
598
|
+
for (var _iterator = this.sseListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
599
|
+
var [type, listener] = _step.value;
|
|
600
|
+
this.eventSource.removeEventListener(type, listener);
|
|
601
|
+
}
|
|
602
|
+
} catch (err) {
|
|
603
|
+
_didIteratorError = true;
|
|
604
|
+
_iteratorError = err;
|
|
605
|
+
} finally {
|
|
606
|
+
try {
|
|
607
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
608
|
+
_iterator.return();
|
|
609
|
+
}
|
|
610
|
+
} finally {
|
|
611
|
+
if (_didIteratorError) {
|
|
612
|
+
throw _iteratorError;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
this.eventSource.close();
|
|
617
|
+
this.eventSource = void 0;
|
|
618
|
+
}
|
|
323
619
|
this.attachedSocketEvents.clear();
|
|
324
620
|
this.socketEventHandlers.clear();
|
|
621
|
+
this.attachedSseEvents.clear();
|
|
622
|
+
this.sseListeners.clear();
|
|
325
623
|
this.socketHealthy = false;
|
|
326
624
|
this.isConnecting = false;
|
|
327
625
|
this.resolveHealthyWaiters(false);
|
|
@@ -452,7 +750,11 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
452
750
|
this.handlerMap.set(event, handlerSet);
|
|
453
751
|
}
|
|
454
752
|
handlerSet.add(handler);
|
|
455
|
-
this.
|
|
753
|
+
if (this.isSSE()) {
|
|
754
|
+
this.attachSSEListener(event);
|
|
755
|
+
} else {
|
|
756
|
+
this.attachSocketListener(event);
|
|
757
|
+
}
|
|
456
758
|
}
|
|
457
759
|
}, {
|
|
458
760
|
key: "off",
|
|
@@ -462,7 +764,11 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
462
764
|
handlerSet.delete(handler);
|
|
463
765
|
if (handlerSet.size === 0) {
|
|
464
766
|
this.handlerMap.delete(event);
|
|
465
|
-
this.
|
|
767
|
+
if (this.isSSE()) {
|
|
768
|
+
this.detachSSEListener(event);
|
|
769
|
+
} else {
|
|
770
|
+
this.detachSocketListener(event);
|
|
771
|
+
}
|
|
466
772
|
}
|
|
467
773
|
}
|
|
468
774
|
}, {
|
|
@@ -472,8 +778,9 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
472
778
|
doctype,
|
|
473
779
|
name
|
|
474
780
|
});
|
|
781
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
475
782
|
await this.ensureConnected();
|
|
476
|
-
if (this.socket && this.socketHealthy) {
|
|
783
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
477
784
|
this.socket.emit("doc_subscribe", doctype, name);
|
|
478
785
|
}
|
|
479
786
|
}
|
|
@@ -481,7 +788,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
481
788
|
key: "unsubscribeDoc",
|
|
482
789
|
value: function unsubscribeDoc(doctype, name) {
|
|
483
790
|
this.docRooms.delete(docRoomKey(doctype, name));
|
|
484
|
-
if (this.socket && this.socketHealthy) {
|
|
791
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
485
792
|
this.socket.emit("doc_unsubscribe", doctype, name);
|
|
486
793
|
}
|
|
487
794
|
this.teardownWhenIdle();
|
|
@@ -501,8 +808,9 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
501
808
|
doctype,
|
|
502
809
|
filters
|
|
503
810
|
});
|
|
811
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
504
812
|
await this.ensureConnected();
|
|
505
|
-
if (this.socket && this.socketHealthy) {
|
|
813
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
506
814
|
this.socket.emit("doctype_subscribe", doctype);
|
|
507
815
|
}
|
|
508
816
|
})
|
|
@@ -510,7 +818,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
510
818
|
key: "unsubscribeList",
|
|
511
819
|
value: function unsubscribeList(doctype) {
|
|
512
820
|
this.listRooms.delete(doctype);
|
|
513
|
-
if (this.socket && this.socketHealthy) {
|
|
821
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
514
822
|
this.socket.emit("doctype_unsubscribe", doctype);
|
|
515
823
|
}
|
|
516
824
|
this.teardownWhenIdle();
|
|
@@ -529,7 +837,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
529
837
|
*/
|
|
530
838
|
function teardownWhenIdle() {
|
|
531
839
|
if (this.docRooms.size > 0 || this.listRooms.size > 0) return;
|
|
532
|
-
if (!this.socket && !this.isConnecting) return;
|
|
840
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) return;
|
|
533
841
|
this.emitToHandlers("disconnect", {
|
|
534
842
|
reason: "idle-teardown"
|
|
535
843
|
});
|
|
@@ -539,6 +847,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
539
847
|
key: "isHealthy",
|
|
540
848
|
value: function isHealthy() {
|
|
541
849
|
var _this_socket;
|
|
850
|
+
if (this.isSSE()) return this.socketHealthy && this.eventSource !== void 0;
|
|
542
851
|
return this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) === true;
|
|
543
852
|
}
|
|
544
853
|
}, {
|
|
@@ -553,7 +862,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
553
862
|
key: "updateAuth",
|
|
554
863
|
value: async function updateAuth(auth) {
|
|
555
864
|
this.config.auth = auth;
|
|
556
|
-
var shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0;
|
|
865
|
+
var shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0 || this.isSSE() && this.eventSource !== void 0;
|
|
557
866
|
this.softDisconnect();
|
|
558
867
|
if (shouldReconnect) {
|
|
559
868
|
await this.connect();
|
|
@@ -562,6 +871,13 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
562
871
|
}, {
|
|
563
872
|
key: "emit",
|
|
564
873
|
value: function emit(event, data) {
|
|
874
|
+
if (this.isSSE()) {
|
|
875
|
+
if (!this.sseEmitNoticeLogged) {
|
|
876
|
+
this.sseEmitNoticeLogged = true;
|
|
877
|
+
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.");
|
|
878
|
+
}
|
|
879
|
+
return;
|
|
880
|
+
}
|
|
565
881
|
if (this.socket && this.socketHealthy) {
|
|
566
882
|
this.socket.emit(event, data);
|
|
567
883
|
}
|
|
@@ -571,6 +887,28 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
571
887
|
value: function getSocket() {
|
|
572
888
|
return this.socket;
|
|
573
889
|
}
|
|
890
|
+
}, {
|
|
891
|
+
/** Live EventSource when the SSE transport is connected (undefined otherwise). */
|
|
892
|
+
key: "getEventSource",
|
|
893
|
+
value: function getEventSource() {
|
|
894
|
+
return this.eventSource;
|
|
895
|
+
}
|
|
896
|
+
}, {
|
|
897
|
+
/**
|
|
898
|
+
* Doc rooms recorded by subscribeDoc. Under SSE these are client-side
|
|
899
|
+
* bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
|
|
900
|
+
* consult them to filter or route frames.
|
|
901
|
+
*/
|
|
902
|
+
key: "getDocRooms",
|
|
903
|
+
value: function getDocRooms() {
|
|
904
|
+
return [...this.docRooms.values()];
|
|
905
|
+
}
|
|
906
|
+
}, {
|
|
907
|
+
/** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
|
|
908
|
+
key: "getListRooms",
|
|
909
|
+
value: function getListRooms() {
|
|
910
|
+
return [...this.listRooms.values()];
|
|
911
|
+
}
|
|
574
912
|
}]);
|
|
575
913
|
return RealtimeModule2;
|
|
576
914
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isNative","io","isBrowser","isGjs","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","RealtimePlatform","RealtimePlatform2","docRoomKey","doctype","name","RealtimeModule","RealtimeModule2","config","Map","Set","platform","detectPlatform","_navigator_userAgent","navigator","product","userAgent","includes","getSocketURL","base","baseURL","replace","url","URL","port","socketPort","String","host","hostname","siteName","protocol","unused","result","siteName1","split","getAuthOptions","_this_config_auth","_this_config_auth1","authOptions","extraHeaders","Origin","origin","auth","sessionId","Cookie","useToken","token","authType","type","Authorization","transportOptions","websocket","polling","refreshSocketAuth","_this","socket","Promise","resolve","authRefreshInflight","manager","opts","assign","resolveHealthyWaiters","ok","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","healthyWaiters","Symbol","iterator","_step","next","done","err","return","clear","waitUntilHealthy","timeoutMs","arguments","_this_socket","socketHealthy","connected","timer","setTimeout","delete","onReady","onReady2","clearTimeout","add","ensureConnected","isConnecting","connect","resubscribeRooms","docRooms","values","room","emit","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","listRooms","_step1","room1","socketURL","transports","autoConnect","path","randomizationFactor","reconnection","reconnectionAttempts","Number","POSITIVE_INFINITY","reconnectionDelay","reconnectionDelayMax","timeout","withCredentials","socketOptions","initHandlers","softDisconnect","removeAllListeners","disconnect","attachedSocketEvents","socketEventHandlers","_manager_on","on","emitToHandlers","sid","id","reason","error","call","handlerMap","keys","event","attachSocketListener","has","handler","handler2","payload","set","detachSocketListener","get","off","handlerSet","size","subscribeDoc","unsubscribeDoc","teardownWhenIdle","subscribeList","filters","unsubscribeList","isHealthy","updateAuth","shouldReconnect","data","getSocket"],"sources":["realtime.native.js"],"sourcesContent":["import { isNative } from \"@multiplatform.one/platform\";\nimport { io } from \"socket.io-client\";\nimport { isBrowser, isGjs } from \"./util\";\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar RealtimePlatform = /* @__PURE__ */ (function(RealtimePlatform2) {\n RealtimePlatform2[\"Node\"] = \"node\";\n RealtimePlatform2[\"Web\"] = \"web\";\n RealtimePlatform2[\"ReactNative\"] = \"react-native\";\n return RealtimePlatform2;\n})({});\nfunction docRoomKey(doctype, name) {\n return `${doctype}\\0${name}`;\n}\nvar RealtimeModule = /* @__PURE__ */ (function() {\n \"use strict\";\n function RealtimeModule2(config) {\n _class_call_check(this, RealtimeModule2);\n _define_property(this, \"socket\", void 0);\n _define_property(this, \"handlerMap\", /* @__PURE__ */ new Map());\n _define_property(this, \"attachedSocketEvents\", /* @__PURE__ */ new Set());\n _define_property(this, \"socketEventHandlers\", /* @__PURE__ */ new Map());\n _define_property(this, \"docRooms\", /* @__PURE__ */ new Map());\n _define_property(this, \"listRooms\", /* @__PURE__ */ new Map());\n _define_property(this, \"socketHealthy\", false);\n _define_property(this, \"isConnecting\", false);\n _define_property(this, \"healthyWaiters\", /* @__PURE__ */ new Set());\n _define_property(this, \"config\", void 0);\n _define_property(this, \"authRefreshInflight\", void 0);\n this.config = {\n ...config,\n platform: config.platform || this.detectPlatform()\n };\n }\n _create_class(RealtimeModule2, [\n {\n key: \"detectPlatform\",\n value: function detectPlatform() {\n var _navigator_userAgent;\n if (isGjs()) return \"node\";\n if (isNative || typeof navigator !== \"undefined\" && (navigator.product === \"ReactNative\" || ((_navigator_userAgent = navigator.userAgent) === null || _navigator_userAgent === void 0 ? void 0 : _navigator_userAgent.includes(\"ReactNative\")))) {\n return \"react-native\";\n }\n if (!isBrowser()) return \"node\";\n return \"web\";\n }\n },\n {\n key: \"getSocketURL\",\n value: function getSocketURL() {\n var base = this.config.baseURL.replace(/\\/$/, \"\");\n try {\n var url = new URL(base);\n var port = this.config.socketPort ? String(this.config.socketPort) : url.port;\n var host = port ? `${url.hostname}:${port}` : url.hostname;\n var siteName = this.config.siteName || url.hostname;\n return `${url.protocol}//${host}/${siteName}`;\n } catch (unused) {\n var result = base;\n if (this.config.socketPort) {\n result = result.replace(/(:\\d+)/, `:${this.config.socketPort}`);\n }\n var siteName1 = this.config.siteName || result.replace(/^https?:\\/\\//, \"\").split(/[/:]/)[0];\n return `${result}/${siteName1}`;\n }\n }\n },\n {\n key: \"getAuthOptions\",\n value: async function getAuthOptions() {\n var _this_config_auth, _this_config_auth1;\n var authOptions = {};\n if (this.config.platform !== \"web\") {\n try {\n authOptions.extraHeaders = {\n Origin: new URL(this.config.baseURL).origin\n };\n } catch (unused) {\n authOptions.extraHeaders = {\n Origin: this.config.baseURL.replace(/\\/$/, \"\")\n };\n }\n }\n if (this.config.platform !== \"web\" && ((_this_config_auth = this.config.auth) === null || _this_config_auth === void 0 ? void 0 : _this_config_auth.sessionId)) {\n var sessionId = typeof this.config.auth.sessionId === \"function\" ? await this.config.auth.sessionId() : this.config.auth.sessionId;\n var Cookie = `sid=${sessionId}`;\n authOptions.extraHeaders = {\n ...authOptions.extraHeaders,\n Cookie\n };\n }\n if (((_this_config_auth1 = this.config.auth) === null || _this_config_auth1 === void 0 ? void 0 : _this_config_auth1.useToken) && this.config.auth.token) {\n var token = typeof this.config.auth.token === \"function\" ? await this.config.auth.token() : this.config.auth.token;\n if (token) {\n var authType = this.config.auth.type || \"Bearer\";\n if (!authOptions.extraHeaders) authOptions.extraHeaders = {};\n authOptions.extraHeaders.Authorization = authType === \"Bearer\" ? `Bearer ${token}` : `token ${token}`;\n }\n }\n if (authOptions.extraHeaders) {\n authOptions.transportOptions = {\n websocket: {\n extraHeaders: {\n ...authOptions.extraHeaders\n }\n },\n polling: {\n extraHeaders: {\n ...authOptions.extraHeaders\n }\n }\n };\n }\n return authOptions;\n }\n },\n {\n key: \"refreshSocketAuth\",\n value: (\n /**\n * Re-resolve credentials (token function / session id) and swap them into\n * the LIVE manager options in place. Socket.IO constructs a fresh engine\n * from `manager.opts` on every (re)connect attempt, so mutating the opts\n * makes the next handshake carry the refreshed token — without tearing\n * down handlers or room subscriptions. Called on disconnect and before\n * reconnect attempts so a token that rotated mid-session (e.g. Keycloak\n * refresh) never strands the socket in an auth-rejected retry loop.\n */\n function refreshSocketAuth() {\n var _this = this;\n var socket = this.socket;\n if (!socket) return Promise.resolve();\n if (this.authRefreshInflight) return this.authRefreshInflight;\n this.authRefreshInflight = (async function() {\n try {\n var authOptions = await _this.getAuthOptions();\n var manager = socket.io;\n if (manager === null || manager === void 0 ? void 0 : manager.opts) Object.assign(manager.opts, authOptions);\n } catch (unused) {\n } finally {\n _this.authRefreshInflight = void 0;\n }\n })();\n return this.authRefreshInflight;\n }\n )\n },\n {\n key: \"resolveHealthyWaiters\",\n value: function resolveHealthyWaiters(ok) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = this.healthyWaiters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var resolve = _step.value;\n resolve(ok);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n this.healthyWaiters.clear();\n }\n },\n {\n key: \"waitUntilHealthy\",\n value: function waitUntilHealthy() {\n var _this = this;\n var timeoutMs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 2e4;\n var _this_socket;\n if (this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected)) return Promise.resolve(true);\n return new Promise(function(resolve) {\n var timer = setTimeout(function() {\n _this.healthyWaiters.delete(onReady);\n resolve(false);\n }, timeoutMs);\n var onReady = function onReady2(ok) {\n clearTimeout(timer);\n resolve(ok);\n };\n _this.healthyWaiters.add(onReady);\n });\n }\n },\n {\n key: \"ensureConnected\",\n value: async function ensureConnected() {\n var _this_socket;\n if (this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected)) return;\n if (!this.socket && !this.isConnecting) {\n await this.connect();\n }\n await this.waitUntilHealthy();\n }\n },\n {\n key: \"resubscribeRooms\",\n value: function resubscribeRooms() {\n if (!this.socket || !this.socketHealthy) return;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = this.docRooms.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var room = _step.value;\n this.socket.emit(\"doc_subscribe\", room.doctype, room.name);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = this.listRooms.values()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var room1 = _step1.value;\n this.socket.emit(\"doctype_subscribe\", room1.doctype);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n },\n {\n key: \"connect\",\n value: async function connect() {\n if (this.socket || this.isConnecting) return;\n this.isConnecting = true;\n try {\n var authOptions = await this.getAuthOptions();\n var socketURL = this.getSocketURL();\n var transports = this.config.platform === \"web\" ? [\n \"polling\",\n \"websocket\"\n ] : [\n \"websocket\",\n \"polling\"\n ];\n this.socket = io(socketURL, {\n autoConnect: false,\n path: \"/socket.io\",\n randomizationFactor: 0.5,\n reconnection: true,\n reconnectionAttempts: Number.POSITIVE_INFINITY,\n reconnectionDelay: 1e3,\n reconnectionDelayMax: 5e3,\n timeout: 2e4,\n transports,\n withCredentials: true,\n ...authOptions,\n ...this.config.socketOptions\n });\n this.initHandlers();\n this.socket.connect();\n } catch (err) {\n this.isConnecting = false;\n this.resolveHealthyWaiters(false);\n throw err;\n }\n }\n },\n {\n key: \"softDisconnect\",\n value: (\n /**\n * Tear down the socket without clearing app handlers or room subscriptions.\n * Used by auth refresh so listeners/rooms survive credential rotation.\n */\n function softDisconnect() {\n if (this.socket) {\n if (typeof this.socket.removeAllListeners === \"function\") {\n this.socket.removeAllListeners();\n }\n this.socket.disconnect();\n this.socket = void 0;\n }\n this.attachedSocketEvents.clear();\n this.socketEventHandlers.clear();\n this.socketHealthy = false;\n this.isConnecting = false;\n this.resolveHealthyWaiters(false);\n }\n )\n },\n {\n key: \"initHandlers\",\n value: function initHandlers() {\n var _this = this;\n var _manager_on;\n if (!this.socket) return;\n this.attachedSocketEvents.clear();\n this.socketEventHandlers.clear();\n this.socket.on(\"connect\", function() {\n var _this_socket;\n _this.isConnecting = false;\n _this.socketHealthy = true;\n _this.resubscribeRooms();\n _this.emitToHandlers(\"connected\", {\n sid: (_this_socket = _this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.id\n });\n _this.resolveHealthyWaiters(true);\n });\n this.socket.on(\"disconnect\", function(reason) {\n _this.socketHealthy = false;\n void _this.refreshSocketAuth();\n _this.emitToHandlers(\"disconnect\", {\n reason\n });\n });\n this.socket.on(\"connect_error\", function(error) {\n _this.isConnecting = false;\n void _this.refreshSocketAuth();\n _this.emitToHandlers(\"connect_error\", error);\n _this.resolveHealthyWaiters(false);\n });\n var manager = this.socket.io;\n manager === null || manager === void 0 ? void 0 : (_manager_on = manager.on) === null || _manager_on === void 0 ? void 0 : _manager_on.call(manager, \"reconnect_attempt\", function() {\n void _this.refreshSocketAuth();\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = this.handlerMap.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var event = _step.value;\n this.attachSocketListener(event);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n },\n {\n key: \"attachSocketListener\",\n value: (\n /**\n * Attaches a socket listener for an event, storing the reference to prevent duplicates.\n */\n function attachSocketListener(event) {\n var _this = this;\n if (!this.socket || this.attachedSocketEvents.has(event)) return;\n var handler = function handler2(payload) {\n _this.emitToHandlers(event, payload);\n };\n this.socketEventHandlers.set(event, handler);\n this.attachedSocketEvents.add(event);\n this.socket.on(event, handler);\n }\n )\n },\n {\n key: \"detachSocketListener\",\n value: (\n /**\n * Removes a socket listener for an event.\n */\n function detachSocketListener(event) {\n if (!this.socket || !this.attachedSocketEvents.has(event)) return;\n var handler = this.socketEventHandlers.get(event);\n if (handler) {\n this.socket.off(event, handler);\n this.socketEventHandlers.delete(event);\n }\n this.attachedSocketEvents.delete(event);\n }\n )\n },\n {\n key: \"emitToHandlers\",\n value: function emitToHandlers(event, payload) {\n var handlerSet = this.handlerMap.get(event);\n if (!handlerSet) return;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = handlerSet[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var handler = _step.value;\n handler(payload);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n },\n {\n key: \"on\",\n value: async function on(event, handler) {\n var handlerSet = this.handlerMap.get(event);\n if (!handlerSet) {\n handlerSet = /* @__PURE__ */ new Set();\n this.handlerMap.set(event, handlerSet);\n }\n handlerSet.add(handler);\n this.attachSocketListener(event);\n }\n },\n {\n key: \"off\",\n value: function off(event, handler) {\n var handlerSet = this.handlerMap.get(event);\n if (!handlerSet) return;\n handlerSet.delete(handler);\n if (handlerSet.size === 0) {\n this.handlerMap.delete(event);\n this.detachSocketListener(event);\n }\n }\n },\n {\n key: \"subscribeDoc\",\n value: async function subscribeDoc(doctype, name) {\n this.docRooms.set(docRoomKey(doctype, name), {\n doctype,\n name\n });\n await this.ensureConnected();\n if (this.socket && this.socketHealthy) {\n this.socket.emit(\"doc_subscribe\", doctype, name);\n }\n }\n },\n {\n key: \"unsubscribeDoc\",\n value: function unsubscribeDoc(doctype, name) {\n this.docRooms.delete(docRoomKey(doctype, name));\n if (this.socket && this.socketHealthy) {\n this.socket.emit(\"doc_unsubscribe\", doctype, name);\n }\n this.teardownWhenIdle();\n }\n },\n {\n key: \"subscribeList\",\n value: (\n /**\n * Subscribe to list-level updates for a doctype (`list_update` events).\n *\n * `filters` are tracked client-side only: frappe's realtime server has a\n * single room per doctype (`doctype_subscribe`) and does not support\n * filtered list rooms.\n */\n async function subscribeList(doctype, filters) {\n this.listRooms.set(doctype, {\n doctype,\n filters\n });\n await this.ensureConnected();\n if (this.socket && this.socketHealthy) {\n this.socket.emit(\"doctype_subscribe\", doctype);\n }\n }\n )\n },\n {\n key: \"unsubscribeList\",\n value: function unsubscribeList(doctype) {\n this.listRooms.delete(doctype);\n if (this.socket && this.socketHealthy) {\n this.socket.emit(\"doctype_unsubscribe\", doctype);\n }\n this.teardownWhenIdle();\n }\n },\n {\n key: \"teardownWhenIdle\",\n value: (\n /**\n * Tears the socket down when the last room is released. Room membership is\n * the socket's reason to exist: while any subscription holds a room, the\n * infinite Socket.IO reconnection loop is the reconnect catch-up protocol\n * working as designed — but once nothing is subscribed, that same loop is\n * a leak (unmounted consumers leaving a dead-host socket reconnect-polling\n * forever). Handlers and any re-added rooms survive: the next\n * subscribeDoc/subscribeList reconnects and re-attaches everything.\n */\n function teardownWhenIdle() {\n if (this.docRooms.size > 0 || this.listRooms.size > 0) return;\n if (!this.socket && !this.isConnecting) return;\n this.emitToHandlers(\"disconnect\", {\n reason: \"idle-teardown\"\n });\n this.softDisconnect();\n }\n )\n },\n {\n key: \"isHealthy\",\n value: function isHealthy() {\n var _this_socket;\n return this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) === true;\n }\n },\n {\n key: \"disconnect\",\n value: function disconnect() {\n this.softDisconnect();\n this.handlerMap.clear();\n this.docRooms.clear();\n this.listRooms.clear();\n }\n },\n {\n key: \"updateAuth\",\n value: async function updateAuth(auth) {\n this.config.auth = auth;\n var shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0;\n this.softDisconnect();\n if (shouldReconnect) {\n await this.connect();\n }\n }\n },\n {\n key: \"emit\",\n value: function emit(event, data) {\n if (this.socket && this.socketHealthy) {\n this.socket.emit(event, data);\n }\n }\n },\n {\n key: \"getSocket\",\n value: function getSocket() {\n return this.socket;\n }\n }\n ]);\n return RealtimeModule2;\n})();\nexport {\n RealtimeModule,\n RealtimePlatform\n};\n//# sourceMappingURL=realtime.js.map\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["isNative","io","isBrowser","isGjs","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","RealtimePlatform","RealtimePlatform2","docRoomKey","doctype","name","RealtimeModule","RealtimeModule2","config","Map","Set","platform","detectPlatform","_navigator_userAgent","navigator","product","userAgent","includes","getSocketURL","base","baseURL","replace","url","URL","port","socketPort","String","host","hostname","siteName","protocol","unused","result","siteName1","split","getAuthOptions","_this_config_auth","_this_config_auth1","authOptions","extraHeaders","Origin","origin","auth","sessionId","Cookie","useToken","token","authType","type","Authorization","transportOptions","websocket","polling","refreshSocketAuth","_this","socket","Promise","resolve","authRefreshInflight","manager","opts","assign","resolveHealthyWaiters","ok","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","healthyWaiters","Symbol","iterator","_step","next","done","err","return","clear","isSSE","transport","waitUntilHealthy","timeoutMs","arguments","isHealthy","timer","setTimeout","delete","onReady","onReady2","clearTimeout","add","ensureConnected","eventSource","isConnecting","connect","resubscribeRooms","socketHealthy","docRooms","values","room","emit","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","listRooms","_step1","room1","connectSSE","socketURL","transports","autoConnect","path","randomizationFactor","reconnection","reconnectionAttempts","Number","POSITIVE_INFINITY","reconnectionDelay","reconnectionDelayMax","timeout","withCredentials","socketOptions","initHandlers","_ref","sse","EventSourceCtor","EventSource","globalThis","Error","buildSSEURL","initSSEHandlers","_this_config_sse","startsWith","params","entries","queryParams","parts","resolved","push","encodeURIComponent","join","attachedSseEvents","sseListeners","attachSSEListener","events","handlerMap","keys","event","has","listener","listener2","handleSSEEvent","set","addEventListener","detachSSEListener","isCoreSSEType","get","removeEventListener","_event_lastEventId","data","emitToHandlers","reason","frame","lastEventId","mapFrame","mapped","console","warn","mappedEvent","payload"],"sources":["../../src/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|