@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.
Files changed (224) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/auth.native.js.map +1 -1
  3. package/dist/cjs/call.native.js.map +1 -1
  4. package/dist/cjs/collection.native.js.map +1 -1
  5. package/dist/cjs/common/types.native.js.map +1 -1
  6. package/dist/cjs/core/http.cjs +45 -1
  7. package/dist/cjs/core/http.native.js +72 -1
  8. package/dist/cjs/core/http.native.js.map +1 -1
  9. package/dist/cjs/core/types.native.js.map +1 -1
  10. package/dist/cjs/core/wire.native.js.map +1 -1
  11. package/dist/cjs/db.native.js.map +1 -1
  12. package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
  13. package/dist/cjs/devtools/index.native.js.map +1 -1
  14. package/dist/cjs/devtools/plugin.native.js.map +1 -1
  15. package/dist/cjs/devtools/theme.native.js.map +1 -1
  16. package/dist/cjs/doctype.cjs +15 -2
  17. package/dist/cjs/doctype.native.js +22 -5
  18. package/dist/cjs/doctype.native.js.map +1 -1
  19. package/dist/cjs/file.native.js.map +1 -1
  20. package/dist/cjs/fixtureDb.native.js.map +1 -1
  21. package/dist/cjs/fixtures.native.js.map +1 -1
  22. package/dist/cjs/frappeApp.native.js.map +1 -1
  23. package/dist/cjs/frappeReact.cjs +55 -1
  24. package/dist/cjs/frappeReact.native.js +67 -2
  25. package/dist/cjs/frappeReact.native.js.map +1 -1
  26. package/dist/cjs/index.cjs +8 -0
  27. package/dist/cjs/index.native.js +10 -2
  28. package/dist/cjs/index.native.js.map +1 -1
  29. package/dist/cjs/optimistic.cjs +32 -2
  30. package/dist/cjs/optimistic.native.js +34 -1
  31. package/dist/cjs/optimistic.native.js.map +1 -1
  32. package/dist/cjs/pacer.native.js.map +1 -1
  33. package/dist/cjs/plugin/index.native.js.map +1 -1
  34. package/dist/cjs/realtime.cjs +234 -11
  35. package/dist/cjs/realtime.native.js +368 -18
  36. package/dist/cjs/realtime.native.js.map +1 -1
  37. package/dist/cjs/sync/backfill.native.js.map +1 -1
  38. package/dist/cjs/sync/filters.native.js.map +1 -1
  39. package/dist/cjs/sync/index.cjs +45 -1
  40. package/dist/cjs/sync/index.native.js +71 -1
  41. package/dist/cjs/sync/index.native.js.map +1 -1
  42. package/dist/cjs/sync/merge.native.js.map +1 -1
  43. package/dist/cjs/sync/mutationEngine.cjs +51 -15
  44. package/dist/cjs/sync/mutationEngine.native.js +69 -16
  45. package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
  46. package/dist/cjs/sync/mutationJournal.cjs +8 -0
  47. package/dist/cjs/sync/mutationJournal.native.js +10 -0
  48. package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
  49. package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
  50. package/dist/cjs/sync/persistence.native.js.map +1 -1
  51. package/dist/cjs/sync/realtime.native.js.map +1 -1
  52. package/dist/cjs/sync/rehydration.native.js.map +1 -1
  53. package/dist/cjs/sync/storage.native.js.map +1 -1
  54. package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
  55. package/dist/cjs/sync/types.native.js.map +1 -1
  56. package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
  57. package/dist/cjs/useLiveQuery.native.js.map +1 -1
  58. package/dist/cjs/util.native.js.map +1 -1
  59. package/dist/esm/auth.native.js.map +1 -1
  60. package/dist/esm/call.native.js.map +1 -1
  61. package/dist/esm/collection.native.js +1 -1
  62. package/dist/esm/collection.native.js.map +1 -1
  63. package/dist/esm/common/types.native.js.map +1 -1
  64. package/dist/esm/core/http.mjs +45 -2
  65. package/dist/esm/core/http.mjs.map +1 -1
  66. package/dist/esm/core/http.native.js +74 -4
  67. package/dist/esm/core/http.native.js.map +1 -1
  68. package/dist/esm/core/types.native.js.map +1 -1
  69. package/dist/esm/core/wire.native.js.map +1 -1
  70. package/dist/esm/db.native.js +1 -1
  71. package/dist/esm/db.native.js.map +1 -1
  72. package/dist/esm/devtools/FrappeDevtoolsPanel.native.js +2 -2
  73. package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -1
  74. package/dist/esm/devtools/index.native.js +2 -2
  75. package/dist/esm/devtools/index.native.js.map +1 -1
  76. package/dist/esm/devtools/plugin.native.js +1 -1
  77. package/dist/esm/devtools/plugin.native.js.map +1 -1
  78. package/dist/esm/devtools/theme.native.js.map +1 -1
  79. package/dist/esm/doctype.mjs +15 -2
  80. package/dist/esm/doctype.mjs.map +1 -1
  81. package/dist/esm/doctype.native.js +23 -6
  82. package/dist/esm/doctype.native.js.map +1 -1
  83. package/dist/esm/file.native.js.map +1 -1
  84. package/dist/esm/fixtureDb.native.js +1 -1
  85. package/dist/esm/fixtureDb.native.js.map +1 -1
  86. package/dist/esm/fixtures.native.js.map +1 -1
  87. package/dist/esm/frappeApp.native.js +7 -7
  88. package/dist/esm/frappeApp.native.js.map +1 -1
  89. package/dist/esm/frappeReact.mjs +55 -3
  90. package/dist/esm/frappeReact.mjs.map +1 -1
  91. package/dist/esm/frappeReact.native.js +73 -10
  92. package/dist/esm/frappeReact.native.js.map +1 -1
  93. package/dist/esm/index.mjs +5 -5
  94. package/dist/esm/index.mjs.map +1 -1
  95. package/dist/esm/index.native.js +22 -22
  96. package/dist/esm/index.native.js.map +1 -1
  97. package/dist/esm/optimistic.mjs +27 -1
  98. package/dist/esm/optimistic.mjs.map +1 -1
  99. package/dist/esm/optimistic.native.js +30 -1
  100. package/dist/esm/optimistic.native.js.map +1 -1
  101. package/dist/esm/pacer.mjs.map +1 -1
  102. package/dist/esm/pacer.native.js +4 -4
  103. package/dist/esm/pacer.native.js.map +1 -1
  104. package/dist/esm/plugin/index.native.js.map +1 -1
  105. package/dist/esm/realtime.mjs +234 -11
  106. package/dist/esm/realtime.mjs.map +1 -1
  107. package/dist/esm/realtime.native.js +369 -19
  108. package/dist/esm/realtime.native.js.map +1 -1
  109. package/dist/esm/sync/backfill.native.js +1 -1
  110. package/dist/esm/sync/backfill.native.js.map +1 -1
  111. package/dist/esm/sync/filters.native.js.map +1 -1
  112. package/dist/esm/sync/index.mjs +45 -1
  113. package/dist/esm/sync/index.mjs.map +1 -1
  114. package/dist/esm/sync/index.native.js +79 -9
  115. package/dist/esm/sync/index.native.js.map +1 -1
  116. package/dist/esm/sync/merge.native.js.map +1 -1
  117. package/dist/esm/sync/mutationEngine.mjs +51 -15
  118. package/dist/esm/sync/mutationEngine.mjs.map +1 -1
  119. package/dist/esm/sync/mutationEngine.native.js +73 -20
  120. package/dist/esm/sync/mutationEngine.native.js.map +1 -1
  121. package/dist/esm/sync/mutationJournal.mjs +8 -0
  122. package/dist/esm/sync/mutationJournal.mjs.map +1 -1
  123. package/dist/esm/sync/mutationJournal.native.js +11 -1
  124. package/dist/esm/sync/mutationJournal.native.js.map +1 -1
  125. package/dist/esm/sync/normalizedCache.native.js.map +1 -1
  126. package/dist/esm/sync/persistence.native.js +2 -2
  127. package/dist/esm/sync/persistence.native.js.map +1 -1
  128. package/dist/esm/sync/realtime.native.js +1 -1
  129. package/dist/esm/sync/realtime.native.js.map +1 -1
  130. package/dist/esm/sync/rehydration.native.js +1 -1
  131. package/dist/esm/sync/rehydration.native.js.map +1 -1
  132. package/dist/esm/sync/storage.native.js.map +1 -1
  133. package/dist/esm/sync/subscriptionManager.native.js +4 -4
  134. package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
  135. package/dist/esm/sync/types.mjs.map +1 -1
  136. package/dist/esm/sync/types.native.js.map +1 -1
  137. package/dist/esm/sync/virtualPageManager.native.js +1 -1
  138. package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
  139. package/dist/esm/useLiveQuery.native.js.map +1 -1
  140. package/dist/esm/util.native.js.map +1 -1
  141. package/dist/jsx/core/http.mjs +45 -2
  142. package/dist/jsx/core/http.mjs.map +1 -1
  143. package/dist/jsx/core/http.native.js +72 -1
  144. package/dist/jsx/core/http.native.js.map +1 -1
  145. package/dist/jsx/doctype.mjs +15 -2
  146. package/dist/jsx/doctype.mjs.map +1 -1
  147. package/dist/jsx/doctype.native.js +22 -5
  148. package/dist/jsx/doctype.native.js.map +1 -1
  149. package/dist/jsx/frappeReact.mjs +55 -3
  150. package/dist/jsx/frappeReact.mjs.map +1 -1
  151. package/dist/jsx/frappeReact.native.js +66 -1
  152. package/dist/jsx/frappeReact.native.js.map +1 -1
  153. package/dist/jsx/index.js +5 -5
  154. package/dist/jsx/index.js.map +1 -1
  155. package/dist/jsx/index.mjs +5 -5
  156. package/dist/jsx/index.mjs.map +1 -1
  157. package/dist/jsx/index.native.js +8 -0
  158. package/dist/jsx/index.native.js.map +1 -1
  159. package/dist/jsx/optimistic.mjs +27 -1
  160. package/dist/jsx/optimistic.mjs.map +1 -1
  161. package/dist/jsx/optimistic.native.js +34 -1
  162. package/dist/jsx/optimistic.native.js.map +1 -1
  163. package/dist/jsx/pacer.mjs.map +1 -1
  164. package/dist/jsx/pacer.native.js.map +1 -1
  165. package/dist/jsx/realtime.mjs +234 -11
  166. package/dist/jsx/realtime.mjs.map +1 -1
  167. package/dist/jsx/realtime.native.js +368 -18
  168. package/dist/jsx/realtime.native.js.map +1 -1
  169. package/dist/jsx/sync/index.mjs +45 -1
  170. package/dist/jsx/sync/index.mjs.map +1 -1
  171. package/dist/jsx/sync/index.native.js +71 -1
  172. package/dist/jsx/sync/index.native.js.map +1 -1
  173. package/dist/jsx/sync/mutationEngine.mjs +51 -15
  174. package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
  175. package/dist/jsx/sync/mutationEngine.native.js +69 -16
  176. package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
  177. package/dist/jsx/sync/mutationJournal.mjs +8 -0
  178. package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
  179. package/dist/jsx/sync/mutationJournal.native.js +10 -0
  180. package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
  181. package/dist/jsx/sync/types.mjs.map +1 -1
  182. package/dist/jsx/sync/types.native.js.map +1 -1
  183. package/package.json +8 -8
  184. package/src/core/http.spec.ts +81 -0
  185. package/src/core/http.ts +80 -3
  186. package/src/doctype.spec.ts +82 -3
  187. package/src/doctype.ts +51 -7
  188. package/src/frappeReact.ts +126 -4
  189. package/src/index.ts +28 -3
  190. package/src/optimistic.spec.ts +113 -2
  191. package/src/optimistic.ts +95 -0
  192. package/src/pacer.ts +8 -0
  193. package/src/realtime.spec.ts +62 -0
  194. package/src/realtime.ts +440 -14
  195. package/src/realtimeSse.spec.ts +547 -0
  196. package/src/sync/index.ts +44 -1
  197. package/src/sync/mutationEngine.spec.ts +7 -2
  198. package/src/sync/mutationEngine.ts +83 -27
  199. package/src/sync/mutationJournal.ts +9 -0
  200. package/src/sync/mutations.spec.ts +1 -1
  201. package/src/sync/syncModule.spec.ts +255 -1
  202. package/src/sync/types.ts +20 -0
  203. package/types/core/http.d.ts +11 -0
  204. package/types/core/http.d.ts.map +1 -1
  205. package/types/doctype.d.ts +7 -0
  206. package/types/doctype.d.ts.map +1 -1
  207. package/types/frappeReact.d.ts +50 -2
  208. package/types/frappeReact.d.ts.map +1 -1
  209. package/types/index.d.ts +8 -6
  210. package/types/index.d.ts.map +1 -1
  211. package/types/optimistic.d.ts +38 -0
  212. package/types/optimistic.d.ts.map +1 -1
  213. package/types/pacer.d.ts +8 -0
  214. package/types/pacer.d.ts.map +1 -1
  215. package/types/realtime.d.ts +183 -1
  216. package/types/realtime.d.ts.map +1 -1
  217. package/types/sync/index.d.ts +16 -1
  218. package/types/sync/index.d.ts.map +1 -1
  219. package/types/sync/mutationEngine.d.ts +7 -0
  220. package/types/sync/mutationEngine.d.ts.map +1 -1
  221. package/types/sync/mutationJournal.d.ts +6 -0
  222. package/types/sync/mutationJournal.d.ts.map +1 -1
  223. package/types/sync/types.d.ts +20 -0
  224. package/types/sync/types.d.ts.map +1 -1
@@ -1,6 +1,7 @@
1
1
  import type { Collection } from "@tanstack/db";
2
2
  import { type FrappeCollectionOptionsConfig } from "./collection";
3
3
  import { SyncModule } from "./sync";
4
+ import type { DebugMutationEntry } from "./sync/types";
4
5
  /**
5
6
  * Configuration for creating a Frappe collection with connection details.
6
7
  */
@@ -13,6 +14,20 @@ export interface UseFrappeCollectionConfig {
13
14
  * behind a reverse proxy so the base URL port is used.
14
15
  */
15
16
  socketPort?: number;
17
+ /**
18
+ * Dial the realtime socket at this origin instead of deriving it from
19
+ * `baseURL` + `socketPort` — for dev servers that proxy `/socket.io` on
20
+ * their own origin (same-origin socket). See
21
+ * `RealtimeConfig.socketBaseURL`.
22
+ */
23
+ socketBaseURL?: string;
24
+ /**
25
+ * Frappe site name — the Socket.IO namespace the realtime connection must
26
+ * join. Required whenever the `baseURL` hostname is not the bench site
27
+ * name (e.g. baseURL http://127.0.0.1:8000 serving site "localhost"). See
28
+ * `RealtimeConfig.siteName`.
29
+ */
30
+ siteName?: string;
16
31
  /** Authentication configuration */
17
32
  auth?: {
18
33
  useToken?: boolean;
@@ -37,6 +52,14 @@ export interface UseFrappeCollectionConfig {
37
52
  * Intended for devtools integration — not part of the public API.
38
53
  */
39
54
  export declare function __getActiveSyncModule(): SyncModule | undefined;
55
+ /**
56
+ * Public accessor for the shared SyncModule behind a connection config —
57
+ * the seam consumers use to issue engine mutations that a collection can't
58
+ * express (e.g. custom-transport writes via `mutation.execute`). Returns
59
+ * the same refcounted instance the collection hooks use, or undefined
60
+ * during SSR.
61
+ */
62
+ export declare function getFrappeSyncModule(config: UseFrappeCollectionConfig | undefined): SyncModule | undefined;
40
63
  /**
41
64
  * React hook that returns a TanStack DB Collection backed by a Frappe doctype.
42
65
  *
@@ -114,6 +137,31 @@ export declare function useFrappeDoctypeEvents(config: UseFrappeCollectionConfig
114
137
  type: string;
115
138
  payload?: unknown;
116
139
  }) => void, enabled?: boolean): void;
140
+ /** Result of {@link useFrappePendingMutations}. */
141
+ export interface UseFrappePendingMutationsResult {
142
+ /** All live ledger entries (pending + failed), submission order. */
143
+ entries: DebugMutationEntry[];
144
+ /** Entries still awaiting a server ack. */
145
+ pending: DebugMutationEntry[];
146
+ /** Entries the server rejected — rollback already ran; show these. */
147
+ failed: DebugMutationEntry[];
148
+ /** Re-issues every pending/failed entry with its ORIGINAL mutation id
149
+ * (idempotent on the server via Idempotency-Key). */
150
+ retry: () => Promise<void>;
151
+ /** Drops one failed entry without retrying (clears the error surface). */
152
+ dismiss: (id: string) => void;
153
+ }
154
+ /**
155
+ * React hook exposing the mutation ledger for a connection (optionally
156
+ * scoped to one doctype): which optimistic writes are still in flight and
157
+ * which the server rejected. This is the state behind the rejected-write
158
+ * UI contract — a surface that initiated a write renders `failed` entries
159
+ * inline (e.g. via frappe-ui's `SyncErrorNotice`) with `retry`/`dismiss`.
160
+ *
161
+ * Reactive: re-reads on every store emit, but only re-renders when the
162
+ * ledger signature (ids × status × retryCount) actually changes.
163
+ */
164
+ export declare function useFrappePendingMutations(config: UseFrappeCollectionConfig | undefined, doctype?: string): UseFrappePendingMutationsResult;
117
165
  /**
118
166
  * Configuration for the useInfiniteScroll hook
119
167
  */
@@ -170,7 +218,7 @@ export interface UseInfiniteScrollResult {
170
218
  *
171
219
  * return (
172
220
  * <div>
173
- * {data.map(pokemon => <PokemonCard key={pokemon.name} {...pokemon} />)}
221
+ * {data.map(pokemon => <PokemonCard key={pokemon.name} pokemon={pokemon} />)}
174
222
  * <div ref={sentinelRef}>
175
223
  * {isLoadingMore ? <Spinner /> : hasMore ? "Scroll for more" : "No more items"}
176
224
  * </div>
@@ -254,7 +302,7 @@ export interface UseFrappeInfiniteListResult<TDoc> {
254
302
  *
255
303
  * return (
256
304
  * <div>
257
- * {items.map(pokemon => <PokemonCard key={pokemon.name} {...pokemon} />)}
305
+ * {items.map(pokemon => <PokemonCard key={pokemon.name} pokemon={pokemon} />)}
258
306
  * <div ref={sentinelRef}>
259
307
  * {hasMore ? <Spinner /> : "No more pokemon"}
260
308
  * </div>
@@ -1 +1 @@
1
- {"version":3,"file":"frappeReact.d.ts","sourceRoot":"","sources":["../src/frappeReact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,cAAc,CAAC;AAMtB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,kEAAkE;QAClE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;KACvD,CAAC;IACF,sCAAsC;IACtC,WAAW,CAAC,EAAE,OAAO,cAAc,EAAE,WAAW,CAAC;IACjD;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,YAAY,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IACrE,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,eAAe,CAAC;CACjD;AAQD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,UAAU,GAAG,SAAS,CAG9D;AAoVD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAS,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACzF,MAAM,EAAE,yBAAyB,GAAG,SAAS,EAC7C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,GAC1D,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CA+DtC;AAMD,wDAAwD;AACxD,MAAM,WAAW,qBAAqB;IACpC,kCAAkC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,aAAa,EAAE,OAAO,CAAC;CACxB;AAOD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,yBAAyB,GAAG,SAAS,GAC5C,qBAAqB,CAsBvB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,yBAAyB,GAAG,SAAS,EAC7C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,EAC7D,OAAO,UAAO,GACb,IAAI,CAsBN;AAMD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,4CAA4C;IAC5C,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/C,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,uBAAuB,CAmH1F;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,IAAI;IAC/C,sCAAsC;IACtC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAC9C,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,uBAAuB;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrE,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,OAAO,CAAC;IACzC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,IAAI;IAC/C,uBAAuB;IACvB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,wCAAwC;IACxC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/C,oCAAoC;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,SAAS,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3F,OAAO,EAAE,2BAA2B,CAAC,IAAI,CAAC,GACzC,2BAA2B,CAAC,IAAI,CAAC,CAuJnC"}
1
+ {"version":3,"file":"frappeReact.d.ts","sourceRoot":"","sources":["../src/frappeReact.ts"],"names":[],"mappings":"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"}
package/types/index.d.ts CHANGED
@@ -10,13 +10,15 @@ export { AuthModule } from "./auth";
10
10
  export { CallModule } from "./call";
11
11
  export { DbModule } from "./db";
12
12
  export { FileModule } from "./file";
13
- export { RealtimeModule } from "./realtime";
13
+ export { RealtimeModule, RealtimePlatform } from "./realtime";
14
+ export type { RealtimeConfig, RealtimeTransport, RealtimeSSEConfig, SSEFrame, SSEMappedEvent, SSEMessageEventLike, SSEEventSourceLike, SSEEventSourceConstructor, DocRoom, ListRoom, } from "./realtime";
14
15
  export { SyncModule } from "./sync";
15
16
  export { createFrappeCollection, frappeCollectionOptions, createFixtureCollection, fixtureCollectionOptions, } from "./collection";
16
17
  export type { FrappeCollectionOptionsConfig, FixtureCollectionOptionsConfig } from "./collection";
17
- export { createOptimisticAction } from "./optimistic";
18
- export { useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useInfiniteScroll, useFrappeInfiniteList, __getActiveSyncModule, } from "./frappeReact";
19
- export type { FrappeConnectionState, UseFrappeCollectionConfig, UseInfiniteScrollConfig, UseInfiniteScrollResult, UseFrappeInfiniteListConfig, UseFrappeInfiniteListResult, } from "./frappeReact";
18
+ export { createOptimisticAction, isOptimisticTempId, newOptimisticTempId, OPTIMISTIC_TEMP_PREFIX, runOptimisticRpc, } from "./optimistic";
19
+ export type { OptimisticRpcContext, OptimisticRpcOptions } from "./optimistic";
20
+ export { useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappePendingMutations, useInfiniteScroll, useFrappeInfiniteList, getFrappeSyncModule, __getActiveSyncModule, } from "./frappeReact";
21
+ export type { FrappeConnectionState, UseFrappeCollectionConfig, UseFrappePendingMutationsResult, UseInfiniteScrollConfig, UseInfiniteScrollResult, UseFrappeInfiniteListConfig, UseFrappeInfiniteListResult, } from "./frappeReact";
20
22
  export type { SyncRealtimeEvent } from "./sync";
21
23
  export { useDebouncedSearch, useThrottledPagination, createRateLimitedBatch } from "./pacer";
22
24
  export type { DebouncedSearchOptions, DebouncedSearchResult, FrappeConnectionConfig, ThrottledPaginationOptions, ThrottledPaginationResult, RateLimitedBatchOptions, RateLimitedBatchHandle, } from "./pacer";
@@ -32,8 +34,8 @@ export type { BackfillArgs, BackfillResponse, CursorPaginationArgs, CursorPagina
32
34
  export { useDocTypeMeta, useLinkSearch, useLinkTitle, useDocTypeSearch, parseDependsOn, parseFormLayout, } from "./doctype";
33
35
  export type { DocTypeMeta, DocTypeField, DocTypePermission, FormSection, FormColumn, FrappeFieldType, LinkSearchResult, LinkSearchOptions, DocTypeSearchResult, } from "./doctype";
34
36
  export type { FrappeDocValue, FrappeDocData, FrappeDoc, ChildTableRow } from "./common/types";
35
- export type { SyncOptions, PageBoundaries, RehydrationStrategy, Mutation, ConnectionConfig, TabCoordinationConfig, TabMessage, FrappeDebugState, DebugSubscription, DebugMutationEntry, PageIsland, } from "./sync/types";
36
- export { Order } from "./sync/types";
37
+ export type { SyncOptions, PageBoundaries, RehydrationStrategy, Mutation, CreateMutation, UpdateMutation, DeleteMutation, ConnectionConfig, TabCoordinationConfig, TabMessage, FrappeDebugState, DebugSubscription, DebugMutationEntry, PageIsland, } from "./sync/types";
38
+ export { Order, Operation } from "./sync/types";
37
39
  export { MergeStrategy, FieldMergeStrategy } from "./sync/merge";
38
40
  export type { FieldMergeStrategyOrFunction, MergeConfig, MergeResult } from "./sync/merge";
39
41
  export { matchesFilters, validateFilters, normalizeFilters, extractFilterFields, extractSingleName, formatFilter, hasServerOnlyOperators, canEvaluateClientSide, isTreeOperator, getClientEvaluationBlockers, FilterOperator, } from "./sync/filters";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -35,4 +35,42 @@ export { tanstackCreateOptimisticAction as createOptimisticAction };
35
35
  * await tx.isPersisted.promise;
36
36
  * ```
37
37
  */
38
+ /** Prefix shared with the MutationEngine's synthesized create identities. */
39
+ export declare const OPTIMISTIC_TEMP_PREFIX = "tmp_";
40
+ /** Issues a client-only identity for an optimistic record (`tmp_<uuid>`). */
41
+ export declare function newOptimisticTempId(): string;
42
+ /** True when a document name is a client-issued optimistic identity. */
43
+ export declare function isOptimisticTempId(name: unknown): name is string;
44
+ export interface OptimisticRpcContext {
45
+ /** Client-only identity for the optimistic record (`tmp_<uuid>`). */
46
+ tempId: string;
47
+ }
48
+ export interface OptimisticRpcOptions<TAck> {
49
+ /**
50
+ * Apply the mutation locally, synchronously, before the request is sent.
51
+ * Returns the undo that restores the exact pre-apply state (rollback).
52
+ * The applied record should use `ctx.tempId` as its identity and carry a
53
+ * pending marker for the UI.
54
+ */
55
+ apply: (ctx: OptimisticRpcContext) => (() => void) | undefined | void;
56
+ /** The server RPC. */
57
+ send: (ctx: OptimisticRpcContext) => Promise<TAck>;
58
+ /**
59
+ * Converge on ack: replace the `ctx.tempId` record with the server's
60
+ * authoritative record (dedupe by server identity — a racing refetch may
61
+ * already have delivered it).
62
+ */
63
+ reconcile?: (ack: TAck, ctx: OptimisticRpcContext) => void;
64
+ /**
65
+ * Visible-error surface for the rollback path (house `notify()` or an
66
+ * inline error slot). Runs after the apply-phase undo.
67
+ */
68
+ onError?: (error: unknown, ctx: OptimisticRpcContext) => void;
69
+ }
70
+ /**
71
+ * Runs one mutation through the optimistic lifecycle:
72
+ * apply (local, immediate) → send → reconcile on ack, or undo + onError on
73
+ * failure (the error rethrows).
74
+ */
75
+ export declare function runOptimisticRpc<TAck>(options: OptimisticRpcOptions<TAck>): Promise<TAck>;
38
76
  //# sourceMappingURL=optimistic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"optimistic.d.ts","sourceRoot":"","sources":["../src/optimistic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,8BAA8B,IAAI,sBAAsB,EAAE,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG"}
1
+ {"version":3,"file":"optimistic.d.ts","sourceRoot":"","sources":["../src/optimistic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,8BAA8B,IAAI,sBAAsB,EAAE,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AA8BH,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAE7C,6EAA6E;AAC7E,wBAAgB,mBAAmB,IAAI,MAAM,CAM5C;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEhE;AAED,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB,CAAC,IAAI;IACxC;;;;;OAKG;IACH,KAAK,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACtE,sBAAsB;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC3D;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/D;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/F"}
package/types/pacer.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Collection } from "@tanstack/db";
2
2
  import type { FrappeDoc, FrappeDocData } from "./common/types";
3
+ import type { FixtureProvider } from "./fixtures";
3
4
  import type { SyncModule } from "./sync";
4
5
  /**
5
6
  * Options for `useDebouncedSearch`.
@@ -47,6 +48,13 @@ export interface FrappeConnectionConfig {
47
48
  token?: string | (() => string | Promise<string>);
48
49
  type?: string;
49
50
  };
51
+ /**
52
+ * Fixture provider for story / test hosts. Consumers already forward it
53
+ * (frappe-ui's FrappeProvider builds this config from its own context), and
54
+ * `useDocTypeMeta` reads doctype metadata from it before reaching for the
55
+ * network.
56
+ */
57
+ fixtures?: FixtureProvider;
50
58
  }
51
59
  /**
52
60
  * Debounced search hook for Frappe doctypes.
@@ -1 +1 @@
1
- {"version":3,"file":"pacer.d.ts","sourceRoot":"","sources":["../src/pacer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pacer.d.ts","sourceRoot":"","sources":["../src/pacer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAOzC;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,IAAI,SAAS,aAAa;IAChE,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;IAC1C,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,IAAI,SAAS,aAAa;IAC/D,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,2DAA2D;IAC3D,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B,6CAA6C;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,SAAS,aAAa,EAC3D,MAAM,EAAE,sBAAsB,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,GACrC,qBAAqB,CAAC,IAAI,CAAC,CAsF7B;AAMD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,IAAI,SAAS,aAAa;IACnE,iEAAiE;IACjE,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,aAAa,EAC/D,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,OAAO,CAAC,EAAE,0BAA0B,GACnC,yBAAyB,CAAC,IAAI,CAAC,CA2BjC;AAMD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,UAAU,EAAE,UAAU,CAAC;CACxB;AAUD;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,IAAI,SAAS,aAAa;IAChE,qCAAqC;IACrC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClD,kDAAkD;IAClD,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE;QACpB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACzD,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,aAAa,EAC/D,OAAO,EAAE,uBAAuB,GAC/B,sBAAsB,CAAC,IAAI,CAAC,CA+D9B"}
@@ -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;
@@ -22,6 +106,23 @@ export interface RealtimeConfig {
22
106
  * `/socket.io` to the SocketIO backend.
23
107
  */
24
108
  socketPort?: number;
109
+ /**
110
+ * Dial the Socket.IO connection at this origin instead of deriving host and
111
+ * port from `baseURL` + `socketPort`.
112
+ *
113
+ * Built for dev servers that proxy `/socket.io` on their own origin (e.g.
114
+ * apps/one's `frappeSocketioDevProxy`): pointing the socket at the PAGE
115
+ * origin makes the handshake same-origin, so the browser stops blocking the
116
+ * cross-origin polling response (the reflected allow-origin is the proxy's
117
+ * injected bench origin, not the page's). Only the connection target
118
+ * changes — the namespace still comes from `siteName` (falling back to the
119
+ * `baseURL` hostname), because Frappe resolves the site server-side from
120
+ * the proxy-injected headers, not from where the client dialed.
121
+ *
122
+ * Wins over `socketPort` when both are set. Omit in production, where the
123
+ * reverse proxy already serves `/socket.io` on the `baseURL` origin.
124
+ */
125
+ socketBaseURL?: string;
25
126
  /**
26
127
  * Frappe site name, used as the Socket.IO namespace.
27
128
  *
@@ -37,14 +138,49 @@ export interface RealtimeConfig {
37
138
  siteName?: string;
38
139
  platform?: RealtimePlatform;
39
140
  socketOptions?: Partial<ManagerOptions & SocketOptions>;
141
+ /**
142
+ * Wire transport for realtime events.
143
+ *
144
+ * - `"socketio"` (default): Frappe's real realtime server — Socket.IO with
145
+ * doc/doctype rooms and two-way subscribe emits. Omitting `transport`
146
+ * keeps this exact behavior.
147
+ * - `"sse"`: a one-way `text/event-stream` endpoint consumed via
148
+ * EventSource. Built for Frappe-wire-compatible servers that serve
149
+ * realtime as SSE instead of Socket.IO (e.g. the SHC daemon's
150
+ * `GET /api/method/shc.events.stream`). Requires `sse.url` or `sse.path`.
151
+ * Room subscriptions become client-side bookkeeping (nothing can be
152
+ * emitted upstream) and `sse.mapFrame` decides how server frames fan out
153
+ * to handler events. Missed-event resume via the `Last-Event-ID` header
154
+ * is native EventSource behavior and is not reimplemented here.
155
+ */
156
+ transport?: RealtimeTransport;
157
+ /** SSE transport options — only read when `transport` is `"sse"`. */
158
+ sse?: RealtimeSSEConfig;
40
159
  }
160
+ export type DocRoom = {
161
+ doctype: string;
162
+ name: string;
163
+ };
164
+ export type ListRoom = {
165
+ doctype: string;
166
+ filters?: Record<string, unknown>;
167
+ };
41
168
  export declare class RealtimeModule {
42
169
  private socket;
170
+ /** Live EventSource when the `"sse"` transport is active. */
171
+ private eventSource;
43
172
  private handlerMap;
44
173
  /** Tracks events with socket listeners attached to prevent duplicates. */
45
174
  private attachedSocketEvents;
46
175
  /** Stored socket event handler references for proper cleanup. */
47
176
  private socketEventHandlers;
177
+ /** Tracks SSE event types with listeners attached to prevent duplicates. */
178
+ private attachedSseEvents;
179
+ /** Stored SSE listener references for proper cleanup. */
180
+ private sseListeners;
181
+ /** One-shot debug notices for SSE's one-way limitations. */
182
+ private sseRoomNoticeLogged;
183
+ private sseEmitNoticeLogged;
48
184
  /** Active doc rooms — re-emitted on every (re)connect. */
49
185
  private docRooms;
50
186
  /** Active list rooms — re-emitted on every (re)connect. */
@@ -70,10 +206,46 @@ export declare class RealtimeModule {
70
206
  */
71
207
  private refreshSocketAuth;
72
208
  private resolveHealthyWaiters;
209
+ private isSSE;
73
210
  private waitUntilHealthy;
74
211
  private ensureConnected;
75
212
  private resubscribeRooms;
76
- private connect;
213
+ /**
214
+ * Open the realtime transport now. Room-driven auto-connect
215
+ * (subscribeDoc/subscribeList) remains the primary lifecycle in both
216
+ * transports — this is public for SSE consumers that use no doc/list room
217
+ * bookkeeping: a one-way stream has nothing to emit on join, so nothing
218
+ * else would ever open it. Idempotent while a transport exists or a
219
+ * connect is in flight.
220
+ */
221
+ connect(): Promise<void>;
222
+ /**
223
+ * SSE branch of connect(): construct an EventSource against the configured
224
+ * stream URL. EventSource connects at construction, auto-reconnects on
225
+ * failure, and resumes missed frames itself by sending the stream's last
226
+ * `id:` as the `Last-Event-ID` request header — none of that is
227
+ * reimplemented here.
228
+ */
229
+ private connectSSE;
230
+ private buildSSEURL;
231
+ private initSSEHandlers;
232
+ private attachSSEListener;
233
+ private detachSSEListener;
234
+ private isCoreSSEType;
235
+ /**
236
+ * Single entry point for everything the EventSource dispatches. Dataless
237
+ * events are transport lifecycle (`open`/`error` as plain Events); anything
238
+ * carrying `data` is a server frame — including frames the server
239
+ * classified `event: error`, which arrive as MessageEvents WITH data and
240
+ * must not be mistaken for connection errors.
241
+ */
242
+ private handleSSEEvent;
243
+ /**
244
+ * Logged once: SSE is one-way, so doc/list room membership can't be sent
245
+ * upstream — rooms are recorded client-side (see getDocRooms/getListRooms)
246
+ * for mapFrame-driven filtering and for a future two-way transport.
247
+ */
248
+ private logSSERoomNoticeOnce;
77
249
  /**
78
250
  * Tear down the socket without clearing app handlers or room subscriptions.
79
251
  * Used by auth refresh so listeners/rooms survive credential rotation.
@@ -117,5 +289,15 @@ export declare class RealtimeModule {
117
289
  updateAuth(auth: AuthConfig): Promise<void>;
118
290
  emit(event: string, data: unknown): void;
119
291
  getSocket(): Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap> | undefined;
292
+ /** Live EventSource when the SSE transport is connected (undefined otherwise). */
293
+ getEventSource(): SSEEventSourceLike | undefined;
294
+ /**
295
+ * Doc rooms recorded by subscribeDoc. Under SSE these are client-side
296
+ * bookkeeping only (nothing is emitted upstream) — mapFrame-driven apps
297
+ * consult them to filter or route frames.
298
+ */
299
+ getDocRooms(): DocRoom[];
300
+ /** List rooms recorded by subscribeList — same client-side semantics as getDocRooms. */
301
+ getListRooms(): ListRoom[];
120
302
  }
121
303
  //# sourceMappingURL=realtime.d.ts.map
@@ -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;CACzD;AASD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAmC;IACrD,0EAA0E;IAC1E,OAAO,CAAC,oBAAoB,CAAqB;IACjD,iEAAiE;IACjE,OAAO,CAAC,mBAAmB,CAAiD;IAC5E,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAA8B;IAC9C,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,MAAM,CAAiB;IAC/B,oEAAoE;IACpE,OAAO,CAAC,mBAAmB,CAAC,CAAgB;gBAEhC,MAAM,EAAE,cAAc;IAOlC,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,YAAY;YA0BN,cAAc;IA2D5B;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,gBAAgB;YAeV,eAAe;IAQ7B,OAAO,CAAC,gBAAgB;YAYV,OAAO;IA0CrB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAwCpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,cAAc;IAQhB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAUpC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQnD;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtF,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IASxB,SAAS;IAIT,UAAU,IAAI,IAAI;IAOZ,UAAU,CAAC,IAAI,EAAE,UAAU;IAejC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAMjC,SAAS;CAGV"}
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { FrappeDoc, FrappeDocData } from "../common/types";
2
2
  import type { DbModule } from "../db";
3
3
  import type { RealtimeModule } from "../realtime";
4
- import type { BackfillArgs, SyncOptions, FrappeDebugState, Mutation, RealtimeEventType, SubscriptionQuery } from "./types";
4
+ import type { BackfillArgs, DebugMutationEntry, SyncOptions, FrappeDebugState, Mutation, RealtimeEventType, SubscriptionQuery } from "./types";
5
5
  /** Realtime event forwarded to `subscribeRealtimeEvents` listeners. */
6
6
  export interface SyncRealtimeEvent {
7
7
  type: RealtimeEventType;
@@ -107,6 +107,21 @@ export declare class SyncModule {
107
107
  * Replays pending mutations with error handling.
108
108
  */
109
109
  replayPending(): Promise<void>;
110
+ /**
111
+ * Public read of the mutation ledger: journal entries still awaiting the
112
+ * server (`Status.Pending`) or rejected by it (`Status.Failed`), ordered
113
+ * by submission sequence. Confirmed entries are dropped from the journal
114
+ * and never appear here. Read inside a `subscribeStore` callback for a
115
+ * reactive pending/error surface (see `useFrappePendingMutations`).
116
+ */
117
+ getMutationEntries(doctype?: string): DebugMutationEntry[];
118
+ /**
119
+ * Drops a failed (or still-pending) ledger entry without retrying it —
120
+ * the "dismiss" half of the rejected-write contract. The optimistic
121
+ * rollback already ran when the mutation failed; this only clears the
122
+ * error affordance.
123
+ */
124
+ dismissMutation(id: string): void;
110
125
  /** Reads a single document from the local cache. */
111
126
  getDocFromCache<T extends FrappeDocData = FrappeDocData>(doctype: string, name: string): T | undefined;
112
127
  /** Returns subscription metadata by id. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,13 @@ export declare class MutationEngine {
43
43
  private handleOptimisticCreate;
44
44
  private handleServerCreate;
45
45
  private handleServerUpdate;
46
+ /**
47
+ * Applies the local side of a delete: cache eviction, subscription
48
+ * membership removal, and gap-filling rehydration. Runs before the server
49
+ * call (mutate() body) so the row disappears immediately; the journal
50
+ * snapshot restores it if the server rejects.
51
+ */
52
+ private applyOptimisticDelete;
46
53
  private handleServerDelete;
47
54
  private handleTemporaryToRealMapping;
48
55
  private refetchAffectedDocs;
@@ -1 +1 @@
1
- {"version":3,"file":"mutationEngine.d.ts","sourceRoot":"","sources":["../../src/sync/mutationEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAW,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAUjE,OAAO,KAAK,EAGV,WAAW,EACX,QAAQ,EAIT,MAAM,SAAS,CAAC;AASjB,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,wBAAwB,CAA6B;IAC7D,OAAO,CAAC,sBAAsB,CAAkC;IAChE,8CAA8C;IAC9C,OAAO,CAAC,YAAY,CAA6C;IACjE,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAGpC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,GAAE,WAAgB;IAc3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;YACW,UAAU;IAmFxB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC,MAAM,CAAC,IAAI,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;YAyHnD,sBAAsB;YAgBtB,sBAAsB;YA0DtB,kBAAkB;YAoClB,kBAAkB;YAQlB,kBAAkB;IAwBhC,OAAO,CAAC,4BAA4B;YAuBtB,mBAAmB;YAwBnB,mBAAmB;IA4BjC;;;OAGG;YACW,uBAAuB;YA6CvB,kBAAkB;YAwBlB,cAAc;IAyD5B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,4BAA4B;IA6DpC,OAAO,CAAC,gCAAgC;IAkCxC,OAAO,CAAC,eAAe;IAoBvB;;;;;;;;;;;;;;;;OAgBG;IACG,aAAa;IA0GnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAWxB,2CAA2C;IAC3C,2BAA2B,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIlD,qCAAqC;IACrC,sBAAsB;IAKtB;;OAEG;IACH,OAAO;CAMR"}
1
+ {"version":3,"file":"mutationEngine.d.ts","sourceRoot":"","sources":["../../src/sync/mutationEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAW,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAUjE,OAAO,KAAK,EAGV,WAAW,EACX,QAAQ,EAIT,MAAM,SAAS,CAAC;AAqBjB,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,wBAAwB,CAA6B;IAC7D,OAAO,CAAC,sBAAsB,CAAkC;IAChE,8CAA8C;IAC9C,OAAO,CAAC,YAAY,CAA6C;IACjE,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAGpC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,GAAE,WAAgB;IAc3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;YACW,UAAU;IAmFxB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC,MAAM,CAAC,IAAI,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;YA2InD,sBAAsB;YAgBtB,sBAAsB;YA0DtB,kBAAkB;YAwClB,kBAAkB;IAoBhC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;YAef,kBAAkB;IAahC,OAAO,CAAC,4BAA4B;YAuBtB,mBAAmB;YAwBnB,mBAAmB;IA4BjC;;;OAGG;YACW,uBAAuB;YA6CvB,kBAAkB;YAwBlB,cAAc;IAyD5B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,4BAA4B;IA6DpC,OAAO,CAAC,gCAAgC;IAkCxC,OAAO,CAAC,eAAe;IAoBvB;;;;;;;;;;;;;;;;OAgBG;IACG,aAAa;IA0GnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAWxB,2CAA2C;IAC3C,2BAA2B,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIlD,qCAAqC;IACrC,sBAAsB;IAKtB;;OAEG;IACH,OAAO;CAMR"}
@@ -39,6 +39,12 @@ export declare class MutationJournal {
39
39
  message: string;
40
40
  [key: string]: unknown;
41
41
  }): void;
42
+ /**
43
+ * Drops an entry without confirming it — the "dismiss" affordance for a
44
+ * failed mutation the user chose not to retry. Unlike `confirm` this makes
45
+ * no claim the write reached the server.
46
+ */
47
+ remove(id: string): void;
42
48
  listPending(): {
43
49
  id: string;
44
50
  entry: Pending;
@@ -1 +1 @@
1
- {"version":3,"file":"mutationJournal.d.ts","sourceRoot":"","sources":["../../src/sync/mutationJournal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAEzD,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC5D,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAiC;IACtD,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAU;gBAEd,OAAO,CAAC,EAAE,sBAAsB;IAgB5C,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAU9B,GAAG,CAAC,EAAE,EAAE,MAAM;IAUd,OAAO,CAAC,EAAE,EAAE,MAAM;IAOlB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAS1E,WAAW;YACkB,MAAM;eAAS,OAAO;;IAcnD,aAAa,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAStD,cAAc;IAWd,eAAe;IAOf,KAAK;IAKL,OAAO;IAKP,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,qBAAqB;CAI9B"}
1
+ {"version":3,"file":"mutationJournal.d.ts","sourceRoot":"","sources":["../../src/sync/mutationJournal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAEzD,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC5D,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAiC;IACtD,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAU;gBAEd,OAAO,CAAC,EAAE,sBAAsB;IAgB5C,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAU9B,GAAG,CAAC,EAAE,EAAE,MAAM;IAUd,OAAO,CAAC,EAAE,EAAE,MAAM;IAOlB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAS1E;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM;IAIjB,WAAW;YACkB,MAAM;eAAS,OAAO;;IAcnD,aAAa,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAStD,cAAc;IAWd,eAAe;IAOf,KAAK;IAKL,OAAO;IAKP,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,qBAAqB;CAI9B"}
@@ -104,6 +104,18 @@ export interface CreateMutation<D extends FrappeDocData> {
104
104
  * this single field.
105
105
  */
106
106
  temporaryName?: string;
107
+ /**
108
+ * Custom server transport. When set, the engine performs the write via
109
+ * this function instead of `db.createDoc` — everything else (optimistic
110
+ * apply, journal, temp→real remap, rollback, ledger) is unchanged. Used
111
+ * for desk RPCs whose server-side behavior a plain REST insert cannot
112
+ * reproduce (e.g. `frappe.desk.form.utils.add_comment` inserts with
113
+ * ignore_permissions and extracts inline images). Must resolve with the
114
+ * created document (the ack the remap needs). Mutations carrying a
115
+ * transport skip request batching, and a journal replay after a page
116
+ * refresh falls back to the REST path (functions don't persist).
117
+ */
118
+ execute?: () => Promise<FrappeDoc<D>>;
107
119
  }
108
120
  export interface UpdateMutation<Data extends FrappeDocData> {
109
121
  mutationId: string;
@@ -114,6 +126,12 @@ export interface UpdateMutation<Data extends FrappeDocData> {
114
126
  doctype: string;
115
127
  name: string;
116
128
  }[];
129
+ /**
130
+ * Custom server transport (see {@link CreateMutation.execute}). May
131
+ * resolve with the updated document to seed the cache; resolving void
132
+ * keeps the optimistic value until the realtime echo reconciles.
133
+ */
134
+ execute?: () => Promise<FrappeDoc<Data> | void>;
117
135
  }
118
136
  export interface DeleteMutation<Data extends FrappeDocData> {
119
137
  mutationId: string;
@@ -124,6 +142,8 @@ export interface DeleteMutation<Data extends FrappeDocData> {
124
142
  doctype: string;
125
143
  name: string;
126
144
  }[];
145
+ /** Custom server transport (see {@link CreateMutation.execute}). */
146
+ execute?: () => Promise<void>;
127
147
  }
128
148
  export type Mutation<Data extends FrappeDocData> = CreateMutation<Data> | UpdateMutation<Data> | DeleteMutation<Data>;
129
149
  export declare enum BackfillScope {