@multiplatform.one/frappe 6.6.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/common/types.native.js.map +1 -1
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/core/types.native.js.map +1 -1
- package/dist/cjs/core/wire.native.js.map +1 -1
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/cjs/devtools/index.native.js.map +1 -1
- package/dist/cjs/devtools/plugin.native.js.map +1 -1
- package/dist/cjs/devtools/theme.native.js.map +1 -1
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/fixtures.native.js.map +1 -1
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.native.js +1 -1
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +3 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/optimistic.native.js.map +1 -1
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/plugin/index.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +222 -11
- package/dist/cjs/realtime.native.js +352 -14
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/filters.native.js.map +1 -1
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.native.js.map +1 -1
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.native.js +1 -1
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/common/types.native.js.map +1 -1
- package/dist/esm/core/http.native.js +2 -2
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/core/types.native.js.map +1 -1
- package/dist/esm/core/wire.native.js.map +1 -1
- package/dist/esm/db.native.js +1 -1
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js +2 -2
- package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
- package/dist/esm/devtools/index.native.js +2 -2
- package/dist/esm/devtools/index.native.js.map +1 -1
- package/dist/esm/devtools/plugin.native.js +1 -1
- package/dist/esm/devtools/plugin.native.js.map +1 -1
- package/dist/esm/devtools/theme.native.js.map +1 -1
- package/dist/esm/doctype.native.js +1 -1
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.native.js +1 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/fixtures.native.js.map +1 -1
- package/dist/esm/frappeApp.native.js +7 -7
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.native.js +7 -7
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +22 -22
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/optimistic.native.js.map +1 -1
- package/dist/esm/pacer.native.js +4 -4
- package/dist/esm/pacer.native.js.map +1 -1
- package/dist/esm/plugin/index.native.js.map +1 -1
- package/dist/esm/realtime.mjs +222 -11
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +353 -15
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.native.js +1 -1
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/filters.native.js.map +1 -1
- package/dist/esm/sync/index.native.js +8 -8
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +4 -4
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +1 -1
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.native.js +2 -2
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.native.js +1 -1
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.native.js +1 -1
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +4 -4
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +1 -1
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.native.js.map +1 -1
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/index.js +2 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +1 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +222 -11
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +352 -14
- package/dist/jsx/realtime.native.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +13 -1
- package/src/realtime.ts +406 -14
- package/src/realtimeSse.spec.ts +547 -0
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/realtime.d.ts +166 -1
- package/types/realtime.d.ts.map +1 -1
package/types/realtime.d.ts
CHANGED
|
@@ -6,6 +6,90 @@ export declare enum RealtimePlatform {
|
|
|
6
6
|
Web = "web",
|
|
7
7
|
ReactNative = "react-native"
|
|
8
8
|
}
|
|
9
|
+
export type RealtimeTransport = "socketio" | "sse";
|
|
10
|
+
/** One SSE frame as received off the wire (before any mapping). */
|
|
11
|
+
export interface SSEFrame {
|
|
12
|
+
/** SSE event type — the `event:` classification line, or `"message"` for unnamed frames. */
|
|
13
|
+
type: string;
|
|
14
|
+
/** Raw `data:` payload (SSE data is always a string). */
|
|
15
|
+
data: string;
|
|
16
|
+
/** The stream's last `id:` line as of this frame (empty when the server sent none). */
|
|
17
|
+
lastEventId: string;
|
|
18
|
+
}
|
|
19
|
+
/** One handler-map delivery produced by `RealtimeSSEConfig.mapFrame`. */
|
|
20
|
+
export interface SSEMappedEvent {
|
|
21
|
+
event: string;
|
|
22
|
+
payload: unknown;
|
|
23
|
+
}
|
|
24
|
+
/** Minimal structural slice of a WHATWG `MessageEvent` the SSE transport reads. */
|
|
25
|
+
export interface SSEMessageEventLike {
|
|
26
|
+
type?: string;
|
|
27
|
+
data?: unknown;
|
|
28
|
+
lastEventId?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Minimal structural slice of the WHATWG EventSource interface used by the
|
|
32
|
+
* SSE transport. The global browser/Node implementation satisfies it, and so
|
|
33
|
+
* do the common polyfills (`eventsource` on npm, `react-native-sse`).
|
|
34
|
+
*/
|
|
35
|
+
export interface SSEEventSourceLike {
|
|
36
|
+
addEventListener(type: string, listener: (event: SSEMessageEventLike) => void): void;
|
|
37
|
+
removeEventListener(type: string, listener: (event: SSEMessageEventLike) => void): void;
|
|
38
|
+
close(): void;
|
|
39
|
+
}
|
|
40
|
+
export type SSEEventSourceConstructor = new (url: string, init?: {
|
|
41
|
+
withCredentials?: boolean;
|
|
42
|
+
}) => SSEEventSourceLike;
|
|
43
|
+
export interface RealtimeSSEConfig {
|
|
44
|
+
/** Absolute stream URL. Wins over `path` when both are set. */
|
|
45
|
+
url?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Stream path resolved against `baseURL` (e.g.
|
|
48
|
+
* `"/api/method/shc.events.stream"` for the SHC daemon). One of `url` or
|
|
49
|
+
* `path` is REQUIRED: SSE endpoints are server-specific — a real Frappe
|
|
50
|
+
* bench has none at all — so a framework default would only ever 404, and
|
|
51
|
+
* `connect()` throws a descriptive error instead of guessing.
|
|
52
|
+
*/
|
|
53
|
+
path?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Browser EventSource credential mode: send cookies on the stream request.
|
|
56
|
+
* This is the primary browser auth path — EventSource cannot set request
|
|
57
|
+
* headers, so header-based token auth is impossible there (see
|
|
58
|
+
* `queryParams` for the token alternative).
|
|
59
|
+
*/
|
|
60
|
+
withCredentials?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Injectable EventSource constructor for runtimes without a global one
|
|
63
|
+
* (React Native, Node < 22, GJS) — e.g. the `eventsource` npm package or
|
|
64
|
+
* `react-native-sse`. When omitted the global `EventSource` is used, and
|
|
65
|
+
* `connect()` throws an error naming this option when neither exists.
|
|
66
|
+
*/
|
|
67
|
+
EventSource?: SSEEventSourceConstructor;
|
|
68
|
+
/**
|
|
69
|
+
* Named SSE event types (`event:` classification lines) to listen for, in
|
|
70
|
+
* addition to unnamed `"message"` frames and handler-registered names.
|
|
71
|
+
* EventSource only dispatches a NAMED event when a listener for that exact
|
|
72
|
+
* type is attached, so `mapFrame`-driven apps — whose handler names differ
|
|
73
|
+
* from the wire's frame types — must list the server's classifications
|
|
74
|
+
* here (e.g. `["docker", "audit", "error", "event"]` for the SHC daemon).
|
|
75
|
+
*/
|
|
76
|
+
events?: string[];
|
|
77
|
+
/**
|
|
78
|
+
* Translate one SSE frame into zero or more handler deliveries. Return
|
|
79
|
+
* `null`/`undefined` to drop the frame. When omitted, the default mapping
|
|
80
|
+
* delivers under the frame's `event:` type name with `JSON.parse(data)` as
|
|
81
|
+
* the payload (falling back to the raw string when the data isn't JSON).
|
|
82
|
+
*/
|
|
83
|
+
mapFrame?: (frame: SSEFrame) => SSEMappedEvent[] | null | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Extra query parameters appended to the stream URL — the token-auth path
|
|
86
|
+
* for SSE (headers are off-limits in browsers, see `withCredentials`).
|
|
87
|
+
* Values may be getters; they are re-resolved every time the EventSource
|
|
88
|
+
* is (re)created, so a rotated token is picked up by `updateAuth()`'s
|
|
89
|
+
* reconnect.
|
|
90
|
+
*/
|
|
91
|
+
queryParams?: Record<string, string | (() => string | Promise<string>)>;
|
|
92
|
+
}
|
|
9
93
|
export interface RealtimeConfig {
|
|
10
94
|
auth?: AuthConfig;
|
|
11
95
|
baseURL: string;
|
|
@@ -37,14 +121,49 @@ export interface RealtimeConfig {
|
|
|
37
121
|
siteName?: string;
|
|
38
122
|
platform?: RealtimePlatform;
|
|
39
123
|
socketOptions?: Partial<ManagerOptions & SocketOptions>;
|
|
124
|
+
/**
|
|
125
|
+
* Wire transport for realtime events.
|
|
126
|
+
*
|
|
127
|
+
* - `"socketio"` (default): Frappe's real realtime server — Socket.IO with
|
|
128
|
+
* doc/doctype rooms and two-way subscribe emits. Omitting `transport`
|
|
129
|
+
* keeps this exact behavior.
|
|
130
|
+
* - `"sse"`: a one-way `text/event-stream` endpoint consumed via
|
|
131
|
+
* EventSource. Built for Frappe-wire-compatible servers that serve
|
|
132
|
+
* realtime as SSE instead of Socket.IO (e.g. the SHC daemon's
|
|
133
|
+
* `GET /api/method/shc.events.stream`). Requires `sse.url` or `sse.path`.
|
|
134
|
+
* Room subscriptions become client-side bookkeeping (nothing can be
|
|
135
|
+
* emitted upstream) and `sse.mapFrame` decides how server frames fan out
|
|
136
|
+
* to handler events. Missed-event resume via the `Last-Event-ID` header
|
|
137
|
+
* is native EventSource behavior and is not reimplemented here.
|
|
138
|
+
*/
|
|
139
|
+
transport?: RealtimeTransport;
|
|
140
|
+
/** SSE transport options — only read when `transport` is `"sse"`. */
|
|
141
|
+
sse?: RealtimeSSEConfig;
|
|
40
142
|
}
|
|
143
|
+
export type DocRoom = {
|
|
144
|
+
doctype: string;
|
|
145
|
+
name: string;
|
|
146
|
+
};
|
|
147
|
+
export type ListRoom = {
|
|
148
|
+
doctype: string;
|
|
149
|
+
filters?: Record<string, unknown>;
|
|
150
|
+
};
|
|
41
151
|
export declare class RealtimeModule {
|
|
42
152
|
private socket;
|
|
153
|
+
/** Live EventSource when the `"sse"` transport is active. */
|
|
154
|
+
private eventSource;
|
|
43
155
|
private handlerMap;
|
|
44
156
|
/** Tracks events with socket listeners attached to prevent duplicates. */
|
|
45
157
|
private attachedSocketEvents;
|
|
46
158
|
/** Stored socket event handler references for proper cleanup. */
|
|
47
159
|
private socketEventHandlers;
|
|
160
|
+
/** Tracks SSE event types with listeners attached to prevent duplicates. */
|
|
161
|
+
private attachedSseEvents;
|
|
162
|
+
/** Stored SSE listener references for proper cleanup. */
|
|
163
|
+
private sseListeners;
|
|
164
|
+
/** One-shot debug notices for SSE's one-way limitations. */
|
|
165
|
+
private sseRoomNoticeLogged;
|
|
166
|
+
private sseEmitNoticeLogged;
|
|
48
167
|
/** Active doc rooms — re-emitted on every (re)connect. */
|
|
49
168
|
private docRooms;
|
|
50
169
|
/** Active list rooms — re-emitted on every (re)connect. */
|
|
@@ -70,10 +189,46 @@ export declare class RealtimeModule {
|
|
|
70
189
|
*/
|
|
71
190
|
private refreshSocketAuth;
|
|
72
191
|
private resolveHealthyWaiters;
|
|
192
|
+
private isSSE;
|
|
73
193
|
private waitUntilHealthy;
|
|
74
194
|
private ensureConnected;
|
|
75
195
|
private resubscribeRooms;
|
|
76
|
-
|
|
196
|
+
/**
|
|
197
|
+
* Open the realtime transport now. Room-driven auto-connect
|
|
198
|
+
* (subscribeDoc/subscribeList) remains the primary lifecycle in both
|
|
199
|
+
* transports — this is public for SSE consumers that use no doc/list room
|
|
200
|
+
* bookkeeping: a one-way stream has nothing to emit on join, so nothing
|
|
201
|
+
* else would ever open it. Idempotent while a transport exists or a
|
|
202
|
+
* connect is in flight.
|
|
203
|
+
*/
|
|
204
|
+
connect(): Promise<void>;
|
|
205
|
+
/**
|
|
206
|
+
* SSE branch of connect(): construct an EventSource against the configured
|
|
207
|
+
* stream URL. EventSource connects at construction, auto-reconnects on
|
|
208
|
+
* failure, and resumes missed frames itself by sending the stream's last
|
|
209
|
+
* `id:` as the `Last-Event-ID` request header — none of that is
|
|
210
|
+
* reimplemented here.
|
|
211
|
+
*/
|
|
212
|
+
private connectSSE;
|
|
213
|
+
private buildSSEURL;
|
|
214
|
+
private initSSEHandlers;
|
|
215
|
+
private attachSSEListener;
|
|
216
|
+
private detachSSEListener;
|
|
217
|
+
private isCoreSSEType;
|
|
218
|
+
/**
|
|
219
|
+
* Single entry point for everything the EventSource dispatches. Dataless
|
|
220
|
+
* events are transport lifecycle (`open`/`error` as plain Events); anything
|
|
221
|
+
* carrying `data` is a server frame — including frames the server
|
|
222
|
+
* classified `event: error`, which arrive as MessageEvents WITH data and
|
|
223
|
+
* must not be mistaken for connection errors.
|
|
224
|
+
*/
|
|
225
|
+
private handleSSEEvent;
|
|
226
|
+
/**
|
|
227
|
+
* Logged once: SSE is one-way, so doc/list room membership can't be sent
|
|
228
|
+
* upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
|
|
229
|
+
* for mapFrame-driven filtering and for a future two-way transport.
|
|
230
|
+
*/
|
|
231
|
+
private logSSERoomNoticeOnce;
|
|
77
232
|
/**
|
|
78
233
|
* Tear down the socket without clearing app handlers or room subscriptions.
|
|
79
234
|
* Used by auth refresh so listeners/rooms survive credential rotation.
|
|
@@ -117,5 +272,15 @@ export declare class RealtimeModule {
|
|
|
117
272
|
updateAuth(auth: AuthConfig): Promise<void>;
|
|
118
273
|
emit(event: string, data: unknown): void;
|
|
119
274
|
getSocket(): Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap> | undefined;
|
|
275
|
+
/** Live EventSource when the SSE transport is connected (undefined otherwise). */
|
|
276
|
+
getEventSource(): SSEEventSourceLike | undefined;
|
|
277
|
+
/**
|
|
278
|
+
* Doc rooms recorded by subscribeDoc. Under SSE these are client-side
|
|
279
|
+
* bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
|
|
280
|
+
* consult them to filter or route frames.
|
|
281
|
+
*/
|
|
282
|
+
getDocRooms(): DocRoom[];
|
|
283
|
+
/** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
|
|
284
|
+
getListRooms(): ListRoom[];
|
|
120
285
|
}
|
|
121
286
|
//# sourceMappingURL=realtime.d.ts.map
|
package/types/realtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAEjD,oBAAY,gBAAgB;IAC1B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,WAAW,iBAAiB;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|