@multiplatform.one/frappe 6.0.4 → 6.3.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 +11 -3
  187. package/dist/esm/util.mjs.map +1 -1
  188. package/dist/esm/util.native.js +16 -3
  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 +11 -3
  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 +446 -38
  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 +2 -2
  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 +37 -2
  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
@@ -1,1171 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
- import { MutationEngine } from "./mutationEngine.native.js";
3
- import { RehydrationReason } from "./types.native.js";
4
- import { Operation, Status } from "./types.native.js";
5
- describe("MutationEngine", function () {
6
- var mutationEngine;
7
- var mockDb;
8
- var mockRealtime;
9
- var mockNormalizedCache;
10
- var mockMutationJournal;
11
- var mockSubscriptionManager;
12
- var mockRehydrationManager;
13
- var mockDoc = {
14
- name: "test-doc",
15
- doctype: "TestDoc",
16
- title: "Test Document",
17
- modified: "2024-01-01T10:00:00",
18
- creation: "2024-01-01T09:00:00",
19
- owner: "test-user",
20
- modified_by: "test-user"
21
- };
22
- beforeEach(function () {
23
- vi.useFakeTimers();
24
- var mockCall = {
25
- post: vi.fn().mockResolvedValue({
26
- results: []
27
- })
28
- };
29
- mockDb = {
30
- getDoc: vi.fn().mockResolvedValue(mockDoc),
31
- createDoc: vi.fn().mockResolvedValue({
32
- ...mockDoc,
33
- name: "real-doc"
34
- }),
35
- updateDoc: vi.fn().mockResolvedValue({
36
- ...mockDoc,
37
- title: "Updated"
38
- }),
39
- deleteDoc: vi.fn().mockResolvedValue(void 0),
40
- call: mockCall
41
- };
42
- mockRealtime = {
43
- isHealthy: vi.fn().mockReturnValue(true)
44
- };
45
- mockNormalizedCache = {
46
- get: vi.fn().mockReturnValue(mockDoc),
47
- upsert: vi.fn(),
48
- remove: vi.fn()
49
- };
50
- mockMutationJournal = {
51
- add: vi.fn(),
52
- confirm: vi.fn(),
53
- fail: vi.fn(),
54
- get: vi.fn().mockReturnValue({
55
- doctype: "TestDoc",
56
- docname: "test-doc",
57
- values: mockDoc,
58
- operation: Operation.Update,
59
- version: "2024-01-01T10:00:00",
60
- status: Status.Pending,
61
- snapshot: mockDoc
62
- }),
63
- listPending: vi.fn().mockReturnValue([])
64
- };
65
- var mockSubscription = {
66
- id: "sub1",
67
- query: {
68
- doctype: "TestDoc",
69
- fields: ["*"],
70
- filters: {},
71
- limit: 20
72
- },
73
- docIds: ["doc1", "doc2"],
74
- checkpoint: "checkpoint1",
75
- metadata: {}
76
- };
77
- mockSubscriptionManager = {
78
- getAllSubscriptions: vi.fn().mockReturnValue(/* @__PURE__ */new Map([["sub1", mockSubscription]])),
79
- updateSubscriptionMembership: vi.fn().mockReturnValue([]),
80
- removeFromAllSubscriptions: vi.fn().mockReturnValue(["sub1"]),
81
- insertDocumentIntoSubscription: vi.fn()
82
- };
83
- mockRehydrationManager = {
84
- scheduleRehydration: vi.fn(),
85
- registerTempIdMapping: vi.fn()
86
- };
87
- Object.defineProperty(global, "crypto", {
88
- value: {
89
- randomUUID: vi.fn().mockReturnValue("uuid-12345")
90
- },
91
- writable: true
92
- });
93
- Object.defineProperty(global, "navigator", {
94
- value: {
95
- onLine: true
96
- },
97
- writable: true
98
- });
99
- vi.spyOn(console, "warn").mockImplementation(function () {});
100
- vi.spyOn(console, "error").mockImplementation(function () {});
101
- });
102
- afterEach(function () {
103
- vi.restoreAllMocks();
104
- vi.useRealTimers();
105
- });
106
- describe("constructor", function () {
107
- it("should initialize with default options", function () {
108
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager);
109
- expect(mutationEngine).toBeDefined();
110
- });
111
- it("should initialize with custom options", function () {
112
- var options = {
113
- batchSize: 20,
114
- batchDelay: 200,
115
- versionField: "timestamp"
116
- };
117
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, options);
118
- expect(mutationEngine).toBeDefined();
119
- });
120
- it("should handle missing realtime module", function () {
121
- mutationEngine = new MutationEngine(mockDb, void 0, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager);
122
- expect(mutationEngine).toBeDefined();
123
- });
124
- });
125
- describe("mutate", function () {
126
- beforeEach(function () {
127
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {});
128
- });
129
- describe("create mutations", function () {
130
- it("should handle create mutations successfully", async function () {
131
- var mutation = {
132
- mutationId: "mut1",
133
- operation: Operation.Create,
134
- doc: {
135
- doctype: "TestDoc",
136
- name: "temp-doc",
137
- title: "New Document"
138
- },
139
- version: void 0,
140
- affected: []
141
- };
142
- await mutationEngine.mutate(mutation);
143
- expect(mockNormalizedCache.upsert).toHaveBeenCalledWith(expect.objectContaining({
144
- doctype: "TestDoc",
145
- name: "temp-doc",
146
- title: "New Document"
147
- }));
148
- expect(mockDb.createDoc).toHaveBeenCalledWith(expect.objectContaining({
149
- doctype: "TestDoc"
150
- }));
151
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("mut1");
152
- });
153
- it("should handle create without provided name", async function () {
154
- var mutation = {
155
- mutationId: "mut2",
156
- operation: Operation.Create,
157
- doc: {
158
- doctype: "TestDoc",
159
- title: "New Document"
160
- },
161
- version: void 0,
162
- affected: []
163
- };
164
- await mutationEngine.mutate(mutation);
165
- expect(mockNormalizedCache.upsert).toHaveBeenCalledWith(expect.objectContaining({
166
- doctype: "TestDoc",
167
- name: expect.stringContaining("tmp_"),
168
- title: "New Document"
169
- }));
170
- });
171
- it("should handle temporary to real ID mapping", async function () {
172
- var mutation = {
173
- mutationId: "mut3",
174
- operation: Operation.Create,
175
- doc: {
176
- doctype: "TestDoc",
177
- name: "temp-doc",
178
- title: "New Document"
179
- },
180
- version: void 0,
181
- affected: []
182
- };
183
- mockDb.createDoc.mockResolvedValue({
184
- ...mockDoc,
185
- name: "real-doc-123"
186
- });
187
- await mutationEngine.mutate(mutation);
188
- expect(mockRehydrationManager.registerTempIdMapping).toHaveBeenCalledWith("temp-doc", "real-doc-123");
189
- expect(mockNormalizedCache.remove).toHaveBeenCalledWith({
190
- doctype: "TestDoc",
191
- name: "temp-doc"
192
- });
193
- });
194
- it("should schedule rehydration for affected subscriptions", async function () {
195
- var mutation = {
196
- mutationId: "mut4",
197
- operation: Operation.Create,
198
- doc: {
199
- doctype: "TestDoc",
200
- name: "temp-doc",
201
- title: "New Document"
202
- },
203
- version: void 0,
204
- affected: []
205
- };
206
- await mutationEngine.mutate(mutation);
207
- expect(mockRehydrationManager.scheduleRehydration).toHaveBeenCalledWith(expect.any(Object), RehydrationReason.Create);
208
- });
209
- });
210
- describe("update mutations", function () {
211
- it("should handle update mutations successfully", async function () {
212
- var mutation = {
213
- mutationId: "mut5",
214
- operation: Operation.Update,
215
- doc: {
216
- doctype: "TestDoc",
217
- name: "test-doc",
218
- title: "Updated Title"
219
- },
220
- version: "2024-01-01T10:00:00",
221
- affected: []
222
- };
223
- await mutationEngine.mutate(mutation);
224
- expect(mockNormalizedCache.upsert).toHaveBeenCalledWith(expect.objectContaining({
225
- doctype: "TestDoc",
226
- name: "test-doc",
227
- title: "Updated Title"
228
- }));
229
- expect(mockDb.updateDoc).toHaveBeenCalledWith(expect.objectContaining({
230
- doctype: "TestDoc",
231
- name: "test-doc",
232
- title: "Updated Title"
233
- }));
234
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("mut5");
235
- });
236
- it("should throw error for update without docname", async function () {
237
- var mutation = {
238
- mutationId: "mut6",
239
- operation: Operation.Update,
240
- doc: {
241
- doctype: "TestDoc",
242
- title: "Updated Title"
243
- },
244
- version: void 0,
245
- affected: []
246
- };
247
- await expect(mutationEngine.mutate(mutation)).rejects.toThrow("docname is required for update/delete operations");
248
- });
249
- it("should determine version from cached document", async function () {
250
- var mutation = {
251
- mutationId: "mut7",
252
- operation: Operation.Update,
253
- doc: {
254
- doctype: "TestDoc",
255
- name: "test-doc",
256
- title: "Updated Title"
257
- },
258
- version: void 0,
259
- affected: []
260
- };
261
- await mutationEngine.mutate(mutation);
262
- expect(mockDb.updateDoc).toHaveBeenCalledWith(expect.objectContaining({
263
- doctype: "TestDoc",
264
- name: "test-doc"
265
- }));
266
- });
267
- it("should fetch document for version when not cached", async function () {
268
- mockNormalizedCache.get.mockReturnValue(void 0);
269
- mockDb.getDoc.mockResolvedValue({
270
- doctype: "TestDoc",
271
- name: "test-doc",
272
- title: "Original Title",
273
- modified: "2024-01-01T10:00:00"
274
- });
275
- var mutation = {
276
- mutationId: "mut8",
277
- operation: Operation.Update,
278
- doc: {
279
- doctype: "TestDoc",
280
- name: "test-doc",
281
- title: "Updated Title"
282
- },
283
- version: void 0,
284
- affected: []
285
- };
286
- await mutationEngine.mutate(mutation);
287
- expect(mockDb.getDoc).toHaveBeenCalledWith("TestDoc", "test-doc");
288
- expect(mockNormalizedCache.upsert).toHaveBeenCalled();
289
- });
290
- it("should handle preflight fetch failures gracefully", async function () {
291
- mockNormalizedCache.get.mockReturnValue(void 0);
292
- mockDb.getDoc.mockRejectedValue(new Error("Network error"));
293
- var mutation = {
294
- mutationId: "mut9",
295
- operation: Operation.Update,
296
- doc: {
297
- doctype: "TestDoc",
298
- name: "test-doc",
299
- title: "Updated Title"
300
- },
301
- version: void 0,
302
- affected: []
303
- };
304
- await mutationEngine.mutate(mutation);
305
- expect(mockDb.updateDoc).toHaveBeenCalledWith(expect.objectContaining({
306
- doctype: "TestDoc",
307
- name: "test-doc"
308
- }));
309
- });
310
- });
311
- describe("delete mutations", function () {
312
- it("should handle delete mutations successfully", async function () {
313
- var mutation = {
314
- mutationId: "mut10",
315
- operation: Operation.Delete,
316
- doc: {
317
- doctype: "TestDoc",
318
- name: "test-doc"
319
- },
320
- version: "2024-01-01T10:00:00",
321
- affected: []
322
- };
323
- await mutationEngine.mutate(mutation);
324
- expect(mockNormalizedCache.remove).toHaveBeenCalledWith({
325
- doctype: "TestDoc",
326
- name: "test-doc"
327
- });
328
- expect(mockSubscriptionManager.removeFromAllSubscriptions).toHaveBeenCalledWith("TestDoc", "test-doc");
329
- expect(mockDb.deleteDoc).toHaveBeenCalledWith(expect.objectContaining({
330
- doctype: "TestDoc",
331
- name: "test-doc"
332
- }));
333
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("mut10");
334
- });
335
- it("should schedule rehydration for affected subscriptions", async function () {
336
- var mockSubscription = {
337
- id: "sub1",
338
- query: {
339
- doctype: "TestDoc",
340
- fields: ["*"],
341
- filters: {},
342
- limit: 20
343
- },
344
- docIds: ["test-doc", "doc2"],
345
- checkpoint: "checkpoint1",
346
- metadata: {}
347
- };
348
- mockSubscriptionManager.getAllSubscriptions.mockReturnValue(/* @__PURE__ */new Map([["sub1", mockSubscription]]));
349
- var mutation = {
350
- mutationId: "mut11",
351
- operation: Operation.Delete,
352
- doc: {
353
- doctype: "TestDoc",
354
- name: "test-doc"
355
- },
356
- version: void 0,
357
- affected: []
358
- };
359
- await mutationEngine.mutate(mutation);
360
- expect(mockRehydrationManager.scheduleRehydration).toHaveBeenCalledWith(expect.any(Object), RehydrationReason.Delete);
361
- });
362
- it("should throw error for delete without docname", async function () {
363
- var mutation = {
364
- mutationId: "mut12",
365
- operation: Operation.Delete,
366
- doc: {
367
- doctype: "TestDoc"
368
- },
369
- version: void 0,
370
- affected: []
371
- };
372
- await expect(mutationEngine.mutate(mutation)).rejects.toThrow("docname is required for update/delete operations");
373
- });
374
- });
375
- describe("callback integration", function () {
376
- it("should call mutation lifecycle callbacks", async function () {
377
- var callbacks = {
378
- onMutationStart: vi.fn(),
379
- onMutationSuccess: vi.fn(),
380
- onOptimisticApply: vi.fn()
381
- };
382
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, callbacks);
383
- var mutation = {
384
- mutationId: "mut13",
385
- operation: Operation.Update,
386
- doc: {
387
- doctype: "TestDoc",
388
- name: "test-doc",
389
- title: "Updated"
390
- },
391
- version: void 0,
392
- affected: []
393
- };
394
- await mutationEngine.mutate(mutation);
395
- expect(callbacks.onMutationStart).toHaveBeenCalledWith(mutation);
396
- expect(callbacks.onMutationSuccess).toHaveBeenCalledWith(mutation);
397
- expect(callbacks.onOptimisticApply).toHaveBeenCalledWith({
398
- doctype: "TestDoc",
399
- name: "test-doc",
400
- operation: Operation.Update
401
- });
402
- });
403
- });
404
- describe("realtime integration", function () {
405
- it("should refetch documents when realtime is unhealthy", async function () {
406
- mockRealtime.isHealthy.mockReturnValue(false);
407
- var mutation = {
408
- mutationId: "mut14",
409
- operation: Operation.Update,
410
- doc: {
411
- doctype: "TestDoc",
412
- name: "test-doc",
413
- title: "Updated"
414
- },
415
- version: void 0,
416
- affected: [{
417
- doctype: "RelatedDoc",
418
- name: "related-doc"
419
- }]
420
- };
421
- await mutationEngine.mutate(mutation);
422
- expect(mockDb.getDoc).toHaveBeenCalledWith("TestDoc", "test-doc");
423
- expect(mockDb.getDoc).toHaveBeenCalledWith("RelatedDoc", "related-doc");
424
- });
425
- it("should not refetch when realtime is healthy", async function () {
426
- mockRealtime.isHealthy.mockReturnValue(true);
427
- mockDb.getDoc.mockClear();
428
- var mutation = {
429
- mutationId: "mut15",
430
- operation: Operation.Update,
431
- doc: {
432
- doctype: "TestDoc",
433
- name: "test-doc",
434
- title: "Updated"
435
- },
436
- version: "2024-01-01T10:00:00",
437
- affected: []
438
- };
439
- await mutationEngine.mutate(mutation);
440
- expect(mockDb.getDoc).not.toHaveBeenCalled();
441
- });
442
- });
443
- });
444
- describe("error handling", function () {
445
- beforeEach(function () {
446
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
447
- onMutationError: vi.fn(),
448
- onConflict: vi.fn()
449
- });
450
- });
451
- it("should handle server errors", async function () {
452
- var error = new Error("Server error");
453
- mockDb.createDoc.mockRejectedValue(error);
454
- var mutation = {
455
- mutationId: "mut16",
456
- operation: Operation.Create,
457
- doc: {
458
- doctype: "TestDoc",
459
- name: "temp-doc",
460
- title: "New Document"
461
- },
462
- version: void 0,
463
- affected: []
464
- };
465
- await expect(mutationEngine.mutate(mutation)).rejects.toThrow("Server error");
466
- expect(mockMutationJournal.fail).toHaveBeenCalledWith("mut16");
467
- });
468
- it("should handle conflict errors (409)", async function () {
469
- var error = {
470
- status: 409
471
- };
472
- mockDb.updateDoc.mockRejectedValue(error);
473
- var mutation = {
474
- mutationId: "mut17",
475
- operation: Operation.Update,
476
- doc: {
477
- doctype: "TestDoc",
478
- name: "test-doc",
479
- title: "Updated"
480
- },
481
- version: "2024-01-01T09:00:00",
482
- affected: []
483
- };
484
- await expect(mutationEngine.mutate(mutation)).rejects.toEqual(error);
485
- expect(mockDb.getDoc).toHaveBeenCalledWith("TestDoc", "test-doc");
486
- });
487
- it("should handle snapshot rollback on error", async function () {
488
- var error = new Error("Update failed");
489
- mockDb.updateDoc.mockRejectedValue(error);
490
- var mutation = {
491
- mutationId: "mut18",
492
- operation: Operation.Update,
493
- doc: {
494
- doctype: "TestDoc",
495
- name: "test-doc",
496
- title: "Updated"
497
- },
498
- version: void 0,
499
- affected: []
500
- };
501
- await expect(mutationEngine.mutate(mutation)).rejects.toThrow("Update failed");
502
- expect(mockNormalizedCache.upsert).toHaveBeenCalledWith(mockDoc);
503
- });
504
- it("should not rollback when offline", async function () {
505
- Object.defineProperty(global, "navigator", {
506
- value: {
507
- onLine: false
508
- },
509
- writable: true
510
- });
511
- var error = new Error("Network error");
512
- mockDb.updateDoc.mockRejectedValue(error);
513
- var mutation = {
514
- mutationId: "mut19",
515
- operation: Operation.Update,
516
- doc: {
517
- doctype: "TestDoc",
518
- name: "test-doc",
519
- title: "Updated"
520
- },
521
- version: void 0,
522
- affected: []
523
- };
524
- await expect(mutationEngine.mutate(mutation)).rejects.toThrow("Network error");
525
- var upsertCalls = mockNormalizedCache.upsert.mock.calls;
526
- var rollbackCall = upsertCalls.find(function (call) {
527
- return call[0] === mockDoc && upsertCalls.indexOf(call) > 0;
528
- });
529
- expect(rollbackCall).toBeUndefined();
530
- });
531
- it("should handle failed create mutations", async function () {
532
- var error = new Error("Create failed");
533
- mockDb.createDoc.mockRejectedValue(error);
534
- var subscription = {
535
- id: "sub1",
536
- query: {
537
- doctype: "TestDoc"
538
- },
539
- docIds: ["temp-doc", "other-doc"]
540
- };
541
- mockSubscriptionManager.getAllSubscriptions.mockReturnValue(/* @__PURE__ */new Map([["sub1", subscription]]));
542
- var mutation = {
543
- mutationId: "mut20",
544
- operation: Operation.Create,
545
- doc: {
546
- doctype: "TestDoc",
547
- name: "temp-doc",
548
- title: "New Document"
549
- },
550
- version: void 0,
551
- affected: []
552
- };
553
- await expect(mutationEngine.mutate(mutation)).rejects.toThrow("Create failed");
554
- expect(subscription.docIds).toEqual(["other-doc"]);
555
- });
556
- });
557
- describe("replayPending", function () {
558
- beforeEach(function () {
559
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
560
- onReplayStart: vi.fn(),
561
- onReplayComplete: vi.fn(),
562
- onConflict: vi.fn(),
563
- onMutationError: vi.fn()
564
- });
565
- });
566
- it("should replay pending create mutations", async function () {
567
- var pendingEntry = {
568
- doctype: "TestDoc",
569
- docname: "test-doc",
570
- values: {
571
- doctype: "TestDoc",
572
- name: "test-doc",
573
- title: "Test"
574
- },
575
- operation: Operation.Create,
576
- version: void 0,
577
- status: Status.Pending
578
- };
579
- mockMutationJournal.listPending.mockReturnValue([{
580
- id: "mut21",
581
- entry: pendingEntry
582
- }]);
583
- await mutationEngine.replayPending();
584
- expect(mockDb.createDoc).toHaveBeenCalledWith(expect.objectContaining({
585
- doctype: "TestDoc",
586
- client_mutation_id: "mut21"
587
- }));
588
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("mut21");
589
- });
590
- it("should replay pending update mutations", async function () {
591
- var pendingEntry = {
592
- doctype: "TestDoc",
593
- docname: "test-doc",
594
- values: {
595
- doctype: "TestDoc",
596
- name: "test-doc",
597
- title: "Updated"
598
- },
599
- operation: Operation.Update,
600
- version: "2024-01-01T10:00:00",
601
- status: Status.Pending
602
- };
603
- mockMutationJournal.listPending.mockReturnValue([{
604
- id: "mut22",
605
- entry: pendingEntry
606
- }]);
607
- await mutationEngine.replayPending();
608
- expect(mockDb.updateDoc).toHaveBeenCalledWith(expect.objectContaining({
609
- doctype: "TestDoc",
610
- name: "test-doc",
611
- client_mutation_id: "mut22",
612
- base_modified: "2024-01-01T10:00:00"
613
- }));
614
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("mut22");
615
- });
616
- it("should replay pending delete mutations", async function () {
617
- var pendingEntry = {
618
- doctype: "TestDoc",
619
- docname: "test-doc",
620
- values: void 0,
621
- operation: Operation.Delete,
622
- version: void 0,
623
- status: Status.Pending
624
- };
625
- mockMutationJournal.listPending.mockReturnValue([{
626
- id: "mut23",
627
- entry: pendingEntry
628
- }]);
629
- await mutationEngine.replayPending();
630
- expect(mockDb.deleteDoc).toHaveBeenCalledWith(expect.objectContaining({
631
- doctype: "TestDoc",
632
- name: "test-doc",
633
- client_mutation_id: "mut23"
634
- }));
635
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("mut23");
636
- });
637
- it("should handle replay conflicts", async function () {
638
- var pendingEntry = {
639
- doctype: "TestDoc",
640
- docname: "test-doc",
641
- values: {
642
- doctype: "TestDoc",
643
- name: "test-doc",
644
- title: "Updated"
645
- },
646
- operation: Operation.Update,
647
- version: "2024-01-01T10:00:00",
648
- status: Status.Pending
649
- };
650
- mockMutationJournal.listPending.mockReturnValue([{
651
- id: "mut24",
652
- entry: pendingEntry
653
- }]);
654
- mockDb.updateDoc.mockRejectedValue({
655
- status: 409
656
- });
657
- await mutationEngine.replayPending();
658
- var options = mutationEngine;
659
- expect(options.options.onConflict).toHaveBeenCalledWith({
660
- doctype: "TestDoc",
661
- name: "test-doc"
662
- });
663
- });
664
- it("should handle replay auth errors", async function () {
665
- var pendingEntry = {
666
- doctype: "TestDoc",
667
- docname: "test-doc",
668
- values: {
669
- doctype: "TestDoc",
670
- name: "test-doc",
671
- title: "Updated"
672
- },
673
- operation: Operation.Update,
674
- version: void 0,
675
- status: Status.Pending
676
- };
677
- mockMutationJournal.listPending.mockReturnValue([{
678
- id: "mut25",
679
- entry: pendingEntry
680
- }]);
681
- mockDb.updateDoc.mockRejectedValue({
682
- status: 401
683
- });
684
- await mutationEngine.replayPending();
685
- expect(mockMutationJournal.confirm).not.toHaveBeenCalledWith("mut25");
686
- expect(mockMutationJournal.fail).not.toHaveBeenCalledWith("mut25");
687
- });
688
- it("should handle permanent replay errors", async function () {
689
- var pendingEntry = {
690
- doctype: "TestDoc",
691
- docname: "test-doc",
692
- values: {
693
- doctype: "TestDoc",
694
- name: "test-doc",
695
- title: "Updated"
696
- },
697
- operation: Operation.Update,
698
- version: void 0,
699
- status: Status.Pending
700
- };
701
- mockMutationJournal.listPending.mockReturnValue([{
702
- id: "mut26",
703
- entry: pendingEntry
704
- }]);
705
- mockDb.updateDoc.mockRejectedValue({
706
- status: 400
707
- });
708
- await mutationEngine.replayPending();
709
- expect(mockMutationJournal.fail).toHaveBeenCalledWith("mut26");
710
- });
711
- it("should call replay callbacks", async function () {
712
- mockMutationJournal.listPending.mockReturnValue([]);
713
- await mutationEngine.replayPending();
714
- var options = mutationEngine;
715
- expect(options.options.onReplayStart).toHaveBeenCalled();
716
- expect(options.options.onReplayComplete).toHaveBeenCalledWith({
717
- anyFailed: false
718
- });
719
- });
720
- });
721
- describe("temporary ID management", function () {
722
- beforeEach(function () {
723
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {});
724
- });
725
- it("should return temporary ID mappings", function () {
726
- var tempMap = mutationEngine.getTemporaryIdToRealNameMap();
727
- expect(tempMap).toBeInstanceOf(Map);
728
- });
729
- it("should clear temporary mappings", function () {
730
- var tempMap = mutationEngine.getTemporaryIdToRealNameMap();
731
- tempMap.set("temp1", "real1");
732
- mutationEngine.clearTemporaryMappings();
733
- expect(tempMap.size).toBe(0);
734
- });
735
- });
736
- describe("cleanup and disposal", function () {
737
- beforeEach(function () {
738
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {});
739
- });
740
- it("should dispose of resources", function () {
741
- var tempMap = mutationEngine.getTemporaryIdToRealNameMap();
742
- tempMap.set("temp1", "real1");
743
- mutationEngine.dispose();
744
- expect(tempMap.size).toBe(0);
745
- });
746
- });
747
- describe("edge cases", function () {
748
- beforeEach(function () {
749
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {});
750
- });
751
- it("should handle missing crypto.randomUUID", async function () {
752
- global.crypto = void 0;
753
- var mutation = {
754
- mutationId: "no-crypto",
755
- operation: Operation.Create,
756
- doc: {
757
- doctype: "TestDoc",
758
- title: "New Document"
759
- },
760
- version: void 0,
761
- affected: []
762
- };
763
- mockSubscriptionManager.getAllSubscriptions = vi.fn().mockReturnValue(/* @__PURE__ */new Map());
764
- await expect(mutationEngine.mutate(mutation)).resolves.not.toThrow();
765
- });
766
- it("should handle undefined navigator", async function () {
767
- global.navigator = void 0;
768
- var error = new Error("Update failed");
769
- mockDb.updateDoc.mockRejectedValue(error);
770
- var mutation = {
771
- mutationId: "no-navigator",
772
- operation: Operation.Update,
773
- doc: {
774
- doctype: "TestDoc",
775
- name: "test-doc",
776
- title: "Updated"
777
- },
778
- version: void 0,
779
- affected: []
780
- };
781
- await expect(mutationEngine.mutate(mutation)).rejects.toThrow("Update failed");
782
- expect(mockNormalizedCache.upsert).toHaveBeenCalledTimes(2);
783
- expect(mockNormalizedCache.upsert).toHaveBeenLastCalledWith(mockDoc);
784
- });
785
- it("should handle custom version fields", async function () {
786
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
787
- versionFields: {
788
- TestDoc: "timestamp"
789
- }
790
- });
791
- var docWithTimestamp = {
792
- ...mockDoc,
793
- timestamp: "2024-01-01T12:00:00"
794
- };
795
- mockNormalizedCache.get.mockReturnValue(docWithTimestamp);
796
- var mutation = {
797
- mutationId: "custom-version",
798
- operation: Operation.Update,
799
- doc: {
800
- doctype: "TestDoc",
801
- name: "test-doc",
802
- title: "Updated"
803
- },
804
- version: void 0,
805
- affected: []
806
- };
807
- await mutationEngine.mutate(mutation);
808
- expect(mockDb.updateDoc).toHaveBeenCalledWith(expect.objectContaining({
809
- doctype: "TestDoc",
810
- name: "test-doc"
811
- }));
812
- });
813
- });
814
- describe("buildMergeConfig", function () {
815
- it("should apply field merge config via handleConflict auto-merge", async function () {
816
- var onConflict = vi.fn();
817
- var baseDoc = {
818
- ...mockDoc,
819
- priority: 5
820
- };
821
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
822
- fieldMergeConfig: {
823
- TestDoc: {
824
- priority: "max"
825
- }
826
- },
827
- onConflict,
828
- onMutationError: vi.fn()
829
- });
830
- mockNormalizedCache.get.mockReturnValue(baseDoc);
831
- mockMutationJournal.get.mockReturnValue({
832
- doctype: "TestDoc",
833
- docname: "test-doc",
834
- values: {
835
- ...baseDoc,
836
- priority: 8
837
- },
838
- operation: Operation.Update,
839
- version: "2024-01-01T10:00:00",
840
- status: Status.Pending,
841
- snapshot: baseDoc
842
- });
843
- mockDb.updateDoc.mockRejectedValueOnce({
844
- status: 409
845
- }).mockResolvedValueOnce({
846
- ...baseDoc,
847
- priority: 10
848
- });
849
- var serverDoc = {
850
- ...baseDoc,
851
- priority: 10,
852
- modified: "2024-01-01T11:00:00"
853
- };
854
- mockDb.getDoc.mockResolvedValue(serverDoc);
855
- var mutation = {
856
- mutationId: "merge-test",
857
- operation: Operation.Update,
858
- doc: {
859
- doctype: "TestDoc",
860
- name: "test-doc",
861
- priority: 8
862
- },
863
- version: "2024-01-01T10:00:00",
864
- affected: []
865
- };
866
- await expect(mutationEngine.mutate(mutation)).rejects.toEqual({
867
- status: 409
868
- });
869
- expect(mockDb.updateDoc).toHaveBeenCalledTimes(2);
870
- var retryCall = mockDb.updateDoc.mock.calls[1][0];
871
- expect(retryCall.priority).toBe(10);
872
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("merge-test");
873
- expect(onConflict).not.toHaveBeenCalled();
874
- });
875
- });
876
- describe("handleConflict auto-merge", function () {
877
- it("should auto-merge disjoint updates", async function () {
878
- var onConflict = vi.fn();
879
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
880
- onConflict,
881
- onMutationError: vi.fn()
882
- });
883
- var baseDoc = {
884
- ...mockDoc,
885
- title: "Original Title",
886
- status: "Draft"
887
- };
888
- mockNormalizedCache.get.mockReturnValue(baseDoc);
889
- mockMutationJournal.get.mockReturnValue({
890
- doctype: "TestDoc",
891
- docname: "test-doc",
892
- values: {
893
- ...baseDoc,
894
- title: "Client Title"
895
- },
896
- operation: Operation.Update,
897
- version: "2024-01-01T10:00:00",
898
- status: Status.Pending,
899
- snapshot: baseDoc
900
- });
901
- mockDb.updateDoc.mockRejectedValueOnce({
902
- status: 409
903
- }).mockResolvedValueOnce({
904
- ...mockDoc
905
- });
906
- var serverDoc = {
907
- ...baseDoc,
908
- status: "Approved",
909
- modified: "2024-01-01T11:00:00"
910
- };
911
- mockDb.getDoc.mockResolvedValue(serverDoc);
912
- var mutation = {
913
- mutationId: "disjoint-test",
914
- operation: Operation.Update,
915
- doc: {
916
- doctype: "TestDoc",
917
- name: "test-doc",
918
- title: "Client Title"
919
- },
920
- version: "2024-01-01T10:00:00",
921
- affected: []
922
- };
923
- await expect(mutationEngine.mutate(mutation)).rejects.toEqual({
924
- status: 409
925
- });
926
- expect(mockDb.updateDoc).toHaveBeenCalledTimes(2);
927
- var retryCall = mockDb.updateDoc.mock.calls[1][0];
928
- expect(retryCall.title).toBe("Client Title");
929
- expect(retryCall.status).toBe("Approved");
930
- expect(mockMutationJournal.confirm).toHaveBeenCalledWith("disjoint-test");
931
- expect(onConflict).not.toHaveBeenCalled();
932
- });
933
- it("should delegate overlapping conflicts to onConflict", async function () {
934
- var onConflict = vi.fn();
935
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
936
- onConflict,
937
- onMutationError: vi.fn()
938
- });
939
- var baseDoc = {
940
- ...mockDoc,
941
- title: "Original Title"
942
- };
943
- mockNormalizedCache.get.mockReturnValue(baseDoc);
944
- mockMutationJournal.get.mockReturnValue({
945
- doctype: "TestDoc",
946
- docname: "test-doc",
947
- values: {
948
- ...baseDoc,
949
- title: "Client Title"
950
- },
951
- operation: Operation.Update,
952
- version: "2024-01-01T10:00:00",
953
- status: Status.Pending,
954
- snapshot: baseDoc
955
- });
956
- mockDb.updateDoc.mockRejectedValue({
957
- status: 409
958
- });
959
- var serverDoc = {
960
- ...baseDoc,
961
- title: "Server Title",
962
- modified: "2024-01-01T11:00:00"
963
- };
964
- mockDb.getDoc.mockResolvedValue(serverDoc);
965
- var mutation = {
966
- mutationId: "overlap-test",
967
- operation: Operation.Update,
968
- doc: {
969
- doctype: "TestDoc",
970
- name: "test-doc",
971
- title: "Client Title"
972
- },
973
- version: "2024-01-01T10:00:00",
974
- affected: []
975
- };
976
- await expect(mutationEngine.mutate(mutation)).rejects.toEqual({
977
- status: 409
978
- });
979
- expect(onConflict).toHaveBeenCalledWith({
980
- doctype: "TestDoc",
981
- name: "test-doc"
982
- });
983
- expect(mockDb.updateDoc).toHaveBeenCalledTimes(1);
984
- });
985
- });
986
- describe("onRetry callback", function () {
987
- it("should call onRetry for each pending mutation during replay", async function () {
988
- var onRetry = vi.fn();
989
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
990
- onRetry,
991
- onReplayStart: vi.fn(),
992
- onReplayComplete: vi.fn()
993
- });
994
- var pendingEntries = [{
995
- id: "retry-1",
996
- entry: {
997
- doctype: "TestDoc",
998
- docname: "doc-1",
999
- values: {
1000
- doctype: "TestDoc",
1001
- name: "doc-1",
1002
- title: "Doc 1"
1003
- },
1004
- operation: Operation.Update,
1005
- version: "2024-01-01T10:00:00",
1006
- status: Status.Pending
1007
- }
1008
- }, {
1009
- id: "retry-2",
1010
- entry: {
1011
- doctype: "TestDoc",
1012
- docname: "doc-2",
1013
- values: {
1014
- doctype: "TestDoc",
1015
- name: "doc-2",
1016
- title: "Doc 2"
1017
- },
1018
- operation: Operation.Create,
1019
- version: void 0,
1020
- status: Status.Pending
1021
- }
1022
- }];
1023
- mockMutationJournal.listPending.mockReturnValue(pendingEntries);
1024
- var replayPromise = mutationEngine.replayPending();
1025
- await vi.advanceTimersByTimeAsync(1e3);
1026
- await replayPromise;
1027
- expect(onRetry).toHaveBeenCalledTimes(2);
1028
- expect(onRetry).toHaveBeenCalledWith({
1029
- id: "retry-1",
1030
- operation: Operation.Update
1031
- });
1032
- expect(onRetry).toHaveBeenCalledWith({
1033
- id: "retry-2",
1034
- operation: Operation.Create
1035
- });
1036
- });
1037
- });
1038
- describe("batch mutations", function () {
1039
- it("should batch mutations and flush after batchDelay", async function () {
1040
- mockDb.batchMutations = vi.fn().mockResolvedValue([{
1041
- success: true,
1042
- data: {
1043
- ...mockDoc,
1044
- name: "test-doc-1",
1045
- title: "Title 1"
1046
- }
1047
- }, {
1048
- success: true,
1049
- data: {
1050
- ...mockDoc,
1051
- name: "test-doc-2",
1052
- title: "Title 2"
1053
- }
1054
- }, {
1055
- success: true,
1056
- data: {
1057
- ...mockDoc,
1058
- name: "test-doc-3",
1059
- title: "Title 3"
1060
- }
1061
- }]);
1062
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
1063
- enableBatching: true,
1064
- batchDelay: 50,
1065
- batchMaxSize: 10
1066
- });
1067
- mockNormalizedCache.get.mockImplementation(function (ref) {
1068
- return {
1069
- ...mockDoc,
1070
- name: ref.name,
1071
- modified: "2024-01-01T10:00:00"
1072
- };
1073
- });
1074
- var mutations = [1, 2, 3].map(function (i) {
1075
- return {
1076
- mutationId: `batch-${i}`,
1077
- operation: Operation.Update,
1078
- doc: {
1079
- doctype: "TestDoc",
1080
- name: `test-doc-${i}`,
1081
- title: `Title ${i}`
1082
- },
1083
- version: "2024-01-01T10:00:00",
1084
- affected: []
1085
- };
1086
- });
1087
- var promises = mutations.map(function (m) {
1088
- return mutationEngine.mutate(m);
1089
- });
1090
- await vi.advanceTimersByTimeAsync(100);
1091
- await Promise.all(promises);
1092
- expect(mockDb.batchMutations).toHaveBeenCalledTimes(1);
1093
- expect(mockDb.batchMutations).toHaveBeenCalledWith(expect.objectContaining({
1094
- mutations: expect.arrayContaining([expect.objectContaining({
1095
- type: "update",
1096
- doctype: "TestDoc",
1097
- name: "test-doc-1"
1098
- }), expect.objectContaining({
1099
- type: "update",
1100
- doctype: "TestDoc",
1101
- name: "test-doc-2"
1102
- }), expect.objectContaining({
1103
- type: "update",
1104
- doctype: "TestDoc",
1105
- name: "test-doc-3"
1106
- })])
1107
- }));
1108
- });
1109
- it("should flush immediately when batchMaxSize is reached and keep remaining pending", async function () {
1110
- mockDb.batchMutations = vi.fn().mockResolvedValueOnce([{
1111
- success: true,
1112
- data: {
1113
- ...mockDoc,
1114
- name: "test-doc-1"
1115
- }
1116
- }, {
1117
- success: true,
1118
- data: {
1119
- ...mockDoc,
1120
- name: "test-doc-2"
1121
- }
1122
- }, {
1123
- success: true,
1124
- data: {
1125
- ...mockDoc,
1126
- name: "test-doc-3"
1127
- }
1128
- }]).mockResolvedValueOnce([{
1129
- success: true,
1130
- data: {
1131
- ...mockDoc,
1132
- name: "test-doc-4"
1133
- }
1134
- }]);
1135
- mutationEngine = new MutationEngine(mockDb, mockRealtime, mockNormalizedCache, mockMutationJournal, mockSubscriptionManager, mockRehydrationManager, {
1136
- enableBatching: true,
1137
- batchDelay: 50,
1138
- batchMaxSize: 3
1139
- });
1140
- mockNormalizedCache.get.mockImplementation(function (ref) {
1141
- return {
1142
- ...mockDoc,
1143
- name: ref.name,
1144
- modified: "2024-01-01T10:00:00"
1145
- };
1146
- });
1147
- var mutations = [1, 2, 3, 4].map(function (i) {
1148
- return {
1149
- mutationId: `batch-${i}`,
1150
- operation: Operation.Update,
1151
- doc: {
1152
- doctype: "TestDoc",
1153
- name: `test-doc-${i}`,
1154
- title: `Title ${i}`
1155
- },
1156
- version: "2024-01-01T10:00:00",
1157
- affected: []
1158
- };
1159
- });
1160
- var promises = mutations.map(function (m) {
1161
- return mutationEngine.mutate(m);
1162
- });
1163
- await vi.advanceTimersByTimeAsync(100);
1164
- await Promise.all(promises);
1165
- expect(mockDb.batchMutations).toHaveBeenCalledTimes(2);
1166
- expect(mockDb.batchMutations.mock.calls[0][0].mutations).toHaveLength(3);
1167
- expect(mockDb.batchMutations.mock.calls[1][0].mutations).toHaveLength(1);
1168
- });
1169
- });
1170
- });
1171
- //# sourceMappingURL=mutationEngine.spec.native.js.map