@multiplatform.one/frappe 6.6.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/common/types.native.js.map +1 -1
- package/dist/cjs/core/http.cjs +45 -1
- package/dist/cjs/core/http.native.js +72 -1
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/core/types.native.js.map +1 -1
- package/dist/cjs/core/wire.native.js.map +1 -1
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/cjs/devtools/index.native.js.map +1 -1
- package/dist/cjs/devtools/plugin.native.js.map +1 -1
- package/dist/cjs/devtools/theme.native.js.map +1 -1
- package/dist/cjs/doctype.cjs +15 -2
- package/dist/cjs/doctype.native.js +22 -5
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/fixtures.native.js.map +1 -1
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +55 -1
- package/dist/cjs/frappeReact.native.js +67 -2
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +8 -0
- package/dist/cjs/index.native.js +10 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/optimistic.cjs +32 -2
- package/dist/cjs/optimistic.native.js +34 -1
- package/dist/cjs/optimistic.native.js.map +1 -1
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/plugin/index.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +234 -11
- package/dist/cjs/realtime.native.js +368 -18
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/filters.native.js.map +1 -1
- package/dist/cjs/sync/index.cjs +45 -1
- package/dist/cjs/sync/index.native.js +71 -1
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.cjs +51 -15
- package/dist/cjs/sync/mutationEngine.native.js +69 -16
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.cjs +8 -0
- package/dist/cjs/sync/mutationJournal.native.js +10 -0
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.native.js.map +1 -1
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.native.js +1 -1
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/common/types.native.js.map +1 -1
- package/dist/esm/core/http.mjs +45 -2
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +74 -4
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/core/types.native.js.map +1 -1
- package/dist/esm/core/wire.native.js.map +1 -1
- package/dist/esm/db.native.js +1 -1
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js +2 -2
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/esm/devtools/index.native.js +2 -2
- package/dist/esm/devtools/index.native.js.map +1 -1
- package/dist/esm/devtools/plugin.native.js +1 -1
- package/dist/esm/devtools/plugin.native.js.map +1 -1
- package/dist/esm/devtools/theme.native.js.map +1 -1
- package/dist/esm/doctype.mjs +15 -2
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +23 -6
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.native.js +1 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/fixtures.native.js.map +1 -1
- package/dist/esm/frappeApp.native.js +7 -7
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +55 -3
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +73 -10
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +22 -22
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/optimistic.mjs +27 -1
- package/dist/esm/optimistic.mjs.map +1 -1
- package/dist/esm/optimistic.native.js +30 -1
- package/dist/esm/optimistic.native.js.map +1 -1
- package/dist/esm/pacer.mjs.map +1 -1
- package/dist/esm/pacer.native.js +4 -4
- package/dist/esm/pacer.native.js.map +1 -1
- package/dist/esm/plugin/index.native.js.map +1 -1
- package/dist/esm/realtime.mjs +234 -11
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +369 -19
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.native.js +1 -1
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/filters.native.js.map +1 -1
- package/dist/esm/sync/index.mjs +45 -1
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +79 -9
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.mjs +51 -15
- package/dist/esm/sync/mutationEngine.mjs.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +73 -20
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.mjs +8 -0
- package/dist/esm/sync/mutationJournal.mjs.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +11 -1
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.native.js +2 -2
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.native.js +1 -1
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.native.js +1 -1
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +4 -4
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.mjs.map +1 -1
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +1 -1
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.native.js.map +1 -1
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +45 -2
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +72 -1
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +15 -2
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +22 -5
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +55 -3
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +66 -1
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +5 -5
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -5
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +8 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/optimistic.mjs +27 -1
- package/dist/jsx/optimistic.mjs.map +1 -1
- package/dist/jsx/optimistic.native.js +34 -1
- package/dist/jsx/optimistic.native.js.map +1 -1
- package/dist/jsx/pacer.mjs.map +1 -1
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +234 -11
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +368 -18
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +45 -1
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +71 -1
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.mjs +51 -15
- package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js +69 -16
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.mjs +8 -0
- package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js +10 -0
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/types.mjs.map +1 -1
- package/dist/jsx/sync/types.native.js.map +1 -1
- package/package.json +8 -8
- package/src/core/http.spec.ts +81 -0
- package/src/core/http.ts +80 -3
- package/src/doctype.spec.ts +82 -3
- package/src/doctype.ts +51 -7
- package/src/frappeReact.ts +126 -4
- package/src/index.ts +28 -3
- package/src/optimistic.spec.ts +113 -2
- package/src/optimistic.ts +95 -0
- package/src/pacer.ts +8 -0
- package/src/realtime.spec.ts +62 -0
- package/src/realtime.ts +440 -14
- package/src/realtimeSse.spec.ts +547 -0
- package/src/sync/index.ts +44 -1
- package/src/sync/mutationEngine.spec.ts +7 -2
- package/src/sync/mutationEngine.ts +83 -27
- package/src/sync/mutationJournal.ts +9 -0
- package/src/sync/mutations.spec.ts +1 -1
- package/src/sync/syncModule.spec.ts +255 -1
- package/src/sync/types.ts +20 -0
- package/types/core/http.d.ts +11 -0
- package/types/core/http.d.ts.map +1 -1
- package/types/doctype.d.ts +7 -0
- package/types/doctype.d.ts.map +1 -1
- package/types/frappeReact.d.ts +50 -2
- package/types/frappeReact.d.ts.map +1 -1
- package/types/index.d.ts +8 -6
- package/types/index.d.ts.map +1 -1
- package/types/optimistic.d.ts +38 -0
- package/types/optimistic.d.ts.map +1 -1
- package/types/pacer.d.ts +8 -0
- package/types/pacer.d.ts.map +1 -1
- package/types/realtime.d.ts +183 -1
- package/types/realtime.d.ts.map +1 -1
- package/types/sync/index.d.ts +16 -1
- package/types/sync/index.d.ts.map +1 -1
- package/types/sync/mutationEngine.d.ts +7 -0
- package/types/sync/mutationEngine.d.ts.map +1 -1
- package/types/sync/mutationJournal.d.ts +6 -0
- package/types/sync/mutationJournal.d.ts.map +1 -1
- package/types/sync/types.d.ts +20 -0
- package/types/sync/types.d.ts.map +1 -1
|
@@ -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);
|
|
@@ -108,19 +113,31 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
108
113
|
key: "getSocketURL",
|
|
109
114
|
value: function getSocketURL() {
|
|
110
115
|
var base = this.config.baseURL.replace(/\/$/, "");
|
|
116
|
+
if (this.config.socketBaseURL) {
|
|
117
|
+
var socketBase = this.config.socketBaseURL.replace(/\/$/, "");
|
|
118
|
+
var siteName = this.config.siteName;
|
|
119
|
+
if (!siteName) {
|
|
120
|
+
try {
|
|
121
|
+
siteName = new URL(base).hostname;
|
|
122
|
+
} catch (unused) {
|
|
123
|
+
siteName = base.replace(/^https?:\/\//, "").split(/[/:]/)[0];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return `${socketBase}/${siteName}`;
|
|
127
|
+
}
|
|
111
128
|
try {
|
|
112
129
|
var url = new URL(base);
|
|
113
130
|
var port = this.config.socketPort ? String(this.config.socketPort) : url.port;
|
|
114
131
|
var host = port ? `${url.hostname}:${port}` : url.hostname;
|
|
115
|
-
var
|
|
116
|
-
return `${url.protocol}//${host}/${
|
|
132
|
+
var siteName1 = this.config.siteName || url.hostname;
|
|
133
|
+
return `${url.protocol}//${host}/${siteName1}`;
|
|
117
134
|
} catch (unused) {
|
|
118
135
|
var result = base;
|
|
119
136
|
if (this.config.socketPort) {
|
|
120
137
|
result = result.replace(/(:\d+)/, `:${this.config.socketPort}`);
|
|
121
138
|
}
|
|
122
|
-
var
|
|
123
|
-
return `${result}/${
|
|
139
|
+
var siteName2 = this.config.siteName || result.replace(/^https?:\/\//, "").split(/[/:]/)[0];
|
|
140
|
+
return `${result}/${siteName2}`;
|
|
124
141
|
}
|
|
125
142
|
}
|
|
126
143
|
}, {
|
|
@@ -226,13 +243,17 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
226
243
|
}
|
|
227
244
|
this.healthyWaiters.clear();
|
|
228
245
|
}
|
|
246
|
+
}, {
|
|
247
|
+
key: "isSSE",
|
|
248
|
+
value: function isSSE() {
|
|
249
|
+
return this.config.transport === "sse";
|
|
250
|
+
}
|
|
229
251
|
}, {
|
|
230
252
|
key: "waitUntilHealthy",
|
|
231
253
|
value: function waitUntilHealthy() {
|
|
232
254
|
var _this = this;
|
|
233
255
|
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);
|
|
256
|
+
if (this.isHealthy()) return Promise.resolve(true);
|
|
236
257
|
return new Promise(function (resolve) {
|
|
237
258
|
var timer = setTimeout(function () {
|
|
238
259
|
_this.healthyWaiters.delete(onReady);
|
|
@@ -248,9 +269,8 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
248
269
|
}, {
|
|
249
270
|
key: "ensureConnected",
|
|
250
271
|
value: async function ensureConnected() {
|
|
251
|
-
|
|
252
|
-
if (this.
|
|
253
|
-
if (!this.socket && !this.isConnecting) {
|
|
272
|
+
if (this.isHealthy()) return;
|
|
273
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) {
|
|
254
274
|
await this.connect();
|
|
255
275
|
}
|
|
256
276
|
await this.waitUntilHealthy();
|
|
@@ -306,7 +326,17 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
306
326
|
}
|
|
307
327
|
}, {
|
|
308
328
|
key: "connect",
|
|
309
|
-
value:
|
|
329
|
+
value: (
|
|
330
|
+
/**
|
|
331
|
+
* Open the realtime transport now. Room-driven auto-connect
|
|
332
|
+
* (subscribeDoc/subscribeList) remains the primary lifecycle in both
|
|
333
|
+
* transports — this is public for SSE consumers that use no doc/list room
|
|
334
|
+
* bookkeeping: a one-way stream has nothing to emit on join, so nothing
|
|
335
|
+
* else would ever open it. Idempotent while a transport exists or a
|
|
336
|
+
* connect is in flight.
|
|
337
|
+
*/
|
|
338
|
+
async function connect() {
|
|
339
|
+
if (this.isSSE()) return this.connectSSE();
|
|
310
340
|
if (this.socket || this.isConnecting) return;
|
|
311
341
|
this.isConnecting = true;
|
|
312
342
|
try {
|
|
@@ -334,7 +364,259 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
334
364
|
this.resolveHealthyWaiters(false);
|
|
335
365
|
throw err;
|
|
336
366
|
}
|
|
367
|
+
})
|
|
368
|
+
}, {
|
|
369
|
+
key: "connectSSE",
|
|
370
|
+
value: (
|
|
371
|
+
/**
|
|
372
|
+
* SSE branch of connect(): construct an EventSource against the configured
|
|
373
|
+
* stream URL. EventSource connects at construction, auto-reconnects on
|
|
374
|
+
* failure, and resumes missed frames itself by sending the stream's last
|
|
375
|
+
* `id:` as the `Last-Event-ID` request header — none of that is
|
|
376
|
+
* reimplemented here.
|
|
377
|
+
*/
|
|
378
|
+
async function connectSSE() {
|
|
379
|
+
if (this.eventSource || this.isConnecting) return;
|
|
380
|
+
this.isConnecting = true;
|
|
381
|
+
try {
|
|
382
|
+
var _ref;
|
|
383
|
+
var sse = this.config.sse;
|
|
384
|
+
var EventSourceCtor = (_ref = sse === null || sse === void 0 ? void 0 : sse.EventSource) !== null && _ref !== void 0 ? _ref : globalThis.EventSource;
|
|
385
|
+
if (!EventSourceCtor) {
|
|
386
|
+
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.');
|
|
387
|
+
}
|
|
388
|
+
var url = await this.buildSSEURL();
|
|
389
|
+
this.eventSource = new EventSourceCtor(url, {
|
|
390
|
+
withCredentials: sse === null || sse === void 0 ? void 0 : sse.withCredentials
|
|
391
|
+
});
|
|
392
|
+
this.initSSEHandlers();
|
|
393
|
+
} catch (err) {
|
|
394
|
+
this.isConnecting = false;
|
|
395
|
+
this.resolveHealthyWaiters(false);
|
|
396
|
+
throw err;
|
|
397
|
+
}
|
|
398
|
+
})
|
|
399
|
+
}, {
|
|
400
|
+
key: "buildSSEURL",
|
|
401
|
+
value: async function buildSSEURL() {
|
|
402
|
+
var _ref;
|
|
403
|
+
var _this_config_sse;
|
|
404
|
+
var sse = this.config.sse;
|
|
405
|
+
var url;
|
|
406
|
+
if (sse === null || sse === void 0 ? void 0 : sse.url) {
|
|
407
|
+
url = sse.url;
|
|
408
|
+
} else if (sse === null || sse === void 0 ? void 0 : sse.path) {
|
|
409
|
+
var base = this.config.baseURL.replace(/\/$/, "");
|
|
410
|
+
url = `${base}${sse.path.startsWith("/") ? "" : "/"}${sse.path}`;
|
|
411
|
+
} else {
|
|
412
|
+
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.');
|
|
413
|
+
}
|
|
414
|
+
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 : {});
|
|
415
|
+
if (params.length === 0) return url;
|
|
416
|
+
var parts = [];
|
|
417
|
+
var _iteratorNormalCompletion = true,
|
|
418
|
+
_didIteratorError = false,
|
|
419
|
+
_iteratorError = void 0;
|
|
420
|
+
try {
|
|
421
|
+
for (var _iterator = params[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
422
|
+
var [key, value] = _step.value;
|
|
423
|
+
var resolved = typeof value === "function" ? await value() : value;
|
|
424
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(resolved)}`);
|
|
425
|
+
}
|
|
426
|
+
} catch (err) {
|
|
427
|
+
_didIteratorError = true;
|
|
428
|
+
_iteratorError = err;
|
|
429
|
+
} finally {
|
|
430
|
+
try {
|
|
431
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
432
|
+
_iterator.return();
|
|
433
|
+
}
|
|
434
|
+
} finally {
|
|
435
|
+
if (_didIteratorError) {
|
|
436
|
+
throw _iteratorError;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return `${url}${url.includes("?") ? "&" : "?"}${parts.join("&")}`;
|
|
337
441
|
}
|
|
442
|
+
}, {
|
|
443
|
+
key: "initSSEHandlers",
|
|
444
|
+
value: function initSSEHandlers() {
|
|
445
|
+
var _ref;
|
|
446
|
+
var _this_config_sse;
|
|
447
|
+
this.attachedSseEvents.clear();
|
|
448
|
+
this.sseListeners.clear();
|
|
449
|
+
this.attachSSEListener("open");
|
|
450
|
+
this.attachSSEListener("error");
|
|
451
|
+
this.attachSSEListener("message");
|
|
452
|
+
var _iteratorNormalCompletion = true,
|
|
453
|
+
_didIteratorError = false,
|
|
454
|
+
_iteratorError = void 0;
|
|
455
|
+
try {
|
|
456
|
+
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) {
|
|
457
|
+
var type = _step.value;
|
|
458
|
+
this.attachSSEListener(type);
|
|
459
|
+
}
|
|
460
|
+
} catch (err) {
|
|
461
|
+
_didIteratorError = true;
|
|
462
|
+
_iteratorError = err;
|
|
463
|
+
} finally {
|
|
464
|
+
try {
|
|
465
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
466
|
+
_iterator.return();
|
|
467
|
+
}
|
|
468
|
+
} finally {
|
|
469
|
+
if (_didIteratorError) {
|
|
470
|
+
throw _iteratorError;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
var _iteratorNormalCompletion1 = true,
|
|
475
|
+
_didIteratorError1 = false,
|
|
476
|
+
_iteratorError1 = void 0;
|
|
477
|
+
try {
|
|
478
|
+
for (var _iterator1 = this.handlerMap.keys()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
479
|
+
var event = _step1.value;
|
|
480
|
+
this.attachSSEListener(event);
|
|
481
|
+
}
|
|
482
|
+
} catch (err) {
|
|
483
|
+
_didIteratorError1 = true;
|
|
484
|
+
_iteratorError1 = err;
|
|
485
|
+
} finally {
|
|
486
|
+
try {
|
|
487
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
488
|
+
_iterator1.return();
|
|
489
|
+
}
|
|
490
|
+
} finally {
|
|
491
|
+
if (_didIteratorError1) {
|
|
492
|
+
throw _iteratorError1;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}, {
|
|
498
|
+
key: "attachSSEListener",
|
|
499
|
+
value: function attachSSEListener(type) {
|
|
500
|
+
var _this = this;
|
|
501
|
+
if (!this.eventSource || this.attachedSseEvents.has(type)) return;
|
|
502
|
+
var listener = function listener2(event) {
|
|
503
|
+
_this.handleSSEEvent(type, event);
|
|
504
|
+
};
|
|
505
|
+
this.sseListeners.set(type, listener);
|
|
506
|
+
this.attachedSseEvents.add(type);
|
|
507
|
+
this.eventSource.addEventListener(type, listener);
|
|
508
|
+
}
|
|
509
|
+
}, {
|
|
510
|
+
key: "detachSSEListener",
|
|
511
|
+
value: function detachSSEListener(type) {
|
|
512
|
+
if (this.isCoreSSEType(type)) return;
|
|
513
|
+
if (!this.eventSource || !this.attachedSseEvents.has(type)) return;
|
|
514
|
+
var listener = this.sseListeners.get(type);
|
|
515
|
+
if (listener) {
|
|
516
|
+
this.eventSource.removeEventListener(type, listener);
|
|
517
|
+
this.sseListeners.delete(type);
|
|
518
|
+
}
|
|
519
|
+
this.attachedSseEvents.delete(type);
|
|
520
|
+
}
|
|
521
|
+
}, {
|
|
522
|
+
key: "isCoreSSEType",
|
|
523
|
+
value: function isCoreSSEType(type) {
|
|
524
|
+
var _ref;
|
|
525
|
+
var _this_config_sse;
|
|
526
|
+
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);
|
|
527
|
+
}
|
|
528
|
+
}, {
|
|
529
|
+
key: "handleSSEEvent",
|
|
530
|
+
value: (
|
|
531
|
+
/**
|
|
532
|
+
* Single entry point for everything the EventSource dispatches. Dataless
|
|
533
|
+
* events are transport lifecycle (`open`/`error` as plain Events); anything
|
|
534
|
+
* carrying `data` is a server frame — including frames the server
|
|
535
|
+
* classified `event: error`, which arrive as MessageEvents WITH data and
|
|
536
|
+
* must not be mistaken for connection errors.
|
|
537
|
+
*/
|
|
538
|
+
function handleSSEEvent(type, event) {
|
|
539
|
+
var _event_lastEventId;
|
|
540
|
+
var _this_config_sse;
|
|
541
|
+
if ((event === null || event === void 0 ? void 0 : event.data) === void 0) {
|
|
542
|
+
if (type === "open") {
|
|
543
|
+
this.isConnecting = false;
|
|
544
|
+
this.socketHealthy = true;
|
|
545
|
+
this.emitToHandlers("connected", {
|
|
546
|
+
transport: "sse"
|
|
547
|
+
});
|
|
548
|
+
this.resolveHealthyWaiters(true);
|
|
549
|
+
} else if (type === "error") {
|
|
550
|
+
this.isConnecting = false;
|
|
551
|
+
this.socketHealthy = false;
|
|
552
|
+
this.emitToHandlers("disconnect", {
|
|
553
|
+
reason: "sse-error"
|
|
554
|
+
});
|
|
555
|
+
this.resolveHealthyWaiters(false);
|
|
556
|
+
}
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
var frame = {
|
|
560
|
+
type,
|
|
561
|
+
data: String(event.data),
|
|
562
|
+
lastEventId: (_event_lastEventId = event.lastEventId) !== null && _event_lastEventId !== void 0 ? _event_lastEventId : ""
|
|
563
|
+
};
|
|
564
|
+
var mapFrame = (_this_config_sse = this.config.sse) === null || _this_config_sse === void 0 ? void 0 : _this_config_sse.mapFrame;
|
|
565
|
+
if (mapFrame) {
|
|
566
|
+
var mapped;
|
|
567
|
+
try {
|
|
568
|
+
mapped = mapFrame(frame);
|
|
569
|
+
} catch (err) {
|
|
570
|
+
console.warn("[RealtimeModule] sse.mapFrame threw; frame dropped:", err);
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
if (!mapped) return;
|
|
574
|
+
var _iteratorNormalCompletion = true,
|
|
575
|
+
_didIteratorError = false,
|
|
576
|
+
_iteratorError = void 0;
|
|
577
|
+
try {
|
|
578
|
+
for (var _iterator = mapped[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
579
|
+
var {
|
|
580
|
+
event: mappedEvent,
|
|
581
|
+
payload
|
|
582
|
+
} = _step.value;
|
|
583
|
+
this.emitToHandlers(mappedEvent, payload);
|
|
584
|
+
}
|
|
585
|
+
} catch (err) {
|
|
586
|
+
_didIteratorError = true;
|
|
587
|
+
_iteratorError = err;
|
|
588
|
+
} finally {
|
|
589
|
+
try {
|
|
590
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
591
|
+
_iterator.return();
|
|
592
|
+
}
|
|
593
|
+
} finally {
|
|
594
|
+
if (_didIteratorError) {
|
|
595
|
+
throw _iteratorError;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
var payload1 = frame.data;
|
|
602
|
+
try {
|
|
603
|
+
payload1 = JSON.parse(frame.data);
|
|
604
|
+
} catch (unused) {}
|
|
605
|
+
this.emitToHandlers(frame.type, payload1);
|
|
606
|
+
})
|
|
607
|
+
}, {
|
|
608
|
+
key: "logSSERoomNoticeOnce",
|
|
609
|
+
value: (
|
|
610
|
+
/**
|
|
611
|
+
* Logged once: SSE is one-way, so doc/list room membership can't be sent
|
|
612
|
+
* upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
|
|
613
|
+
* for mapFrame-driven filtering and for a future two-way transport.
|
|
614
|
+
*/
|
|
615
|
+
function logSSERoomNoticeOnce() {
|
|
616
|
+
if (this.sseRoomNoticeLogged) return;
|
|
617
|
+
this.sseRoomNoticeLogged = true;
|
|
618
|
+
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.");
|
|
619
|
+
})
|
|
338
620
|
}, {
|
|
339
621
|
key: "softDisconnect",
|
|
340
622
|
value: (
|
|
@@ -350,8 +632,36 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
350
632
|
this.socket.disconnect();
|
|
351
633
|
this.socket = void 0;
|
|
352
634
|
}
|
|
635
|
+
if (this.eventSource) {
|
|
636
|
+
var _iteratorNormalCompletion = true,
|
|
637
|
+
_didIteratorError = false,
|
|
638
|
+
_iteratorError = void 0;
|
|
639
|
+
try {
|
|
640
|
+
for (var _iterator = this.sseListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
641
|
+
var [type, listener] = _step.value;
|
|
642
|
+
this.eventSource.removeEventListener(type, listener);
|
|
643
|
+
}
|
|
644
|
+
} catch (err) {
|
|
645
|
+
_didIteratorError = true;
|
|
646
|
+
_iteratorError = err;
|
|
647
|
+
} finally {
|
|
648
|
+
try {
|
|
649
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
650
|
+
_iterator.return();
|
|
651
|
+
}
|
|
652
|
+
} finally {
|
|
653
|
+
if (_didIteratorError) {
|
|
654
|
+
throw _iteratorError;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
this.eventSource.close();
|
|
659
|
+
this.eventSource = void 0;
|
|
660
|
+
}
|
|
353
661
|
this.attachedSocketEvents.clear();
|
|
354
662
|
this.socketEventHandlers.clear();
|
|
663
|
+
this.attachedSseEvents.clear();
|
|
664
|
+
this.sseListeners.clear();
|
|
355
665
|
this.socketHealthy = false;
|
|
356
666
|
this.isConnecting = false;
|
|
357
667
|
this.resolveHealthyWaiters(false);
|
|
@@ -482,7 +792,11 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
482
792
|
this.handlerMap.set(event, handlerSet);
|
|
483
793
|
}
|
|
484
794
|
handlerSet.add(handler);
|
|
485
|
-
this.
|
|
795
|
+
if (this.isSSE()) {
|
|
796
|
+
this.attachSSEListener(event);
|
|
797
|
+
} else {
|
|
798
|
+
this.attachSocketListener(event);
|
|
799
|
+
}
|
|
486
800
|
}
|
|
487
801
|
}, {
|
|
488
802
|
key: "off",
|
|
@@ -492,7 +806,11 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
492
806
|
handlerSet.delete(handler);
|
|
493
807
|
if (handlerSet.size === 0) {
|
|
494
808
|
this.handlerMap.delete(event);
|
|
495
|
-
this.
|
|
809
|
+
if (this.isSSE()) {
|
|
810
|
+
this.detachSSEListener(event);
|
|
811
|
+
} else {
|
|
812
|
+
this.detachSocketListener(event);
|
|
813
|
+
}
|
|
496
814
|
}
|
|
497
815
|
}
|
|
498
816
|
}, {
|
|
@@ -502,8 +820,9 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
502
820
|
doctype,
|
|
503
821
|
name
|
|
504
822
|
});
|
|
823
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
505
824
|
await this.ensureConnected();
|
|
506
|
-
if (this.socket && this.socketHealthy) {
|
|
825
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
507
826
|
this.socket.emit("doc_subscribe", doctype, name);
|
|
508
827
|
}
|
|
509
828
|
}
|
|
@@ -511,7 +830,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
511
830
|
key: "unsubscribeDoc",
|
|
512
831
|
value: function unsubscribeDoc(doctype, name) {
|
|
513
832
|
this.docRooms.delete(docRoomKey(doctype, name));
|
|
514
|
-
if (this.socket && this.socketHealthy) {
|
|
833
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
515
834
|
this.socket.emit("doc_unsubscribe", doctype, name);
|
|
516
835
|
}
|
|
517
836
|
this.teardownWhenIdle();
|
|
@@ -531,8 +850,9 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
531
850
|
doctype,
|
|
532
851
|
filters
|
|
533
852
|
});
|
|
853
|
+
if (this.isSSE()) this.logSSERoomNoticeOnce();
|
|
534
854
|
await this.ensureConnected();
|
|
535
|
-
if (this.socket && this.socketHealthy) {
|
|
855
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
536
856
|
this.socket.emit("doctype_subscribe", doctype);
|
|
537
857
|
}
|
|
538
858
|
})
|
|
@@ -540,7 +860,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
540
860
|
key: "unsubscribeList",
|
|
541
861
|
value: function unsubscribeList(doctype) {
|
|
542
862
|
this.listRooms.delete(doctype);
|
|
543
|
-
if (this.socket && this.socketHealthy) {
|
|
863
|
+
if (!this.isSSE() && this.socket && this.socketHealthy) {
|
|
544
864
|
this.socket.emit("doctype_unsubscribe", doctype);
|
|
545
865
|
}
|
|
546
866
|
this.teardownWhenIdle();
|
|
@@ -559,7 +879,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
559
879
|
*/
|
|
560
880
|
function teardownWhenIdle() {
|
|
561
881
|
if (this.docRooms.size > 0 || this.listRooms.size > 0) return;
|
|
562
|
-
if (!this.socket && !this.isConnecting) return;
|
|
882
|
+
if (!this.socket && !this.eventSource && !this.isConnecting) return;
|
|
563
883
|
this.emitToHandlers("disconnect", {
|
|
564
884
|
reason: "idle-teardown"
|
|
565
885
|
});
|
|
@@ -569,6 +889,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
569
889
|
key: "isHealthy",
|
|
570
890
|
value: function isHealthy() {
|
|
571
891
|
var _this_socket;
|
|
892
|
+
if (this.isSSE()) return this.socketHealthy && this.eventSource !== void 0;
|
|
572
893
|
return this.socketHealthy && ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) === true;
|
|
573
894
|
}
|
|
574
895
|
}, {
|
|
@@ -583,7 +904,7 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
583
904
|
key: "updateAuth",
|
|
584
905
|
value: async function updateAuth(auth) {
|
|
585
906
|
this.config.auth = auth;
|
|
586
|
-
var shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0;
|
|
907
|
+
var shouldReconnect = this.docRooms.size > 0 || this.listRooms.size > 0 || this.isSSE() && this.eventSource !== void 0;
|
|
587
908
|
this.softDisconnect();
|
|
588
909
|
if (shouldReconnect) {
|
|
589
910
|
await this.connect();
|
|
@@ -592,6 +913,13 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
592
913
|
}, {
|
|
593
914
|
key: "emit",
|
|
594
915
|
value: function emit(event, data) {
|
|
916
|
+
if (this.isSSE()) {
|
|
917
|
+
if (!this.sseEmitNoticeLogged) {
|
|
918
|
+
this.sseEmitNoticeLogged = true;
|
|
919
|
+
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.");
|
|
920
|
+
}
|
|
921
|
+
return;
|
|
922
|
+
}
|
|
595
923
|
if (this.socket && this.socketHealthy) {
|
|
596
924
|
this.socket.emit(event, data);
|
|
597
925
|
}
|
|
@@ -601,6 +929,28 @@ var RealtimeModule = /* @__PURE__ */function () {
|
|
|
601
929
|
value: function getSocket() {
|
|
602
930
|
return this.socket;
|
|
603
931
|
}
|
|
932
|
+
}, {
|
|
933
|
+
/** Live EventSource when the SSE transport is connected (undefined otherwise). */
|
|
934
|
+
key: "getEventSource",
|
|
935
|
+
value: function getEventSource() {
|
|
936
|
+
return this.eventSource;
|
|
937
|
+
}
|
|
938
|
+
}, {
|
|
939
|
+
/**
|
|
940
|
+
* Doc rooms recorded by subscribeDoc. Under SSE these are client-side
|
|
941
|
+
* bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
|
|
942
|
+
* consult them to filter or route frames.
|
|
943
|
+
*/
|
|
944
|
+
key: "getDocRooms",
|
|
945
|
+
value: function getDocRooms() {
|
|
946
|
+
return [...this.docRooms.values()];
|
|
947
|
+
}
|
|
948
|
+
}, {
|
|
949
|
+
/** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
|
|
950
|
+
key: "getListRooms",
|
|
951
|
+
value: function getListRooms() {
|
|
952
|
+
return [...this.listRooms.values()];
|
|
953
|
+
}
|
|
604
954
|
}]);
|
|
605
955
|
return RealtimeModule2;
|
|
606
956
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","RealtimePlatform","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","realtime_exports","RealtimeModule","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"],"sources":["../../src/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","RealtimePlatform","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","realtime_exports","RealtimeModule","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","socketBaseURL","socketBase","siteName","URL","hostname","unused","split","url","port","socketPort","String","host","siteName1","protocol","result","siteName2","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","removeEventListener","_event_lastEventId","data","emitToHandlers","reason","frame","lastEventId","mapFrame","mapped","console","warn"],"sources":["../../src/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/jsx/sync/index.mjs
CHANGED
|
@@ -46,7 +46,14 @@ class SyncModule {
|
|
|
46
46
|
});
|
|
47
47
|
this.subscriptionManager = new SubscriptionManager(this.db, this.normalizedCache, this.options);
|
|
48
48
|
this.rehydrationManager = new RehydrationManager(this.db, this.normalizedCache, this.subscriptionManager, this.mutationJournal, () => this.emit());
|
|
49
|
-
this.mutationEngine = new MutationEngine(this.db, this.realtime, this.normalizedCache, this.mutationJournal, this.subscriptionManager, this.rehydrationManager,
|
|
49
|
+
this.mutationEngine = new MutationEngine(this.db, this.realtime, this.normalizedCache, this.mutationJournal, this.subscriptionManager, this.rehydrationManager, {
|
|
50
|
+
...this.options,
|
|
51
|
+
// Bridge engine-internal optimistic applies to store listeners so
|
|
52
|
+
// pending state paints BEFORE the server round trip. Without this,
|
|
53
|
+
// subscribeStore consumers only re-read after the ack (mutate()'s
|
|
54
|
+
// trailing emit) and the in-memory optimism was invisible to them.
|
|
55
|
+
onStoreChange: () => this.emit()
|
|
56
|
+
});
|
|
50
57
|
const realtimeOptions = {
|
|
51
58
|
...this.options,
|
|
52
59
|
onResetCache: () => this.resetCache(),
|
|
@@ -136,6 +143,43 @@ class SyncModule {
|
|
|
136
143
|
await this.mutationEngine.replayPending();
|
|
137
144
|
this.emit();
|
|
138
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Public read of the mutation ledger: journal entries still awaiting the
|
|
148
|
+
* server (`Status.Pending`) or rejected by it (`Status.Failed`), ordered
|
|
149
|
+
* by submission sequence. Confirmed entries are dropped from the journal
|
|
150
|
+
* and never appear here. Read inside a `subscribeStore` callback for a
|
|
151
|
+
* reactive pending/error surface (see `useFrappePendingMutations`).
|
|
152
|
+
*/
|
|
153
|
+
getMutationEntries(doctype) {
|
|
154
|
+
const entries = [];
|
|
155
|
+
for (const {
|
|
156
|
+
id,
|
|
157
|
+
entry
|
|
158
|
+
} of this.mutationJournal.listPending()) {
|
|
159
|
+
if (doctype && entry.doctype !== doctype) continue;
|
|
160
|
+
entries.push({
|
|
161
|
+
id,
|
|
162
|
+
operation: entry.operation,
|
|
163
|
+
doctype: entry.doctype,
|
|
164
|
+
docname: entry.docname,
|
|
165
|
+
status: entry.status,
|
|
166
|
+
createdAt: entry.createdAt ?? 0,
|
|
167
|
+
retryCount: entry.retryCount ?? 0,
|
|
168
|
+
error: entry.error ? entry.error.message ?? String(entry.error) : void 0
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return entries;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Drops a failed (or still-pending) ledger entry without retrying it —
|
|
175
|
+
* the "dismiss" half of the rejected-write contract. The optimistic
|
|
176
|
+
* rollback already ran when the mutation failed; this only clears the
|
|
177
|
+
* error affordance.
|
|
178
|
+
*/
|
|
179
|
+
dismissMutation(id) {
|
|
180
|
+
this.mutationJournal.remove(id);
|
|
181
|
+
this.emit();
|
|
182
|
+
}
|
|
139
183
|
/** Reads a single document from the local cache. */
|
|
140
184
|
getDocFromCache(doctype, name) {
|
|
141
185
|
return this.normalizedCache.get({
|