@multiplatform.one/frappe 7.10.0 → 7.11.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 (71) hide show
  1. package/README.md +58 -0
  2. package/dist/cjs/frappeReact.cjs +54 -30
  3. package/dist/cjs/frappeReact.native.js +67 -32
  4. package/dist/cjs/frappeReact.native.js.map +1 -1
  5. package/dist/cjs/index.cjs +1 -0
  6. package/dist/cjs/index.native.js +1 -0
  7. package/dist/cjs/index.native.js.map +1 -1
  8. package/dist/cjs/sync/index.cjs +91 -14
  9. package/dist/cjs/sync/index.native.js +119 -14
  10. package/dist/cjs/sync/index.native.js.map +1 -1
  11. package/dist/cjs/sync/types.native.js.map +1 -1
  12. package/dist/cjs/syncOptionsKey.cjs +59 -0
  13. package/dist/cjs/syncOptionsKey.native.js +82 -0
  14. package/dist/cjs/syncOptionsKey.native.js.map +1 -0
  15. package/dist/esm/frappeReact.mjs +55 -32
  16. package/dist/esm/frappeReact.mjs.map +1 -1
  17. package/dist/esm/frappeReact.native.js +68 -34
  18. package/dist/esm/frappeReact.native.js.map +1 -1
  19. package/dist/esm/index.mjs +2 -2
  20. package/dist/esm/index.mjs.map +1 -1
  21. package/dist/esm/index.native.js +2 -2
  22. package/dist/esm/index.native.js.map +1 -1
  23. package/dist/esm/sync/index.mjs +91 -14
  24. package/dist/esm/sync/index.mjs.map +1 -1
  25. package/dist/esm/sync/index.native.js +119 -14
  26. package/dist/esm/sync/index.native.js.map +1 -1
  27. package/dist/esm/sync/types.mjs.map +1 -1
  28. package/dist/esm/sync/types.native.js.map +1 -1
  29. package/dist/esm/syncOptionsKey.mjs +34 -0
  30. package/dist/esm/syncOptionsKey.mjs.map +1 -0
  31. package/dist/esm/syncOptionsKey.native.js +54 -0
  32. package/dist/esm/syncOptionsKey.native.js.map +1 -0
  33. package/dist/jsx/frappeReact.mjs +55 -32
  34. package/dist/jsx/frappeReact.mjs.map +1 -1
  35. package/dist/jsx/frappeReact.native.js +67 -32
  36. package/dist/jsx/frappeReact.native.js.map +1 -1
  37. package/dist/jsx/index.js +2 -2
  38. package/dist/jsx/index.js.map +1 -1
  39. package/dist/jsx/index.mjs +2 -2
  40. package/dist/jsx/index.mjs.map +1 -1
  41. package/dist/jsx/index.native.js +1 -0
  42. package/dist/jsx/index.native.js.map +1 -1
  43. package/dist/jsx/sync/index.mjs +91 -14
  44. package/dist/jsx/sync/index.mjs.map +1 -1
  45. package/dist/jsx/sync/index.native.js +119 -14
  46. package/dist/jsx/sync/index.native.js.map +1 -1
  47. package/dist/jsx/sync/types.mjs.map +1 -1
  48. package/dist/jsx/sync/types.native.js.map +1 -1
  49. package/dist/jsx/syncOptionsKey.mjs +34 -0
  50. package/dist/jsx/syncOptionsKey.mjs.map +1 -0
  51. package/dist/jsx/syncOptionsKey.native.js +82 -0
  52. package/dist/jsx/syncOptionsKey.native.js.map +1 -0
  53. package/package.json +9 -9
  54. package/src/frappeReact.catchUp.spec.tsx +105 -0
  55. package/src/frappeReact.ts +62 -38
  56. package/src/index.ts +3 -0
  57. package/src/sync/catchUp.spec.ts +142 -0
  58. package/src/sync/index.ts +97 -9
  59. package/src/sync/types.ts +9 -1
  60. package/src/syncOptionsKey.spec.ts +46 -0
  61. package/src/syncOptionsKey.ts +45 -0
  62. package/types/frappeReact.d.ts +6 -1
  63. package/types/frappeReact.d.ts.map +1 -1
  64. package/types/index.d.ts +3 -3
  65. package/types/index.d.ts.map +1 -1
  66. package/types/sync/index.d.ts +9 -1
  67. package/types/sync/index.d.ts.map +1 -1
  68. package/types/sync/types.d.ts +8 -1
  69. package/types/sync/types.d.ts.map +1 -1
  70. package/types/syncOptionsKey.d.ts +3 -0
  71. package/types/syncOptionsKey.d.ts.map +1 -0
@@ -1,5 +1,5 @@
1
1
  import { isWindowDefined } from "@multiplatform.one/platform";
2
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
3
  import { createFrappeCollection, releaseFrappeCollectionSync } from "./collection.mjs";
4
4
  import { HttpClient } from "./core/http.mjs";
5
5
  import { DbModule } from "./db.mjs";
@@ -7,6 +7,7 @@ import { FixtureDbModule } from "./fixtureDb.mjs";
7
7
  import { RealtimeModule } from "./realtime.mjs";
8
8
  import { SyncModule } from "./sync/index.mjs";
9
9
  import { Status } from "./sync/types.mjs";
10
+ import { syncOptionsKey } from "./syncOptionsKey.mjs";
10
11
  import { isBrowser } from "./util.mjs";
11
12
  const syncModuleCache = /* @__PURE__ */new Map();
12
13
  const fixtureSyncModuleCache = /* @__PURE__ */new WeakMap();
@@ -20,20 +21,25 @@ function getFrappeSyncModule(config) {
20
21
  }
21
22
  function getSyncModule(config) {
22
23
  if (!isBrowser()) return void 0;
24
+ const optionsKey = syncOptionsKey(config.syncOptions);
23
25
  if (config.fixtures) {
24
- let sync2 = fixtureSyncModuleCache.get(config.fixtures);
26
+ let cache = fixtureSyncModuleCache.get(config.fixtures);
27
+ if (!cache) {
28
+ cache = /* @__PURE__ */new Map();
29
+ fixtureSyncModuleCache.set(config.fixtures, cache);
30
+ }
31
+ let sync2 = cache.get(optionsKey);
25
32
  if (!sync2) {
26
33
  const db = new FixtureDbModule(config.fixtures);
27
34
  sync2 = new SyncModule(db, void 0, config.syncOptions);
28
- fixtureSyncModuleCache.set(config.fixtures, sync2);
35
+ cache.set(optionsKey, sync2);
29
36
  }
30
37
  return sync2;
31
38
  }
32
39
  if (!config.baseURL) return void 0;
33
- const key = [config.baseURL, config.realtime === false ? "http" : "realtime", config.socketPort ?? "", config.socketBaseURL ?? "", config.siteName ?? ""].join("|");
40
+ const key = [config.baseURL, config.realtime === false ? "http" : "realtime", config.socketPort ?? "", config.socketBaseURL ?? "", config.siteName ?? "", optionsKey].join("|");
34
41
  let sync = syncModuleCache.get(key);
35
42
  if (!sync) {
36
- console.debug(`[frappe-sync] SyncModule created for ${key} (persistKey=${config.syncOptions?.persistKey ?? "none"}, cdcInterval=${config.syncOptions?.cdcInterval ?? "off"})`);
37
43
  const authConfig = config.auth ? {
38
44
  useToken: config.auth.useToken,
39
45
  token: config.auth.token,
@@ -222,34 +228,48 @@ function useFrappeCollection(config, doctype, options) {
222
228
  }, [entry, stableErrorHandler]);
223
229
  return entry ? entry.collection : void 0;
224
230
  }
231
+ const idleCatchUpState = Object.freeze({
232
+ refreshing: false,
233
+ stale: false,
234
+ error: null
235
+ });
236
+ function useFrappeCatchUp(config) {
237
+ const sync = getFrappeSyncModule(config);
238
+ const subscribe = useCallback(listener => sync?.subscribeStore(listener) ?? (() => {}), [sync]);
239
+ const snapshot = useCallback(() => sync?.getCatchUpState() ?? idleCatchUpState, [sync]);
240
+ const state = useSyncExternalStore(subscribe, snapshot, () => idleCatchUpState);
241
+ const retry = useCallback(() => sync?.catchUp() ?? Promise.resolve(idleCatchUpState), [sync]);
242
+ return useMemo(() => ({
243
+ ...state,
244
+ retry
245
+ }), [state, retry]);
246
+ }
225
247
  const DISCONNECTED_STATE = Object.freeze({
226
248
  connected: false,
227
249
  everConnected: false
228
250
  });
229
251
  function useFrappeConnection(config) {
230
252
  const [state, setState] = useState(DISCONNECTED_STATE);
253
+ const syncModule = config && !config.fixtures && config.realtime !== false ? getSyncModule(config) : void 0;
231
254
  useEffect(() => {
232
- if (!config || config.fixtures || config.realtime === false || !isBrowser()) {
255
+ if (!syncModule) {
233
256
  setState(DISCONNECTED_STATE);
234
257
  return;
235
258
  }
236
- const syncModule = getSyncModule(config);
237
- if (!syncModule) return;
238
259
  const read = () => {
239
260
  const next = syncModule.getConnectionState();
240
261
  setState(prev => prev.connected === next.connected && prev.everConnected === next.everConnected ? prev : next);
241
262
  };
242
263
  read();
243
264
  return syncModule.subscribeStore(read);
244
- }, [config?.baseURL, config?.realtime, !!config?.fixtures]);
265
+ }, [syncModule]);
245
266
  return config?.realtime === false ? DISCONNECTED_STATE : state;
246
267
  }
247
268
  function useFrappeDoctypeEvents(config, doctype, onEvent, enabled = true) {
248
269
  const handlerRef = useRef(onEvent);
249
270
  handlerRef.current = onEvent;
271
+ const syncModule = enabled && config && !config.fixtures && config.realtime !== false && doctype ? getSyncModule(config) : void 0;
250
272
  useEffect(() => {
251
- if (!enabled || !config || config.fixtures || config.realtime === false || !doctype || !isBrowser()) return;
252
- const syncModule = getSyncModule(config);
253
273
  if (!syncModule) return;
254
274
  syncModule.watchDoctype(doctype);
255
275
  const unsubscribe = syncModule.subscribeRealtimeEvents(event => {
@@ -264,21 +284,20 @@ function useFrappeDoctypeEvents(config, doctype, onEvent, enabled = true) {
264
284
  unsubscribe();
265
285
  syncModule.unwatchDoctype(doctype);
266
286
  };
267
- }, [enabled, config?.baseURL, config?.realtime, !!config?.fixtures, doctype]);
287
+ }, [syncModule, doctype]);
268
288
  }
269
289
  const EMPTY_LEDGER = [];
270
290
  function useFrappePendingMutations(config, doctype) {
271
291
  const [entries, setEntries] = useState(EMPTY_LEDGER);
272
292
  const syncModuleRef = useRef(void 0);
293
+ const syncModule = getFrappeSyncModule(config);
273
294
  useEffect(() => {
274
- if (!config || !isBrowser()) {
295
+ if (!syncModule) {
275
296
  setEntries(EMPTY_LEDGER);
276
297
  return;
277
298
  }
278
- const syncModule = getSyncModule(config);
279
- if (!syncModule) return;
280
299
  syncModuleRef.current = syncModule;
281
- let lastSignature = "";
300
+ let lastSignature;
282
301
  const read = () => {
283
302
  const next = syncModule.getMutationEntries(doctype);
284
303
  const signature = next.map(e => `${e.id}:${e.status}:${e.retryCount}`).join("|");
@@ -287,8 +306,12 @@ function useFrappePendingMutations(config, doctype) {
287
306
  setEntries(next.length === 0 ? EMPTY_LEDGER : next);
288
307
  };
289
308
  read();
290
- return syncModule.subscribeStore(read);
291
- }, [config?.baseURL, config?.realtime, !!config?.fixtures, doctype]);
309
+ const unsubscribe = syncModule.subscribeStore(read);
310
+ return () => {
311
+ unsubscribe();
312
+ syncModuleRef.current = void 0;
313
+ };
314
+ }, [syncModule, doctype]);
292
315
  const retry = useCallback(async () => {
293
316
  await syncModuleRef.current?.replayPending();
294
317
  }, []);
@@ -403,9 +426,8 @@ function useFrappeInfiniteList(options) {
403
426
  const subscriptionIdRef = useRef(void 0);
404
427
  const syncModuleRef = useRef(void 0);
405
428
  const filtersKey = JSON.stringify(filters);
429
+ const syncModule = getFrappeSyncModule(config);
406
430
  useEffect(() => {
407
- if (!config || !isBrowser()) return;
408
- const syncModule = getSyncModule(config);
409
431
  if (!syncModule) return;
410
432
  syncModuleRef.current = syncModule;
411
433
  let cancelled = false;
@@ -455,19 +477,20 @@ function useFrappeInfiniteList(options) {
455
477
  syncModule.unsubscribe(subscriptionIdRef.current);
456
478
  subscriptionIdRef.current = void 0;
457
479
  }
480
+ syncModuleRef.current = void 0;
458
481
  };
459
- }, [config?.baseURL, config?.realtime, config?.auth?.token, doctype, filtersKey, pageSize]);
482
+ }, [syncModule, config?.auth?.token, doctype, filtersKey, pageSize]);
460
483
  const loadMore = useCallback(async () => {
461
- const syncModule = syncModuleRef.current;
484
+ const syncModule2 = syncModuleRef.current;
462
485
  const subId = subscriptionIdRef.current;
463
- if (!syncModule || !subId || !hasMore || isLoadingMore) return;
486
+ if (!syncModule2 || !subId || !hasMore || isLoadingMore) return;
464
487
  setIsLoadingMore(true);
465
488
  setError(null);
466
489
  try {
467
- const currentDocs = syncModule.getDocsForSubscription(subId);
490
+ const currentDocs = syncModule2.getDocsForSubscription(subId);
468
491
  const lastDoc = currentDocs[currentDocs.length - 1];
469
492
  if (!lastDoc) return;
470
- await syncModule.getNextBatch(subId, lastDoc.name, pageSize);
493
+ await syncModule2.getNextBatch(subId, lastDoc.name, pageSize);
471
494
  } catch (err) {
472
495
  setError(err instanceof Error ? err : new Error(String(err)));
473
496
  } finally {
@@ -475,16 +498,16 @@ function useFrappeInfiniteList(options) {
475
498
  }
476
499
  }, [hasMore, isLoadingMore, pageSize]);
477
500
  const refresh = useCallback(async () => {
478
- const syncModule = syncModuleRef.current;
479
- if (!syncModule || !subscriptionIdRef.current) return;
480
- syncModule.unsubscribe(subscriptionIdRef.current);
501
+ const syncModule2 = syncModuleRef.current;
502
+ if (!syncModule2 || !subscriptionIdRef.current) return;
503
+ syncModule2.unsubscribe(subscriptionIdRef.current);
481
504
  subscriptionIdRef.current = void 0;
482
505
  setItems([]);
483
506
  setHasMore(true);
484
507
  setIsLoading(true);
485
508
  setError(null);
486
509
  try {
487
- const result = await syncModule.subscribe({
510
+ const result = await syncModule2.subscribe({
488
511
  doctype,
489
512
  fields,
490
513
  filters,
@@ -493,8 +516,8 @@ function useFrappeInfiniteList(options) {
493
516
  progressive: true
494
517
  });
495
518
  subscriptionIdRef.current = result.subscriptionId;
496
- const docs = syncModule.getDocsForSubscription(result.subscriptionId);
497
- const pageInfo = syncModule.getPageInfo(result.subscriptionId);
519
+ const docs = syncModule2.getDocsForSubscription(result.subscriptionId);
520
+ const pageInfo = syncModule2.getPageInfo(result.subscriptionId);
498
521
  setItems(transform ? docs.map(transform) : docs);
499
522
  setHasMore(pageInfo.hasMore);
500
523
  } catch (err) {
@@ -523,5 +546,5 @@ function useFrappeInfiniteList(options) {
523
546
  totalLoaded: items.length
524
547
  };
525
548
  }
526
- export { __getActiveSyncModule, getFrappeSyncModule, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll };
549
+ export { __getActiveSyncModule, getFrappeSyncModule, useFrappeCatchUp, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll };
527
550
  //# sourceMappingURL=frappeReact.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["isWindowDefined","useCallback","useEffect","useMemo","useRef","useState","createFrappeCollection","releaseFrappeCollectionSync","HttpClient","DbModule","FixtureDbModule","RealtimeModule","SyncModule","Status","isBrowser","syncModuleCache","Map","fixtureSyncModuleCache","WeakMap","__getActiveSyncModule","sync","values","getFrappeSyncModule","config","getSyncModule","fixtures","get","db","syncOptions","set","baseURL","key","realtime","socketPort","socketBaseURL","siteName","join","console","debug","persistKey","cdcInterval","authConfig","auth","useToken","token","type","sessionId","http","appName","realtimeConfig","socketOptions","sharedCollectionCaches","SHARED_COLLECTION_GC_MS","SHARED_COLLECTION_GC_FORCE_MS","collectionIsCleanedUp","collection","status","collectionOptionsKey","doctype","options","JSON","stringify","fields","filters","orderBy","String","limit","id","scheduleEntryGc","cache","entry","gcTimer","clearTimeout","setTimeout","refCount","cleaned","subscriberCount","gcForceDeadline","Date","now","delete","Promise","resolve","cleanup","catch","getOrCreateSharedCollection","syncModule","existingCache","created","errorHandlers","Set","hasSyncError","lastSyncError","onSyncError","error","handler","retainSharedCollection","add","releaseSharedCollection","Math","max","cleanupEntryCollectionWhenIdle","deadline","tick","useFrappeCollection","errorHandlerRef","current","stableErrorHandler","setStaleEntryBump","n","retained","retainedCache","retainedKey","unsubscribeStatus","on","event","DISCONNECTED_STATE","Object","freeze","connected","everConnected","useFrappeConnection","state","setState","read","next","getConnectionState","prev","subscribeStore","useFrappeDoctypeEvents","onEvent","enabled","handlerRef","watchDoctype","unsubscribe","subscribeRealtimeEvents","payload","unwatchDoctype","EMPTY_LEDGER","useFrappePendingMutations","entries","setEntries","syncModuleRef","lastSignature","getMutationEntries","signature","map","e","retryCount","length","retry","replayPending","dismiss","dismissMutation","pending","filter","Pending","failed","Failed","useInfiniteScroll","hasMore","isLoading","onLoadMore","root","rootMargin","threshold","debounceMs","isVisible","setIsVisible","isLoadingMore","setIsLoadingMore","observerRef","sentinelNodeRef","debounceTimerRef","lastLoadTimeRef","loadMore","IntersectionObserver","node","disconnect","visible","isIntersecting","observe","sentinelRef","useFrappeInfiniteList","pageSize","transform","items","setItems","setHasMore","setIsLoading","setError","subscriptionIdRef","filtersKey","cancelled","result","subscribe","progressive","subscriptionId","docs","getDocsForSubscription","pageInfo","getPageInfo","err","Error","unsubStore","subId","currentDocs","lastDoc","getNextBatch","name","refresh","_isVisible","totalLoaded"],"sources":["../../src/frappeReact.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isWindowDefined","useCallback","useEffect","useMemo","useRef","useState","useSyncExternalStore","createFrappeCollection","releaseFrappeCollectionSync","HttpClient","DbModule","FixtureDbModule","RealtimeModule","SyncModule","Status","syncOptionsKey","isBrowser","syncModuleCache","Map","fixtureSyncModuleCache","WeakMap","__getActiveSyncModule","sync","values","getFrappeSyncModule","config","getSyncModule","optionsKey","syncOptions","fixtures","cache","get","set","db","baseURL","key","realtime","socketPort","socketBaseURL","siteName","join","authConfig","auth","useToken","token","type","sessionId","http","appName","realtimeConfig","socketOptions","sharedCollectionCaches","SHARED_COLLECTION_GC_MS","SHARED_COLLECTION_GC_FORCE_MS","collectionIsCleanedUp","collection","status","collectionOptionsKey","doctype","options","JSON","stringify","fields","filters","orderBy","String","limit","id","scheduleEntryGc","entry","gcTimer","clearTimeout","setTimeout","refCount","cleaned","subscriberCount","gcForceDeadline","Date","now","delete","Promise","resolve","cleanup","catch","getOrCreateSharedCollection","syncModule","existingCache","created","errorHandlers","Set","hasSyncError","lastSyncError","onSyncError","error","handler","retainSharedCollection","add","releaseSharedCollection","Math","max","cleanupEntryCollectionWhenIdle","deadline","tick","useFrappeCollection","errorHandlerRef","current","stableErrorHandler","setStaleEntryBump","n","retained","retainedCache","retainedKey","unsubscribeStatus","on","event","idleCatchUpState","Object","freeze","refreshing","stale","useFrappeCatchUp","subscribe","listener","subscribeStore","snapshot","getCatchUpState","state","retry","catchUp","DISCONNECTED_STATE","connected","everConnected","useFrappeConnection","setState","read","next","getConnectionState","prev","useFrappeDoctypeEvents","onEvent","enabled","handlerRef","watchDoctype","unsubscribe","subscribeRealtimeEvents","payload","unwatchDoctype","EMPTY_LEDGER","useFrappePendingMutations","entries","setEntries","syncModuleRef","lastSignature","getMutationEntries","signature","map","e","retryCount","length","replayPending","dismiss","dismissMutation","pending","filter","Pending","failed","Failed","useInfiniteScroll","hasMore","isLoading","onLoadMore","root","rootMargin","threshold","debounceMs","isVisible","setIsVisible","isLoadingMore","setIsLoadingMore","observerRef","sentinelNodeRef","debounceTimerRef","lastLoadTimeRef","loadMore","IntersectionObserver","node","disconnect","visible","isIntersecting","observe","sentinelRef","useFrappeInfiniteList","pageSize","transform","items","setItems","setHasMore","setIsLoading","setError","subscriptionIdRef","filtersKey","cancelled","result","progressive","subscriptionId","docs","getDocsForSubscription","pageInfo","getPageInfo","err","Error","unsubStore","subId","currentDocs","lastDoc","getNextBatch","name","refresh","_isVisible","totalLoaded"],"sources":["../../src/frappeReact.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAA,QAAuB;AAEhC,SAASC,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,MAAA,EAAQC,QAAA,EAAUC,oBAAA,QAA4B;AACxF,SACEC,sBAAA,EACAC,2BAAA,QAEK;AACP,SAASC,UAAA,QAAkB;AAE3B,SAASC,QAAA,QAAgB;AACzB,SAASC,eAAA,QAAuB;AAChC,SAASC,cAAA,QAAsB;AAC/B,SAASC,UAAA,QAAkB;AAC3B,SAASC,MAAA,QAAc;AAEvB,SAASC,cAAA,QAAsB;AAC/B,SAASC,SAAA,QAAiB;AAuD1B,MAAMC,eAAA,GAAkB,mBAAIC,GAAA,CAAwB;AAGpD,MAAMC,sBAAA,GAAyB,mBAAIC,OAAA,CAGjC;AAMK,SAASC,sBAAA,EAAgD;EAC9D,WAAWC,IAAA,IAAQL,eAAA,CAAgBM,MAAA,CAAO,GAAG,OAAOD,IAAA;EACpD,OAAO;AACT;AASO,SAASE,oBACdC,MAAA,EACwB;EACxB,IAAI,CAACA,MAAA,EAAQ,OAAO;EACpB,OAAOC,aAAA,CAAcD,MAAM;AAC7B;AAkBA,SAASC,cAAcD,MAAA,EAA2D;EAChF,IAAI,CAACT,SAAA,CAAU,GAAG,OAAO;EACzB,MAAMW,UAAA,GAAaZ,cAAA,CAAeU,MAAA,CAAOG,WAAW;EAEpD,IAAIH,MAAA,CAAOI,QAAA,EAAU;IACnB,IAAIC,KAAA,GAAQX,sBAAA,CAAuBY,GAAA,CAAIN,MAAA,CAAOI,QAAQ;IACtD,IAAI,CAACC,KAAA,EAAO;MACVA,KAAA,GAAQ,mBAAIZ,GAAA,CAAI;MAChBC,sBAAA,CAAuBa,GAAA,CAAIP,MAAA,CAAOI,QAAA,EAAUC,KAAK;IACnD;IACA,IAAIR,KAAA,GAAOQ,KAAA,CAAMC,GAAA,CAAIJ,UAAU;IAC/B,IAAI,CAACL,KAAA,EAAM;MACT,MAAMW,EAAA,GAAK,IAAItB,eAAA,CAAgBc,MAAA,CAAOI,QAAQ;MAC9CP,KAAA,GAAO,IAAIT,UAAA,CAAWoB,EAAA,EAAI,QAAWR,MAAA,CAAOG,WAAW;MACvDE,KAAA,CAAME,GAAA,CAAIL,UAAA,EAAYL,KAAI;IAC5B;IACA,OAAOA,KAAA;EACT;EAKA,IAAI,CAACG,MAAA,CAAOS,OAAA,EAAS,OAAO;EAQ5B,MAAMC,GAAA,GAAM,CACVV,MAAA,CAAOS,OAAA,EACPT,MAAA,CAAOW,QAAA,KAAa,QAAQ,SAAS,YACrCX,MAAA,CAAOY,UAAA,IAAc,IACrBZ,MAAA,CAAOa,aAAA,IAAiB,IACxBb,MAAA,CAAOc,QAAA,IAAY,IACnBZ,UAAA,CACF,CAAEa,IAAA,CAAK,GAAG;EACV,IAAIlB,IAAA,GAAOL,eAAA,CAAgBc,GAAA,CAAII,GAAG;EAClC,IAAI,CAACb,IAAA,EAAM;IACT,MAAMmB,UAAA,GAAqChB,MAAA,CAAOiB,IAAA,GAC9C;MACEC,QAAA,EAAUlB,MAAA,CAAOiB,IAAA,CAAKC,QAAA;MACtBC,KAAA,EAAOnB,MAAA,CAAOiB,IAAA,CAAKE,KAAA;MACnBC,IAAA,EAAMpB,MAAA,CAAOiB,IAAA,CAAKG,IAAA;MAClBC,SAAA,EAAWrB,MAAA,CAAOiB,IAAA,CAAKI;IACzB,IACA;IACJ,MAAMC,IAAA,GAAO,IAAItC,UAAA,CAAWgB,MAAA,CAAOS,OAAA,EAASO,UAAU;IACtD,MAAMR,EAAA,GAAK,IAAIvB,QAAA,CAASqC,IAAA,EAAM;MAAEC,OAAA,EAAS;IAAY,CAAC;IACtD,MAAMC,cAAA,GAAiB;MACrBf,OAAA,EAAST,MAAA,CAAOS,OAAA;MAChBG,UAAA,EAAYZ,MAAA,CAAOY,UAAA;MACnBC,aAAA,EAAeb,MAAA,CAAOa,aAAA;MAAA;MAAA;MAAA;MAAA;MAKtBC,QAAA,EAAUd,MAAA,CAAOc,QAAA;MACjBG,IAAA,EAAMD,UAAA;MACNS,aAAA,EAAezB,MAAA,CAAOyB;IACxB;IACA5B,IAAA,GAAO,IAAIT,UAAA,CACToB,EAAA,EACAR,MAAA,CAAOW,QAAA,KAAa,QAAQ,SAAY,IAAIxB,cAAA,CAAeqC,cAAc,GACzExB,MAAA,CAAOG,WACT;IACAX,eAAA,CAAgBe,GAAA,CAAIG,GAAA,EAAKb,IAAI;EAC/B;EACA,OAAOA,IAAA;AACT;AAiDA,MAAM6B,sBAAA,GAAyB,mBAAI/B,OAAA,CAAwD;AAI3F,MAAMgC,uBAAA,GAA0B;AAUhC,MAAMC,6BAAA,GAAgC;AAMtC,SAASC,sBAAsBC,UAAA,EAA8C;EAC3E,OAAQA,UAAA,CAAmCC,MAAA,KAAW;AACxD;AAGA,SAASC,qBACPC,OAAA,EACAC,OAAA,EACQ;EACR,OAAO,CACLD,OAAA,EACAE,IAAA,CAAKC,SAAA,CAAUF,OAAA,EAASG,MAAM,GAC9BF,IAAA,CAAKC,SAAA,CAAUF,OAAA,EAASI,OAAO,GAC/BH,IAAA,CAAKC,SAAA,CAAUF,OAAA,EAASK,OAAO,GAC/BC,MAAA,CAAON,OAAA,EAASO,KAAK,GACrBD,MAAA,CAAON,OAAA,EAASQ,EAAE,EACpB,CAAE3B,IAAA,CAAK,GAAG;AACZ;AAEA,SAAS4B,gBACPtC,KAAA,EACAK,GAAA,EACAkC,KAAA,EACM;EACN,IAAIA,KAAA,CAAMC,OAAA,EAASC,YAAA,CAAaF,KAAA,CAAMC,OAAO;EAC7CD,KAAA,CAAMC,OAAA,GAAUE,UAAA,CAAW,MAAM;IAC/BH,KAAA,CAAMC,OAAA,GAAU;IAChB,IAAID,KAAA,CAAMI,QAAA,GAAW,KAAKJ,KAAA,CAAMK,OAAA,EAAS;IAUzC,MAAMC,eAAA,GAAmBN,KAAA,CAAMd,UAAA,CAA4CoB,eAAA,IAAmB;IAC9F,IAAIA,eAAA,GAAkB,GAAG;MACvBN,KAAA,CAAMO,eAAA,KAAoBC,IAAA,CAAKC,GAAA,CAAI,IAAIzB,6BAAA;MACvC,IAAIwB,IAAA,CAAKC,GAAA,CAAI,IAAIT,KAAA,CAAMO,eAAA,EAAiB;QACtCR,eAAA,CAAgBtC,KAAA,EAAOK,GAAA,EAAKkC,KAAK;QACjC;MACF;MAYAA,KAAA,CAAMK,OAAA,GAAU;MAChBL,KAAA,CAAMO,eAAA,GAAkB;MACxB,IAAI9C,KAAA,CAAMC,GAAA,CAAII,GAAG,MAAMkC,KAAA,EAAOvC,KAAA,CAAMiD,MAAA,CAAO5C,GAAG;MAC9C,IAAI3B,2BAAA,CAA4B6D,KAAA,CAAMd,UAAU,GAAG;IAGrD;IACAc,KAAA,CAAMK,OAAA,GAAU;IAChBL,KAAA,CAAMO,eAAA,GAAkB;IACxB,IAAI9C,KAAA,CAAMC,GAAA,CAAII,GAAG,MAAMkC,KAAA,EAAOvC,KAAA,CAAMiD,MAAA,CAAO5C,GAAG;IAK9C6C,OAAA,CAAQC,OAAA,CAAQZ,KAAA,CAAMd,UAAA,CAAW2B,OAAA,GAAU,CAAC,EAAEC,KAAA,CAAM,MAAM,CAAC,CAAC;EAC9D,GAAG/B,uBAAuB;AAC5B;AAEA,SAASgC,4BACPC,UAAA,EACA3B,OAAA,EACAC,OAAA,EACAxB,GAAA,EAC6E;EAC7E,IAAImD,aAAA,GAAgBnC,sBAAA,CAAuBpB,GAAA,CAAIsD,UAAU;EACzD,IAAI,CAACC,aAAA,EAAe;IAClBA,aAAA,GAAgB,mBAAIpE,GAAA,CAAI;IACxBiC,sBAAA,CAAuBnB,GAAA,CAAIqD,UAAA,EAAYC,aAAa;EACtD;EACA,MAAMxD,KAAA,GAAQwD,aAAA;EACd,IAAIjB,KAAA,GAAQvC,KAAA,CAAMC,GAAA,CAAII,GAAG;EAIzB,IAAIkC,KAAA,IAAS,CAACA,KAAA,CAAMK,OAAA,IAAWpB,qBAAA,CAAsBe,KAAA,CAAMd,UAAU,GAAG;IACtEc,KAAA,CAAMK,OAAA,GAAU;IAChB,IAAIL,KAAA,CAAMC,OAAA,EAAS;MACjBC,YAAA,CAAaF,KAAA,CAAMC,OAAO;MAC1BD,KAAA,CAAMC,OAAA,GAAU;IAClB;EACF;EACA,IAAI,CAACD,KAAA,IAASA,KAAA,CAAMK,OAAA,EAAS;IAC3B,MAAMa,OAAA,GAAiC;MACrChC,UAAA,EAAY;MACZkB,QAAA,EAAU;MACVH,OAAA,EAAS;MACTM,eAAA,EAAiB;MACjBY,aAAA,EAAe,mBAAIC,GAAA,CAAI;MACvBC,YAAA,EAAc;MACdC,aAAA,EAAe;MACfjB,OAAA,EAAS;IACX;IACAa,OAAA,CAAQhC,UAAA,GAAahD,sBAAA,CAA6BmD,OAAA,EAAS;MACzD,GAAGC,OAAA;MACHrC,IAAA,EAAM+D,UAAA;MACNO,WAAA,EAAcC,KAAA,IAAU;QACtBN,OAAA,CAAQG,YAAA,GAAe;QACvBH,OAAA,CAAQI,aAAA,GAAgBE,KAAA;QAUxB,WAAWC,OAAA,IAAWP,OAAA,CAAQC,aAAA,EAAeM,OAAA,CAAQD,KAAK;MAC5D;IACF,CAAC;IACD/D,KAAA,CAAME,GAAA,CAAIG,GAAA,EAAKoD,OAAO;IAGtBnB,eAAA,CAAgBtC,KAAA,EAAOK,GAAA,EAAKoD,OAAO;IACnClB,KAAA,GAAQkB,OAAA;EACV;EACA,OAAO;IAAEzD,KAAA;IAAOuC;EAAM;AACxB;AAEA,SAAS0B,uBACP1B,KAAA,EACAuB,WAAA,EACM;EACNvB,KAAA,CAAMI,QAAA;EACN,IAAIJ,KAAA,CAAMC,OAAA,EAAS;IACjBC,YAAA,CAAaF,KAAA,CAAMC,OAAO;IAC1BD,KAAA,CAAMC,OAAA,GAAU;EAClB;EACAD,KAAA,CAAMO,eAAA,GAAkB;EACxBP,KAAA,CAAMmB,aAAA,CAAcQ,GAAA,CAAIJ,WAAW;EACnC,IAAIvB,KAAA,CAAMqB,YAAA,EAAcE,WAAA,CAAYvB,KAAA,CAAMsB,aAAa;AACzD;AAEA,SAASM,wBACPnE,KAAA,EACAK,GAAA,EACAkC,KAAA,EACAuB,WAAA,EACM;EACNvB,KAAA,CAAMmB,aAAA,CAAcT,MAAA,CAAOa,WAAW;EACtCvB,KAAA,CAAMI,QAAA,GAAWyB,IAAA,CAAKC,GAAA,CAAI,GAAG9B,KAAA,CAAMI,QAAA,GAAW,CAAC;EAC/C,IAAIJ,KAAA,CAAMI,QAAA,GAAW,KAAKJ,KAAA,CAAMK,OAAA,EAAS;EACzC,IAAIL,KAAA,CAAMqB,YAAA,EAAc;IAUtBrB,KAAA,CAAMK,OAAA,GAAU;IAChB,IAAIL,KAAA,CAAMC,OAAA,EAAS;MACjBC,YAAA,CAAaF,KAAA,CAAMC,OAAO;MAC1BD,KAAA,CAAMC,OAAA,GAAU;IAClB;IACAD,KAAA,CAAMO,eAAA,GAAkB;IACxB,IAAI9C,KAAA,CAAMC,GAAA,CAAII,GAAG,MAAMkC,KAAA,EAAOvC,KAAA,CAAMiD,MAAA,CAAO5C,GAAG;IAC9CiE,8BAAA,CAA+B/B,KAAK;IACpC;EACF;EACAD,eAAA,CAAgBtC,KAAA,EAAOK,GAAA,EAAKkC,KAAK;AACnC;AAUA,SAAS+B,+BAA+B/B,KAAA,EAAoC;EAC1E,MAAMgC,QAAA,GAAWxB,IAAA,CAAKC,GAAA,CAAI,IAAIzB,6BAAA;EAC9B,MAAMiD,IAAA,GAAOA,CAAA,KAAM;IACjBjC,KAAA,CAAMC,OAAA,GAAU;IAChB,MAAMK,eAAA,GAAmBN,KAAA,CAAMd,UAAA,CAA4CoB,eAAA,IAAmB;IAC9F,IAAIA,eAAA,GAAkB,GAAG;MACvB,IAAIE,IAAA,CAAKC,GAAA,CAAI,IAAIuB,QAAA,EAAU;QACzBhC,KAAA,CAAMC,OAAA,GAAUE,UAAA,CAAW8B,IAAA,EAAMlD,uBAAuB;QACxD;MACF;MAKA,IAAI5C,2BAAA,CAA4B6D,KAAA,CAAMd,UAAU,GAAG;IACrD;IACAyB,OAAA,CAAQC,OAAA,CAAQZ,KAAA,CAAMd,UAAA,CAAW2B,OAAA,GAAU,CAAC,EAAEC,KAAA,CAAM,MAAM,CAAC,CAAC;EAC9D;EACAd,KAAA,CAAMC,OAAA,GAAUE,UAAA,CAAW8B,IAAA,EAAMlD,uBAAuB;AAC1D;AA+CO,SAASmD,oBACd9E,MAAA,EACAiC,OAAA,EACAC,OAAA,EACsC;EAGtC,MAAM6C,eAAA,GAAkBpG,MAAA,CAAOuD,OAAA,EAASiC,WAAW;EACnDY,eAAA,CAAgBC,OAAA,GAAU9C,OAAA,EAASiC,WAAA;EACnC,MAAMc,kBAAA,GAAqBzG,WAAA,CAAa4F,KAAA,IAAmB;IACzDW,eAAA,CAAgBC,OAAA,GAAUZ,KAAK;EACjC,GAAG,EAAE;EAEL,MAAM,GAAGc,iBAAiB,IAAItG,QAAA,CAAS,CAAC;EASxC,IAAIyB,KAAA;EACJ,IAAIK,GAAA,GAAM;EACV,IAAIkC,KAAA;EACJ,IAAI5C,MAAA,IAAUiC,OAAA,EAAS;IACrB,MAAM2B,UAAA,GAAa3D,aAAA,CAAcD,MAAM;IACvC,IAAI4D,UAAA,EAAY;MACdlD,GAAA,GAAMsB,oBAAA,CAAqBC,OAAA,EAASC,OAAO;MAC3C,CAAC;QAAE7B,KAAA;QAAOuC;MAAM,IAAIe,2BAAA,CAAkCC,UAAA,EAAY3B,OAAA,EAASC,OAAA,EAASxB,GAAG;IACzF;EACF;EAEAjC,SAAA,CAAU,MAAM;IACd,IAAI,CAACmE,KAAA,IAAS,CAACvC,KAAA,EAAO;IACtB,IAAIuC,KAAA,CAAMK,OAAA,IAAWpB,qBAAA,CAAsBe,KAAA,CAAMd,UAAU,GAAG;MAG5DoD,iBAAA,CAAmBC,CAAA,IAAMA,CAAA,GAAI,CAAC;MAC9B;IACF;IACA,MAAMC,QAAA,GAAWxC,KAAA;IACjB,MAAMyC,aAAA,GAAgBhF,KAAA;IACtB,MAAMiF,WAAA,GAAc5E,GAAA;IACpB4D,sBAAA,CAAuBc,QAAA,EAAUH,kBAAkB;IAMnD,MAAMM,iBAAA,GACJH,QAAA,CAAStD,UAAA,CAGT0D,EAAA,GAAK,iBAAkBC,KAAA,IAAU;MACjC,IAAIA,KAAA,EAAO1D,MAAA,KAAW,gBAAgBqD,QAAA,CAASnC,OAAA,EAAS;MACxDmC,QAAA,CAASnC,OAAA,GAAU;MACnBiC,iBAAA,CAAmBC,CAAA,IAAMA,CAAA,GAAI,CAAC;IAChC,CAAC;IACD,OAAO,MAAM;MACXI,iBAAA,GAAoB;MACpBf,uBAAA,CAAwBa,aAAA,EAAeC,WAAA,EAAaF,QAAA,EAAUH,kBAAkB;IAClF;EAEF,GAAG,CAACrC,KAAA,EAAOqC,kBAAkB,CAAC;EAE9B,OAAOrC,KAAA,GAASA,KAAA,CAAMd,UAAA,GAA0C;AAClE;AAUA,MAAM4D,gBAAA,GAAqCC,MAAA,CAAOC,MAAA,CAAO;EACvDC,UAAA,EAAY;EACZC,KAAA,EAAO;EACP1B,KAAA,EAAO;AACT,CAAC;AAGM,SAAS2B,iBACd/F,MAAA,EACwB;EACxB,MAAMH,IAAA,GAAOE,mBAAA,CAAoBC,MAAM;EACvC,MAAMgG,SAAA,GAAYxH,WAAA,CACfyH,QAAA,IAAyBpG,IAAA,EAAMqG,cAAA,CAAeD,QAAQ,MAAM,MAAM,CAAC,IACpE,CAACpG,IAAI,CACP;EACA,MAAMsG,QAAA,GAAW3H,WAAA,CAAY,MAAMqB,IAAA,EAAMuG,eAAA,CAAgB,KAAKV,gBAAA,EAAkB,CAAC7F,IAAI,CAAC;EACtF,MAAMwG,KAAA,GAAQxH,oBAAA,CAAqBmH,SAAA,EAAWG,QAAA,EAAU,MAAMT,gBAAgB;EAC9E,MAAMY,KAAA,GAAQ9H,WAAA,CAAY,MAAMqB,IAAA,EAAM0G,OAAA,CAAQ,KAAKhD,OAAA,CAAQC,OAAA,CAAQkC,gBAAgB,GAAG,CAAC7F,IAAI,CAAC;EAC5F,OAAOnB,OAAA,CAAQ,OAAO;IAAE,GAAG2H,KAAA;IAAOC;EAAM,IAAI,CAACD,KAAA,EAAOC,KAAK,CAAC;AAC5D;AAUA,MAAME,kBAAA,GAA4Cb,MAAA,CAAOC,MAAA,CAAO;EAC9Da,SAAA,EAAW;EACXC,aAAA,EAAe;AACjB,CAAC;AAUM,SAASC,oBACd3G,MAAA,EACuB;EACvB,MAAM,CAACqG,KAAA,EAAOO,QAAQ,IAAIhI,QAAA,CAAgC4H,kBAAkB;EAC5E,MAAM5C,UAAA,GACJ5D,MAAA,IAAU,CAACA,MAAA,CAAOI,QAAA,IAAYJ,MAAA,CAAOW,QAAA,KAAa,QAAQV,aAAA,CAAcD,MAAM,IAAI;EAEpFvB,SAAA,CAAU,MAAM;IACd,IAAI,CAACmF,UAAA,EAAY;MACfgD,QAAA,CAASJ,kBAAkB;MAC3B;IACF;IAEA,MAAMK,IAAA,GAAOA,CAAA,KAAM;MACjB,MAAMC,IAAA,GAAOlD,UAAA,CAAWmD,kBAAA,CAAmB;MAC3CH,QAAA,CAAUI,IAAA,IACRA,IAAA,CAAKP,SAAA,KAAcK,IAAA,CAAKL,SAAA,IAAaO,IAAA,CAAKN,aAAA,KAAkBI,IAAA,CAAKJ,aAAA,GAC7DM,IAAA,GACAF,IACN;IACF;IACAD,IAAA,CAAK;IACL,OAAOjD,UAAA,CAAWsC,cAAA,CAAeW,IAAI;EAEvC,GAAG,CAACjD,UAAU,CAAC;EAEf,OAAO5D,MAAA,EAAQW,QAAA,KAAa,QAAQ6F,kBAAA,GAAqBH,KAAA;AAC3D;AAUO,SAASY,uBACdjH,MAAA,EACAiC,OAAA,EACAiF,OAAA,EACAC,OAAA,GAAU,MACJ;EACN,MAAMC,UAAA,GAAazI,MAAA,CAAOuI,OAAO;EACjCE,UAAA,CAAWpC,OAAA,GAAUkC,OAAA;EACrB,MAAMtD,UAAA,GACJuD,OAAA,IAAWnH,MAAA,IAAU,CAACA,MAAA,CAAOI,QAAA,IAAYJ,MAAA,CAAOW,QAAA,KAAa,SAASsB,OAAA,GAClEhC,aAAA,CAAcD,MAAM,IACpB;EAENvB,SAAA,CAAU,MAAM;IACd,IAAI,CAACmF,UAAA,EAAY;IAEjBA,UAAA,CAAWyD,YAAA,CAAapF,OAAO;IAC/B,MAAMqF,WAAA,GAAc1D,UAAA,CAAW2D,uBAAA,CAAyB9B,KAAA,IAAU;MAChE,MAAM+B,OAAA,GAAU/B,KAAA,CAAM+B,OAAA;MACtB,IAAIA,OAAA,EAASvF,OAAA,IAAWuF,OAAA,CAAQvF,OAAA,KAAYA,OAAA,EAAS;MACrDmF,UAAA,CAAWpC,OAAA,CAAQ;QAAE5D,IAAA,EAAMqE,KAAA,CAAMrE,IAAA;QAAgBoG,OAAA,EAAS/B,KAAA,CAAM+B;MAAQ,CAAC;IAC3E,CAAC;IAED,OAAO,MAAM;MACXF,WAAA,CAAY;MACZ1D,UAAA,CAAW6D,cAAA,CAAexF,OAAO;IACnC;EAEF,GAAG,CAAC2B,UAAA,EAAY3B,OAAO,CAAC;AAC1B;AAqBA,MAAMyF,YAAA,GAAqC,EAAC;AAYrC,SAASC,0BACd3H,MAAA,EACAiC,OAAA,EACiC;EACjC,MAAM,CAAC2F,OAAA,EAASC,UAAU,IAAIjJ,QAAA,CAA+B8I,YAAY;EACzE,MAAMI,aAAA,GAAgBnJ,MAAA,CAA+B,MAAS;EAC9D,MAAMiF,UAAA,GAAa7D,mBAAA,CAAoBC,MAAM;EAE7CvB,SAAA,CAAU,MAAM;IACd,IAAI,CAACmF,UAAA,EAAY;MACfiE,UAAA,CAAWH,YAAY;MACvB;IACF;IACAI,aAAA,CAAc9C,OAAA,GAAUpB,UAAA;IAExB,IAAImE,aAAA;IACJ,MAAMlB,IAAA,GAAOA,CAAA,KAAM;MACjB,MAAMC,IAAA,GAAOlD,UAAA,CAAWoE,kBAAA,CAAmB/F,OAAO;MAClD,MAAMgG,SAAA,GAAYnB,IAAA,CAAKoB,GAAA,CAAKC,CAAA,IAAM,GAAGA,CAAA,CAAEzF,EAAE,IAAIyF,CAAA,CAAEpG,MAAM,IAAIoG,CAAA,CAAEC,UAAU,EAAE,EAAErH,IAAA,CAAK,GAAG;MACjF,IAAIkH,SAAA,KAAcF,aAAA,EAAe;MACjCA,aAAA,GAAgBE,SAAA;MAChBJ,UAAA,CAAWf,IAAA,CAAKuB,MAAA,KAAW,IAAIX,YAAA,GAAeZ,IAAI;IACpD;IACAD,IAAA,CAAK;IACL,MAAMS,WAAA,GAAc1D,UAAA,CAAWsC,cAAA,CAAeW,IAAI;IAClD,OAAO,MAAM;MACXS,WAAA,CAAY;MACZQ,aAAA,CAAc9C,OAAA,GAAU;IAC1B;EAEF,GAAG,CAACpB,UAAA,EAAY3B,OAAO,CAAC;EAExB,MAAMqE,KAAA,GAAQ9H,WAAA,CAAY,YAAY;IACpC,MAAMsJ,aAAA,CAAc9C,OAAA,EAASsD,aAAA,CAAc;EAC7C,GAAG,EAAE;EAEL,MAAMC,OAAA,GAAU/J,WAAA,CAAakE,EAAA,IAAe;IAC1CoF,aAAA,CAAc9C,OAAA,EAASwD,eAAA,CAAgB9F,EAAE;EAC3C,GAAG,EAAE;EAEL,OAAOhE,OAAA,CAAQ,MAAM;IACnB,MAAM+J,OAAA,GAAUb,OAAA,CAAQc,MAAA,CAAQP,CAAA,IAAMA,CAAA,CAAEpG,MAAA,KAAW1C,MAAA,CAAOsJ,OAAO;IACjE,MAAMC,MAAA,GAAShB,OAAA,CAAQc,MAAA,CAAQP,CAAA,IAAMA,CAAA,CAAEpG,MAAA,KAAW1C,MAAA,CAAOwJ,MAAM;IAC/D,OAAO;MAAEjB,OAAA;MAASa,OAAA;MAASG,MAAA;MAAQtC,KAAA;MAAOiC;IAAQ;EACpD,GAAG,CAACX,OAAA,EAAStB,KAAA,EAAOiC,OAAO,CAAC;AAC9B;AAyEO,SAASO,kBAAkB9I,MAAA,EAA0D;EAC1F,MAAM;IACJ+I,OAAA;IACAC,SAAA;IACAC,UAAA;IACAC,IAAA,GAAO;IACPC,UAAA,GAAa;IACbC,SAAA,GAAY;IACZC,UAAA,GAAa;IACblC,OAAA,GAAU;EACZ,IAAInH,MAAA;EAEJ,MAAM,CAACsJ,SAAA,EAAWC,YAAY,IAAI3K,QAAA,CAAS,KAAK;EAChD,MAAM,CAAC4K,aAAA,EAAeC,gBAAgB,IAAI7K,QAAA,CAAS,KAAK;EACxD,MAAM8K,WAAA,GAAc/K,MAAA,CAAoC,IAAI;EAC5D,MAAMgL,eAAA,GAAkBhL,MAAA,CAAuB,IAAI;EACnD,MAAMiL,gBAAA,GAAmBjL,MAAA,CAA6C,IAAI;EAC1E,MAAMkL,eAAA,GAAkBlL,MAAA,CAAe,CAAC;EAGxC,MAAMmL,QAAA,GAAWtL,WAAA,CAAY,YAAY;IACvC,IAAI,CAACuK,OAAA,IAAWC,SAAA,IAAaQ,aAAA,EAAe;IAG5C,MAAMnG,GAAA,GAAMD,IAAA,CAAKC,GAAA,CAAI;IACrB,IAAIA,GAAA,GAAMwG,eAAA,CAAgB7E,OAAA,GAAUqE,UAAA,EAAY;IAChDQ,eAAA,CAAgB7E,OAAA,GAAU3B,GAAA;IAE1BoG,gBAAA,CAAiB,IAAI;IACrB,IAAI;MACF,MAAMR,UAAA,CAAW;IACnB,UAAE;MACAQ,gBAAA,CAAiB,KAAK;IACxB;EACF,GAAG,CAACV,OAAA,EAASC,SAAA,EAAWQ,aAAA,EAAeP,UAAA,EAAYI,UAAU,CAAC;EAM9D5K,SAAA,CAAU,MAAM;IACd,IAAI,CAACF,eAAA,IAAmB,OAAOwL,oBAAA,KAAyB,eAAe,CAAC5C,OAAA,EAAS;IAEjF,MAAM6C,IAAA,GAAOL,eAAA,CAAgB3E,OAAA;IAC7B,IAAI,CAACgF,IAAA,EAAM;IAGX,IAAIN,WAAA,CAAY1E,OAAA,EAAS;MACvB0E,WAAA,CAAY1E,OAAA,CAAQiF,UAAA,CAAW;IACjC;IAEAP,WAAA,CAAY1E,OAAA,GAAU,IAAI+E,oBAAA,CACvBnC,OAAA,IAAY;MACX,MAAMhF,KAAA,GAAQgF,OAAA,CAAQ,CAAC;MACvB,MAAMsC,OAAA,GAAUtH,KAAA,EAAOuH,cAAA,IAAkB;MACzCZ,YAAA,CAAaW,OAAO;MAEpB,IAAIA,OAAA,IAAWnB,OAAA,IAAW,CAACC,SAAA,IAAa,CAACQ,aAAA,EAAe;QAEtD,IAAII,gBAAA,CAAiB5E,OAAA,EAAS;UAC5BlC,YAAA,CAAa8G,gBAAA,CAAiB5E,OAAO;QACvC;QAEA4E,gBAAA,CAAiB5E,OAAA,GAAUjC,UAAA,CAAW,MAAM;UAC1C+G,QAAA,CAAS;QACX,GAAGT,UAAU;MACf;IACF,GACA;MACEH,IAAA;MACAC,UAAA;MACAC;IACF,CACF;IAEAM,WAAA,CAAY1E,OAAA,CAAQoF,OAAA,CAAQJ,IAAI;IAEhC,OAAO,MAAM;MACX,IAAIN,WAAA,CAAY1E,OAAA,EAAS;QACvB0E,WAAA,CAAY1E,OAAA,CAAQiF,UAAA,CAAW;QAC/BP,WAAA,CAAY1E,OAAA,GAAU;MACxB;MACA,IAAI4E,gBAAA,CAAiB5E,OAAA,EAAS;QAC5BlC,YAAA,CAAa8G,gBAAA,CAAiB5E,OAAO;QACrC4E,gBAAA,CAAiB5E,OAAA,GAAU;MAC7B;IACF;EACF,GAAG,CACDmC,OAAA,EACA+B,IAAA,EACAC,UAAA,EACAC,SAAA,EACAL,OAAA,EACAC,SAAA,EACAQ,aAAA,EACAM,QAAA,EACAT,UAAA,CACD;EAGD,MAAMgB,WAAA,GAAc7L,WAAA,CAAawL,IAAA,IAAyB;IACxDL,eAAA,CAAgB3E,OAAA,GAAUgF,IAAA;IAG1B,IAAIN,WAAA,CAAY1E,OAAA,IAAWgF,IAAA,EAAM;MAC/BN,WAAA,CAAY1E,OAAA,CAAQiF,UAAA,CAAW;MAC/BP,WAAA,CAAY1E,OAAA,CAAQoF,OAAA,CAAQJ,IAAI;IAClC;EACF,GAAG,EAAE;EAEL,OAAO;IACLK,WAAA;IACAf,SAAA;IACAE;EACF;AACF;AAuFO,SAASc,sBACdpI,OAAA,EACmC;EACnC,MAAM;IAAElC,MAAA;IAAQiC,OAAA;IAASI,MAAA;IAAQC,OAAA;IAASC,OAAA;IAASgI,QAAA,GAAW;IAAIC;EAAU,IAAItI,OAAA;EAEhF,MAAM,CAACuI,KAAA,EAAOC,QAAQ,IAAI9L,QAAA,CAAiB,EAAE;EAC7C,MAAM,CAACmK,OAAA,EAAS4B,UAAU,IAAI/L,QAAA,CAAS,IAAI;EAC3C,MAAM,CAACoK,SAAA,EAAW4B,YAAY,IAAIhM,QAAA,CAAS,IAAI;EAC/C,MAAM,CAAC4K,aAAA,EAAeC,gBAAgB,IAAI7K,QAAA,CAAS,KAAK;EACxD,MAAM,CAACwF,KAAA,EAAOyG,QAAQ,IAAIjM,QAAA,CAAuB,IAAI;EAErD,MAAMkM,iBAAA,GAAoBnM,MAAA,CAA2B,MAAS;EAC9D,MAAMmJ,aAAA,GAAgBnJ,MAAA,CAA+B,MAAS;EAG9D,MAAMoM,UAAA,GAAa5I,IAAA,CAAKC,SAAA,CAAUE,OAAO;EACzC,MAAMsB,UAAA,GAAa7D,mBAAA,CAAoBC,MAAM;EAG7CvB,SAAA,CAAU,MAAM;IACd,IAAI,CAACmF,UAAA,EAAY;IACjBkE,aAAA,CAAc9C,OAAA,GAAUpB,UAAA;IAExB,IAAIoH,SAAA,GAAY;IAChBJ,YAAA,CAAa,IAAI;IACjBC,QAAA,CAAS,IAAI;IAEb,CAAC,YAAY;MACX,IAAI;QACF,MAAMI,MAAA,GAAS,MAAMrH,UAAA,CAAWoC,SAAA,CAAU;UACxC/D,OAAA;UACAI,MAAA;UACAC,OAAA;UACAC,OAAA;UACAE,KAAA,EAAO8H,QAAA;UACPW,WAAA,EAAa;QACf,CAAC;QACD,IAAIF,SAAA,EAAW;UACbpH,UAAA,CAAW0D,WAAA,CAAY2D,MAAA,CAAOE,cAAc;UAC5C;QACF;QACAL,iBAAA,CAAkB9F,OAAA,GAAUiG,MAAA,CAAOE,cAAA;QAEnC,MAAMC,IAAA,GAAOxH,UAAA,CAAWyH,sBAAA,CAA6BJ,MAAA,CAAOE,cAAc;QAC1E,MAAMG,QAAA,GAAW1H,UAAA,CAAW2H,WAAA,CAAYN,MAAA,CAAOE,cAAc;QAC7DT,QAAA,CAASF,SAAA,GAAYY,IAAA,CAAKlD,GAAA,CAAIsC,SAAS,IAAIY,IAAI;QAC/CT,UAAA,CAAWW,QAAA,CAASvC,OAAO;MAC7B,SAASyC,GAAA,EAAK;QACZ,IAAI,CAACR,SAAA,EAAW;UACdH,QAAA,CAASW,GAAA,YAAeC,KAAA,GAAQD,GAAA,GAAM,IAAIC,KAAA,CAAMjJ,MAAA,CAAOgJ,GAAG,CAAC,CAAC;UAC5Dd,QAAA,CAAS,EAAE;UACXC,UAAA,CAAW,KAAK;QAClB;MACF,UAAE;QACA,IAAI,CAACK,SAAA,EAAWJ,YAAA,CAAa,KAAK;MACpC;IACF,GAAG;IAGH,MAAMc,UAAA,GAAa9H,UAAA,CAAWsC,cAAA,CAAe,MAAM;MACjD,MAAMyF,KAAA,GAAQb,iBAAA,CAAkB9F,OAAA;MAChC,IAAI,CAAC2G,KAAA,EAAO;MACZ,MAAMP,IAAA,GAAOxH,UAAA,CAAWyH,sBAAA,CAA6BM,KAAK;MAC1D,MAAML,QAAA,GAAW1H,UAAA,CAAW2H,WAAA,CAAYI,KAAK;MAC7CjB,QAAA,CAASF,SAAA,GAAYY,IAAA,CAAKlD,GAAA,CAAIsC,SAAS,IAAIY,IAAI;MAC/CT,UAAA,CAAWW,QAAA,CAASvC,OAAO;IAC7B,CAAC;IAED,OAAO,MAAM;MACXiC,SAAA,GAAY;MACZU,UAAA,CAAW;MACX,IAAIZ,iBAAA,CAAkB9F,OAAA,EAAS;QAC7BpB,UAAA,CAAW0D,WAAA,CAAYwD,iBAAA,CAAkB9F,OAAO;QAChD8F,iBAAA,CAAkB9F,OAAA,GAAU;MAC9B;MACA8C,aAAA,CAAc9C,OAAA,GAAU;IAC1B;EAEF,GAAG,CAACpB,UAAA,EAAY5D,MAAA,EAAQiB,IAAA,EAAME,KAAA,EAAOc,OAAA,EAAS8I,UAAA,EAAYR,QAAQ,CAAC;EAEnE,MAAMT,QAAA,GAAWtL,WAAA,CAAY,YAAY;IACvC,MAAMoF,WAAA,GAAakE,aAAA,CAAc9C,OAAA;IACjC,MAAM2G,KAAA,GAAQb,iBAAA,CAAkB9F,OAAA;IAChC,IAAI,CAACpB,WAAA,IAAc,CAAC+H,KAAA,IAAS,CAAC5C,OAAA,IAAWS,aAAA,EAAe;IAExDC,gBAAA,CAAiB,IAAI;IACrBoB,QAAA,CAAS,IAAI;IAEb,IAAI;MACF,MAAMe,WAAA,GAAchI,WAAA,CAAWyH,sBAAA,CAA6BM,KAAK;MACjE,MAAME,OAAA,GAAUD,WAAA,CAAYA,WAAA,CAAYvD,MAAA,GAAS,CAAC;MAClD,IAAI,CAACwD,OAAA,EAAS;MAEd,MAAMjI,WAAA,CAAWkI,YAAA,CAAaH,KAAA,EAAOE,OAAA,CAAQE,IAAA,EAAMxB,QAAQ;IAE7D,SAASiB,GAAA,EAAK;MACZX,QAAA,CAASW,GAAA,YAAeC,KAAA,GAAQD,GAAA,GAAM,IAAIC,KAAA,CAAMjJ,MAAA,CAAOgJ,GAAG,CAAC,CAAC;IAC9D,UAAE;MACA/B,gBAAA,CAAiB,KAAK;IACxB;EACF,GAAG,CAACV,OAAA,EAASS,aAAA,EAAee,QAAQ,CAAC;EAErC,MAAMyB,OAAA,GAAUxN,WAAA,CAAY,YAAY;IACtC,MAAMoF,WAAA,GAAakE,aAAA,CAAc9C,OAAA;IACjC,IAAI,CAACpB,WAAA,IAAc,CAACkH,iBAAA,CAAkB9F,OAAA,EAAS;IAG/CpB,WAAA,CAAW0D,WAAA,CAAYwD,iBAAA,CAAkB9F,OAAO;IAChD8F,iBAAA,CAAkB9F,OAAA,GAAU;IAC5B0F,QAAA,CAAS,EAAE;IACXC,UAAA,CAAW,IAAI;IACfC,YAAA,CAAa,IAAI;IACjBC,QAAA,CAAS,IAAI;IAEb,IAAI;MACF,MAAMI,MAAA,GAAS,MAAMrH,WAAA,CAAWoC,SAAA,CAAU;QACxC/D,OAAA;QACAI,MAAA;QACAC,OAAA;QACAC,OAAA;QACAE,KAAA,EAAO8H,QAAA;QACPW,WAAA,EAAa;MACf,CAAC;MACDJ,iBAAA,CAAkB9F,OAAA,GAAUiG,MAAA,CAAOE,cAAA;MACnC,MAAMC,IAAA,GAAOxH,WAAA,CAAWyH,sBAAA,CAA6BJ,MAAA,CAAOE,cAAc;MAC1E,MAAMG,QAAA,GAAW1H,WAAA,CAAW2H,WAAA,CAAYN,MAAA,CAAOE,cAAc;MAC7DT,QAAA,CAASF,SAAA,GAAYY,IAAA,CAAKlD,GAAA,CAAIsC,SAAS,IAAIY,IAAI;MAC/CT,UAAA,CAAWW,QAAA,CAASvC,OAAO;IAC7B,SAASyC,GAAA,EAAK;MACZX,QAAA,CAASW,GAAA,YAAeC,KAAA,GAAQD,GAAA,GAAM,IAAIC,KAAA,CAAMjJ,MAAA,CAAOgJ,GAAG,CAAC,CAAC;IAC9D,UAAE;MACAZ,YAAA,CAAa,KAAK;IACpB;EACF,GAAG,CAAC3I,OAAA,EAASI,MAAA,EAAQC,OAAA,EAASC,OAAA,EAASgI,QAAA,EAAUC,SAAS,CAAC;EAE3D,MAAM;IAAEH,WAAA;IAAaf,SAAA,EAAW2C;EAAW,IAAInD,iBAAA,CAAkB;IAC/DC,OAAA;IACAC,SAAA,EAAWA,SAAA,IAAaQ,aAAA;IACxBP,UAAA,EAAYa;EACd,CAAC;EAED,OAAO;IACLW,KAAA;IACA1B,OAAA;IACAC,SAAA;IACAQ,aAAA;IACApF,KAAA;IACAiG,WAAA;IACAP,QAAA;IACAkC,OAAA;IACAE,WAAA,EAAazB,KAAA,CAAMpC;EACrB;AACF","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { isWindowDefined } from "@multiplatform.one/platform";
2
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
3
  import { createFrappeCollection, releaseFrappeCollectionSync } from "./collection.native.js";
4
4
  import { HttpClient } from "./core/http.native.js";
5
5
  import { DbModule } from "./db.native.js";
@@ -7,6 +7,7 @@ import { FixtureDbModule } from "./fixtureDb.native.js";
7
7
  import { RealtimeModule } from "./realtime.native.js";
8
8
  import { SyncModule } from "./sync/index.native.js";
9
9
  import { Status } from "./sync/types.native.js";
10
+ import { syncOptionsKey } from "./syncOptionsKey.native.js";
10
11
  import { isBrowser } from "./util.native.js";
11
12
  function _instanceof(left, right) {
12
13
  "@swc/helpers - instanceof";
@@ -51,22 +52,25 @@ function getFrappeSyncModule(config) {
51
52
  function getSyncModule(config) {
52
53
  var _config_socketPort, _config_socketBaseURL, _config_siteName;
53
54
  if (!isBrowser()) return void 0;
55
+ var optionsKey = syncOptionsKey(config.syncOptions);
54
56
  if (config.fixtures) {
55
- var sync = fixtureSyncModuleCache.get(config.fixtures);
57
+ var cache = fixtureSyncModuleCache.get(config.fixtures);
58
+ if (!cache) {
59
+ cache = /* @__PURE__ */new Map();
60
+ fixtureSyncModuleCache.set(config.fixtures, cache);
61
+ }
62
+ var sync = cache.get(optionsKey);
56
63
  if (!sync) {
57
64
  var db = new FixtureDbModule(config.fixtures);
58
65
  sync = new SyncModule(db, void 0, config.syncOptions);
59
- fixtureSyncModuleCache.set(config.fixtures, sync);
66
+ cache.set(optionsKey, sync);
60
67
  }
61
68
  return sync;
62
69
  }
63
70
  if (!config.baseURL) return void 0;
64
- var key = [config.baseURL, config.realtime === false ? "http" : "realtime", (_config_socketPort = config.socketPort) !== null && _config_socketPort !== void 0 ? _config_socketPort : "", (_config_socketBaseURL = config.socketBaseURL) !== null && _config_socketBaseURL !== void 0 ? _config_socketBaseURL : "", (_config_siteName = config.siteName) !== null && _config_siteName !== void 0 ? _config_siteName : ""].join("|");
71
+ var key = [config.baseURL, config.realtime === false ? "http" : "realtime", (_config_socketPort = config.socketPort) !== null && _config_socketPort !== void 0 ? _config_socketPort : "", (_config_socketBaseURL = config.socketBaseURL) !== null && _config_socketBaseURL !== void 0 ? _config_socketBaseURL : "", (_config_siteName = config.siteName) !== null && _config_siteName !== void 0 ? _config_siteName : "", optionsKey].join("|");
65
72
  var sync1 = syncModuleCache.get(key);
66
73
  if (!sync1) {
67
- var _ref, _ref1;
68
- var _config_syncOptions, _config_syncOptions1;
69
- console.debug(`[frappe-sync] SyncModule created for ${key} (persistKey=${(_ref = (_config_syncOptions = config.syncOptions) === null || _config_syncOptions === void 0 ? void 0 : _config_syncOptions.persistKey) !== null && _ref !== void 0 ? _ref : "none"}, cdcInterval=${(_ref1 = (_config_syncOptions1 = config.syncOptions) === null || _config_syncOptions1 === void 0 ? void 0 : _config_syncOptions1.cdcInterval) !== null && _ref1 !== void 0 ? _ref1 : "off"})`);
70
74
  var authConfig = config.auth ? {
71
75
  useToken: config.auth.useToken,
72
76
  token: config.auth.token,
@@ -289,19 +293,47 @@ function useFrappeCollection(config, doctype, options) {
289
293
  [entry, stableErrorHandler]);
290
294
  return entry ? entry.collection : void 0;
291
295
  }
296
+ var idleCatchUpState = Object.freeze({
297
+ refreshing: false,
298
+ stale: false,
299
+ error: null
300
+ });
301
+ function useFrappeCatchUp(config) {
302
+ var sync = getFrappeSyncModule(config);
303
+ var subscribe = useCallback(function (listener) {
304
+ var _ref;
305
+ return (_ref = sync === null || sync === void 0 ? void 0 : sync.subscribeStore(listener)) !== null && _ref !== void 0 ? _ref : function () {};
306
+ }, [sync]);
307
+ var snapshot = useCallback(function () {
308
+ var _ref;
309
+ return (_ref = sync === null || sync === void 0 ? void 0 : sync.getCatchUpState()) !== null && _ref !== void 0 ? _ref : idleCatchUpState;
310
+ }, [sync]);
311
+ var state = useSyncExternalStore(subscribe, snapshot, function () {
312
+ return idleCatchUpState;
313
+ });
314
+ var retry = useCallback(function () {
315
+ var _ref;
316
+ return (_ref = sync === null || sync === void 0 ? void 0 : sync.catchUp()) !== null && _ref !== void 0 ? _ref : Promise.resolve(idleCatchUpState);
317
+ }, [sync]);
318
+ return useMemo(function () {
319
+ return {
320
+ ...state,
321
+ retry
322
+ };
323
+ }, [state, retry]);
324
+ }
292
325
  var DISCONNECTED_STATE = Object.freeze({
293
326
  connected: false,
294
327
  everConnected: false
295
328
  });
296
329
  function useFrappeConnection(config) {
297
330
  var [state, setState] = useState(DISCONNECTED_STATE);
331
+ var syncModule = config && !config.fixtures && config.realtime !== false ? getSyncModule(config) : void 0;
298
332
  useEffect(function () {
299
- if (!config || config.fixtures || config.realtime === false || !isBrowser()) {
333
+ if (!syncModule) {
300
334
  setState(DISCONNECTED_STATE);
301
335
  return;
302
336
  }
303
- var syncModule = getSyncModule(config);
304
- if (!syncModule) return;
305
337
  var read = function read2() {
306
338
  var next = syncModule.getConnectionState();
307
339
  setState(function (prev) {
@@ -312,16 +344,15 @@ function useFrappeConnection(config) {
312
344
  return syncModule.subscribeStore(read);
313
345
  },
314
346
  // eslint-disable-next-line react-hooks/exhaustive-deps
315
- [config === null || config === void 0 ? void 0 : config.baseURL, config === null || config === void 0 ? void 0 : config.realtime, !!(config === null || config === void 0 ? void 0 : config.fixtures)]);
347
+ [syncModule]);
316
348
  return (config === null || config === void 0 ? void 0 : config.realtime) === false ? DISCONNECTED_STATE : state;
317
349
  }
318
350
  function useFrappeDoctypeEvents(config, doctype, onEvent) {
319
351
  var enabled = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true;
320
352
  var handlerRef = useRef(onEvent);
321
353
  handlerRef.current = onEvent;
354
+ var syncModule = enabled && config && !config.fixtures && config.realtime !== false && doctype ? getSyncModule(config) : void 0;
322
355
  useEffect(function () {
323
- if (!enabled || !config || config.fixtures || config.realtime === false || !doctype || !isBrowser()) return;
324
- var syncModule = getSyncModule(config);
325
356
  if (!syncModule) return;
326
357
  syncModule.watchDoctype(doctype);
327
358
  var unsubscribe = syncModule.subscribeRealtimeEvents(function (event) {
@@ -338,21 +369,20 @@ function useFrappeDoctypeEvents(config, doctype, onEvent) {
338
369
  };
339
370
  },
340
371
  // eslint-disable-next-line react-hooks/exhaustive-deps
341
- [enabled, config === null || config === void 0 ? void 0 : config.baseURL, config === null || config === void 0 ? void 0 : config.realtime, !!(config === null || config === void 0 ? void 0 : config.fixtures), doctype]);
372
+ [syncModule, doctype]);
342
373
  }
343
374
  var EMPTY_LEDGER = [];
344
375
  function useFrappePendingMutations(config, doctype) {
345
376
  var [entries, setEntries] = useState(EMPTY_LEDGER);
346
377
  var syncModuleRef = useRef(void 0);
378
+ var syncModule = getFrappeSyncModule(config);
347
379
  useEffect(function () {
348
- if (!config || !isBrowser()) {
380
+ if (!syncModule) {
349
381
  setEntries(EMPTY_LEDGER);
350
382
  return;
351
383
  }
352
- var syncModule = getSyncModule(config);
353
- if (!syncModule) return;
354
384
  syncModuleRef.current = syncModule;
355
- var lastSignature = "";
385
+ var lastSignature;
356
386
  var read = function read2() {
357
387
  var next = syncModule.getMutationEntries(doctype);
358
388
  var signature = next.map(function (e) {
@@ -363,10 +393,14 @@ function useFrappePendingMutations(config, doctype) {
363
393
  setEntries(next.length === 0 ? EMPTY_LEDGER : next);
364
394
  };
365
395
  read();
366
- return syncModule.subscribeStore(read);
396
+ var unsubscribe = syncModule.subscribeStore(read);
397
+ return function () {
398
+ unsubscribe();
399
+ syncModuleRef.current = void 0;
400
+ };
367
401
  },
368
402
  // eslint-disable-next-line react-hooks/exhaustive-deps
369
- [config === null || config === void 0 ? void 0 : config.baseURL, config === null || config === void 0 ? void 0 : config.realtime, !!(config === null || config === void 0 ? void 0 : config.fixtures), doctype]);
403
+ [syncModule, doctype]);
370
404
  var retry = useCallback(async function () {
371
405
  var _syncModuleRef_current;
372
406
  await ((_syncModuleRef_current = syncModuleRef.current) === null || _syncModuleRef_current === void 0 ? void 0 : _syncModuleRef_current.replayPending());
@@ -489,9 +523,8 @@ function useFrappeInfiniteList(options) {
489
523
  var subscriptionIdRef = useRef(void 0);
490
524
  var syncModuleRef = useRef(void 0);
491
525
  var filtersKey = JSON.stringify(filters);
526
+ var syncModule = getFrappeSyncModule(config);
492
527
  useEffect(function () {
493
- if (!config || !isBrowser()) return;
494
- var syncModule = getSyncModule(config);
495
528
  if (!syncModule) return;
496
529
  syncModuleRef.current = syncModule;
497
530
  var cancelled = false;
@@ -541,21 +574,22 @@ function useFrappeInfiniteList(options) {
541
574
  syncModule.unsubscribe(subscriptionIdRef.current);
542
575
  subscriptionIdRef.current = void 0;
543
576
  }
577
+ syncModuleRef.current = void 0;
544
578
  };
545
579
  },
546
580
  // eslint-disable-next-line react-hooks/exhaustive-deps
547
- [config === null || config === void 0 ? void 0 : config.baseURL, config === null || config === void 0 ? void 0 : config.realtime, config === null || config === void 0 ? void 0 : (_config_auth = config.auth) === null || _config_auth === void 0 ? void 0 : _config_auth.token, doctype, filtersKey, pageSize]);
581
+ [syncModule, config === null || config === void 0 ? void 0 : (_config_auth = config.auth) === null || _config_auth === void 0 ? void 0 : _config_auth.token, doctype, filtersKey, pageSize]);
548
582
  var loadMore = useCallback(async function () {
549
- var syncModule = syncModuleRef.current;
583
+ var syncModule2 = syncModuleRef.current;
550
584
  var subId = subscriptionIdRef.current;
551
- if (!syncModule || !subId || !hasMore || isLoadingMore) return;
585
+ if (!syncModule2 || !subId || !hasMore || isLoadingMore) return;
552
586
  setIsLoadingMore(true);
553
587
  setError(null);
554
588
  try {
555
- var currentDocs = syncModule.getDocsForSubscription(subId);
589
+ var currentDocs = syncModule2.getDocsForSubscription(subId);
556
590
  var lastDoc = currentDocs[currentDocs.length - 1];
557
591
  if (!lastDoc) return;
558
- await syncModule.getNextBatch(subId, lastDoc.name, pageSize);
592
+ await syncModule2.getNextBatch(subId, lastDoc.name, pageSize);
559
593
  } catch (err) {
560
594
  setError(_instanceof(err, Error) ? err : new Error(String(err)));
561
595
  } finally {
@@ -563,16 +597,16 @@ function useFrappeInfiniteList(options) {
563
597
  }
564
598
  }, [hasMore, isLoadingMore, pageSize]);
565
599
  var refresh = useCallback(async function () {
566
- var syncModule = syncModuleRef.current;
567
- if (!syncModule || !subscriptionIdRef.current) return;
568
- syncModule.unsubscribe(subscriptionIdRef.current);
600
+ var syncModule2 = syncModuleRef.current;
601
+ if (!syncModule2 || !subscriptionIdRef.current) return;
602
+ syncModule2.unsubscribe(subscriptionIdRef.current);
569
603
  subscriptionIdRef.current = void 0;
570
604
  setItems([]);
571
605
  setHasMore(true);
572
606
  setIsLoading(true);
573
607
  setError(null);
574
608
  try {
575
- var result = await syncModule.subscribe({
609
+ var result = await syncModule2.subscribe({
576
610
  doctype,
577
611
  fields,
578
612
  filters,
@@ -581,8 +615,8 @@ function useFrappeInfiniteList(options) {
581
615
  progressive: true
582
616
  });
583
617
  subscriptionIdRef.current = result.subscriptionId;
584
- var docs = syncModule.getDocsForSubscription(result.subscriptionId);
585
- var pageInfo = syncModule.getPageInfo(result.subscriptionId);
618
+ var docs = syncModule2.getDocsForSubscription(result.subscriptionId);
619
+ var pageInfo = syncModule2.getPageInfo(result.subscriptionId);
586
620
  setItems(transform ? docs.map(transform) : docs);
587
621
  setHasMore(pageInfo.hasMore);
588
622
  } catch (err) {
@@ -611,5 +645,5 @@ function useFrappeInfiniteList(options) {
611
645
  totalLoaded: items.length
612
646
  };
613
647
  }
614
- export { __getActiveSyncModule, getFrappeSyncModule, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll };
648
+ export { __getActiveSyncModule, getFrappeSyncModule, useFrappeCatchUp, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll };
615
649
  //# sourceMappingURL=frappeReact.native.js.map