@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.
Files changed (127) hide show
  1. package/dist/cjs/auth.native.js.map +1 -1
  2. package/dist/cjs/call.native.js.map +1 -1
  3. package/dist/cjs/collection.native.js.map +1 -1
  4. package/dist/cjs/common/types.native.js.map +1 -1
  5. package/dist/cjs/core/http.native.js.map +1 -1
  6. package/dist/cjs/core/types.native.js.map +1 -1
  7. package/dist/cjs/core/wire.native.js.map +1 -1
  8. package/dist/cjs/db.native.js.map +1 -1
  9. package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
  10. package/dist/cjs/devtools/index.native.js.map +1 -1
  11. package/dist/cjs/devtools/plugin.native.js.map +1 -1
  12. package/dist/cjs/devtools/theme.native.js.map +1 -1
  13. package/dist/cjs/doctype.native.js.map +1 -1
  14. package/dist/cjs/file.native.js.map +1 -1
  15. package/dist/cjs/fixtureDb.native.js.map +1 -1
  16. package/dist/cjs/fixtures.native.js.map +1 -1
  17. package/dist/cjs/frappeApp.native.js.map +1 -1
  18. package/dist/cjs/frappeReact.native.js +1 -1
  19. package/dist/cjs/frappeReact.native.js.map +1 -1
  20. package/dist/cjs/index.cjs +1 -0
  21. package/dist/cjs/index.native.js +3 -2
  22. package/dist/cjs/index.native.js.map +1 -1
  23. package/dist/cjs/optimistic.native.js.map +1 -1
  24. package/dist/cjs/pacer.native.js.map +1 -1
  25. package/dist/cjs/plugin/index.native.js.map +1 -1
  26. package/dist/cjs/realtime.cjs +222 -11
  27. package/dist/cjs/realtime.native.js +352 -14
  28. package/dist/cjs/realtime.native.js.map +1 -1
  29. package/dist/cjs/sync/backfill.native.js.map +1 -1
  30. package/dist/cjs/sync/filters.native.js.map +1 -1
  31. package/dist/cjs/sync/index.native.js.map +1 -1
  32. package/dist/cjs/sync/merge.native.js.map +1 -1
  33. package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
  34. package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
  35. package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
  36. package/dist/cjs/sync/persistence.native.js.map +1 -1
  37. package/dist/cjs/sync/realtime.native.js.map +1 -1
  38. package/dist/cjs/sync/rehydration.native.js.map +1 -1
  39. package/dist/cjs/sync/storage.native.js.map +1 -1
  40. package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
  41. package/dist/cjs/sync/types.native.js.map +1 -1
  42. package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
  43. package/dist/cjs/useLiveQuery.native.js.map +1 -1
  44. package/dist/cjs/util.native.js.map +1 -1
  45. package/dist/esm/auth.native.js.map +1 -1
  46. package/dist/esm/call.native.js.map +1 -1
  47. package/dist/esm/collection.native.js +1 -1
  48. package/dist/esm/collection.native.js.map +1 -1
  49. package/dist/esm/common/types.native.js.map +1 -1
  50. package/dist/esm/core/http.native.js +2 -2
  51. package/dist/esm/core/http.native.js.map +1 -1
  52. package/dist/esm/core/types.native.js.map +1 -1
  53. package/dist/esm/core/wire.native.js.map +1 -1
  54. package/dist/esm/db.native.js +1 -1
  55. package/dist/esm/db.native.js.map +1 -1
  56. package/dist/esm/devtools/FrappeDevtoolsPanel.native.js +2 -2
  57. package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
  58. package/dist/esm/devtools/index.native.js +2 -2
  59. package/dist/esm/devtools/index.native.js.map +1 -1
  60. package/dist/esm/devtools/plugin.native.js +1 -1
  61. package/dist/esm/devtools/plugin.native.js.map +1 -1
  62. package/dist/esm/devtools/theme.native.js.map +1 -1
  63. package/dist/esm/doctype.native.js +1 -1
  64. package/dist/esm/doctype.native.js.map +1 -1
  65. package/dist/esm/file.native.js.map +1 -1
  66. package/dist/esm/fixtureDb.native.js +1 -1
  67. package/dist/esm/fixtureDb.native.js.map +1 -1
  68. package/dist/esm/fixtures.native.js.map +1 -1
  69. package/dist/esm/frappeApp.native.js +7 -7
  70. package/dist/esm/frappeApp.native.js.map +1 -1
  71. package/dist/esm/frappeReact.native.js +7 -7
  72. package/dist/esm/frappeReact.native.js.map +1 -1
  73. package/dist/esm/index.mjs +2 -2
  74. package/dist/esm/index.mjs.map +1 -1
  75. package/dist/esm/index.native.js +22 -22
  76. package/dist/esm/index.native.js.map +1 -1
  77. package/dist/esm/optimistic.native.js.map +1 -1
  78. package/dist/esm/pacer.native.js +4 -4
  79. package/dist/esm/pacer.native.js.map +1 -1
  80. package/dist/esm/plugin/index.native.js.map +1 -1
  81. package/dist/esm/realtime.mjs +222 -11
  82. package/dist/esm/realtime.mjs.map +1 -1
  83. package/dist/esm/realtime.native.js +353 -15
  84. package/dist/esm/realtime.native.js.map +1 -1
  85. package/dist/esm/sync/backfill.native.js +1 -1
  86. package/dist/esm/sync/backfill.native.js.map +1 -1
  87. package/dist/esm/sync/filters.native.js.map +1 -1
  88. package/dist/esm/sync/index.native.js +8 -8
  89. package/dist/esm/sync/index.native.js.map +1 -1
  90. package/dist/esm/sync/merge.native.js.map +1 -1
  91. package/dist/esm/sync/mutationEngine.native.js +4 -4
  92. package/dist/esm/sync/mutationEngine.native.js.map +1 -1
  93. package/dist/esm/sync/mutationJournal.native.js +1 -1
  94. package/dist/esm/sync/mutationJournal.native.js.map +1 -1
  95. package/dist/esm/sync/normalizedCache.native.js.map +1 -1
  96. package/dist/esm/sync/persistence.native.js +2 -2
  97. package/dist/esm/sync/persistence.native.js.map +1 -1
  98. package/dist/esm/sync/realtime.native.js +1 -1
  99. package/dist/esm/sync/realtime.native.js.map +1 -1
  100. package/dist/esm/sync/rehydration.native.js +1 -1
  101. package/dist/esm/sync/rehydration.native.js.map +1 -1
  102. package/dist/esm/sync/storage.native.js.map +1 -1
  103. package/dist/esm/sync/subscriptionManager.native.js +4 -4
  104. package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
  105. package/dist/esm/sync/types.native.js.map +1 -1
  106. package/dist/esm/sync/virtualPageManager.native.js +1 -1
  107. package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
  108. package/dist/esm/useLiveQuery.native.js.map +1 -1
  109. package/dist/esm/util.native.js.map +1 -1
  110. package/dist/jsx/index.js +2 -2
  111. package/dist/jsx/index.js.map +1 -1
  112. package/dist/jsx/index.mjs +2 -2
  113. package/dist/jsx/index.mjs.map +1 -1
  114. package/dist/jsx/index.native.js +1 -0
  115. package/dist/jsx/index.native.js.map +1 -1
  116. package/dist/jsx/realtime.mjs +222 -11
  117. package/dist/jsx/realtime.mjs.map +1 -1
  118. package/dist/jsx/realtime.native.js +352 -14
  119. package/dist/jsx/realtime.native.js.map +1 -1
  120. package/package.json +7 -7
  121. package/src/index.ts +13 -1
  122. package/src/realtime.ts +406 -14
  123. package/src/realtimeSse.spec.ts +547 -0
  124. package/types/index.d.ts +2 -1
  125. package/types/index.d.ts.map +1 -1
  126. package/types/realtime.d.ts +166 -1
  127. 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
- var _this_socket;
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
- var _this_socket;
252
- if (this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected)) return;
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: async function connect() {
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.attachSocketListener(event);
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.detachSocketListener(event);
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":[]}