@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
|
@@ -78,9 +78,14 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
78
78
|
function RealtimeModule2(config) {
|
|
79
79
|
_class_call_check(this, RealtimeModule2);
|
|
80
80
|
_define_property(this, "socket", void 0);
|
|
81
|
+
_define_property(this, "eventSource", void 0);
|
|
81
82
|
_define_property(this, "handlerMap", /* @__PURE__ */new Map());
|
|
82
83
|
_define_property(this, "attachedSocketEvents", /* @__PURE__ */new Set());
|
|
83
84
|
_define_property(this, "socketEventHandlers", /* @__PURE__ */new Map());
|
|
85
|
+
_define_property(this, "attachedSseEvents", /* @__PURE__ */new Set());
|
|
86
|
+
_define_property(this, "sseListeners", /* @__PURE__ */new Map());
|
|
87
|
+
_define_property(this, "sseRoomNoticeLogged", false);
|
|
88
|
+
_define_property(this, "sseEmitNoticeLogged", false);
|
|
84
89
|
_define_property(this, "docRooms", /* @__PURE__ */new Map());
|
|
85
90
|
_define_property(this, "listRooms", /* @__PURE__ */new Map());
|
|
86
91
|
_define_property(this, "socketHealthy", false);
|
|
@@ -226,13 +231,17 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
226
231
|
}
|
|
227
232
|
this.healthyWaiters.clear();
|
|
228
233
|
}
|
|
234
|
+
}, {
|
|
235
|
+
key: "isSSE",
|
|
236
|
+
value: function isSSE() {
|
|
237
|
+
return this.config.transport === "sse";
|
|
238
|
+
}
|
|
229
239
|
}, {
|
|
230
240
|
key: "waitUntilHealthy",
|
|
231
241
|
value: function waitUntilHealthy() {
|
|
232
242
|
var _this = this;
|
|
233
243
|
var timeoutMs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 2e4;
|
|
234
|
-
|
|
235
|
-
if (this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected)) return Promise.resolve(true);
|
|
244
|
+
if (this.isHealthy()) return Promise.resolve(true);
|
|
236
245
|
return new Promise(function (resolve) {
|
|
237
246
|
var timer = setTimeout(function () {
|
|
238
247
|
_this.healthyWaiters.delete(onReady);
|
|
@@ -248,9 +257,8 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
248
257
|
}, {
|
|
249
258
|
key: "ensureConnected",
|
|
250
259
|
value: async function ensureConnected() {
|
|
251
|
-
|
|
252
|
-
if (this.
|
|
253
|
-
if (!this.socket && !this.isConnecting) {
|
|
260
|
+
if (this.isHealthy()) return;
|
|
261
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) {
|
|
254
262
|
await this.connect();
|
|
255
263
|
}
|
|
256
264
|
await this.waitUntilHealthy();
|
|
@@ -306,7 +314,17 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
306
314
|
}
|
|
307
315
|
}, {
|
|
308
316
|
key: "connect",
|
|
309
|
-
value:
|
|
317
|
+
value: (
|
|
318
|
+
/**
|
|
319
|
+
* Open the realtime transport now. Room-driven auto-connect
|
|
320
|
+
* (subscribeDoc/subscribeList) remains the primary lifecycle in both
|
|
321
|
+
* transports — this is public for SSE consumers that use no doc/list room
|
|
322
|
+
* bookkeeping: a one-way stream has nothing to emit on join, so nothing
|
|
323
|
+
* else would ever open it. Idempotent while a transport exists or a
|
|
324
|
+
* connect is in flight.
|
|
325
|
+
*/
|
|
326
|
+
async function connect() {
|
|
327
|
+
if (this.isSSE()) return this.connectSSE();
|
|
310
328
|
if (this.socket || this.isConnecting) return;
|
|
311
329
|
this.isConnecting = true;
|
|
312
330
|
try {
|
|
@@ -334,7 +352,259 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
334
352
|
this.resolveHealthyWaiters(false);
|
|
335
353
|
throw err;
|
|
336
354
|
}
|
|
355
|
+
})
|
|
356
|
+
}, {
|
|
357
|
+
key: "connectSSE",
|
|
358
|
+
value: (
|
|
359
|
+
/**
|
|
360
|
+
* SSE branch of connect(): construct an EventSource against the configured
|
|
361
|
+
* stream URL. EventSource connects at construction, auto-reconnects on
|
|
362
|
+
* failure, and resumes missed frames itself by sending the stream's last
|
|
363
|
+
* `id:` as the `Last-Event-ID` request header — none of that is
|
|
364
|
+
* reimplemented here.
|
|
365
|
+
*/
|
|
366
|
+
async function connectSSE() {
|
|
367
|
+
if (this.eventSource || this.isConnecting) return;
|
|
368
|
+
this.isConnecting = true;
|
|
369
|
+
try {
|
|
370
|
+
var _ref;
|
|
371
|
+
var sse = this.config.sse;
|
|
372
|
+
var EventSourceCtor = (_ref = sse === null || sse === void 0 ? void 0 : sse.EventSource) !== null && _ref !== void 0 ? _ref : globalThis.EventSource;
|
|
373
|
+
if (!EventSourceCtor) {
|
|
374
|
+
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.');
|
|
375
|
+
}
|
|
376
|
+
var url = await this.buildSSEURL();
|
|
377
|
+
this.eventSource = new EventSourceCtor(url, {
|
|
378
|
+
withCredentials: sse === null || sse === void 0 ? void 0 : sse.withCredentials
|
|
379
|
+
});
|
|
380
|
+
this.initSSEHandlers();
|
|
381
|
+
} catch (err) {
|
|
382
|
+
this.isConnecting = false;
|
|
383
|
+
this.resolveHealthyWaiters(false);
|
|
384
|
+
throw err;
|
|
385
|
+
}
|
|
386
|
+
})
|
|
387
|
+
}, {
|
|
388
|
+
key: "buildSSEURL",
|
|
389
|
+
value: async function buildSSEURL() {
|
|
390
|
+
var _ref;
|
|
391
|
+
var _this_config_sse;
|
|
392
|
+
var sse = this.config.sse;
|
|
393
|
+
var url;
|
|
394
|
+
if (sse === null || sse === void 0 ? void 0 : sse.url) {
|
|
395
|
+
url = sse.url;
|
|
396
|
+
} else if (sse === null || sse === void 0 ? void 0 : sse.path) {
|
|
397
|
+
var base = this.config.baseURL.replace(/\/$/, "");
|
|
398
|
+
url = `${base}${sse.path.startsWith("/") ? "" : "/"}${sse.path}`;
|
|
399
|
+
} else {
|
|
400
|
+
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.');
|
|
401
|
+
}
|
|
402
|
+
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 : {});
|
|
403
|
+
if (params.length === 0) return url;
|
|
404
|
+
var parts = [];
|
|
405
|
+
var _iteratorNormalCompletion = true,
|
|
406
|
+
_didIteratorError = false,
|
|
407
|
+
_iteratorError = void 0;
|
|
408
|
+
try {
|
|
409
|
+
for (var _iterator = params[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
410
|
+
var [key, value] = _step.value;
|
|
411
|
+
var resolved = typeof value === "function" ? await value() : value;
|
|
412
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(resolved)}`);
|
|
413
|
+
}
|
|
414
|
+
} catch (err) {
|
|
415
|
+
_didIteratorError = true;
|
|
416
|
+
_iteratorError = err;
|
|
417
|
+
} finally {
|
|
418
|
+
try {
|
|
419
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
420
|
+
_iterator.return();
|
|
421
|
+
}
|
|
422
|
+
} finally {
|
|
423
|
+
if (_didIteratorError) {
|
|
424
|
+
throw _iteratorError;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return `${url}${url.includes("?") ? "&" : "?"}${parts.join("&")}`;
|
|
429
|
+
}
|
|
430
|
+
}, {
|
|
431
|
+
key: "initSSEHandlers",
|
|
432
|
+
value: function initSSEHandlers() {
|
|
433
|
+
var _ref;
|
|
434
|
+
var _this_config_sse;
|
|
435
|
+
this.attachedSseEvents.clear();
|
|
436
|
+
this.sseListeners.clear();
|
|
437
|
+
this.attachSSEListener("open");
|
|
438
|
+
this.attachSSEListener("error");
|
|
439
|
+
this.attachSSEListener("message");
|
|
440
|
+
var _iteratorNormalCompletion = true,
|
|
441
|
+
_didIteratorError = false,
|
|
442
|
+
_iteratorError = void 0;
|
|
443
|
+
try {
|
|
444
|
+
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) {
|
|
445
|
+
var type = _step.value;
|
|
446
|
+
this.attachSSEListener(type);
|
|
447
|
+
}
|
|
448
|
+
} catch (err) {
|
|
449
|
+
_didIteratorError = true;
|
|
450
|
+
_iteratorError = err;
|
|
451
|
+
} finally {
|
|
452
|
+
try {
|
|
453
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
454
|
+
_iterator.return();
|
|
455
|
+
}
|
|
456
|
+
} finally {
|
|
457
|
+
if (_didIteratorError) {
|
|
458
|
+
throw _iteratorError;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
var _iteratorNormalCompletion1 = true,
|
|
463
|
+
_didIteratorError1 = false,
|
|
464
|
+
_iteratorError1 = void 0;
|
|
465
|
+
try {
|
|
466
|
+
for (var _iterator1 = this.handlerMap.keys()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
467
|
+
var event = _step1.value;
|
|
468
|
+
this.attachSSEListener(event);
|
|
469
|
+
}
|
|
470
|
+
} catch (err) {
|
|
471
|
+
_didIteratorError1 = true;
|
|
472
|
+
_iteratorError1 = err;
|
|
473
|
+
} finally {
|
|
474
|
+
try {
|
|
475
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
476
|
+
_iterator1.return();
|
|
477
|
+
}
|
|
478
|
+
} finally {
|
|
479
|
+
if (_didIteratorError1) {
|
|
480
|
+
throw _iteratorError1;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
337
484
|
}
|
|
485
|
+
}, {
|
|
486
|
+
key: "attachSSEListener",
|
|
487
|
+
value: function attachSSEListener(type) {
|
|
488
|
+
var _this = this;
|
|
489
|
+
if (!this.eventSource || this.attachedSseEvents.has(type)) return;
|
|
490
|
+
var listener = function listener2(event) {
|
|
491
|
+
_this.handleSSEEvent(type, event);
|
|
492
|
+
};
|
|
493
|
+
this.sseListeners.set(type, listener);
|
|
494
|
+
this.attachedSseEvents.add(type);
|
|
495
|
+
this.eventSource.addEventListener(type, listener);
|
|
496
|
+
}
|
|
497
|
+
}, {
|
|
498
|
+
key: "detachSSEListener",
|
|
499
|
+
value: function detachSSEListener(type) {
|
|
500
|
+
if (this.isCoreSSEType(type)) return;
|
|
501
|
+
if (!this.eventSource || !this.attachedSseEvents.has(type)) return;
|
|
502
|
+
var listener = this.sseListeners.get(type);
|
|
503
|
+
if (listener) {
|
|
504
|
+
this.eventSource.removeEventListener(type, listener);
|
|
505
|
+
this.sseListeners.delete(type);
|
|
506
|
+
}
|
|
507
|
+
this.attachedSseEvents.delete(type);
|
|
508
|
+
}
|
|
509
|
+
}, {
|
|
510
|
+
key: "isCoreSSEType",
|
|
511
|
+
value: function isCoreSSEType(type) {
|
|
512
|
+
var _ref;
|
|
513
|
+
var _this_config_sse;
|
|
514
|
+
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);
|
|
515
|
+
}
|
|
516
|
+
}, {
|
|
517
|
+
key: "handleSSEEvent",
|
|
518
|
+
value: (
|
|
519
|
+
/**
|
|
520
|
+
* Single entry point for everything the EventSource dispatches. Dataless
|
|
521
|
+
* events are transport lifecycle (`open`/`error` as plain Events); anything
|
|
522
|
+
* carrying `data` is a server frame — including frames the server
|
|
523
|
+
* classified `event: error`, which arrive as MessageEvents WITH data and
|
|
524
|
+
* must not be mistaken for connection errors.
|
|
525
|
+
*/
|
|
526
|
+
function handleSSEEvent(type, event) {
|
|
527
|
+
var _event_lastEventId;
|
|
528
|
+
var _this_config_sse;
|
|
529
|
+
if ((event === null || event === void 0 ? void 0 : event.data) === void 0) {
|
|
530
|
+
if (type === "open") {
|
|
531
|
+
this.isConnecting = false;
|
|
532
|
+
this.socketHealthy = true;
|
|
533
|
+
this.emitToHandlers("connected", {
|
|
534
|
+
transport: "sse"
|
|
535
|
+
});
|
|
536
|
+
this.resolveHealthyWaiters(true);
|
|
537
|
+
} else if (type === "error") {
|
|
538
|
+
this.isConnecting = false;
|
|
539
|
+
this.socketHealthy = false;
|
|
540
|
+
this.emitToHandlers("disconnect", {
|
|
541
|
+
reason: "sse-error"
|
|
542
|
+
});
|
|
543
|
+
this.resolveHealthyWaiters(false);
|
|
544
|
+
}
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
var frame = {
|
|
548
|
+
type,
|
|
549
|
+
data: String(event.data),
|
|
550
|
+
lastEventId: (_event_lastEventId = event.lastEventId) !== null && _event_lastEventId !== void 0 ? _event_lastEventId : ""
|
|
551
|
+
};
|
|
552
|
+
var mapFrame = (_this_config_sse = this.config.sse) === null || _this_config_sse === void 0 ? void 0 : _this_config_sse.mapFrame;
|
|
553
|
+
if (mapFrame) {
|
|
554
|
+
var mapped;
|
|
555
|
+
try {
|
|
556
|
+
mapped = mapFrame(frame);
|
|
557
|
+
} catch (err) {
|
|
558
|
+
console.warn("[RealtimeModule] sse.mapFrame threw; frame dropped:", err);
|
|
559
|
+
return;
|
|
560
|
+
}
|
|
561
|
+
if (!mapped) return;
|
|
562
|
+
var _iteratorNormalCompletion = true,
|
|
563
|
+
_didIteratorError = false,
|
|
564
|
+
_iteratorError = void 0;
|
|
565
|
+
try {
|
|
566
|
+
for (var _iterator = mapped[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
567
|
+
var {
|
|
568
|
+
event: mappedEvent,
|
|
569
|
+
payload
|
|
570
|
+
} = _step.value;
|
|
571
|
+
this.emitToHandlers(mappedEvent, payload);
|
|
572
|
+
}
|
|
573
|
+
} catch (err) {
|
|
574
|
+
_didIteratorError = true;
|
|
575
|
+
_iteratorError = err;
|
|
576
|
+
} finally {
|
|
577
|
+
try {
|
|
578
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
579
|
+
_iterator.return();
|
|
580
|
+
}
|
|
581
|
+
} finally {
|
|
582
|
+
if (_didIteratorError) {
|
|
583
|
+
throw _iteratorError;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
var payload1 = frame.data;
|
|
590
|
+
try {
|
|
591
|
+
payload1 = JSON.parse(frame.data);
|
|
592
|
+
} catch (unused) {}
|
|
593
|
+
this.emitToHandlers(frame.type, payload1);
|
|
594
|
+
})
|
|
595
|
+
}, {
|
|
596
|
+
key: "logSSERoomNoticeOnce",
|
|
597
|
+
value: (
|
|
598
|
+
/**
|
|
599
|
+
* Logged once: SSE is one-way, so doc/list room membership can't be sent
|
|
600
|
+
* upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
|
|
601
|
+
* for mapFrame-driven filtering and for a future two-way transport.
|
|
602
|
+
*/
|
|
603
|
+
function logSSERoomNoticeOnce() {
|
|
604
|
+
if (this.sseRoomNoticeLogged) return;
|
|
605
|
+
this.sseRoomNoticeLogged = true;
|
|
606
|
+
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.");
|
|
607
|
+
})
|
|
338
608
|
}, {
|
|
339
609
|
key: "softDisconnect",
|
|
340
610
|
value: (
|
|
@@ -350,8 +620,36 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
350
620
|
this.socket.disconnect();
|
|
351
621
|
this.socket = void 0;
|
|
352
622
|
}
|
|
623
|
+
if (this.eventSource) {
|
|
624
|
+
var _iteratorNormalCompletion = true,
|
|
625
|
+
_didIteratorError = false,
|
|
626
|
+
_iteratorError = void 0;
|
|
627
|
+
try {
|
|
628
|
+
for (var _iterator = this.sseListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
629
|
+
var [type, listener] = _step.value;
|
|
630
|
+
this.eventSource.removeEventListener(type, listener);
|
|
631
|
+
}
|
|
632
|
+
} catch (err) {
|
|
633
|
+
_didIteratorError = true;
|
|
634
|
+
_iteratorError = err;
|
|
635
|
+
} finally {
|
|
636
|
+
try {
|
|
637
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
638
|
+
_iterator.return();
|
|
639
|
+
}
|
|
640
|
+
} finally {
|
|
641
|
+
if (_didIteratorError) {
|
|
642
|
+
throw _iteratorError;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
this.eventSource.close();
|
|
647
|
+
this.eventSource = void 0;
|
|
648
|
+
}
|
|
353
649
|
this.attachedSocketEvents.clear();
|
|
354
650
|
this.socketEventHandlers.clear();
|
|
651
|
+
this.attachedSseEvents.clear();
|
|
652
|
+
this.sseListeners.clear();
|
|
355
653
|
this.socketHealthy = false;
|
|
356
654
|
this.isConnecting = false;
|
|
357
655
|
this.resolveHealthyWaiters(false);
|
|
@@ -482,7 +780,11 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
482
780
|
this.handlerMap.set(event, handlerSet);
|
|
483
781
|
}
|
|
484
782
|
handlerSet.add(handler);
|
|
485
|
-
this.
|
|
783
|
+
if (this.isSSE()) {
|
|
784
|
+
this.attachSSEListener(event);
|
|
785
|
+
} else {
|
|
786
|
+
this.attachSocketListener(event);
|
|
787
|
+
}
|
|
486
788
|
}
|
|
487
789
|
}, {
|
|
488
790
|
key: "off",
|
|
@@ -492,7 +794,11 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
492
794
|
handlerSet.delete(handler);
|
|
493
795
|
if (handlerSet.size === 0) {
|
|
494
796
|
this.handlerMap.delete(event);
|
|
495
|
-
this.
|
|
797
|
+
if (this.isSSE()) {
|
|
798
|
+
this.detachSSEListener(event);
|
|
799
|
+
} else {
|
|
800
|
+
this.detachSocketListener(event);
|
|
801
|
+
}
|
|
496
802
|
}
|
|
497
803
|
}
|
|
498
804
|
}, {
|
|
@@ -502,8 +808,9 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
502
808
|
doctype,
|
|
503
809
|
name
|
|
504
810
|
});
|
|
811
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
505
812
|
await this.ensureConnected();
|
|
506
|
-
if (this.socket && this.socketHealthy) {
|
|
813
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
507
814
|
this.socket.emit("doc_subscribe", doctype, name);
|
|
508
815
|
}
|
|
509
816
|
}
|
|
@@ -511,7 +818,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
511
818
|
key: "unsubscribeDoc",
|
|
512
819
|
value: function unsubscribeDoc(doctype, name) {
|
|
513
820
|
this.docRooms.delete(docRoomKey(doctype, name));
|
|
514
|
-
if (this.socket && this.socketHealthy) {
|
|
821
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
515
822
|
this.socket.emit("doc_unsubscribe", doctype, name);
|
|
516
823
|
}
|
|
517
824
|
this.teardownWhenIdle();
|
|
@@ -531,8 +838,9 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
531
838
|
doctype,
|
|
532
839
|
filters
|
|
533
840
|
});
|
|
841
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
534
842
|
await this.ensureConnected();
|
|
535
|
-
if (this.socket && this.socketHealthy) {
|
|
843
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
536
844
|
this.socket.emit("doctype_subscribe", doctype);
|
|
537
845
|
}
|
|
538
846
|
})
|
|
@@ -540,7 +848,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
540
848
|
key: "unsubscribeList",
|
|
541
849
|
value: function unsubscribeList(doctype) {
|
|
542
850
|
this.listRooms.delete(doctype);
|
|
543
|
-
if (this.socket && this.socketHealthy) {
|
|
851
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
544
852
|
this.socket.emit("doctype_unsubscribe", doctype);
|
|
545
853
|
}
|
|
546
854
|
this.teardownWhenIdle();
|
|
@@ -559,7 +867,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
559
867
|
*/
|
|
560
868
|
function teardownWhenIdle() {
|
|
561
869
|
if (this.docRooms.size > 0 || this.listRooms.size > 0) return;
|
|
562
|
-
if (!this.socket && !this.isConnecting) return;
|
|
870
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) return;
|
|
563
871
|
this.emitToHandlers("disconnect", {
|
|
564
872
|
reason: "idle-teardown"
|
|
565
873
|
});
|
|
@@ -569,6 +877,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
569
877
|
key: "isHealthy",
|
|
570
878
|
value: function isHealthy() {
|
|
571
879
|
var _this_socket;
|
|
880
|
+
if (this.isSSE()) return this.socketHealthy && this.eventSource !== void 0;
|
|
572
881
|
return this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) === true;
|
|
573
882
|
}
|
|
574
883
|
}, {
|
|
@@ -583,7 +892,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
583
892
|
key: "updateAuth",
|
|
584
893
|
value: async function updateAuth(auth) {
|
|
585
894
|
this.config.auth = auth;
|
|
586
|
-
var shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0;
|
|
895
|
+
var shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0 || this.isSSE() && this.eventSource !== void 0;
|
|
587
896
|
this.softDisconnect();
|
|
588
897
|
if (shouldReconnect) {
|
|
589
898
|
await this.connect();
|
|
@@ -592,6 +901,13 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
592
901
|
}, {
|
|
593
902
|
key: "emit",
|
|
594
903
|
value: function emit(event, data) {
|
|
904
|
+
if (this.isSSE()) {
|
|
905
|
+
if (!this.sseEmitNoticeLogged) {
|
|
906
|
+
this.sseEmitNoticeLogged = true;
|
|
907
|
+
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.");
|
|
908
|
+
}
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
595
911
|
if (this.socket && this.socketHealthy) {
|
|
596
912
|
this.socket.emit(event, data);
|
|
597
913
|
}
|
|
@@ -601,6 +917,28 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
601
917
|
value: function getSocket() {
|
|
602
918
|
return this.socket;
|
|
603
919
|
}
|
|
920
|
+
}, {
|
|
921
|
+
/** Live EventSource when the SSE transport is connected (undefined otherwise). */
|
|
922
|
+
key: "getEventSource",
|
|
923
|
+
value: function getEventSource() {
|
|
924
|
+
return this.eventSource;
|
|
925
|
+
}
|
|
926
|
+
}, {
|
|
927
|
+
/**
|
|
928
|
+
* Doc rooms recorded by subscribeDoc. Under SSE these are client-side
|
|
929
|
+
* bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
|
|
930
|
+
* consult them to filter or route frames.
|
|
931
|
+
*/
|
|
932
|
+
key: "getDocRooms",
|
|
933
|
+
value: function getDocRooms() {
|
|
934
|
+
return [...this.docRooms.values()];
|
|
935
|
+
}
|
|
936
|
+
}, {
|
|
937
|
+
/** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
|
|
938
|
+
key: "getListRooms",
|
|
939
|
+
value: function getListRooms() {
|
|
940
|
+
return [...this.listRooms.values()];
|
|
941
|
+
}
|
|
604
942
|
}]);
|
|
605
943
|
return RealtimeModule2;
|
|
606
944
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","realtime_exports","RealtimeModule","RealtimePlatform","module","exports","import_platform","require","import_socket","import_util","_class_call_check","instance","Constructor","TypeError","_defineProperties","props","i","length","descriptor","configurable","writable","_create_class","protoProps","staticProps","_define_property","obj","RealtimePlatform2","docRoomKey","doctype","RealtimeModule2","config","Map","Set","platform","detectPlatform","_navigator_userAgent","isGjs","isNative","navigator","product","userAgent","includes","isBrowser","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","io","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","handlerMap","keys","event","attachSocketListener","has","handler","handler2","payload","set","detachSocketListener","off","handlerSet","size","subscribeDoc","unsubscribeDoc","teardownWhenIdle","subscribeList","filters","unsubscribeList","isHealthy","updateAuth","shouldReconnect","data","getSocket"],"sources":["realtime.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar realtime_exports = {};\n__export(realtime_exports, {\n RealtimeModule: () => RealtimeModule,\n RealtimePlatform: () => RealtimePlatform\n});\nmodule.exports = __toCommonJS(realtime_exports);\nvar import_platform = require(\"@multiplatform.one/platform\");\nvar import_socket = require(\"socket.io-client\");\nvar import_util = require(\"./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 ((0, import_util.isGjs)()) return \"node\";\n if (import_platform.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 (!(0, import_util.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 = (0, import_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})();\n//# sourceMappingURL=realtime.js.map\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","realtime_exports","__export","RealtimeModule","RealtimePlatform","module","exports","import_platform","require","import_socket","import_util","_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","RealtimePlatform2","docRoomKey","doctype","name","RealtimeModule2","config","Map","Set","platform","detectPlatform","_navigator_userAgent","isGjs","isNative","navigator","product","userAgent","includes","isBrowser","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","io","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":[]}
|