@multiplatform.one/frappe 6.1.0 → 6.4.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 (792) hide show
  1. package/README.md +38 -12
  2. package/dist/cjs/auth.cjs +1 -1
  3. package/dist/cjs/auth.native.js.map +1 -1
  4. package/dist/cjs/call.cjs +1 -1
  5. package/dist/cjs/call.native.js.map +1 -1
  6. package/dist/cjs/collection.cjs +18 -4
  7. package/dist/cjs/collection.native.js +18 -4
  8. package/dist/cjs/collection.native.js.map +1 -1
  9. package/dist/cjs/core/http.cjs +92 -9
  10. package/dist/cjs/core/http.native.js +96 -7
  11. package/dist/cjs/core/http.native.js.map +1 -1
  12. package/dist/cjs/db.cjs +7 -7
  13. package/dist/cjs/db.native.js +4 -4
  14. package/dist/cjs/db.native.js.map +1 -1
  15. package/dist/cjs/doctype.cjs +97 -39
  16. package/dist/cjs/doctype.native.js +116 -46
  17. package/dist/cjs/doctype.native.js.map +1 -1
  18. package/dist/cjs/file.cjs +1 -1
  19. package/dist/cjs/file.native.js.map +1 -1
  20. package/dist/cjs/fixtureDb.cjs +3 -2
  21. package/dist/cjs/fixtureDb.native.js +2 -1
  22. package/dist/cjs/fixtureDb.native.js.map +1 -1
  23. package/dist/cjs/frappeApp.cjs +15 -14
  24. package/dist/cjs/frappeApp.native.js +16 -14
  25. package/dist/cjs/frappeApp.native.js.map +1 -1
  26. package/dist/cjs/frappeReact.cjs +198 -18
  27. package/dist/cjs/frappeReact.native.js +241 -18
  28. package/dist/cjs/frappeReact.native.js.map +1 -1
  29. package/dist/cjs/index.cjs +9 -4
  30. package/dist/cjs/index.native.js +9 -4
  31. package/dist/cjs/index.native.js.map +1 -1
  32. package/dist/cjs/pacer.cjs +2 -2
  33. package/dist/cjs/pacer.native.js +2 -2
  34. package/dist/cjs/pacer.native.js.map +1 -1
  35. package/dist/cjs/realtime.cjs +186 -46
  36. package/dist/cjs/realtime.native.js +268 -48
  37. package/dist/cjs/realtime.native.js.map +1 -1
  38. package/dist/cjs/sync/backfill.cjs +32 -27
  39. package/dist/cjs/sync/backfill.native.js +49 -43
  40. package/dist/cjs/sync/backfill.native.js.map +1 -1
  41. package/dist/cjs/sync/index.cjs +90 -24
  42. package/dist/cjs/sync/index.native.js +112 -10
  43. package/dist/cjs/sync/index.native.js.map +1 -1
  44. package/dist/cjs/sync/merge.cjs +0 -3
  45. package/dist/cjs/sync/merge.native.js +0 -3
  46. package/dist/cjs/sync/merge.native.js.map +1 -1
  47. package/dist/cjs/sync/mutationEngine.cjs +25 -19
  48. package/dist/cjs/sync/mutationEngine.native.js +16 -13
  49. package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
  50. package/dist/cjs/sync/mutationJournal.cjs +9 -4
  51. package/dist/cjs/sync/mutationJournal.native.js +7 -4
  52. package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
  53. package/dist/cjs/sync/normalizedCache.cjs +7 -3
  54. package/dist/cjs/sync/normalizedCache.native.js +7 -2
  55. package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
  56. package/dist/cjs/sync/persistence.cjs +63 -31
  57. package/dist/cjs/sync/persistence.native.js +120 -63
  58. package/dist/cjs/sync/persistence.native.js.map +1 -1
  59. package/dist/cjs/sync/realtime.cjs +124 -13
  60. package/dist/cjs/sync/realtime.native.js +163 -20
  61. package/dist/cjs/sync/realtime.native.js.map +1 -1
  62. package/dist/cjs/sync/rehydration.cjs +16 -10
  63. package/dist/cjs/sync/rehydration.native.js +16 -14
  64. package/dist/cjs/sync/rehydration.native.js.map +1 -1
  65. package/dist/cjs/sync/storage.cjs +3 -3
  66. package/dist/cjs/sync/storage.native.js +1 -1
  67. package/dist/cjs/sync/storage.native.js.map +1 -1
  68. package/dist/cjs/sync/subscriptionManager.cjs +255 -65
  69. package/dist/cjs/sync/subscriptionManager.native.js +330 -93
  70. package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
  71. package/dist/cjs/sync/types.cjs +2 -0
  72. package/dist/cjs/sync/types.native.js +2 -0
  73. package/dist/cjs/sync/types.native.js.map +1 -1
  74. package/dist/cjs/sync/virtualPageManager.cjs +9 -9
  75. package/dist/cjs/sync/virtualPageManager.native.js +5 -9
  76. package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
  77. package/dist/cjs/useLiveQuery.cjs +52 -0
  78. package/dist/cjs/useLiveQuery.native.js +59 -0
  79. package/dist/cjs/useLiveQuery.native.js.map +1 -0
  80. package/dist/cjs/util.cjs +11 -2
  81. package/dist/cjs/util.native.js +16 -2
  82. package/dist/cjs/util.native.js.map +1 -1
  83. package/dist/esm/auth.mjs +1 -1
  84. package/dist/esm/auth.mjs.map +1 -1
  85. package/dist/esm/auth.native.js.map +1 -1
  86. package/dist/esm/call.mjs +1 -1
  87. package/dist/esm/call.mjs.map +1 -1
  88. package/dist/esm/call.native.js.map +1 -1
  89. package/dist/esm/collection.mjs +18 -4
  90. package/dist/esm/collection.mjs.map +1 -1
  91. package/dist/esm/collection.native.js +18 -4
  92. package/dist/esm/collection.native.js.map +1 -1
  93. package/dist/esm/core/http.mjs +93 -10
  94. package/dist/esm/core/http.mjs.map +1 -1
  95. package/dist/esm/core/http.native.js +97 -8
  96. package/dist/esm/core/http.native.js.map +1 -1
  97. package/dist/esm/db.mjs +7 -7
  98. package/dist/esm/db.mjs.map +1 -1
  99. package/dist/esm/db.native.js +4 -4
  100. package/dist/esm/db.native.js.map +1 -1
  101. package/dist/esm/doctype.mjs +96 -39
  102. package/dist/esm/doctype.mjs.map +1 -1
  103. package/dist/esm/doctype.native.js +115 -46
  104. package/dist/esm/doctype.native.js.map +1 -1
  105. package/dist/esm/file.mjs +1 -1
  106. package/dist/esm/file.mjs.map +1 -1
  107. package/dist/esm/file.native.js.map +1 -1
  108. package/dist/esm/fixtureDb.mjs +3 -2
  109. package/dist/esm/fixtureDb.mjs.map +1 -1
  110. package/dist/esm/fixtureDb.native.js +2 -1
  111. package/dist/esm/fixtureDb.native.js.map +1 -1
  112. package/dist/esm/frappeApp.mjs +15 -14
  113. package/dist/esm/frappeApp.mjs.map +1 -1
  114. package/dist/esm/frappeApp.native.js +16 -14
  115. package/dist/esm/frappeApp.native.js.map +1 -1
  116. package/dist/esm/frappeReact.mjs +197 -19
  117. package/dist/esm/frappeReact.mjs.map +1 -1
  118. package/dist/esm/frappeReact.native.js +240 -19
  119. package/dist/esm/frappeReact.native.js.map +1 -1
  120. package/dist/esm/index.mjs +5 -4
  121. package/dist/esm/index.mjs.map +1 -1
  122. package/dist/esm/index.native.js +5 -4
  123. package/dist/esm/index.native.js.map +1 -1
  124. package/dist/esm/pacer.mjs +1 -1
  125. package/dist/esm/pacer.native.js +1 -1
  126. package/dist/esm/realtime.mjs +187 -47
  127. package/dist/esm/realtime.mjs.map +1 -1
  128. package/dist/esm/realtime.native.js +269 -49
  129. package/dist/esm/realtime.native.js.map +1 -1
  130. package/dist/esm/sync/backfill.mjs +32 -27
  131. package/dist/esm/sync/backfill.mjs.map +1 -1
  132. package/dist/esm/sync/backfill.native.js +49 -43
  133. package/dist/esm/sync/backfill.native.js.map +1 -1
  134. package/dist/esm/sync/index.mjs +90 -24
  135. package/dist/esm/sync/index.mjs.map +1 -1
  136. package/dist/esm/sync/index.native.js +112 -10
  137. package/dist/esm/sync/index.native.js.map +1 -1
  138. package/dist/esm/sync/merge.mjs +1 -1
  139. package/dist/esm/sync/merge.mjs.map +1 -1
  140. package/dist/esm/sync/merge.native.js +1 -1
  141. package/dist/esm/sync/merge.native.js.map +1 -1
  142. package/dist/esm/sync/mutationEngine.mjs +25 -19
  143. package/dist/esm/sync/mutationEngine.mjs.map +1 -1
  144. package/dist/esm/sync/mutationEngine.native.js +16 -13
  145. package/dist/esm/sync/mutationEngine.native.js.map +1 -1
  146. package/dist/esm/sync/mutationJournal.mjs +9 -4
  147. package/dist/esm/sync/mutationJournal.mjs.map +1 -1
  148. package/dist/esm/sync/mutationJournal.native.js +7 -4
  149. package/dist/esm/sync/mutationJournal.native.js.map +1 -1
  150. package/dist/esm/sync/normalizedCache.mjs +7 -3
  151. package/dist/esm/sync/normalizedCache.mjs.map +1 -1
  152. package/dist/esm/sync/normalizedCache.native.js +7 -2
  153. package/dist/esm/sync/normalizedCache.native.js.map +1 -1
  154. package/dist/esm/sync/persistence.mjs +64 -32
  155. package/dist/esm/sync/persistence.mjs.map +1 -1
  156. package/dist/esm/sync/persistence.native.js +121 -64
  157. package/dist/esm/sync/persistence.native.js.map +1 -1
  158. package/dist/esm/sync/realtime.mjs +124 -13
  159. package/dist/esm/sync/realtime.mjs.map +1 -1
  160. package/dist/esm/sync/realtime.native.js +163 -20
  161. package/dist/esm/sync/realtime.native.js.map +1 -1
  162. package/dist/esm/sync/rehydration.mjs +16 -10
  163. package/dist/esm/sync/rehydration.mjs.map +1 -1
  164. package/dist/esm/sync/rehydration.native.js +16 -14
  165. package/dist/esm/sync/rehydration.native.js.map +1 -1
  166. package/dist/esm/sync/storage.mjs +3 -3
  167. package/dist/esm/sync/storage.mjs.map +1 -1
  168. package/dist/esm/sync/storage.native.js +1 -1
  169. package/dist/esm/sync/storage.native.js.map +1 -1
  170. package/dist/esm/sync/subscriptionManager.mjs +255 -65
  171. package/dist/esm/sync/subscriptionManager.mjs.map +1 -1
  172. package/dist/esm/sync/subscriptionManager.native.js +330 -93
  173. package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
  174. package/dist/esm/sync/types.mjs +2 -0
  175. package/dist/esm/sync/types.mjs.map +1 -1
  176. package/dist/esm/sync/types.native.js +2 -0
  177. package/dist/esm/sync/types.native.js.map +1 -1
  178. package/dist/esm/sync/virtualPageManager.mjs +9 -9
  179. package/dist/esm/sync/virtualPageManager.mjs.map +1 -1
  180. package/dist/esm/sync/virtualPageManager.native.js +5 -9
  181. package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
  182. package/dist/esm/useLiveQuery.mjs +26 -0
  183. package/dist/esm/useLiveQuery.mjs.map +1 -0
  184. package/dist/esm/useLiveQuery.native.js +30 -0
  185. package/dist/esm/useLiveQuery.native.js.map +1 -0
  186. package/dist/esm/util.mjs +10 -2
  187. package/dist/esm/util.mjs.map +1 -1
  188. package/dist/esm/util.native.js +15 -2
  189. package/dist/esm/util.native.js.map +1 -1
  190. package/dist/jsx/auth.mjs +1 -1
  191. package/dist/jsx/auth.mjs.map +1 -1
  192. package/dist/jsx/auth.native.js.map +1 -1
  193. package/dist/jsx/call.mjs +1 -1
  194. package/dist/jsx/call.mjs.map +1 -1
  195. package/dist/jsx/call.native.js.map +1 -1
  196. package/dist/jsx/collection.mjs +18 -4
  197. package/dist/jsx/collection.mjs.map +1 -1
  198. package/dist/jsx/collection.native.js +18 -4
  199. package/dist/jsx/collection.native.js.map +1 -1
  200. package/dist/jsx/core/http.mjs +93 -10
  201. package/dist/jsx/core/http.mjs.map +1 -1
  202. package/dist/jsx/core/http.native.js +96 -7
  203. package/dist/jsx/core/http.native.js.map +1 -1
  204. package/dist/jsx/db.mjs +7 -7
  205. package/dist/jsx/db.mjs.map +1 -1
  206. package/dist/jsx/db.native.js +4 -4
  207. package/dist/jsx/db.native.js.map +1 -1
  208. package/dist/jsx/doctype.mjs +96 -39
  209. package/dist/jsx/doctype.mjs.map +1 -1
  210. package/dist/jsx/doctype.native.js +116 -46
  211. package/dist/jsx/doctype.native.js.map +1 -1
  212. package/dist/jsx/file.mjs +1 -1
  213. package/dist/jsx/file.mjs.map +1 -1
  214. package/dist/jsx/file.native.js.map +1 -1
  215. package/dist/jsx/fixtureDb.mjs +3 -2
  216. package/dist/jsx/fixtureDb.mjs.map +1 -1
  217. package/dist/jsx/fixtureDb.native.js +2 -1
  218. package/dist/jsx/fixtureDb.native.js.map +1 -1
  219. package/dist/jsx/frappeApp.mjs +15 -14
  220. package/dist/jsx/frappeApp.mjs.map +1 -1
  221. package/dist/jsx/frappeApp.native.js +16 -14
  222. package/dist/jsx/frappeApp.native.js.map +1 -1
  223. package/dist/jsx/frappeReact.mjs +197 -19
  224. package/dist/jsx/frappeReact.mjs.map +1 -1
  225. package/dist/jsx/frappeReact.native.js +241 -18
  226. package/dist/jsx/frappeReact.native.js.map +1 -1
  227. package/dist/jsx/index.js +5 -4
  228. package/dist/jsx/index.js.map +1 -1
  229. package/dist/jsx/index.mjs +5 -4
  230. package/dist/jsx/index.mjs.map +1 -1
  231. package/dist/jsx/index.native.js +9 -4
  232. package/dist/jsx/index.native.js.map +1 -1
  233. package/dist/jsx/pacer.mjs +1 -1
  234. package/dist/jsx/pacer.native.js +2 -2
  235. package/dist/jsx/pacer.native.js.map +1 -1
  236. package/dist/jsx/realtime.mjs +187 -47
  237. package/dist/jsx/realtime.mjs.map +1 -1
  238. package/dist/jsx/realtime.native.js +268 -48
  239. package/dist/jsx/realtime.native.js.map +1 -1
  240. package/dist/jsx/sync/backfill.mjs +32 -27
  241. package/dist/jsx/sync/backfill.mjs.map +1 -1
  242. package/dist/jsx/sync/backfill.native.js +49 -43
  243. package/dist/jsx/sync/backfill.native.js.map +1 -1
  244. package/dist/jsx/sync/index.mjs +90 -24
  245. package/dist/jsx/sync/index.mjs.map +1 -1
  246. package/dist/jsx/sync/index.native.js +112 -10
  247. package/dist/jsx/sync/index.native.js.map +1 -1
  248. package/dist/jsx/sync/merge.mjs +1 -1
  249. package/dist/jsx/sync/merge.mjs.map +1 -1
  250. package/dist/jsx/sync/merge.native.js +0 -3
  251. package/dist/jsx/sync/merge.native.js.map +1 -1
  252. package/dist/jsx/sync/mutationEngine.mjs +25 -19
  253. package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
  254. package/dist/jsx/sync/mutationEngine.native.js +16 -13
  255. package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
  256. package/dist/jsx/sync/mutationJournal.mjs +9 -4
  257. package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
  258. package/dist/jsx/sync/mutationJournal.native.js +7 -4
  259. package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
  260. package/dist/jsx/sync/normalizedCache.mjs +7 -3
  261. package/dist/jsx/sync/normalizedCache.mjs.map +1 -1
  262. package/dist/jsx/sync/normalizedCache.native.js +7 -2
  263. package/dist/jsx/sync/normalizedCache.native.js.map +1 -1
  264. package/dist/jsx/sync/persistence.mjs +64 -32
  265. package/dist/jsx/sync/persistence.mjs.map +1 -1
  266. package/dist/jsx/sync/persistence.native.js +120 -63
  267. package/dist/jsx/sync/persistence.native.js.map +1 -1
  268. package/dist/jsx/sync/realtime.mjs +124 -13
  269. package/dist/jsx/sync/realtime.mjs.map +1 -1
  270. package/dist/jsx/sync/realtime.native.js +163 -20
  271. package/dist/jsx/sync/realtime.native.js.map +1 -1
  272. package/dist/jsx/sync/rehydration.mjs +16 -10
  273. package/dist/jsx/sync/rehydration.mjs.map +1 -1
  274. package/dist/jsx/sync/rehydration.native.js +16 -14
  275. package/dist/jsx/sync/rehydration.native.js.map +1 -1
  276. package/dist/jsx/sync/storage.mjs +3 -3
  277. package/dist/jsx/sync/storage.mjs.map +1 -1
  278. package/dist/jsx/sync/storage.native.js +1 -1
  279. package/dist/jsx/sync/storage.native.js.map +1 -1
  280. package/dist/jsx/sync/subscriptionManager.mjs +255 -65
  281. package/dist/jsx/sync/subscriptionManager.mjs.map +1 -1
  282. package/dist/jsx/sync/subscriptionManager.native.js +330 -93
  283. package/dist/jsx/sync/subscriptionManager.native.js.map +1 -1
  284. package/dist/jsx/sync/types.mjs +2 -0
  285. package/dist/jsx/sync/types.mjs.map +1 -1
  286. package/dist/jsx/sync/types.native.js +2 -0
  287. package/dist/jsx/sync/types.native.js.map +1 -1
  288. package/dist/jsx/sync/virtualPageManager.mjs +9 -9
  289. package/dist/jsx/sync/virtualPageManager.mjs.map +1 -1
  290. package/dist/jsx/sync/virtualPageManager.native.js +5 -9
  291. package/dist/jsx/sync/virtualPageManager.native.js.map +1 -1
  292. package/dist/jsx/useLiveQuery.mjs +26 -0
  293. package/dist/jsx/useLiveQuery.mjs.map +1 -0
  294. package/dist/jsx/useLiveQuery.native.js +59 -0
  295. package/dist/jsx/useLiveQuery.native.js.map +1 -0
  296. package/dist/jsx/util.mjs +10 -2
  297. package/dist/jsx/util.mjs.map +1 -1
  298. package/dist/jsx/util.native.js +16 -2
  299. package/dist/jsx/util.native.js.map +1 -1
  300. package/package.json +20 -17
  301. package/src/auth.ts +5 -1
  302. package/src/call.ts +5 -1
  303. package/src/collection.spec.ts +55 -0
  304. package/src/collection.ts +33 -4
  305. package/src/core/http.spec.ts +66 -0
  306. package/src/core/http.ts +115 -9
  307. package/src/core/httpNative.spec.ts +234 -0
  308. package/src/core/types.ts +2 -0
  309. package/src/db.spec.ts +91 -51
  310. package/src/db.ts +27 -8
  311. package/src/doctype.spec.ts +247 -39
  312. package/src/doctype.ts +203 -53
  313. package/src/file.ts +5 -1
  314. package/src/fixtureDb.ts +13 -2
  315. package/src/frappeApp.ts +18 -19
  316. package/src/frappeReact.spec.ts +565 -1
  317. package/src/frappeReact.ts +445 -37
  318. package/src/frappeReactLiveQueryGc.spec.ts +320 -0
  319. package/src/frappeReactNative.spec.ts +65 -0
  320. package/src/index.ts +10 -9
  321. package/src/pacer.ts +1 -1
  322. package/src/realtime.spec.ts +464 -20
  323. package/src/realtime.ts +284 -46
  324. package/src/sync/backfill.spec.ts +43 -0
  325. package/src/sync/backfill.ts +59 -39
  326. package/src/sync/debug.spec.ts +36 -0
  327. package/src/sync/filterValidation.spec.ts +197 -0
  328. package/src/sync/index.ts +98 -7
  329. package/src/sync/merge.ts +3 -3
  330. package/src/sync/mutationEngine.spec.ts +36 -4
  331. package/src/sync/mutationEngine.ts +30 -11
  332. package/src/sync/mutationJournal.ts +18 -4
  333. package/src/sync/normalizedCache.spec.ts +102 -0
  334. package/src/sync/normalizedCache.ts +19 -3
  335. package/src/sync/offlineRestore.spec.ts +423 -0
  336. package/src/sync/persistence.spec.ts +39 -7
  337. package/src/sync/persistence.ts +90 -18
  338. package/src/sync/persistenceGjs.spec.ts +143 -0
  339. package/src/sync/persistenceNative.spec.ts +139 -0
  340. package/src/sync/realtime.spec.ts +18 -1
  341. package/src/sync/realtime.ts +161 -13
  342. package/src/sync/rehydration.ts +23 -5
  343. package/src/sync/storage.ts +5 -4
  344. package/src/sync/subscriptionManager.spec.ts +94 -0
  345. package/src/sync/subscriptionManager.ts +304 -82
  346. package/src/sync/syncModule.spec.ts +137 -0
  347. package/src/sync/types.ts +39 -0
  348. package/src/sync/virtualPageManager.ts +8 -4
  349. package/src/useLiveQuery.ts +58 -0
  350. package/src/util.spec.ts +35 -4
  351. package/src/util.ts +34 -7
  352. package/types/auth.d.ts +13 -0
  353. package/types/auth.d.ts.map +1 -0
  354. package/types/call.d.ts +10 -0
  355. package/types/call.d.ts.map +1 -0
  356. package/types/collection.d.ts +127 -0
  357. package/types/collection.d.ts.map +1 -0
  358. package/types/common/types.d.ts +35 -0
  359. package/types/common/types.d.ts.map +1 -0
  360. package/types/core/http.d.ts +86 -0
  361. package/types/core/http.d.ts.map +1 -0
  362. package/types/core/types.d.ts +74 -0
  363. package/types/core/types.d.ts.map +1 -0
  364. package/types/core/wire.d.ts +405 -0
  365. package/types/core/wire.d.ts.map +1 -0
  366. package/types/db.d.ts +244 -0
  367. package/types/db.d.ts.map +1 -0
  368. package/types/devtools/FrappeDevtoolsPanel.d.ts +7 -0
  369. package/types/devtools/FrappeDevtoolsPanel.d.ts.map +1 -0
  370. package/types/devtools/index.d.ts +4 -0
  371. package/types/devtools/index.d.ts.map +1 -0
  372. package/types/devtools/plugin.d.ts +9 -0
  373. package/types/devtools/plugin.d.ts.map +1 -0
  374. package/types/devtools/theme.d.ts +15 -0
  375. package/types/devtools/theme.d.ts.map +1 -0
  376. package/types/doctype.d.ts +256 -0
  377. package/types/doctype.d.ts.map +1 -0
  378. package/types/file.d.ts +15 -0
  379. package/types/file.d.ts.map +1 -0
  380. package/types/fixtureDb.d.ts +76 -0
  381. package/types/fixtureDb.d.ts.map +1 -0
  382. package/types/fixtures.d.ts +55 -0
  383. package/types/fixtures.d.ts.map +1 -0
  384. package/types/frappeApp.d.ts +45 -0
  385. package/types/frappeApp.d.ts.map +1 -0
  386. package/types/frappeReact.d.ts +270 -0
  387. package/types/frappeReact.d.ts.map +1 -0
  388. package/types/index.d.ts +44 -0
  389. package/types/index.d.ts.map +1 -0
  390. package/types/optimistic.d.ts +38 -0
  391. package/types/optimistic.d.ts.map +1 -0
  392. package/types/pacer.d.ts +193 -0
  393. package/types/pacer.d.ts.map +1 -0
  394. package/types/plugin/index.d.ts +11 -0
  395. package/types/plugin/index.d.ts.map +1 -0
  396. package/types/realtime.d.ts +121 -0
  397. package/types/realtime.d.ts.map +1 -0
  398. package/types/sync/backfill.d.ts +60 -0
  399. package/types/sync/backfill.d.ts.map +1 -0
  400. package/types/sync/filters.d.ts +101 -0
  401. package/types/sync/filters.d.ts.map +1 -0
  402. package/types/sync/index.d.ts +181 -0
  403. package/types/sync/index.d.ts.map +1 -0
  404. package/types/sync/merge.d.ts +59 -0
  405. package/types/sync/merge.d.ts.map +1 -0
  406. package/types/sync/mutationEngine.d.ts +117 -0
  407. package/types/sync/mutationEngine.d.ts.map +1 -0
  408. package/types/sync/mutationJournal.d.ts +60 -0
  409. package/types/sync/mutationJournal.d.ts.map +1 -0
  410. package/types/sync/normalizedCache.d.ts +59 -0
  411. package/types/sync/normalizedCache.d.ts.map +1 -0
  412. package/types/sync/persistence.d.ts +185 -0
  413. package/types/sync/persistence.d.ts.map +1 -0
  414. package/types/sync/realtime.d.ts +121 -0
  415. package/types/sync/realtime.d.ts.map +1 -0
  416. package/types/sync/rehydration.d.ts +109 -0
  417. package/types/sync/rehydration.d.ts.map +1 -0
  418. package/types/sync/storage.d.ts +65 -0
  419. package/types/sync/storage.d.ts.map +1 -0
  420. package/types/sync/subscriptionManager.d.ts +161 -0
  421. package/types/sync/subscriptionManager.d.ts.map +1 -0
  422. package/types/sync/types.d.ts +435 -0
  423. package/types/sync/types.d.ts.map +1 -0
  424. package/types/sync/virtualPageManager.d.ts +190 -0
  425. package/types/sync/virtualPageManager.d.ts.map +1 -0
  426. package/types/useLiveQuery.d.ts +16 -0
  427. package/types/useLiveQuery.d.ts.map +1 -0
  428. package/types/util.d.ts +24 -0
  429. package/types/util.d.ts.map +1 -0
  430. package/dist/cjs/auth.spec.cjs +0 -322
  431. package/dist/cjs/auth.spec.native.js +0 -329
  432. package/dist/cjs/auth.spec.native.js.map +0 -1
  433. package/dist/cjs/call.spec.cjs +0 -427
  434. package/dist/cjs/call.spec.native.js +0 -430
  435. package/dist/cjs/call.spec.native.js.map +0 -1
  436. package/dist/cjs/collection.spec.cjs +0 -186
  437. package/dist/cjs/collection.spec.native.js +0 -216
  438. package/dist/cjs/collection.spec.native.js.map +0 -1
  439. package/dist/cjs/common/types.spec.cjs +0 -266
  440. package/dist/cjs/common/types.spec.native.js +0 -271
  441. package/dist/cjs/common/types.spec.native.js.map +0 -1
  442. package/dist/cjs/core/http.spec.cjs +0 -1259
  443. package/dist/cjs/core/http.spec.native.js +0 -1401
  444. package/dist/cjs/core/http.spec.native.js.map +0 -1
  445. package/dist/cjs/core/wire.spec.cjs +0 -478
  446. package/dist/cjs/core/wire.spec.native.js +0 -482
  447. package/dist/cjs/core/wire.spec.native.js.map +0 -1
  448. package/dist/cjs/db.spec.cjs +0 -862
  449. package/dist/cjs/db.spec.native.js +0 -865
  450. package/dist/cjs/db.spec.native.js.map +0 -1
  451. package/dist/cjs/doctype.spec.cjs +0 -460
  452. package/dist/cjs/doctype.spec.native.js +0 -538
  453. package/dist/cjs/doctype.spec.native.js.map +0 -1
  454. package/dist/cjs/file.spec.cjs +0 -315
  455. package/dist/cjs/file.spec.native.js +0 -342
  456. package/dist/cjs/file.spec.native.js.map +0 -1
  457. package/dist/cjs/frappeApp.spec.cjs +0 -306
  458. package/dist/cjs/frappeApp.spec.native.js +0 -308
  459. package/dist/cjs/frappeApp.spec.native.js.map +0 -1
  460. package/dist/cjs/frappeReact.spec.cjs +0 -531
  461. package/dist/cjs/frappeReact.spec.native.js +0 -670
  462. package/dist/cjs/frappeReact.spec.native.js.map +0 -1
  463. package/dist/cjs/optimistic.spec.cjs +0 -11
  464. package/dist/cjs/optimistic.spec.native.js +0 -19
  465. package/dist/cjs/optimistic.spec.native.js.map +0 -1
  466. package/dist/cjs/pacer.spec.cjs +0 -470
  467. package/dist/cjs/pacer.spec.native.js +0 -537
  468. package/dist/cjs/pacer.spec.native.js.map +0 -1
  469. package/dist/cjs/realtime.spec.cjs +0 -326
  470. package/dist/cjs/realtime.spec.native.js +0 -392
  471. package/dist/cjs/realtime.spec.native.js.map +0 -1
  472. package/dist/cjs/sync/backfill.spec.cjs +0 -586
  473. package/dist/cjs/sync/backfill.spec.native.js +0 -712
  474. package/dist/cjs/sync/backfill.spec.native.js.map +0 -1
  475. package/dist/cjs/sync/debug.spec.cjs +0 -125
  476. package/dist/cjs/sync/debug.spec.native.js +0 -133
  477. package/dist/cjs/sync/debug.spec.native.js.map +0 -1
  478. package/dist/cjs/sync/filters.spec.cjs +0 -168
  479. package/dist/cjs/sync/filters.spec.native.js +0 -173
  480. package/dist/cjs/sync/filters.spec.native.js.map +0 -1
  481. package/dist/cjs/sync/merge.spec.cjs +0 -908
  482. package/dist/cjs/sync/merge.spec.native.js +0 -937
  483. package/dist/cjs/sync/merge.spec.native.js.map +0 -1
  484. package/dist/cjs/sync/multiOrderBy.spec.cjs +0 -165
  485. package/dist/cjs/sync/multiOrderBy.spec.native.js +0 -229
  486. package/dist/cjs/sync/multiOrderBy.spec.native.js.map +0 -1
  487. package/dist/cjs/sync/mutationEngine.spec.cjs +0 -1158
  488. package/dist/cjs/sync/mutationEngine.spec.native.js +0 -1173
  489. package/dist/cjs/sync/mutationEngine.spec.native.js.map +0 -1
  490. package/dist/cjs/sync/mutationJournal.spec.cjs +0 -330
  491. package/dist/cjs/sync/mutationJournal.spec.native.js +0 -333
  492. package/dist/cjs/sync/mutationJournal.spec.native.js.map +0 -1
  493. package/dist/cjs/sync/mutations.spec.cjs +0 -327
  494. package/dist/cjs/sync/mutations.spec.native.js +0 -330
  495. package/dist/cjs/sync/mutations.spec.native.js.map +0 -1
  496. package/dist/cjs/sync/normalizedCache.spec.cjs +0 -302
  497. package/dist/cjs/sync/normalizedCache.spec.native.js +0 -311
  498. package/dist/cjs/sync/normalizedCache.spec.native.js.map +0 -1
  499. package/dist/cjs/sync/persistence.spec.cjs +0 -562
  500. package/dist/cjs/sync/persistence.spec.native.js +0 -572
  501. package/dist/cjs/sync/persistence.spec.native.js.map +0 -1
  502. package/dist/cjs/sync/realtime.spec.cjs +0 -499
  503. package/dist/cjs/sync/realtime.spec.native.js +0 -512
  504. package/dist/cjs/sync/realtime.spec.native.js.map +0 -1
  505. package/dist/cjs/sync/rehydration.spec.cjs +0 -731
  506. package/dist/cjs/sync/rehydration.spec.native.js +0 -736
  507. package/dist/cjs/sync/rehydration.spec.native.js.map +0 -1
  508. package/dist/cjs/sync/storage.spec.cjs +0 -446
  509. package/dist/cjs/sync/storage.spec.native.js +0 -470
  510. package/dist/cjs/sync/storage.spec.native.js.map +0 -1
  511. package/dist/cjs/sync/subscriptionManager.spec.cjs +0 -1102
  512. package/dist/cjs/sync/subscriptionManager.spec.native.js +0 -1136
  513. package/dist/cjs/sync/subscriptionManager.spec.native.js.map +0 -1
  514. package/dist/cjs/sync/subscriptions.spec.cjs +0 -937
  515. package/dist/cjs/sync/subscriptions.spec.native.js +0 -969
  516. package/dist/cjs/sync/subscriptions.spec.native.js.map +0 -1
  517. package/dist/cjs/sync/syncModule.spec.cjs +0 -206
  518. package/dist/cjs/sync/syncModule.spec.native.js +0 -222
  519. package/dist/cjs/sync/syncModule.spec.native.js.map +0 -1
  520. package/dist/cjs/sync/types.spec.cjs +0 -246
  521. package/dist/cjs/sync/types.spec.native.js +0 -256
  522. package/dist/cjs/sync/types.spec.native.js.map +0 -1
  523. package/dist/cjs/sync/virtualPageManager.spec.cjs +0 -801
  524. package/dist/cjs/sync/virtualPageManager.spec.native.js +0 -873
  525. package/dist/cjs/sync/virtualPageManager.spec.native.js.map +0 -1
  526. package/dist/cjs/util.spec.cjs +0 -43
  527. package/dist/cjs/util.spec.native.js +0 -48
  528. package/dist/cjs/util.spec.native.js.map +0 -1
  529. package/dist/esm/auth.spec.mjs +0 -323
  530. package/dist/esm/auth.spec.mjs.map +0 -1
  531. package/dist/esm/auth.spec.native.js +0 -327
  532. package/dist/esm/auth.spec.native.js.map +0 -1
  533. package/dist/esm/call.spec.mjs +0 -428
  534. package/dist/esm/call.spec.mjs.map +0 -1
  535. package/dist/esm/call.spec.native.js +0 -428
  536. package/dist/esm/call.spec.native.js.map +0 -1
  537. package/dist/esm/collection.spec.mjs +0 -187
  538. package/dist/esm/collection.spec.mjs.map +0 -1
  539. package/dist/esm/collection.spec.native.js +0 -214
  540. package/dist/esm/collection.spec.native.js.map +0 -1
  541. package/dist/esm/common/types.spec.mjs +0 -267
  542. package/dist/esm/common/types.spec.mjs.map +0 -1
  543. package/dist/esm/common/types.spec.native.js +0 -269
  544. package/dist/esm/common/types.spec.native.js.map +0 -1
  545. package/dist/esm/core/http.spec.mjs +0 -1260
  546. package/dist/esm/core/http.spec.mjs.map +0 -1
  547. package/dist/esm/core/http.spec.native.js +0 -1399
  548. package/dist/esm/core/http.spec.native.js.map +0 -1
  549. package/dist/esm/core/wire.spec.mjs +0 -479
  550. package/dist/esm/core/wire.spec.mjs.map +0 -1
  551. package/dist/esm/core/wire.spec.native.js +0 -480
  552. package/dist/esm/core/wire.spec.native.js.map +0 -1
  553. package/dist/esm/db.spec.mjs +0 -863
  554. package/dist/esm/db.spec.mjs.map +0 -1
  555. package/dist/esm/db.spec.native.js +0 -863
  556. package/dist/esm/db.spec.native.js.map +0 -1
  557. package/dist/esm/doctype.spec.mjs +0 -461
  558. package/dist/esm/doctype.spec.mjs.map +0 -1
  559. package/dist/esm/doctype.spec.native.js +0 -536
  560. package/dist/esm/doctype.spec.native.js.map +0 -1
  561. package/dist/esm/file.spec.mjs +0 -316
  562. package/dist/esm/file.spec.mjs.map +0 -1
  563. package/dist/esm/file.spec.native.js +0 -340
  564. package/dist/esm/file.spec.native.js.map +0 -1
  565. package/dist/esm/frappeApp.spec.mjs +0 -307
  566. package/dist/esm/frappeApp.spec.mjs.map +0 -1
  567. package/dist/esm/frappeApp.spec.native.js +0 -306
  568. package/dist/esm/frappeApp.spec.native.js.map +0 -1
  569. package/dist/esm/frappeReact.spec.mjs +0 -532
  570. package/dist/esm/frappeReact.spec.mjs.map +0 -1
  571. package/dist/esm/frappeReact.spec.native.js +0 -668
  572. package/dist/esm/frappeReact.spec.native.js.map +0 -1
  573. package/dist/esm/optimistic.spec.mjs +0 -12
  574. package/dist/esm/optimistic.spec.mjs.map +0 -1
  575. package/dist/esm/optimistic.spec.native.js +0 -17
  576. package/dist/esm/optimistic.spec.native.js.map +0 -1
  577. package/dist/esm/pacer.spec.mjs +0 -447
  578. package/dist/esm/pacer.spec.mjs.map +0 -1
  579. package/dist/esm/pacer.spec.native.js +0 -511
  580. package/dist/esm/pacer.spec.native.js.map +0 -1
  581. package/dist/esm/realtime.spec.mjs +0 -327
  582. package/dist/esm/realtime.spec.mjs.map +0 -1
  583. package/dist/esm/realtime.spec.native.js +0 -390
  584. package/dist/esm/realtime.spec.native.js.map +0 -1
  585. package/dist/esm/sync/backfill.spec.mjs +0 -563
  586. package/dist/esm/sync/backfill.spec.mjs.map +0 -1
  587. package/dist/esm/sync/backfill.spec.native.js +0 -686
  588. package/dist/esm/sync/backfill.spec.native.js.map +0 -1
  589. package/dist/esm/sync/debug.spec.mjs +0 -102
  590. package/dist/esm/sync/debug.spec.mjs.map +0 -1
  591. package/dist/esm/sync/debug.spec.native.js +0 -107
  592. package/dist/esm/sync/debug.spec.native.js.map +0 -1
  593. package/dist/esm/sync/filters.spec.mjs +0 -169
  594. package/dist/esm/sync/filters.spec.mjs.map +0 -1
  595. package/dist/esm/sync/filters.spec.native.js +0 -171
  596. package/dist/esm/sync/filters.spec.native.js.map +0 -1
  597. package/dist/esm/sync/merge.spec.mjs +0 -909
  598. package/dist/esm/sync/merge.spec.mjs.map +0 -1
  599. package/dist/esm/sync/merge.spec.native.js +0 -935
  600. package/dist/esm/sync/merge.spec.native.js.map +0 -1
  601. package/dist/esm/sync/multiOrderBy.spec.mjs +0 -166
  602. package/dist/esm/sync/multiOrderBy.spec.mjs.map +0 -1
  603. package/dist/esm/sync/multiOrderBy.spec.native.js +0 -227
  604. package/dist/esm/sync/multiOrderBy.spec.native.js.map +0 -1
  605. package/dist/esm/sync/mutationEngine.spec.mjs +0 -1159
  606. package/dist/esm/sync/mutationEngine.spec.mjs.map +0 -1
  607. package/dist/esm/sync/mutationEngine.spec.native.js +0 -1171
  608. package/dist/esm/sync/mutationEngine.spec.native.js.map +0 -1
  609. package/dist/esm/sync/mutationJournal.spec.mjs +0 -331
  610. package/dist/esm/sync/mutationJournal.spec.mjs.map +0 -1
  611. package/dist/esm/sync/mutationJournal.spec.native.js +0 -331
  612. package/dist/esm/sync/mutationJournal.spec.native.js.map +0 -1
  613. package/dist/esm/sync/mutations.spec.mjs +0 -328
  614. package/dist/esm/sync/mutations.spec.mjs.map +0 -1
  615. package/dist/esm/sync/mutations.spec.native.js +0 -328
  616. package/dist/esm/sync/mutations.spec.native.js.map +0 -1
  617. package/dist/esm/sync/normalizedCache.spec.mjs +0 -303
  618. package/dist/esm/sync/normalizedCache.spec.mjs.map +0 -1
  619. package/dist/esm/sync/normalizedCache.spec.native.js +0 -309
  620. package/dist/esm/sync/normalizedCache.spec.native.js.map +0 -1
  621. package/dist/esm/sync/persistence.spec.mjs +0 -563
  622. package/dist/esm/sync/persistence.spec.mjs.map +0 -1
  623. package/dist/esm/sync/persistence.spec.native.js +0 -570
  624. package/dist/esm/sync/persistence.spec.native.js.map +0 -1
  625. package/dist/esm/sync/realtime.spec.mjs +0 -500
  626. package/dist/esm/sync/realtime.spec.mjs.map +0 -1
  627. package/dist/esm/sync/realtime.spec.native.js +0 -510
  628. package/dist/esm/sync/realtime.spec.native.js.map +0 -1
  629. package/dist/esm/sync/rehydration.spec.mjs +0 -732
  630. package/dist/esm/sync/rehydration.spec.mjs.map +0 -1
  631. package/dist/esm/sync/rehydration.spec.native.js +0 -734
  632. package/dist/esm/sync/rehydration.spec.native.js.map +0 -1
  633. package/dist/esm/sync/storage.spec.mjs +0 -423
  634. package/dist/esm/sync/storage.spec.mjs.map +0 -1
  635. package/dist/esm/sync/storage.spec.native.js +0 -444
  636. package/dist/esm/sync/storage.spec.native.js.map +0 -1
  637. package/dist/esm/sync/subscriptionManager.spec.mjs +0 -1079
  638. package/dist/esm/sync/subscriptionManager.spec.mjs.map +0 -1
  639. package/dist/esm/sync/subscriptionManager.spec.native.js +0 -1110
  640. package/dist/esm/sync/subscriptionManager.spec.native.js.map +0 -1
  641. package/dist/esm/sync/subscriptions.spec.mjs +0 -914
  642. package/dist/esm/sync/subscriptions.spec.mjs.map +0 -1
  643. package/dist/esm/sync/subscriptions.spec.native.js +0 -943
  644. package/dist/esm/sync/subscriptions.spec.native.js.map +0 -1
  645. package/dist/esm/sync/syncModule.spec.mjs +0 -207
  646. package/dist/esm/sync/syncModule.spec.mjs.map +0 -1
  647. package/dist/esm/sync/syncModule.spec.native.js +0 -220
  648. package/dist/esm/sync/syncModule.spec.native.js.map +0 -1
  649. package/dist/esm/sync/types.spec.mjs +0 -247
  650. package/dist/esm/sync/types.spec.mjs.map +0 -1
  651. package/dist/esm/sync/types.spec.native.js +0 -254
  652. package/dist/esm/sync/types.spec.native.js.map +0 -1
  653. package/dist/esm/sync/virtualPageManager.spec.mjs +0 -802
  654. package/dist/esm/sync/virtualPageManager.spec.mjs.map +0 -1
  655. package/dist/esm/sync/virtualPageManager.spec.native.js +0 -871
  656. package/dist/esm/sync/virtualPageManager.spec.native.js.map +0 -1
  657. package/dist/esm/util.spec.mjs +0 -20
  658. package/dist/esm/util.spec.mjs.map +0 -1
  659. package/dist/esm/util.spec.native.js +0 -22
  660. package/dist/esm/util.spec.native.js.map +0 -1
  661. package/dist/jsx/auth.spec.mjs +0 -323
  662. package/dist/jsx/auth.spec.mjs.map +0 -1
  663. package/dist/jsx/auth.spec.native.js +0 -329
  664. package/dist/jsx/auth.spec.native.js.map +0 -1
  665. package/dist/jsx/call.spec.mjs +0 -428
  666. package/dist/jsx/call.spec.mjs.map +0 -1
  667. package/dist/jsx/call.spec.native.js +0 -430
  668. package/dist/jsx/call.spec.native.js.map +0 -1
  669. package/dist/jsx/collection.spec.mjs +0 -187
  670. package/dist/jsx/collection.spec.mjs.map +0 -1
  671. package/dist/jsx/collection.spec.native.js +0 -216
  672. package/dist/jsx/collection.spec.native.js.map +0 -1
  673. package/dist/jsx/common/types.spec.mjs +0 -267
  674. package/dist/jsx/common/types.spec.mjs.map +0 -1
  675. package/dist/jsx/common/types.spec.native.js +0 -271
  676. package/dist/jsx/common/types.spec.native.js.map +0 -1
  677. package/dist/jsx/core/http.spec.mjs +0 -1260
  678. package/dist/jsx/core/http.spec.mjs.map +0 -1
  679. package/dist/jsx/core/http.spec.native.js +0 -1401
  680. package/dist/jsx/core/http.spec.native.js.map +0 -1
  681. package/dist/jsx/core/wire.spec.mjs +0 -479
  682. package/dist/jsx/core/wire.spec.mjs.map +0 -1
  683. package/dist/jsx/core/wire.spec.native.js +0 -482
  684. package/dist/jsx/core/wire.spec.native.js.map +0 -1
  685. package/dist/jsx/db.spec.mjs +0 -863
  686. package/dist/jsx/db.spec.mjs.map +0 -1
  687. package/dist/jsx/db.spec.native.js +0 -865
  688. package/dist/jsx/db.spec.native.js.map +0 -1
  689. package/dist/jsx/doctype.spec.mjs +0 -461
  690. package/dist/jsx/doctype.spec.mjs.map +0 -1
  691. package/dist/jsx/doctype.spec.native.js +0 -538
  692. package/dist/jsx/doctype.spec.native.js.map +0 -1
  693. package/dist/jsx/file.spec.mjs +0 -316
  694. package/dist/jsx/file.spec.mjs.map +0 -1
  695. package/dist/jsx/file.spec.native.js +0 -342
  696. package/dist/jsx/file.spec.native.js.map +0 -1
  697. package/dist/jsx/frappeApp.spec.mjs +0 -307
  698. package/dist/jsx/frappeApp.spec.mjs.map +0 -1
  699. package/dist/jsx/frappeApp.spec.native.js +0 -308
  700. package/dist/jsx/frappeApp.spec.native.js.map +0 -1
  701. package/dist/jsx/frappeReact.spec.mjs +0 -532
  702. package/dist/jsx/frappeReact.spec.mjs.map +0 -1
  703. package/dist/jsx/frappeReact.spec.native.js +0 -670
  704. package/dist/jsx/frappeReact.spec.native.js.map +0 -1
  705. package/dist/jsx/optimistic.spec.mjs +0 -12
  706. package/dist/jsx/optimistic.spec.mjs.map +0 -1
  707. package/dist/jsx/optimistic.spec.native.js +0 -19
  708. package/dist/jsx/optimistic.spec.native.js.map +0 -1
  709. package/dist/jsx/pacer.spec.mjs +0 -447
  710. package/dist/jsx/pacer.spec.mjs.map +0 -1
  711. package/dist/jsx/pacer.spec.native.js +0 -537
  712. package/dist/jsx/pacer.spec.native.js.map +0 -1
  713. package/dist/jsx/realtime.spec.mjs +0 -327
  714. package/dist/jsx/realtime.spec.mjs.map +0 -1
  715. package/dist/jsx/realtime.spec.native.js +0 -392
  716. package/dist/jsx/realtime.spec.native.js.map +0 -1
  717. package/dist/jsx/sync/backfill.spec.mjs +0 -563
  718. package/dist/jsx/sync/backfill.spec.mjs.map +0 -1
  719. package/dist/jsx/sync/backfill.spec.native.js +0 -712
  720. package/dist/jsx/sync/backfill.spec.native.js.map +0 -1
  721. package/dist/jsx/sync/debug.spec.mjs +0 -102
  722. package/dist/jsx/sync/debug.spec.mjs.map +0 -1
  723. package/dist/jsx/sync/debug.spec.native.js +0 -133
  724. package/dist/jsx/sync/debug.spec.native.js.map +0 -1
  725. package/dist/jsx/sync/filters.spec.mjs +0 -169
  726. package/dist/jsx/sync/filters.spec.mjs.map +0 -1
  727. package/dist/jsx/sync/filters.spec.native.js +0 -173
  728. package/dist/jsx/sync/filters.spec.native.js.map +0 -1
  729. package/dist/jsx/sync/merge.spec.mjs +0 -909
  730. package/dist/jsx/sync/merge.spec.mjs.map +0 -1
  731. package/dist/jsx/sync/merge.spec.native.js +0 -937
  732. package/dist/jsx/sync/merge.spec.native.js.map +0 -1
  733. package/dist/jsx/sync/multiOrderBy.spec.mjs +0 -166
  734. package/dist/jsx/sync/multiOrderBy.spec.mjs.map +0 -1
  735. package/dist/jsx/sync/multiOrderBy.spec.native.js +0 -229
  736. package/dist/jsx/sync/multiOrderBy.spec.native.js.map +0 -1
  737. package/dist/jsx/sync/mutationEngine.spec.mjs +0 -1159
  738. package/dist/jsx/sync/mutationEngine.spec.mjs.map +0 -1
  739. package/dist/jsx/sync/mutationEngine.spec.native.js +0 -1173
  740. package/dist/jsx/sync/mutationEngine.spec.native.js.map +0 -1
  741. package/dist/jsx/sync/mutationJournal.spec.mjs +0 -331
  742. package/dist/jsx/sync/mutationJournal.spec.mjs.map +0 -1
  743. package/dist/jsx/sync/mutationJournal.spec.native.js +0 -333
  744. package/dist/jsx/sync/mutationJournal.spec.native.js.map +0 -1
  745. package/dist/jsx/sync/mutations.spec.mjs +0 -328
  746. package/dist/jsx/sync/mutations.spec.mjs.map +0 -1
  747. package/dist/jsx/sync/mutations.spec.native.js +0 -330
  748. package/dist/jsx/sync/mutations.spec.native.js.map +0 -1
  749. package/dist/jsx/sync/normalizedCache.spec.mjs +0 -303
  750. package/dist/jsx/sync/normalizedCache.spec.mjs.map +0 -1
  751. package/dist/jsx/sync/normalizedCache.spec.native.js +0 -311
  752. package/dist/jsx/sync/normalizedCache.spec.native.js.map +0 -1
  753. package/dist/jsx/sync/persistence.spec.mjs +0 -563
  754. package/dist/jsx/sync/persistence.spec.mjs.map +0 -1
  755. package/dist/jsx/sync/persistence.spec.native.js +0 -572
  756. package/dist/jsx/sync/persistence.spec.native.js.map +0 -1
  757. package/dist/jsx/sync/realtime.spec.mjs +0 -500
  758. package/dist/jsx/sync/realtime.spec.mjs.map +0 -1
  759. package/dist/jsx/sync/realtime.spec.native.js +0 -512
  760. package/dist/jsx/sync/realtime.spec.native.js.map +0 -1
  761. package/dist/jsx/sync/rehydration.spec.mjs +0 -732
  762. package/dist/jsx/sync/rehydration.spec.mjs.map +0 -1
  763. package/dist/jsx/sync/rehydration.spec.native.js +0 -736
  764. package/dist/jsx/sync/rehydration.spec.native.js.map +0 -1
  765. package/dist/jsx/sync/storage.spec.mjs +0 -423
  766. package/dist/jsx/sync/storage.spec.mjs.map +0 -1
  767. package/dist/jsx/sync/storage.spec.native.js +0 -470
  768. package/dist/jsx/sync/storage.spec.native.js.map +0 -1
  769. package/dist/jsx/sync/subscriptionManager.spec.mjs +0 -1079
  770. package/dist/jsx/sync/subscriptionManager.spec.mjs.map +0 -1
  771. package/dist/jsx/sync/subscriptionManager.spec.native.js +0 -1136
  772. package/dist/jsx/sync/subscriptionManager.spec.native.js.map +0 -1
  773. package/dist/jsx/sync/subscriptions.spec.mjs +0 -914
  774. package/dist/jsx/sync/subscriptions.spec.mjs.map +0 -1
  775. package/dist/jsx/sync/subscriptions.spec.native.js +0 -969
  776. package/dist/jsx/sync/subscriptions.spec.native.js.map +0 -1
  777. package/dist/jsx/sync/syncModule.spec.mjs +0 -207
  778. package/dist/jsx/sync/syncModule.spec.mjs.map +0 -1
  779. package/dist/jsx/sync/syncModule.spec.native.js +0 -222
  780. package/dist/jsx/sync/syncModule.spec.native.js.map +0 -1
  781. package/dist/jsx/sync/types.spec.mjs +0 -247
  782. package/dist/jsx/sync/types.spec.mjs.map +0 -1
  783. package/dist/jsx/sync/types.spec.native.js +0 -256
  784. package/dist/jsx/sync/types.spec.native.js.map +0 -1
  785. package/dist/jsx/sync/virtualPageManager.spec.mjs +0 -802
  786. package/dist/jsx/sync/virtualPageManager.spec.mjs.map +0 -1
  787. package/dist/jsx/sync/virtualPageManager.spec.native.js +0 -873
  788. package/dist/jsx/sync/virtualPageManager.spec.native.js.map +0 -1
  789. package/dist/jsx/util.spec.mjs +0 -20
  790. package/dist/jsx/util.spec.mjs.map +0 -1
  791. package/dist/jsx/util.spec.native.js +0 -48
  792. package/dist/jsx/util.spec.native.js.map +0 -1
@@ -27,6 +27,22 @@ __export(realtime_exports, {
27
27
  module.exports = __toCommonJS(realtime_exports);
28
28
  var import_types = require("./types.cjs");
29
29
  class RealtimeHandler {
30
+ reconnectAttempts = 0;
31
+ reconnectTimer;
32
+ hasConnected = false;
33
+ /** Live socket state: true between `connected` and `disconnect` events. */
34
+ connected = false;
35
+ connectionConfig;
36
+ /** Refcount of active subscriptions per doctype — drives doctype room membership. */
37
+ watchedDoctypes = /* @__PURE__ */new Map();
38
+ /** In-flight authoritative fetches, deduping concurrent doc_update/list_update pairs. */
39
+ inflightFetches = /* @__PURE__ */new Map();
40
+ db;
41
+ realtime;
42
+ normalizedCache;
43
+ subscriptionManager;
44
+ rehydrationManager;
45
+ options;
30
46
  constructor(db, realtime, normalizedCache, subscriptionManager, rehydrationManager, options = {}) {
31
47
  this.db = db;
32
48
  this.realtime = realtime;
@@ -43,21 +59,40 @@ class RealtimeHandler {
43
59
  this.setupRealtimeHandlers();
44
60
  this.setupConnectionManagement();
45
61
  }
46
- db;
47
- realtime;
48
- normalizedCache;
49
- subscriptionManager;
50
- rehydrationManager;
51
- options;
52
- reconnectAttempts = 0;
53
- reconnectTimer;
54
- hasConnected = false;
55
- connectionConfig;
56
62
  /**
57
63
  * Sets up realtime event handlers for document changes.
64
+ *
65
+ * Real Frappe (v15) wire protocol, verified live against a stock bench
66
+ * (see .test-evidence/storybook-rubric/p-results/frappe-realtime-live-e2e.md):
67
+ * - `doc_update` `{doctype, name, modified}` — emitted to the per-doc room
68
+ * `doc:{doctype}/{name}` on every save.
69
+ * - `list_update` `{doctype, name, user}` — emitted to the doctype room
70
+ * `doctype:{doctype}` on every save of a non-single, non-child doctype.
71
+ * - Deletion emits the SAME two events (payload indistinguishable from an
72
+ * update) — there is NO `doc_deleted` event. Deletions are detected here
73
+ * opportunistically when the authoritative re-fetch 404s, but the durable
74
+ * deletion signal remains the tombstone/CDC backfill (`Deleted Document`
75
+ * doctype maintained by the `live` app's on_trash hook).
76
+ *
77
+ * Both real events funnel into the same fetch-and-reconcile path, deduped
78
+ * so a doc_update/list_update pair for the same doc costs one fetch.
58
79
  */
59
80
  setupRealtimeHandlers() {
60
81
  if (!this.realtime) return;
82
+ this.realtime?.on("doc_update", async payload => {
83
+ if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
84
+ type: import_types.RealtimeEventType.DocUpdate,
85
+ payload
86
+ });
87
+ return this.onDocChanged(payload);
88
+ });
89
+ this.realtime?.on("list_update", async payload => {
90
+ if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
91
+ type: import_types.RealtimeEventType.ListUpdate,
92
+ payload
93
+ });
94
+ return this.onDocChanged(payload);
95
+ });
61
96
  this.realtime?.on("doc_changed", async payload => {
62
97
  if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
63
98
  type: import_types.RealtimeEventType.DocChanged,
@@ -99,6 +134,7 @@ class RealtimeHandler {
99
134
  */
100
135
  onConnected() {
101
136
  this.hasConnected = true;
137
+ this.connected = true;
102
138
  this.reconnectAttempts = 0;
103
139
  if (this.reconnectTimer) {
104
140
  clearTimeout(this.reconnectTimer);
@@ -112,6 +148,7 @@ class RealtimeHandler {
112
148
  if (this.options.onBackfillAll) {
113
149
  this.options.onBackfillAll();
114
150
  }
151
+ this.options.onStoreChange?.();
115
152
  console.debug("[RealtimeHandler] Connected to realtime server");
116
153
  }
117
154
  /**
@@ -119,18 +156,24 @@ class RealtimeHandler {
119
156
  */
120
157
  onDisconnected() {
121
158
  console.debug("[RealtimeHandler] Disconnected from realtime server");
159
+ this.connected = false;
160
+ this.options.onStoreChange?.();
122
161
  if (this.hasConnected) {
123
162
  this.scheduleReconnection();
124
163
  }
125
164
  }
126
165
  /**
127
- * Attempts to connect to the realtime server.
166
+ * No-op placeholder retained for the disconnect backoff schedule below.
167
+ * Transport reconnect is owned by Socket.IO inside RealtimeModule; this
168
+ * layer only tracks attempts for logging / future health hooks.
128
169
  */
129
170
  attemptConnection() {
130
171
  if (!this.realtime) return;
131
172
  }
132
173
  /**
133
- * Schedules a reconnection attempt with exponential backoff and jitter.
174
+ * Schedules a reconnection *watchdog* tick with exponential backoff and jitter.
175
+ * Does not open sockets — RealtimeModule already reconnects. Kept so disconnect
176
+ * storms remain observable (and existing unit tests stay meaningful).
134
177
  */
135
178
  scheduleReconnection() {
136
179
  if (this.reconnectTimer) {
@@ -156,12 +199,61 @@ class RealtimeHandler {
156
199
  delay = Math.round(delay + jitter);
157
200
  return Math.max(this.connectionConfig.reconnectBaseDelay, Math.min(delay, this.connectionConfig.reconnectMaxDelay));
158
201
  }
202
+ /**
203
+ * Join the realtime doctype room for a doctype (refcounted). Called by the
204
+ * sync module whenever a subscription for the doctype is added. Room
205
+ * membership survives reconnects — RealtimeModule re-joins tracked rooms on
206
+ * every `connect`.
207
+ *
208
+ * Note: only doctype-level rooms are joined. `list_update` fires for every
209
+ * save of a regular doctype, which covers doc updates too; per-doc rooms
210
+ * would only add coverage for single/read-only doctypes.
211
+ */
212
+ watchDoctype(doctype) {
213
+ const count = (this.watchedDoctypes.get(doctype) ?? 0) + 1;
214
+ this.watchedDoctypes.set(doctype, count);
215
+ if (count === 1 && this.realtime) {
216
+ Promise.resolve(this.realtime.subscribeList(doctype)).catch(err => console.warn(`[RealtimeHandler] Failed to join doctype room ${doctype}:`, err));
217
+ }
218
+ }
219
+ /** Release one reference to a doctype room; leaves the room on the last one. */
220
+ unwatchDoctype(doctype) {
221
+ const count = (this.watchedDoctypes.get(doctype) ?? 0) - 1;
222
+ if (count > 0) {
223
+ this.watchedDoctypes.set(doctype, count);
224
+ return;
225
+ }
226
+ this.watchedDoctypes.delete(doctype);
227
+ this.realtime?.unsubscribeList(doctype);
228
+ }
229
+ /** Leave all doctype rooms (used by cache resets/disposal). */
230
+ unwatchAll() {
231
+ if (this.realtime) {
232
+ for (const doctype of this.watchedDoctypes.keys()) {
233
+ this.realtime.unsubscribeList(doctype);
234
+ }
235
+ }
236
+ this.watchedDoctypes.clear();
237
+ }
159
238
  /**
160
239
  * Realtime handler: authoritative document changed.
161
240
  * Fetches document via REST with current user context to respect permissions,
162
241
  * updates cache, and reconciles subscription membership.
242
+ *
243
+ * Concurrent events for the same document (frappe emits doc_update AND
244
+ * list_update per save) share a single in-flight fetch.
163
245
  */
164
- async onDocChanged(payload) {
246
+ onDocChanged(payload) {
247
+ const key = `${payload?.doctype}\0${payload?.name}`;
248
+ const inflight = this.inflightFetches.get(key);
249
+ if (inflight) return inflight;
250
+ const fetchPromise = this.fetchAndReconcile(payload).finally(() => {
251
+ this.inflightFetches.delete(key);
252
+ });
253
+ this.inflightFetches.set(key, fetchPromise);
254
+ return fetchPromise;
255
+ }
256
+ async fetchAndReconcile(payload) {
165
257
  try {
166
258
  const document = await this.db.getDoc(payload.doctype, payload.name);
167
259
  this.normalizedCache.upsert(document);
@@ -169,7 +261,12 @@ class RealtimeHandler {
169
261
  for (const subscription of subscriptionsNeedingRehydration) {
170
262
  this.rehydrationManager?.scheduleRehydration(subscription, import_types.RehydrationReason.RemoteCreate);
171
263
  }
264
+ this.options.onStoreChange?.();
172
265
  } catch (err) {
266
+ if (err?.status === 404) {
267
+ await this.onDocDeleted(payload);
268
+ return;
269
+ }
173
270
  console.warn(`Failed to fetch document ${payload?.doctype}/${payload?.name} during realtime update:`, err);
174
271
  }
175
272
  }
@@ -186,6 +283,7 @@ class RealtimeHandler {
186
283
  for (const subscription of affectedSubscriptions) {
187
284
  this.rehydrationManager?.scheduleRehydration(subscription, import_types.RehydrationReason.Delete);
188
285
  }
286
+ this.options.onStoreChange?.();
189
287
  } catch (err) {
190
288
  console.warn(`Failed to process doc_deleted for ${payload?.doctype}/${payload?.name}:`, err);
191
289
  }
@@ -199,6 +297,18 @@ class RealtimeHandler {
199
297
  getIsConnected() {
200
298
  return this.hasConnected;
201
299
  }
300
+ /**
301
+ * Live connection snapshot for reconnect indicators.
302
+ * `connected` tracks the socket right now; `everConnected` distinguishes
303
+ * "reconnecting" (was up, dropped) from "never had realtime" (fixtures,
304
+ * SSR, no realtime module).
305
+ */
306
+ getConnectionState() {
307
+ return {
308
+ connected: this.connected,
309
+ everConnected: this.hasConnected
310
+ };
311
+ }
202
312
  /**
203
313
  * Disposes of resources and clears timers.
204
314
  */
@@ -207,6 +317,7 @@ class RealtimeHandler {
207
317
  clearTimeout(this.reconnectTimer);
208
318
  this.reconnectTimer = void 0;
209
319
  }
320
+ this.unwatchAll();
210
321
  if (this.realtime) {
211
322
  this.realtime?.disconnect();
212
323
  }
@@ -68,24 +68,25 @@ var RealtimeHandler = /* @__PURE__ */function () {
68
68
  _class_call_check(this, RealtimeHandler2);
69
69
  var _ref, _ref1, _ref2, _ref3;
70
70
  var _options_connectionConfig, _options_connectionConfig1, _options_connectionConfig2, _options_connectionConfig3;
71
+ _define_property(this, "reconnectAttempts", 0);
72
+ _define_property(this, "reconnectTimer", void 0);
73
+ _define_property(this, "hasConnected", false);
74
+ _define_property(this, "connected", false);
75
+ _define_property(this, "connectionConfig", void 0);
76
+ _define_property(this, "watchedDoctypes", /* @__PURE__ */new Map());
77
+ _define_property(this, "inflightFetches", /* @__PURE__ */new Map());
71
78
  _define_property(this, "db", void 0);
72
79
  _define_property(this, "realtime", void 0);
73
80
  _define_property(this, "normalizedCache", void 0);
74
81
  _define_property(this, "subscriptionManager", void 0);
75
82
  _define_property(this, "rehydrationManager", void 0);
76
83
  _define_property(this, "options", void 0);
77
- _define_property(this, "reconnectAttempts", void 0);
78
- _define_property(this, "reconnectTimer", void 0);
79
- _define_property(this, "hasConnected", void 0);
80
- _define_property(this, "connectionConfig", void 0);
81
84
  this.db = db;
82
85
  this.realtime = realtime;
83
86
  this.normalizedCache = normalizedCache;
84
87
  this.subscriptionManager = subscriptionManager;
85
88
  this.rehydrationManager = rehydrationManager;
86
89
  this.options = options;
87
- this.reconnectAttempts = 0;
88
- this.hasConnected = false;
89
90
  this.connectionConfig = {
90
91
  reconnectBaseDelay: (_ref = (_options_connectionConfig = options.connectionConfig) === null || _options_connectionConfig === void 0 ? void 0 : _options_connectionConfig.reconnectBaseDelay) !== null && _ref !== void 0 ? _ref : 1e3,
91
92
  reconnectMaxDelay: (_ref1 = (_options_connectionConfig1 = options.connectionConfig) === null || _options_connectionConfig1 === void 0 ? void 0 : _options_connectionConfig1.reconnectMaxDelay) !== null && _ref1 !== void 0 ? _ref1 : 3e4,
@@ -100,26 +101,55 @@ var RealtimeHandler = /* @__PURE__ */function () {
100
101
  value: (
101
102
  /**
102
103
  * Sets up realtime event handlers for document changes.
104
+ *
105
+ * Real Frappe (v15) wire protocol, verified live against a stock bench
106
+ * (see .test-evidence/storybook-rubric/p-results/frappe-realtime-live-e2e.md):
107
+ * - `doc_update` `{doctype, name, modified}` — emitted to the per-doc room
108
+ * `doc:{doctype}/{name}` on every save.
109
+ * - `list_update` `{doctype, name, user}` — emitted to the doctype room
110
+ * `doctype:{doctype}` on every save of a non-single, non-child doctype.
111
+ * - Deletion emits the SAME two events (payload indistinguishable from an
112
+ * update) — there is NO `doc_deleted` event. Deletions are detected here
113
+ * opportunistically when the authoritative re-fetch 404s, but the durable
114
+ * deletion signal remains the tombstone/CDC backfill (`Deleted Document`
115
+ * doctype maintained by the `live` app's on_trash hook).
116
+ *
117
+ * Both real events funnel into the same fetch-and-reconcile path, deduped
118
+ * so a doc_update/list_update pair for the same doc costs one fetch.
103
119
  */
104
120
  function setupRealtimeHandlers() {
105
121
  var _this = this;
106
- var _this_realtime, _this_realtime1, _this_realtime2, _this_realtime3, _this_realtime4;
122
+ var _this_realtime, _this_realtime1, _this_realtime2, _this_realtime3, _this_realtime4, _this_realtime5, _this_realtime6;
107
123
  if (!this.realtime) return;
108
- (_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.on("doc_changed", async function (payload) {
124
+ (_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.on("doc_update", async function (payload) {
125
+ if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
126
+ type: import_types.RealtimeEventType.DocUpdate,
127
+ payload
128
+ });
129
+ return _this.onDocChanged(payload);
130
+ });
131
+ (_this_realtime1 = this.realtime) === null || _this_realtime1 === void 0 ? void 0 : _this_realtime1.on("list_update", async function (payload) {
132
+ if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
133
+ type: import_types.RealtimeEventType.ListUpdate,
134
+ payload
135
+ });
136
+ return _this.onDocChanged(payload);
137
+ });
138
+ (_this_realtime2 = this.realtime) === null || _this_realtime2 === void 0 ? void 0 : _this_realtime2.on("doc_changed", async function (payload) {
109
139
  if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
110
140
  type: import_types.RealtimeEventType.DocChanged,
111
141
  payload
112
142
  });
113
143
  return _this.onDocChanged(payload);
114
144
  });
115
- (_this_realtime1 = this.realtime) === null || _this_realtime1 === void 0 ? void 0 : _this_realtime1.on("doc_deleted", async function (payload) {
145
+ (_this_realtime3 = this.realtime) === null || _this_realtime3 === void 0 ? void 0 : _this_realtime3.on("doc_deleted", async function (payload) {
116
146
  if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
117
147
  type: import_types.RealtimeEventType.DocDeleted,
118
148
  payload
119
149
  });
120
150
  return _this.onDocDeleted(payload);
121
151
  });
122
- (_this_realtime2 = this.realtime) === null || _this_realtime2 === void 0 ? void 0 : _this_realtime2.on("perm_epoch_bump", function () {
152
+ (_this_realtime4 = this.realtime) === null || _this_realtime4 === void 0 ? void 0 : _this_realtime4.on("perm_epoch_bump", function () {
123
153
  if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
124
154
  type: import_types.RealtimeEventType.PermEpochBump
125
155
  });
@@ -127,10 +157,10 @@ var RealtimeHandler = /* @__PURE__ */function () {
127
157
  _this.options.onResetCache();
128
158
  }
129
159
  });
130
- (_this_realtime3 = this.realtime) === null || _this_realtime3 === void 0 ? void 0 : _this_realtime3.on("connected", function () {
160
+ (_this_realtime5 = this.realtime) === null || _this_realtime5 === void 0 ? void 0 : _this_realtime5.on("connected", function () {
131
161
  _this.onConnected();
132
162
  });
133
- (_this_realtime4 = this.realtime) === null || _this_realtime4 === void 0 ? void 0 : _this_realtime4.on("disconnect", function () {
163
+ (_this_realtime6 = this.realtime) === null || _this_realtime6 === void 0 ? void 0 : _this_realtime6.on("disconnect", function () {
134
164
  _this.onDisconnected();
135
165
  });
136
166
  })
@@ -151,7 +181,9 @@ var RealtimeHandler = /* @__PURE__ */function () {
151
181
  * Handles successful connection.
152
182
  */
153
183
  function onConnected() {
184
+ var _this_options_onStoreChange, _this_options;
154
185
  this.hasConnected = true;
186
+ this.connected = true;
155
187
  this.reconnectAttempts = 0;
156
188
  if (this.reconnectTimer) {
157
189
  clearTimeout(this.reconnectTimer);
@@ -165,6 +197,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
165
197
  if (this.options.onBackfillAll) {
166
198
  this.options.onBackfillAll();
167
199
  }
200
+ (_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
168
201
  console.debug("[RealtimeHandler] Connected to realtime server");
169
202
  })
170
203
  }, {
@@ -174,7 +207,10 @@ var RealtimeHandler = /* @__PURE__ */function () {
174
207
  * Handles disconnection with automatic reconnection.
175
208
  */
176
209
  function onDisconnected() {
210
+ var _this_options_onStoreChange, _this_options;
177
211
  console.debug("[RealtimeHandler] Disconnected from realtime server");
212
+ this.connected = false;
213
+ (_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
178
214
  if (this.hasConnected) {
179
215
  this.scheduleReconnection();
180
216
  }
@@ -183,18 +219,20 @@ var RealtimeHandler = /* @__PURE__ */function () {
183
219
  key: "attemptConnection",
184
220
  value: (
185
221
  /**
186
- * Attempts to connect to the realtime server.
222
+ * No-op placeholder retained for the disconnect backoff schedule below.
223
+ * Transport reconnect is owned by Socket.IO inside RealtimeModule; this
224
+ * layer only tracks attempts for logging / future health hooks.
187
225
  */
188
226
  function attemptConnection() {
189
227
  if (!this.realtime) return;
190
228
  })
191
229
  }, {
192
230
  key: "scheduleReconnection",
193
- value:
194
- // RealtimeModule handles reconnection internally via its reconnection config.
195
- // Handlers are already attached in the constructor via setupRealtimeHandlers().
231
+ value: (
196
232
  /**
197
- * Schedules a reconnection attempt with exponential backoff and jitter.
233
+ * Schedules a reconnection *watchdog* tick with exponential backoff and jitter.
234
+ * Does not open sockets — RealtimeModule already reconnects. Kept so disconnect
235
+ * storms remain observable (and existing unit tests stay meaningful).
198
236
  */
199
237
  function scheduleReconnection() {
200
238
  var _this = this;
@@ -207,7 +245,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
207
245
  _this.reconnectAttempts++;
208
246
  _this.attemptConnection();
209
247
  }, delay);
210
- }
248
+ })
211
249
  }, {
212
250
  key: "calculateReconnectDelay",
213
251
  value: (
@@ -224,6 +262,72 @@ var RealtimeHandler = /* @__PURE__ */function () {
224
262
  delay = Math.round(delay + jitter);
225
263
  return Math.max(this.connectionConfig.reconnectBaseDelay, Math.min(delay, this.connectionConfig.reconnectMaxDelay));
226
264
  })
265
+ }, {
266
+ /**
267
+ * Join the realtime doctype room for a doctype (refcounted). Called by the
268
+ * sync module whenever a subscription for the doctype is added. Room
269
+ * membership survives reconnects — RealtimeModule re-joins tracked rooms on
270
+ * every `connect`.
271
+ *
272
+ * Note: only doctype-level rooms are joined. `list_update` fires for every
273
+ * save of a regular doctype, which covers doc updates too; per-doc rooms
274
+ * would only add coverage for single/read-only doctypes.
275
+ */
276
+ key: "watchDoctype",
277
+ value: function watchDoctype(doctype) {
278
+ var _this_watchedDoctypes_get;
279
+ var count = ((_this_watchedDoctypes_get = this.watchedDoctypes.get(doctype)) !== null && _this_watchedDoctypes_get !== void 0 ? _this_watchedDoctypes_get : 0) + 1;
280
+ this.watchedDoctypes.set(doctype, count);
281
+ if (count === 1 && this.realtime) {
282
+ Promise.resolve(this.realtime.subscribeList(doctype)).catch(function (err) {
283
+ return console.warn(`[RealtimeHandler] Failed to join doctype room ${doctype}:`, err);
284
+ });
285
+ }
286
+ }
287
+ }, {
288
+ /** Release one reference to a doctype room; leaves the room on the last one. */
289
+ key: "unwatchDoctype",
290
+ value: function unwatchDoctype(doctype) {
291
+ var _this_watchedDoctypes_get;
292
+ var _this_realtime;
293
+ var count = ((_this_watchedDoctypes_get = this.watchedDoctypes.get(doctype)) !== null && _this_watchedDoctypes_get !== void 0 ? _this_watchedDoctypes_get : 0) - 1;
294
+ if (count > 0) {
295
+ this.watchedDoctypes.set(doctype, count);
296
+ return;
297
+ }
298
+ this.watchedDoctypes.delete(doctype);
299
+ (_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.unsubscribeList(doctype);
300
+ }
301
+ }, {
302
+ /** Leave all doctype rooms (used by cache resets/disposal). */
303
+ key: "unwatchAll",
304
+ value: function unwatchAll() {
305
+ if (this.realtime) {
306
+ var _iteratorNormalCompletion = true,
307
+ _didIteratorError = false,
308
+ _iteratorError = void 0;
309
+ try {
310
+ for (var _iterator = this.watchedDoctypes.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
311
+ var doctype = _step.value;
312
+ this.realtime.unsubscribeList(doctype);
313
+ }
314
+ } catch (err) {
315
+ _didIteratorError = true;
316
+ _iteratorError = err;
317
+ } finally {
318
+ try {
319
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
320
+ _iterator.return();
321
+ }
322
+ } finally {
323
+ if (_didIteratorError) {
324
+ throw _iteratorError;
325
+ }
326
+ }
327
+ }
328
+ }
329
+ this.watchedDoctypes.clear();
330
+ }
227
331
  }, {
228
332
  key: "onDocChanged",
229
333
  value: (
@@ -231,9 +335,26 @@ var RealtimeHandler = /* @__PURE__ */function () {
231
335
  * Realtime handler: authoritative document changed.
232
336
  * Fetches document via REST with current user context to respect permissions,
233
337
  * updates cache, and reconciles subscription membership.
338
+ *
339
+ * Concurrent events for the same document (frappe emits doc_update AND
340
+ * list_update per save) share a single in-flight fetch.
234
341
  */
235
- async function onDocChanged(payload) {
342
+ function onDocChanged(payload) {
343
+ var _this = this;
344
+ var key = `${payload === null || payload === void 0 ? void 0 : payload.doctype}\0${payload === null || payload === void 0 ? void 0 : payload.name}`;
345
+ var inflight = this.inflightFetches.get(key);
346
+ if (inflight) return inflight;
347
+ var fetchPromise = this.fetchAndReconcile(payload).finally(function () {
348
+ _this.inflightFetches.delete(key);
349
+ });
350
+ this.inflightFetches.set(key, fetchPromise);
351
+ return fetchPromise;
352
+ })
353
+ }, {
354
+ key: "fetchAndReconcile",
355
+ value: async function fetchAndReconcile(payload) {
236
356
  try {
357
+ var _this_options_onStoreChange, _this_options;
237
358
  var document = await this.db.getDoc(payload.doctype, payload.name);
238
359
  this.normalizedCache.upsert(document);
239
360
  var subscriptionsNeedingRehydration = this.subscriptionManager.updateSubscriptionMembership(document);
@@ -260,10 +381,15 @@ var RealtimeHandler = /* @__PURE__ */function () {
260
381
  }
261
382
  }
262
383
  }
384
+ (_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
263
385
  } catch (err) {
386
+ if ((err === null || err === void 0 ? void 0 : err.status) === 404) {
387
+ await this.onDocDeleted(payload);
388
+ return;
389
+ }
264
390
  console.warn(`Failed to fetch document ${payload === null || payload === void 0 ? void 0 : payload.doctype}/${payload === null || payload === void 0 ? void 0 : payload.name} during realtime update:`, err);
265
391
  }
266
- })
392
+ }
267
393
  }, {
268
394
  key: "onDocDeleted",
269
395
  value: (
@@ -272,6 +398,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
272
398
  */
273
399
  async function onDocDeleted(payload) {
274
400
  try {
401
+ var _this_options_onStoreChange, _this_options;
275
402
  this.normalizedCache.remove({
276
403
  doctype: payload.doctype,
277
404
  name: payload.name
@@ -300,6 +427,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
300
427
  }
301
428
  }
302
429
  }
430
+ (_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
303
431
  } catch (err) {
304
432
  console.warn(`Failed to process doc_deleted for ${payload === null || payload === void 0 ? void 0 : payload.doctype}/${payload === null || payload === void 0 ? void 0 : payload.name}:`, err);
305
433
  }
@@ -319,6 +447,20 @@ var RealtimeHandler = /* @__PURE__ */function () {
319
447
  value: function getIsConnected() {
320
448
  return this.hasConnected;
321
449
  }
450
+ }, {
451
+ /**
452
+ * Live connection snapshot for reconnect indicators.
453
+ * `connected` tracks the socket right now; `everConnected` distinguishes
454
+ * "reconnecting" (was up, dropped) from "never had realtime" (fixtures,
455
+ * SSR, no realtime module).
456
+ */
457
+ key: "getConnectionState",
458
+ value: function getConnectionState() {
459
+ return {
460
+ connected: this.connected,
461
+ everConnected: this.hasConnected
462
+ };
463
+ }
322
464
  }, {
323
465
  /**
324
466
  * Disposes of resources and clears timers.
@@ -329,6 +471,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
329
471
  clearTimeout(this.reconnectTimer);
330
472
  this.reconnectTimer = void 0;
331
473
  }
474
+ this.unwatchAll();
332
475
  if (this.realtime) {
333
476
  var _this_realtime;
334
477
  (_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.disconnect();
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","realtime_exports","__export","RealtimeHandler","module","exports","import_types","require","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","RealtimeHandler2","db","realtime","normalizedCache","subscriptionManager","rehydrationManager","options","arguments","_ref","_ref1","_ref2","_ref3","_options_connectionConfig","_options_connectionConfig1","_options_connectionConfig2","_options_connectionConfig3","reconnectAttempts","hasConnected","connectionConfig","reconnectBaseDelay","reconnectMaxDelay","reconnectJitter","exponentialBackoff","setupRealtimeHandlers","setupConnectionManagement","_this","_this_realtime","_this_realtime1","_this_realtime2","_this_realtime3","_this_realtime4","on","payload","onRealtimeEvent","type","RealtimeEventType","DocChanged","onDocChanged","DocDeleted","onDocDeleted","PermEpochBump","onResetCache","onConnected","onDisconnected","attemptConnection","reconnectTimer","clearTimeout","Connected","onBackfillAll","console","debug","scheduleReconnection","delay","calculateReconnectDelay","setTimeout"],"sources":["../../../src/sync/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","realtime_exports","__export","RealtimeHandler","module","exports","import_types","require","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","RealtimeHandler2","db","realtime","normalizedCache","subscriptionManager","rehydrationManager","options","arguments","_ref","_ref1","_ref2","_ref3","_options_connectionConfig","_options_connectionConfig1","_options_connectionConfig2","_options_connectionConfig3","Map","connectionConfig","reconnectBaseDelay","reconnectMaxDelay","reconnectJitter","exponentialBackoff","setupRealtimeHandlers","setupConnectionManagement","_this","_this_realtime","_this_realtime1","_this_realtime2","_this_realtime3","_this_realtime4","_this_realtime5","_this_realtime6","on","payload","onRealtimeEvent","type","RealtimeEventType","DocUpdate","onDocChanged","ListUpdate","DocChanged","DocDeleted","onDocDeleted","PermEpochBump","onResetCache","onConnected","onDisconnected","attemptConnection","_this_options_onStoreChange","_this_options","hasConnected","connected","reconnectAttempts","reconnectTimer","clearTimeout","Connected","onBackfillAll","onStoreChange","call","console","debug","scheduleReconnection","delay","calculateReconnectDelay","setTimeout","Math","min","pow","jitterRange","jitter","random","round","max","watchDoctype","doctype","_this_watchedDoctypes_get","count","watchedDoctypes","get","set","Promise","resolve","subscribeList","catch","err","warn","unwatchDoctype","delete","unsubscribeList","unwatchAll","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","keys","Symbol","iterator","_step","next","done","return"],"sources":["../../../src/sync/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -28,16 +28,6 @@ module.exports = __toCommonJS(rehydration_exports);
28
28
  var import_pacer = require("@tanstack/pacer");
29
29
  var import_types = require("./types.cjs");
30
30
  class RehydrationManager {
31
- constructor(db, cache, subscriptionManager, mutationJournal) {
32
- this.db = db;
33
- this.cache = cache;
34
- this.subscriptionManager = subscriptionManager;
35
- this.mutationJournal = mutationJournal;
36
- }
37
- db;
38
- cache;
39
- subscriptionManager;
40
- mutationJournal;
41
31
  /** Queue of pending rehydration tasks, keyed by subscription ID */
42
32
  rehydrationQueue = /* @__PURE__ */new Map();
43
33
  /** Debouncer for batching rehydration queue processing */
@@ -46,6 +36,19 @@ class RehydrationManager {
46
36
  });
47
37
  /** Maps temporary IDs to server-assigned IDs for optimistic creates */
48
38
  temporaryIdMap = /* @__PURE__ */new Map();
39
+ db;
40
+ cache;
41
+ subscriptionManager;
42
+ mutationJournal;
43
+ /** Notifies the sync store after rehydration mutates cache/membership. */
44
+ onChange;
45
+ constructor(db, cache, subscriptionManager, mutationJournal, onChange) {
46
+ this.db = db;
47
+ this.cache = cache;
48
+ this.subscriptionManager = subscriptionManager;
49
+ this.mutationJournal = mutationJournal;
50
+ this.onChange = onChange;
51
+ }
49
52
  /**
50
53
  * Schedules a rehydration task for a subscription based on the reason.
51
54
  * Coalesces multiple requests for the same subscription.
@@ -159,14 +162,17 @@ class RehydrationManager {
159
162
  }
160
163
  return a.scheduledAt - b.scheduledAt;
161
164
  });
165
+ let anyExecuted = false;
162
166
  for (const task of tasks) {
163
167
  try {
164
168
  await this.executeRehydration(task);
165
169
  this.rehydrationQueue.delete(task.subscriptionId);
170
+ anyExecuted = true;
166
171
  } catch (error) {
167
172
  console.error(`Rehydration failed for ${task.subscriptionId}:`, error);
168
173
  }
169
174
  }
175
+ if (anyExecuted) this.onChange?.();
170
176
  }
171
177
  /**
172
178
  * Executes a single rehydration task.