@multiplatform.one/frappe 6.1.0 → 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.
- package/README.md +38 -12
- package/dist/cjs/auth.cjs +1 -1
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.cjs +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.cjs +18 -4
- package/dist/cjs/collection.native.js +18 -4
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/core/http.cjs +92 -9
- package/dist/cjs/core/http.native.js +96 -7
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/db.cjs +7 -7
- package/dist/cjs/db.native.js +4 -4
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/doctype.cjs +97 -39
- package/dist/cjs/doctype.native.js +116 -46
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.cjs +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.cjs +3 -2
- package/dist/cjs/fixtureDb.native.js +2 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/frappeApp.cjs +15 -14
- package/dist/cjs/frappeApp.native.js +16 -14
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +198 -18
- package/dist/cjs/frappeReact.native.js +241 -18
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -4
- package/dist/cjs/index.native.js +9 -4
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/pacer.cjs +2 -2
- package/dist/cjs/pacer.native.js +2 -2
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +186 -46
- package/dist/cjs/realtime.native.js +268 -48
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.cjs +32 -27
- package/dist/cjs/sync/backfill.native.js +49 -43
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/index.cjs +90 -24
- package/dist/cjs/sync/index.native.js +112 -10
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.cjs +0 -3
- package/dist/cjs/sync/merge.native.js +0 -3
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.cjs +25 -19
- package/dist/cjs/sync/mutationEngine.native.js +16 -13
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.cjs +9 -4
- package/dist/cjs/sync/mutationJournal.native.js +7 -4
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.cjs +7 -3
- package/dist/cjs/sync/normalizedCache.native.js +7 -2
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.cjs +63 -31
- package/dist/cjs/sync/persistence.native.js +120 -63
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.cjs +124 -13
- package/dist/cjs/sync/realtime.native.js +163 -20
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.cjs +16 -10
- package/dist/cjs/sync/rehydration.native.js +16 -14
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.cjs +3 -3
- package/dist/cjs/sync/storage.native.js +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.cjs +255 -65
- package/dist/cjs/sync/subscriptionManager.native.js +330 -93
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.cjs +2 -0
- package/dist/cjs/sync/types.native.js +2 -0
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.cjs +9 -9
- package/dist/cjs/sync/virtualPageManager.native.js +5 -9
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.cjs +52 -0
- package/dist/cjs/useLiveQuery.native.js +59 -0
- package/dist/cjs/useLiveQuery.native.js.map +1 -0
- package/dist/cjs/util.cjs +11 -2
- package/dist/cjs/util.native.js +16 -2
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.mjs +1 -1
- package/dist/esm/auth.mjs.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.mjs +1 -1
- package/dist/esm/call.mjs.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.mjs +18 -4
- package/dist/esm/collection.mjs.map +1 -1
- package/dist/esm/collection.native.js +18 -4
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/core/http.mjs +93 -10
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +97 -8
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/db.mjs +7 -7
- package/dist/esm/db.mjs.map +1 -1
- package/dist/esm/db.native.js +4 -4
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/doctype.mjs +96 -39
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +115 -46
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.mjs +1 -1
- package/dist/esm/file.mjs.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.mjs +3 -2
- package/dist/esm/fixtureDb.mjs.map +1 -1
- package/dist/esm/fixtureDb.native.js +2 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/frappeApp.mjs +15 -14
- package/dist/esm/frappeApp.mjs.map +1 -1
- package/dist/esm/frappeApp.native.js +16 -14
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +197 -19
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +240 -19
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -4
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -4
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/pacer.mjs +1 -1
- package/dist/esm/pacer.native.js +1 -1
- package/dist/esm/realtime.mjs +187 -47
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +269 -49
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.mjs +32 -27
- package/dist/esm/sync/backfill.mjs.map +1 -1
- package/dist/esm/sync/backfill.native.js +49 -43
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/index.mjs +90 -24
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +112 -10
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.mjs +1 -1
- package/dist/esm/sync/merge.mjs.map +1 -1
- package/dist/esm/sync/merge.native.js +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.mjs +25 -19
- package/dist/esm/sync/mutationEngine.mjs.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +16 -13
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.mjs +9 -4
- package/dist/esm/sync/mutationJournal.mjs.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +7 -4
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.mjs +7 -3
- package/dist/esm/sync/normalizedCache.mjs.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js +7 -2
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.mjs +64 -32
- package/dist/esm/sync/persistence.mjs.map +1 -1
- package/dist/esm/sync/persistence.native.js +121 -64
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.mjs +124 -13
- package/dist/esm/sync/realtime.mjs.map +1 -1
- package/dist/esm/sync/realtime.native.js +163 -20
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.mjs +16 -10
- package/dist/esm/sync/rehydration.mjs.map +1 -1
- package/dist/esm/sync/rehydration.native.js +16 -14
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.mjs +3 -3
- package/dist/esm/sync/storage.mjs.map +1 -1
- package/dist/esm/sync/storage.native.js +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.mjs +255 -65
- package/dist/esm/sync/subscriptionManager.mjs.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +330 -93
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.mjs +2 -0
- package/dist/esm/sync/types.mjs.map +1 -1
- package/dist/esm/sync/types.native.js +2 -0
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.mjs +9 -9
- package/dist/esm/sync/virtualPageManager.mjs.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +5 -9
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.mjs +26 -0
- package/dist/esm/useLiveQuery.mjs.map +1 -0
- package/dist/esm/useLiveQuery.native.js +30 -0
- package/dist/esm/useLiveQuery.native.js.map +1 -0
- package/dist/esm/util.mjs +10 -2
- package/dist/esm/util.mjs.map +1 -1
- package/dist/esm/util.native.js +15 -2
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/auth.mjs +1 -1
- package/dist/jsx/auth.mjs.map +1 -1
- package/dist/jsx/auth.native.js.map +1 -1
- package/dist/jsx/call.mjs +1 -1
- package/dist/jsx/call.mjs.map +1 -1
- package/dist/jsx/call.native.js.map +1 -1
- package/dist/jsx/collection.mjs +18 -4
- package/dist/jsx/collection.mjs.map +1 -1
- package/dist/jsx/collection.native.js +18 -4
- package/dist/jsx/collection.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +93 -10
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +96 -7
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/db.mjs +7 -7
- package/dist/jsx/db.mjs.map +1 -1
- package/dist/jsx/db.native.js +4 -4
- package/dist/jsx/db.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +96 -39
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +116 -46
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/file.mjs +1 -1
- package/dist/jsx/file.mjs.map +1 -1
- package/dist/jsx/file.native.js.map +1 -1
- package/dist/jsx/fixtureDb.mjs +3 -2
- package/dist/jsx/fixtureDb.mjs.map +1 -1
- package/dist/jsx/fixtureDb.native.js +2 -1
- package/dist/jsx/fixtureDb.native.js.map +1 -1
- package/dist/jsx/frappeApp.mjs +15 -14
- package/dist/jsx/frappeApp.mjs.map +1 -1
- package/dist/jsx/frappeApp.native.js +16 -14
- package/dist/jsx/frappeApp.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +197 -19
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +241 -18
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +5 -4
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -4
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +9 -4
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/pacer.mjs +1 -1
- package/dist/jsx/pacer.native.js +2 -2
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +187 -47
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +268 -48
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/sync/backfill.mjs +32 -27
- package/dist/jsx/sync/backfill.mjs.map +1 -1
- package/dist/jsx/sync/backfill.native.js +49 -43
- package/dist/jsx/sync/backfill.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +90 -24
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +112 -10
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/merge.mjs +1 -1
- package/dist/jsx/sync/merge.mjs.map +1 -1
- package/dist/jsx/sync/merge.native.js +0 -3
- package/dist/jsx/sync/merge.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.mjs +25 -19
- package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js +16 -13
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.mjs +9 -4
- package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js +7 -4
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/normalizedCache.mjs +7 -3
- package/dist/jsx/sync/normalizedCache.mjs.map +1 -1
- package/dist/jsx/sync/normalizedCache.native.js +7 -2
- package/dist/jsx/sync/normalizedCache.native.js.map +1 -1
- package/dist/jsx/sync/persistence.mjs +64 -32
- package/dist/jsx/sync/persistence.mjs.map +1 -1
- package/dist/jsx/sync/persistence.native.js +120 -63
- package/dist/jsx/sync/persistence.native.js.map +1 -1
- package/dist/jsx/sync/realtime.mjs +124 -13
- package/dist/jsx/sync/realtime.mjs.map +1 -1
- package/dist/jsx/sync/realtime.native.js +163 -20
- package/dist/jsx/sync/realtime.native.js.map +1 -1
- package/dist/jsx/sync/rehydration.mjs +16 -10
- package/dist/jsx/sync/rehydration.mjs.map +1 -1
- package/dist/jsx/sync/rehydration.native.js +16 -14
- package/dist/jsx/sync/rehydration.native.js.map +1 -1
- package/dist/jsx/sync/storage.mjs +3 -3
- package/dist/jsx/sync/storage.mjs.map +1 -1
- package/dist/jsx/sync/storage.native.js +1 -1
- package/dist/jsx/sync/storage.native.js.map +1 -1
- package/dist/jsx/sync/subscriptionManager.mjs +255 -65
- package/dist/jsx/sync/subscriptionManager.mjs.map +1 -1
- package/dist/jsx/sync/subscriptionManager.native.js +330 -93
- package/dist/jsx/sync/subscriptionManager.native.js.map +1 -1
- package/dist/jsx/sync/types.mjs +2 -0
- package/dist/jsx/sync/types.mjs.map +1 -1
- package/dist/jsx/sync/types.native.js +2 -0
- package/dist/jsx/sync/types.native.js.map +1 -1
- package/dist/jsx/sync/virtualPageManager.mjs +9 -9
- package/dist/jsx/sync/virtualPageManager.mjs.map +1 -1
- package/dist/jsx/sync/virtualPageManager.native.js +5 -9
- package/dist/jsx/sync/virtualPageManager.native.js.map +1 -1
- package/dist/jsx/useLiveQuery.mjs +26 -0
- package/dist/jsx/useLiveQuery.mjs.map +1 -0
- package/dist/jsx/useLiveQuery.native.js +59 -0
- package/dist/jsx/useLiveQuery.native.js.map +1 -0
- package/dist/jsx/util.mjs +10 -2
- package/dist/jsx/util.mjs.map +1 -1
- package/dist/jsx/util.native.js +16 -2
- package/dist/jsx/util.native.js.map +1 -1
- package/package.json +20 -17
- package/src/auth.ts +5 -1
- package/src/call.ts +5 -1
- package/src/collection.spec.ts +55 -0
- package/src/collection.ts +33 -4
- package/src/core/http.spec.ts +66 -0
- package/src/core/http.ts +115 -9
- package/src/core/httpNative.spec.ts +234 -0
- package/src/core/types.ts +2 -0
- package/src/db.spec.ts +91 -51
- package/src/db.ts +27 -8
- package/src/doctype.spec.ts +247 -39
- package/src/doctype.ts +203 -53
- package/src/file.ts +5 -1
- package/src/fixtureDb.ts +13 -2
- package/src/frappeApp.ts +18 -19
- package/src/frappeReact.spec.ts +565 -1
- package/src/frappeReact.ts +445 -37
- package/src/frappeReactLiveQueryGc.spec.ts +320 -0
- package/src/frappeReactNative.spec.ts +65 -0
- package/src/index.ts +10 -9
- package/src/pacer.ts +1 -1
- package/src/realtime.spec.ts +464 -20
- package/src/realtime.ts +284 -46
- package/src/sync/backfill.spec.ts +43 -0
- package/src/sync/backfill.ts +59 -39
- package/src/sync/debug.spec.ts +36 -0
- package/src/sync/filterValidation.spec.ts +197 -0
- package/src/sync/index.ts +98 -7
- package/src/sync/merge.ts +3 -3
- package/src/sync/mutationEngine.spec.ts +36 -4
- package/src/sync/mutationEngine.ts +30 -11
- package/src/sync/mutationJournal.ts +18 -4
- package/src/sync/normalizedCache.spec.ts +102 -0
- package/src/sync/normalizedCache.ts +19 -3
- package/src/sync/offlineRestore.spec.ts +423 -0
- package/src/sync/persistence.spec.ts +39 -7
- package/src/sync/persistence.ts +90 -18
- package/src/sync/persistenceGjs.spec.ts +143 -0
- package/src/sync/persistenceNative.spec.ts +139 -0
- package/src/sync/realtime.spec.ts +18 -1
- package/src/sync/realtime.ts +161 -13
- package/src/sync/rehydration.ts +23 -5
- package/src/sync/storage.ts +5 -4
- package/src/sync/subscriptionManager.spec.ts +94 -0
- package/src/sync/subscriptionManager.ts +304 -82
- package/src/sync/syncModule.spec.ts +137 -0
- package/src/sync/types.ts +39 -0
- package/src/sync/virtualPageManager.ts +8 -4
- package/src/useLiveQuery.ts +58 -0
- package/src/util.spec.ts +35 -4
- package/src/util.ts +34 -7
- package/types/auth.d.ts +13 -0
- package/types/auth.d.ts.map +1 -0
- package/types/call.d.ts +10 -0
- package/types/call.d.ts.map +1 -0
- package/types/collection.d.ts +127 -0
- package/types/collection.d.ts.map +1 -0
- package/types/common/types.d.ts +35 -0
- package/types/common/types.d.ts.map +1 -0
- package/types/core/http.d.ts +86 -0
- package/types/core/http.d.ts.map +1 -0
- package/types/core/types.d.ts +74 -0
- package/types/core/types.d.ts.map +1 -0
- package/types/core/wire.d.ts +405 -0
- package/types/core/wire.d.ts.map +1 -0
- package/types/db.d.ts +244 -0
- package/types/db.d.ts.map +1 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts +7 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts.map +1 -0
- package/types/devtools/index.d.ts +4 -0
- package/types/devtools/index.d.ts.map +1 -0
- package/types/devtools/plugin.d.ts +9 -0
- package/types/devtools/plugin.d.ts.map +1 -0
- package/types/devtools/theme.d.ts +15 -0
- package/types/devtools/theme.d.ts.map +1 -0
- package/types/doctype.d.ts +256 -0
- package/types/doctype.d.ts.map +1 -0
- package/types/file.d.ts +15 -0
- package/types/file.d.ts.map +1 -0
- package/types/fixtureDb.d.ts +76 -0
- package/types/fixtureDb.d.ts.map +1 -0
- package/types/fixtures.d.ts +55 -0
- package/types/fixtures.d.ts.map +1 -0
- package/types/frappeApp.d.ts +45 -0
- package/types/frappeApp.d.ts.map +1 -0
- package/types/frappeReact.d.ts +270 -0
- package/types/frappeReact.d.ts.map +1 -0
- package/types/index.d.ts +44 -0
- package/types/index.d.ts.map +1 -0
- package/types/optimistic.d.ts +38 -0
- package/types/optimistic.d.ts.map +1 -0
- package/types/pacer.d.ts +193 -0
- package/types/pacer.d.ts.map +1 -0
- package/types/plugin/index.d.ts +11 -0
- package/types/plugin/index.d.ts.map +1 -0
- package/types/realtime.d.ts +121 -0
- package/types/realtime.d.ts.map +1 -0
- package/types/sync/backfill.d.ts +60 -0
- package/types/sync/backfill.d.ts.map +1 -0
- package/types/sync/filters.d.ts +101 -0
- package/types/sync/filters.d.ts.map +1 -0
- package/types/sync/index.d.ts +181 -0
- package/types/sync/index.d.ts.map +1 -0
- package/types/sync/merge.d.ts +59 -0
- package/types/sync/merge.d.ts.map +1 -0
- package/types/sync/mutationEngine.d.ts +117 -0
- package/types/sync/mutationEngine.d.ts.map +1 -0
- package/types/sync/mutationJournal.d.ts +60 -0
- package/types/sync/mutationJournal.d.ts.map +1 -0
- package/types/sync/normalizedCache.d.ts +59 -0
- package/types/sync/normalizedCache.d.ts.map +1 -0
- package/types/sync/persistence.d.ts +185 -0
- package/types/sync/persistence.d.ts.map +1 -0
- package/types/sync/realtime.d.ts +121 -0
- package/types/sync/realtime.d.ts.map +1 -0
- package/types/sync/rehydration.d.ts +109 -0
- package/types/sync/rehydration.d.ts.map +1 -0
- package/types/sync/storage.d.ts +65 -0
- package/types/sync/storage.d.ts.map +1 -0
- package/types/sync/subscriptionManager.d.ts +161 -0
- package/types/sync/subscriptionManager.d.ts.map +1 -0
- package/types/sync/types.d.ts +435 -0
- package/types/sync/types.d.ts.map +1 -0
- package/types/sync/virtualPageManager.d.ts +190 -0
- package/types/sync/virtualPageManager.d.ts.map +1 -0
- package/types/useLiveQuery.d.ts +16 -0
- package/types/useLiveQuery.d.ts.map +1 -0
- package/types/util.d.ts +24 -0
- package/types/util.d.ts.map +1 -0
- package/dist/cjs/auth.spec.cjs +0 -322
- package/dist/cjs/auth.spec.native.js +0 -329
- package/dist/cjs/auth.spec.native.js.map +0 -1
- package/dist/cjs/call.spec.cjs +0 -427
- package/dist/cjs/call.spec.native.js +0 -430
- package/dist/cjs/call.spec.native.js.map +0 -1
- package/dist/cjs/collection.spec.cjs +0 -186
- package/dist/cjs/collection.spec.native.js +0 -216
- package/dist/cjs/collection.spec.native.js.map +0 -1
- package/dist/cjs/common/types.spec.cjs +0 -266
- package/dist/cjs/common/types.spec.native.js +0 -271
- package/dist/cjs/common/types.spec.native.js.map +0 -1
- package/dist/cjs/core/http.spec.cjs +0 -1259
- package/dist/cjs/core/http.spec.native.js +0 -1401
- package/dist/cjs/core/http.spec.native.js.map +0 -1
- package/dist/cjs/core/wire.spec.cjs +0 -478
- package/dist/cjs/core/wire.spec.native.js +0 -482
- package/dist/cjs/core/wire.spec.native.js.map +0 -1
- package/dist/cjs/db.spec.cjs +0 -862
- package/dist/cjs/db.spec.native.js +0 -865
- package/dist/cjs/db.spec.native.js.map +0 -1
- package/dist/cjs/doctype.spec.cjs +0 -460
- package/dist/cjs/doctype.spec.native.js +0 -538
- package/dist/cjs/doctype.spec.native.js.map +0 -1
- package/dist/cjs/file.spec.cjs +0 -315
- package/dist/cjs/file.spec.native.js +0 -342
- package/dist/cjs/file.spec.native.js.map +0 -1
- package/dist/cjs/frappeApp.spec.cjs +0 -306
- package/dist/cjs/frappeApp.spec.native.js +0 -308
- package/dist/cjs/frappeApp.spec.native.js.map +0 -1
- package/dist/cjs/frappeReact.spec.cjs +0 -531
- package/dist/cjs/frappeReact.spec.native.js +0 -670
- package/dist/cjs/frappeReact.spec.native.js.map +0 -1
- package/dist/cjs/optimistic.spec.cjs +0 -11
- package/dist/cjs/optimistic.spec.native.js +0 -19
- package/dist/cjs/optimistic.spec.native.js.map +0 -1
- package/dist/cjs/pacer.spec.cjs +0 -470
- package/dist/cjs/pacer.spec.native.js +0 -537
- package/dist/cjs/pacer.spec.native.js.map +0 -1
- package/dist/cjs/realtime.spec.cjs +0 -326
- package/dist/cjs/realtime.spec.native.js +0 -392
- package/dist/cjs/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/backfill.spec.cjs +0 -586
- package/dist/cjs/sync/backfill.spec.native.js +0 -712
- package/dist/cjs/sync/backfill.spec.native.js.map +0 -1
- package/dist/cjs/sync/debug.spec.cjs +0 -125
- package/dist/cjs/sync/debug.spec.native.js +0 -133
- package/dist/cjs/sync/debug.spec.native.js.map +0 -1
- package/dist/cjs/sync/filters.spec.cjs +0 -168
- package/dist/cjs/sync/filters.spec.native.js +0 -173
- package/dist/cjs/sync/filters.spec.native.js.map +0 -1
- package/dist/cjs/sync/merge.spec.cjs +0 -908
- package/dist/cjs/sync/merge.spec.native.js +0 -937
- package/dist/cjs/sync/merge.spec.native.js.map +0 -1
- package/dist/cjs/sync/multiOrderBy.spec.cjs +0 -165
- package/dist/cjs/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/cjs/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationEngine.spec.cjs +0 -1158
- package/dist/cjs/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/cjs/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationJournal.spec.cjs +0 -330
- package/dist/cjs/sync/mutationJournal.spec.native.js +0 -333
- package/dist/cjs/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutations.spec.cjs +0 -327
- package/dist/cjs/sync/mutations.spec.native.js +0 -330
- package/dist/cjs/sync/mutations.spec.native.js.map +0 -1
- package/dist/cjs/sync/normalizedCache.spec.cjs +0 -302
- package/dist/cjs/sync/normalizedCache.spec.native.js +0 -311
- package/dist/cjs/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/cjs/sync/persistence.spec.cjs +0 -562
- package/dist/cjs/sync/persistence.spec.native.js +0 -572
- package/dist/cjs/sync/persistence.spec.native.js.map +0 -1
- package/dist/cjs/sync/realtime.spec.cjs +0 -499
- package/dist/cjs/sync/realtime.spec.native.js +0 -512
- package/dist/cjs/sync/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/rehydration.spec.cjs +0 -731
- package/dist/cjs/sync/rehydration.spec.native.js +0 -736
- package/dist/cjs/sync/rehydration.spec.native.js.map +0 -1
- package/dist/cjs/sync/storage.spec.cjs +0 -446
- package/dist/cjs/sync/storage.spec.native.js +0 -470
- package/dist/cjs/sync/storage.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptionManager.spec.cjs +0 -1102
- package/dist/cjs/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/cjs/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptions.spec.cjs +0 -937
- package/dist/cjs/sync/subscriptions.spec.native.js +0 -969
- package/dist/cjs/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/cjs/sync/syncModule.spec.cjs +0 -206
- package/dist/cjs/sync/syncModule.spec.native.js +0 -222
- package/dist/cjs/sync/syncModule.spec.native.js.map +0 -1
- package/dist/cjs/sync/types.spec.cjs +0 -246
- package/dist/cjs/sync/types.spec.native.js +0 -256
- package/dist/cjs/sync/types.spec.native.js.map +0 -1
- package/dist/cjs/sync/virtualPageManager.spec.cjs +0 -801
- package/dist/cjs/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/cjs/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/cjs/util.spec.cjs +0 -43
- package/dist/cjs/util.spec.native.js +0 -48
- package/dist/cjs/util.spec.native.js.map +0 -1
- package/dist/esm/auth.spec.mjs +0 -323
- package/dist/esm/auth.spec.mjs.map +0 -1
- package/dist/esm/auth.spec.native.js +0 -327
- package/dist/esm/auth.spec.native.js.map +0 -1
- package/dist/esm/call.spec.mjs +0 -428
- package/dist/esm/call.spec.mjs.map +0 -1
- package/dist/esm/call.spec.native.js +0 -428
- package/dist/esm/call.spec.native.js.map +0 -1
- package/dist/esm/collection.spec.mjs +0 -187
- package/dist/esm/collection.spec.mjs.map +0 -1
- package/dist/esm/collection.spec.native.js +0 -214
- package/dist/esm/collection.spec.native.js.map +0 -1
- package/dist/esm/common/types.spec.mjs +0 -267
- package/dist/esm/common/types.spec.mjs.map +0 -1
- package/dist/esm/common/types.spec.native.js +0 -269
- package/dist/esm/common/types.spec.native.js.map +0 -1
- package/dist/esm/core/http.spec.mjs +0 -1260
- package/dist/esm/core/http.spec.mjs.map +0 -1
- package/dist/esm/core/http.spec.native.js +0 -1399
- package/dist/esm/core/http.spec.native.js.map +0 -1
- package/dist/esm/core/wire.spec.mjs +0 -479
- package/dist/esm/core/wire.spec.mjs.map +0 -1
- package/dist/esm/core/wire.spec.native.js +0 -480
- package/dist/esm/core/wire.spec.native.js.map +0 -1
- package/dist/esm/db.spec.mjs +0 -863
- package/dist/esm/db.spec.mjs.map +0 -1
- package/dist/esm/db.spec.native.js +0 -863
- package/dist/esm/db.spec.native.js.map +0 -1
- package/dist/esm/doctype.spec.mjs +0 -461
- package/dist/esm/doctype.spec.mjs.map +0 -1
- package/dist/esm/doctype.spec.native.js +0 -536
- package/dist/esm/doctype.spec.native.js.map +0 -1
- package/dist/esm/file.spec.mjs +0 -316
- package/dist/esm/file.spec.mjs.map +0 -1
- package/dist/esm/file.spec.native.js +0 -340
- package/dist/esm/file.spec.native.js.map +0 -1
- package/dist/esm/frappeApp.spec.mjs +0 -307
- package/dist/esm/frappeApp.spec.mjs.map +0 -1
- package/dist/esm/frappeApp.spec.native.js +0 -306
- package/dist/esm/frappeApp.spec.native.js.map +0 -1
- package/dist/esm/frappeReact.spec.mjs +0 -532
- package/dist/esm/frappeReact.spec.mjs.map +0 -1
- package/dist/esm/frappeReact.spec.native.js +0 -668
- package/dist/esm/frappeReact.spec.native.js.map +0 -1
- package/dist/esm/optimistic.spec.mjs +0 -12
- package/dist/esm/optimistic.spec.mjs.map +0 -1
- package/dist/esm/optimistic.spec.native.js +0 -17
- package/dist/esm/optimistic.spec.native.js.map +0 -1
- package/dist/esm/pacer.spec.mjs +0 -447
- package/dist/esm/pacer.spec.mjs.map +0 -1
- package/dist/esm/pacer.spec.native.js +0 -511
- package/dist/esm/pacer.spec.native.js.map +0 -1
- package/dist/esm/realtime.spec.mjs +0 -327
- package/dist/esm/realtime.spec.mjs.map +0 -1
- package/dist/esm/realtime.spec.native.js +0 -390
- package/dist/esm/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/backfill.spec.mjs +0 -563
- package/dist/esm/sync/backfill.spec.mjs.map +0 -1
- package/dist/esm/sync/backfill.spec.native.js +0 -686
- package/dist/esm/sync/backfill.spec.native.js.map +0 -1
- package/dist/esm/sync/debug.spec.mjs +0 -102
- package/dist/esm/sync/debug.spec.mjs.map +0 -1
- package/dist/esm/sync/debug.spec.native.js +0 -107
- package/dist/esm/sync/debug.spec.native.js.map +0 -1
- package/dist/esm/sync/filters.spec.mjs +0 -169
- package/dist/esm/sync/filters.spec.mjs.map +0 -1
- package/dist/esm/sync/filters.spec.native.js +0 -171
- package/dist/esm/sync/filters.spec.native.js.map +0 -1
- package/dist/esm/sync/merge.spec.mjs +0 -909
- package/dist/esm/sync/merge.spec.mjs.map +0 -1
- package/dist/esm/sync/merge.spec.native.js +0 -935
- package/dist/esm/sync/merge.spec.native.js.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/esm/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.native.js +0 -227
- package/dist/esm/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/esm/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.native.js +0 -1171
- package/dist/esm/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.mjs +0 -331
- package/dist/esm/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.native.js +0 -331
- package/dist/esm/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/esm/sync/mutations.spec.mjs +0 -328
- package/dist/esm/sync/mutations.spec.mjs.map +0 -1
- package/dist/esm/sync/mutations.spec.native.js +0 -328
- package/dist/esm/sync/mutations.spec.native.js.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.mjs +0 -303
- package/dist/esm/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.native.js +0 -309
- package/dist/esm/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/esm/sync/persistence.spec.mjs +0 -563
- package/dist/esm/sync/persistence.spec.mjs.map +0 -1
- package/dist/esm/sync/persistence.spec.native.js +0 -570
- package/dist/esm/sync/persistence.spec.native.js.map +0 -1
- package/dist/esm/sync/realtime.spec.mjs +0 -500
- package/dist/esm/sync/realtime.spec.mjs.map +0 -1
- package/dist/esm/sync/realtime.spec.native.js +0 -510
- package/dist/esm/sync/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/rehydration.spec.mjs +0 -732
- package/dist/esm/sync/rehydration.spec.mjs.map +0 -1
- package/dist/esm/sync/rehydration.spec.native.js +0 -734
- package/dist/esm/sync/rehydration.spec.native.js.map +0 -1
- package/dist/esm/sync/storage.spec.mjs +0 -423
- package/dist/esm/sync/storage.spec.mjs.map +0 -1
- package/dist/esm/sync/storage.spec.native.js +0 -444
- package/dist/esm/sync/storage.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/esm/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.native.js +0 -1110
- package/dist/esm/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptions.spec.mjs +0 -914
- package/dist/esm/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptions.spec.native.js +0 -943
- package/dist/esm/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/esm/sync/syncModule.spec.mjs +0 -207
- package/dist/esm/sync/syncModule.spec.mjs.map +0 -1
- package/dist/esm/sync/syncModule.spec.native.js +0 -220
- package/dist/esm/sync/syncModule.spec.native.js.map +0 -1
- package/dist/esm/sync/types.spec.mjs +0 -247
- package/dist/esm/sync/types.spec.mjs.map +0 -1
- package/dist/esm/sync/types.spec.native.js +0 -254
- package/dist/esm/sync/types.spec.native.js.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/esm/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.native.js +0 -871
- package/dist/esm/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/esm/util.spec.mjs +0 -20
- package/dist/esm/util.spec.mjs.map +0 -1
- package/dist/esm/util.spec.native.js +0 -22
- package/dist/esm/util.spec.native.js.map +0 -1
- package/dist/jsx/auth.spec.mjs +0 -323
- package/dist/jsx/auth.spec.mjs.map +0 -1
- package/dist/jsx/auth.spec.native.js +0 -329
- package/dist/jsx/auth.spec.native.js.map +0 -1
- package/dist/jsx/call.spec.mjs +0 -428
- package/dist/jsx/call.spec.mjs.map +0 -1
- package/dist/jsx/call.spec.native.js +0 -430
- package/dist/jsx/call.spec.native.js.map +0 -1
- package/dist/jsx/collection.spec.mjs +0 -187
- package/dist/jsx/collection.spec.mjs.map +0 -1
- package/dist/jsx/collection.spec.native.js +0 -216
- package/dist/jsx/collection.spec.native.js.map +0 -1
- package/dist/jsx/common/types.spec.mjs +0 -267
- package/dist/jsx/common/types.spec.mjs.map +0 -1
- package/dist/jsx/common/types.spec.native.js +0 -271
- package/dist/jsx/common/types.spec.native.js.map +0 -1
- package/dist/jsx/core/http.spec.mjs +0 -1260
- package/dist/jsx/core/http.spec.mjs.map +0 -1
- package/dist/jsx/core/http.spec.native.js +0 -1401
- package/dist/jsx/core/http.spec.native.js.map +0 -1
- package/dist/jsx/core/wire.spec.mjs +0 -479
- package/dist/jsx/core/wire.spec.mjs.map +0 -1
- package/dist/jsx/core/wire.spec.native.js +0 -482
- package/dist/jsx/core/wire.spec.native.js.map +0 -1
- package/dist/jsx/db.spec.mjs +0 -863
- package/dist/jsx/db.spec.mjs.map +0 -1
- package/dist/jsx/db.spec.native.js +0 -865
- package/dist/jsx/db.spec.native.js.map +0 -1
- package/dist/jsx/doctype.spec.mjs +0 -461
- package/dist/jsx/doctype.spec.mjs.map +0 -1
- package/dist/jsx/doctype.spec.native.js +0 -538
- package/dist/jsx/doctype.spec.native.js.map +0 -1
- package/dist/jsx/file.spec.mjs +0 -316
- package/dist/jsx/file.spec.mjs.map +0 -1
- package/dist/jsx/file.spec.native.js +0 -342
- package/dist/jsx/file.spec.native.js.map +0 -1
- package/dist/jsx/frappeApp.spec.mjs +0 -307
- package/dist/jsx/frappeApp.spec.mjs.map +0 -1
- package/dist/jsx/frappeApp.spec.native.js +0 -308
- package/dist/jsx/frappeApp.spec.native.js.map +0 -1
- package/dist/jsx/frappeReact.spec.mjs +0 -532
- package/dist/jsx/frappeReact.spec.mjs.map +0 -1
- package/dist/jsx/frappeReact.spec.native.js +0 -670
- package/dist/jsx/frappeReact.spec.native.js.map +0 -1
- package/dist/jsx/optimistic.spec.mjs +0 -12
- package/dist/jsx/optimistic.spec.mjs.map +0 -1
- package/dist/jsx/optimistic.spec.native.js +0 -19
- package/dist/jsx/optimistic.spec.native.js.map +0 -1
- package/dist/jsx/pacer.spec.mjs +0 -447
- package/dist/jsx/pacer.spec.mjs.map +0 -1
- package/dist/jsx/pacer.spec.native.js +0 -537
- package/dist/jsx/pacer.spec.native.js.map +0 -1
- package/dist/jsx/realtime.spec.mjs +0 -327
- package/dist/jsx/realtime.spec.mjs.map +0 -1
- package/dist/jsx/realtime.spec.native.js +0 -392
- package/dist/jsx/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/backfill.spec.mjs +0 -563
- package/dist/jsx/sync/backfill.spec.mjs.map +0 -1
- package/dist/jsx/sync/backfill.spec.native.js +0 -712
- package/dist/jsx/sync/backfill.spec.native.js.map +0 -1
- package/dist/jsx/sync/debug.spec.mjs +0 -102
- package/dist/jsx/sync/debug.spec.mjs.map +0 -1
- package/dist/jsx/sync/debug.spec.native.js +0 -133
- package/dist/jsx/sync/debug.spec.native.js.map +0 -1
- package/dist/jsx/sync/filters.spec.mjs +0 -169
- package/dist/jsx/sync/filters.spec.mjs.map +0 -1
- package/dist/jsx/sync/filters.spec.native.js +0 -173
- package/dist/jsx/sync/filters.spec.native.js.map +0 -1
- package/dist/jsx/sync/merge.spec.mjs +0 -909
- package/dist/jsx/sync/merge.spec.mjs.map +0 -1
- package/dist/jsx/sync/merge.spec.native.js +0 -937
- package/dist/jsx/sync/merge.spec.native.js.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/jsx/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/jsx/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/jsx/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/jsx/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.mjs +0 -331
- package/dist/jsx/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.native.js +0 -333
- package/dist/jsx/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutations.spec.mjs +0 -328
- package/dist/jsx/sync/mutations.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutations.spec.native.js +0 -330
- package/dist/jsx/sync/mutations.spec.native.js.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.mjs +0 -303
- package/dist/jsx/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.native.js +0 -311
- package/dist/jsx/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/jsx/sync/persistence.spec.mjs +0 -563
- package/dist/jsx/sync/persistence.spec.mjs.map +0 -1
- package/dist/jsx/sync/persistence.spec.native.js +0 -572
- package/dist/jsx/sync/persistence.spec.native.js.map +0 -1
- package/dist/jsx/sync/realtime.spec.mjs +0 -500
- package/dist/jsx/sync/realtime.spec.mjs.map +0 -1
- package/dist/jsx/sync/realtime.spec.native.js +0 -512
- package/dist/jsx/sync/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/rehydration.spec.mjs +0 -732
- package/dist/jsx/sync/rehydration.spec.mjs.map +0 -1
- package/dist/jsx/sync/rehydration.spec.native.js +0 -736
- package/dist/jsx/sync/rehydration.spec.native.js.map +0 -1
- package/dist/jsx/sync/storage.spec.mjs +0 -423
- package/dist/jsx/sync/storage.spec.mjs.map +0 -1
- package/dist/jsx/sync/storage.spec.native.js +0 -470
- package/dist/jsx/sync/storage.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/jsx/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/jsx/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.mjs +0 -914
- package/dist/jsx/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.native.js +0 -969
- package/dist/jsx/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/jsx/sync/syncModule.spec.mjs +0 -207
- package/dist/jsx/sync/syncModule.spec.mjs.map +0 -1
- package/dist/jsx/sync/syncModule.spec.native.js +0 -222
- package/dist/jsx/sync/syncModule.spec.native.js.map +0 -1
- package/dist/jsx/sync/types.spec.mjs +0 -247
- package/dist/jsx/sync/types.spec.mjs.map +0 -1
- package/dist/jsx/sync/types.spec.native.js +0 -256
- package/dist/jsx/sync/types.spec.native.js.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/jsx/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/jsx/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/jsx/util.spec.mjs +0 -20
- package/dist/jsx/util.spec.mjs.map +0 -1
- package/dist/jsx/util.spec.native.js +0 -48
- package/dist/jsx/util.spec.native.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rehydration.d.ts","sourceRoot":"","sources":["../../src/sync/rehydration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAa,iBAAiB,EAA2B,MAAM,SAAS,CAAC;AAChF,OAAO,KAAK,EAAwC,YAAY,EAAE,MAAM,SAAS,CAAC;AAElF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAkB;IAC7B,mEAAmE;IACnE,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2D;IAC5F,uEAAuE;IACvE,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAa;gBAGrC,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,eAAe,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,QAAQ,CAAC,EAAE,MAAM,IAAI;IASvB;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB;IA0BzE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,iBAAiB;IAmDzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;;;;OAOG;YACW,YAAY;IA4B1B;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;YACW,oBAAoB;IAoBlC;;OAEG;YACW,eAAe;IAuC7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAgErB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAItD;;OAEG;IACH,KAAK;CAIN"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { KVStorage } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Platform-aware persistence adapter using @multiplatform.one/store.
|
|
4
|
+
*
|
|
5
|
+
* Uses MMKV on React Native and localStorage on web, provided by the
|
|
6
|
+
* store package's platform-specific storage module.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PlatformStorageKV implements KVStorage {
|
|
9
|
+
getItem(key: string): Promise<string | null>;
|
|
10
|
+
setItem(key: string, value: string): Promise<void>;
|
|
11
|
+
removeItem(key: string): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* IndexedDB-based persistence adapter.
|
|
15
|
+
*
|
|
16
|
+
* This is the preferred storage option for modern browsers, providing
|
|
17
|
+
* robust asynchronous storage with proper transaction support and
|
|
18
|
+
* generous quota limits (typically hundreds of MB to GB).
|
|
19
|
+
*
|
|
20
|
+
* Characteristics:
|
|
21
|
+
* - **Asynchronous**: All operations are truly async and non-blocking
|
|
22
|
+
* - **Large Quota**: Usually 10% of available disk space (GB range)
|
|
23
|
+
* - **Transactional**: ACID guarantees for data consistency
|
|
24
|
+
* - **Structured**: Can store complex objects, not just strings
|
|
25
|
+
* - **Versioned**: Schema migrations supported through version upgrades
|
|
26
|
+
* - **Origin-isolated**: Each domain gets its own database namespace
|
|
27
|
+
*
|
|
28
|
+
* Architecture:
|
|
29
|
+
* - Database: "frappe-sync" (configurable)
|
|
30
|
+
* - Object Store: "kv" (simple key-value pairs)
|
|
31
|
+
* - No indexes: Simple string keys for sync state storage
|
|
32
|
+
*
|
|
33
|
+
* Transaction Model:
|
|
34
|
+
* - Read operations use "readonly" transactions (can run in parallel)
|
|
35
|
+
* - Write operations use "readwrite" transactions (serialized)
|
|
36
|
+
* - Failed operations automatically rollback the transaction
|
|
37
|
+
*
|
|
38
|
+
* Error Scenarios:
|
|
39
|
+
* - IndexedDB not available (older browsers, private browsing)
|
|
40
|
+
* - Database blocked by another connection
|
|
41
|
+
* - Quota exceeded (rare with generous limits)
|
|
42
|
+
* - Transaction abort due to concurrent modifications
|
|
43
|
+
* - Database corruption or version conflicts
|
|
44
|
+
*
|
|
45
|
+
* Performance Notes:
|
|
46
|
+
* - Connection pooling: Single database connection shared across operations
|
|
47
|
+
* - Async initialization: Database opens lazily on first access
|
|
48
|
+
* - Transaction batching: Consider batching multiple operations when possible
|
|
49
|
+
*/
|
|
50
|
+
export declare class IndexedDBKV implements KVStorage {
|
|
51
|
+
private dbPromise;
|
|
52
|
+
private readonly dbName;
|
|
53
|
+
private readonly store;
|
|
54
|
+
constructor(dbName?: string, store?: string);
|
|
55
|
+
getItem(key: string): Promise<string | null>;
|
|
56
|
+
setItem(key: string, value: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Removes a key from IndexedDB.
|
|
59
|
+
* Uses a readwrite transaction with automatic error handling.
|
|
60
|
+
*
|
|
61
|
+
* @param key - The storage key to remove
|
|
62
|
+
*/
|
|
63
|
+
removeItem(key: string): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/sync/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IAC3C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,WAAY,YAAW,SAAS;IAC3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,SAAgB,EAAE,KAAK,SAAO;IAwB1C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkB5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD;;;;;OAKG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8B7C"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import type { FrappeDoc, FrappeDocData } from "../common/types";
|
|
2
|
+
import type { DbModule } from "../db";
|
|
3
|
+
import type { NormalizedCache } from "./normalizedCache";
|
|
4
|
+
import type { BackfillArgs, Subscription, SubscriptionQuery, SyncOptions } from "./types";
|
|
5
|
+
import { VirtualPageManager } from "./virtualPageManager";
|
|
6
|
+
/**
|
|
7
|
+
* Result of `SubscriptionManager.subscribe`.
|
|
8
|
+
*/
|
|
9
|
+
export interface SubscribeResult<Data extends FrappeDocData> {
|
|
10
|
+
subscriptionId: string;
|
|
11
|
+
rows: FrappeDoc<Data>[];
|
|
12
|
+
checkpoint?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Present only when a restored (persisted) subscription was re-adopted:
|
|
15
|
+
* the returned `rows` came from the cache and this promise tracks the
|
|
16
|
+
* background network refresh. Never rejects — a failed refresh marks the
|
|
17
|
+
* subscription `stale` and resolves `{ ok: false }`.
|
|
18
|
+
*/
|
|
19
|
+
refresh?: Promise<{
|
|
20
|
+
ok: boolean;
|
|
21
|
+
error?: unknown;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export declare class SubscriptionManager {
|
|
25
|
+
private subscriptions;
|
|
26
|
+
private virtualPageManager;
|
|
27
|
+
private backfillManager;
|
|
28
|
+
/** Maps a stable query key to an existing subscriptionId for dedup */
|
|
29
|
+
private queryKeyToSubId;
|
|
30
|
+
/** Reference counts per subscriptionId for shared subscription lifecycle */
|
|
31
|
+
private subRefCounts;
|
|
32
|
+
/**
|
|
33
|
+
* Subscriptions restored from a persisted snapshot (or detached on
|
|
34
|
+
* unsubscribe while persistence is on) that no live query has re-adopted
|
|
35
|
+
* yet. They serve cache-first renders on re-subscribe, are excluded from
|
|
36
|
+
* backfill fan-out, and are GC'd after `restoredSubscriptionTTL`.
|
|
37
|
+
*/
|
|
38
|
+
private restoredByQueryKey;
|
|
39
|
+
/** Restore/detach timestamps per restored subscriptionId (for TTL GC). */
|
|
40
|
+
private restoredAt;
|
|
41
|
+
private readonly db;
|
|
42
|
+
private readonly normalizedCache;
|
|
43
|
+
private readonly options;
|
|
44
|
+
constructor(db: DbModule, normalizedCache: NormalizedCache, options?: SyncOptions);
|
|
45
|
+
subscribe<Data extends FrappeDocData>(query: SubscriptionQuery): Promise<SubscribeResult<Data>>;
|
|
46
|
+
/**
|
|
47
|
+
* Performs the initial subscription fetch (single doc via getDoc, lists via
|
|
48
|
+
* getDocList), seeds the normalized cache, and computes the CDC checkpoint
|
|
49
|
+
* as the max `modified` across returned rows. Shared by fresh subscribes
|
|
50
|
+
* and adopted-subscription refreshes so both have identical semantics.
|
|
51
|
+
*/
|
|
52
|
+
private fetchInitialRows;
|
|
53
|
+
/**
|
|
54
|
+
* Re-adopts a subscription restored from a persisted snapshot when an
|
|
55
|
+
* identical query subscribes: the cached membership renders immediately and
|
|
56
|
+
* a background refresh re-seeds from the network. Progressive queries are
|
|
57
|
+
* excluded — their VirtualPageManager state is not persisted, so they take
|
|
58
|
+
* the fresh-subscribe path.
|
|
59
|
+
*/
|
|
60
|
+
private adoptRestoredSubscription;
|
|
61
|
+
/**
|
|
62
|
+
* Network refresh for an adopted subscription with fresh-subscribe
|
|
63
|
+
* semantics: an authoritative page fetch replaces membership and recomputes
|
|
64
|
+
* the checkpoint (identical to what a brand-new subscribe would produce).
|
|
65
|
+
* On failure (offline) the cached membership and the restored CDC
|
|
66
|
+
* checkpoint are kept and the subscription is marked stale — the next
|
|
67
|
+
* backfill trigger drains changes from that checkpoint. Never rejects.
|
|
68
|
+
*/
|
|
69
|
+
private refreshAdoptedSubscription;
|
|
70
|
+
/**
|
|
71
|
+
* Registers a subscription restored from a persisted snapshot. Restored
|
|
72
|
+
* subscriptions are dormant: they hold the persisted query, CDC checkpoint,
|
|
73
|
+
* and membership for cache-first re-adoption, but are skipped by backfill
|
|
74
|
+
* fan-out until adopted. Duplicate snapshot entries for the same query
|
|
75
|
+
* (accumulated by pre-GC versions) collapse last-wins.
|
|
76
|
+
*/
|
|
77
|
+
restoreSubscription(snapshotSub: Pick<Subscription, "id" | "query"> & Partial<Pick<Subscription, "checkpoint" | "cursor" | "docIds">>): void;
|
|
78
|
+
/** True when the subscription came from a snapshot and is not yet adopted. */
|
|
79
|
+
isRestoredSubscription(subscriptionId: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Drops restored subscriptions that no query re-adopted within
|
|
82
|
+
* `restoredSubscriptionTTL` (default 30 minutes). Called before every
|
|
83
|
+
* persistence snapshot so expired entries also leave the snapshot.
|
|
84
|
+
*/
|
|
85
|
+
gcRestoredSubscriptions(now?: number): void;
|
|
86
|
+
/**
|
|
87
|
+
* Removes a subscription by id. Cached docs remain until evicted by
|
|
88
|
+
* realtime/backfill or explicit resets. This keeps other subs fast if they
|
|
89
|
+
* share the same doctypes.
|
|
90
|
+
*
|
|
91
|
+
* With persistence enabled (`persistKey`), the released subscription is
|
|
92
|
+
* detached into the restored pool instead of deleted: its query,
|
|
93
|
+
* checkpoint, and membership stay in the snapshot so a remount (or a
|
|
94
|
+
* cold offline reload) can re-adopt it cache-first. Detached subscriptions
|
|
95
|
+
* are excluded from backfill and GC'd after `restoredSubscriptionTTL`.
|
|
96
|
+
*/
|
|
97
|
+
unsubscribe(subscriptionId: string): void;
|
|
98
|
+
/** Returns subscription metadata by id. */
|
|
99
|
+
getSubscription(id: string): Subscription | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Returns current rows for a subscription from the cache.
|
|
102
|
+
* Note: This is local-only; authoritative refresh happens via backfill/realtime.
|
|
103
|
+
*/
|
|
104
|
+
getDocsForSubscription<Data extends FrappeDocData>(id: string): FrappeDoc<Data>[];
|
|
105
|
+
/**
|
|
106
|
+
* Get a specific page of documents using virtual pagination
|
|
107
|
+
*/
|
|
108
|
+
getPage<Data extends FrappeDocData>(subscriptionId: string, page: number): Promise<FrappeDoc<Data>[]>;
|
|
109
|
+
/**
|
|
110
|
+
* Get documents after a cursor (for infinite scroll)
|
|
111
|
+
*/
|
|
112
|
+
getNextBatch<Data extends FrappeDocData>(subscriptionId: string, cursorDocId: string, limit: number): Promise<FrappeDoc<Data>[]>;
|
|
113
|
+
/**
|
|
114
|
+
* Get page information
|
|
115
|
+
*/
|
|
116
|
+
getPageInfo(subscriptionId: string): import("./virtualPageManager").VirtualPageInfo;
|
|
117
|
+
/**
|
|
118
|
+
* Reconciles local state by fetching changes since stored cursors.
|
|
119
|
+
*
|
|
120
|
+
* Scopes
|
|
121
|
+
* - all: iterate all subscriptions
|
|
122
|
+
* - subscriptions: selected subscription ids
|
|
123
|
+
* - doctypes: all subscriptions matching any of these doctypes
|
|
124
|
+
* - docs: refetch specific documents (authority refresh)
|
|
125
|
+
*/
|
|
126
|
+
backfill<Data extends FrappeDocData>(args: BackfillArgs): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Backfills one subscription using CDC checkpoint and updates membership.
|
|
129
|
+
*
|
|
130
|
+
* Algorithm
|
|
131
|
+
* - Query backfill using checkpoint for CDC (Change Data Capture),
|
|
132
|
+
* draining follow-up pages while the server reports has_more (bounded)
|
|
133
|
+
* so reconnect catch-up is complete rather than one page deep
|
|
134
|
+
* - Upsert each row to cache
|
|
135
|
+
* - For each row: test client-side filters; add/remove membership accordingly
|
|
136
|
+
* - Track tombstones for deleted documents
|
|
137
|
+
* - Advance checkpoint to response checkpoint
|
|
138
|
+
* - If no filters were specified, derive membership directly from returned rows
|
|
139
|
+
*/
|
|
140
|
+
backfillSub<Data extends FrappeDocData>(subscription: Subscription, pageSize?: number): Promise<void>;
|
|
141
|
+
resortSubscriptionDocIds(subscription: Subscription): void;
|
|
142
|
+
updateSubscriptionMembership<Data extends FrappeDocData>(doc: FrappeDoc<Data>): Subscription[];
|
|
143
|
+
/**
|
|
144
|
+
* Removes a document from all subscription memberships.
|
|
145
|
+
* Returns subscriptions that had the document removed (for potential backfill).
|
|
146
|
+
*/
|
|
147
|
+
removeFromAllSubscriptions<_Data extends FrappeDocData>(doctype: string, name: string): Subscription[];
|
|
148
|
+
/** Gets all active subscriptions. */
|
|
149
|
+
getAllSubscriptions(): Map<string, Subscription>;
|
|
150
|
+
getVirtualPageManager(): VirtualPageManager;
|
|
151
|
+
insertDocumentIntoSubscription<Data extends FrappeDocData>(subscription: Subscription, doc: FrappeDoc<Data>): number | undefined;
|
|
152
|
+
private findInsertionIndex;
|
|
153
|
+
private compareDocuments;
|
|
154
|
+
clear(): void;
|
|
155
|
+
/**
|
|
156
|
+
* Cleans up expired tombstones based on age and count limits.
|
|
157
|
+
* Should be called periodically or after backfill operations.
|
|
158
|
+
*/
|
|
159
|
+
cleanupTombstones(subscriptionId?: string): void;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=subscriptionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptionManager.d.ts","sourceRoot":"","sources":["../../src/sync/subscriptionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EACV,YAAY,EAEZ,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,IAAI,SAAS,aAAa;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,sEAAsE;IACtE,OAAO,CAAC,eAAe,CAA6B;IACpD,4EAA4E;IAC5E,OAAO,CAAC,YAAY,CAA6B;IACjD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA6B;IACvD,0EAA0E;IAC1E,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,GAAE,WAAgB;IAa/E,SAAS,CAAC,IAAI,SAAS,aAAa,EACxC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAgEjC;;;;;OAKG;YACW,gBAAgB;IA2D9B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAqBjC;;;;;;;OAOG;YACW,0BAA0B;IAyBxC;;;;;;OAMG;IACH,mBAAmB,CACjB,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IA6BnE,8EAA8E;IAC9E,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAIvD;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,SAAa;IAexC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM;IA+BlC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,EAAE,MAAM;IAK1B;;;OAGG;IACH,sBAAsB,CAAC,IAAI,SAAS,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE;IA+BjF;;OAEG;IACG,OAAO,CAAC,IAAI,SAAS,aAAa,EACtC,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAI7B;;OAEG;IACG,YAAY,CAAC,IAAI,SAAS,aAAa,EAC3C,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAM7B;;OAEG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM;IAIlC;;;;;;;;OAQG;IACG,QAAQ,CAAC,IAAI,SAAS,aAAa,EAAE,IAAI,EAAE,YAAY;IAmC7D;;;;;;;;;;;;OAYG;IACG,WAAW,CAAC,IAAI,SAAS,aAAa,EAC1C,YAAY,EAAE,YAAY,EAC1B,QAAQ,SAA+B;IAsGzC,wBAAwB,CAAC,YAAY,EAAE,YAAY;IAyBnD,4BAA4B,CAAC,IAAI,SAAS,aAAa,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE;IAiC9F;;;OAGG;IACH,0BAA0B,CAAC,KAAK,SAAS,aAAa,EACpD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,YAAY,EAAE;IAiBjB,qCAAqC;IACrC,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAIhD,qBAAqB,IAAI,kBAAkB;IAI3C,8BAA8B,CAAC,IAAI,SAAS,aAAa,EACvD,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC;IAUtB,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,gBAAgB;IAsBxB,KAAK;IAQL;;;OAGG;IACH,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM;CAgC1C"}
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import type { FrappeDoc, FrappeDocData, FrappeDocValue } from "../common/types";
|
|
2
|
+
import type { FieldMergeStrategyOrFunction } from "./merge";
|
|
3
|
+
export declare enum Order {
|
|
4
|
+
Asc = "asc",
|
|
5
|
+
Desc = "desc"
|
|
6
|
+
}
|
|
7
|
+
export interface OrderByField {
|
|
8
|
+
field: string;
|
|
9
|
+
order: Order;
|
|
10
|
+
}
|
|
11
|
+
export type OrderBy = OrderByField | OrderByField[];
|
|
12
|
+
export interface SubscriptionQuery {
|
|
13
|
+
doctype: string;
|
|
14
|
+
fields?: readonly string[];
|
|
15
|
+
filters?: Array<[string, string, unknown]> | Record<string, unknown>;
|
|
16
|
+
limit?: number;
|
|
17
|
+
limitStart?: number;
|
|
18
|
+
orderBy?: OrderBy;
|
|
19
|
+
/**
|
|
20
|
+
* When true, the subscription uses the VirtualPageManager for progressive
|
|
21
|
+
* cache and cursor-based pagination. Enables `getPage()`, `getNextBatch()`,
|
|
22
|
+
* and `getPageInfo()` on the SyncModule.
|
|
23
|
+
*/
|
|
24
|
+
progressive?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Placement type for optimistic items in paginated views */
|
|
27
|
+
export declare enum PlacementType {
|
|
28
|
+
Before = "before",
|
|
29
|
+
Within = "within",
|
|
30
|
+
After = "after",
|
|
31
|
+
Unknown = "unknown"
|
|
32
|
+
}
|
|
33
|
+
/** Page boundary tracking for optimistic placement */
|
|
34
|
+
export interface PageBoundaries<Data extends FrappeDocData> {
|
|
35
|
+
firstItem?: FrappeDoc<Data>;
|
|
36
|
+
lastItem?: FrappeDoc<Data>;
|
|
37
|
+
offset: number;
|
|
38
|
+
pageSize: number;
|
|
39
|
+
temporaryOverflow?: number;
|
|
40
|
+
}
|
|
41
|
+
/** Pending rehydration types */
|
|
42
|
+
export declare enum PendingRehydrationType {
|
|
43
|
+
ItemOnly = "item-only",
|
|
44
|
+
FullRefresh = "full-refresh"
|
|
45
|
+
}
|
|
46
|
+
/** In-memory subscription tracking with backfill checkpoint and member doc ids. */
|
|
47
|
+
export interface Subscription {
|
|
48
|
+
id: string;
|
|
49
|
+
query: SubscriptionQuery;
|
|
50
|
+
/** CDC checkpoint for incremental sync */
|
|
51
|
+
checkpoint?: string;
|
|
52
|
+
/** Cursor for stable pagination */
|
|
53
|
+
cursor?: string;
|
|
54
|
+
docIds: string[];
|
|
55
|
+
/** Page boundaries for optimistic placement */
|
|
56
|
+
boundaries?: PageBoundaries<FrappeDocData>;
|
|
57
|
+
/** Page lock expiry timestamp */
|
|
58
|
+
lockExpiry?: number;
|
|
59
|
+
/** Pending rehydration strategy */
|
|
60
|
+
pendingRehydration?: PendingRehydrationType;
|
|
61
|
+
/** Metadata for tracking items outside current page */
|
|
62
|
+
metadata?: {
|
|
63
|
+
itemsBeforePage?: number;
|
|
64
|
+
itemsAfterPage?: number;
|
|
65
|
+
};
|
|
66
|
+
/** Tombstones for tracking deleted documents with timestamps */
|
|
67
|
+
tombstones?: Map<string, number>;
|
|
68
|
+
/**
|
|
69
|
+
* True when the last network refresh for this subscription failed and its
|
|
70
|
+
* membership is being served from the persisted cache. Cleared by the next
|
|
71
|
+
* successful refresh or CDC backfill.
|
|
72
|
+
*/
|
|
73
|
+
stale?: boolean;
|
|
74
|
+
}
|
|
75
|
+
export declare enum Operation {
|
|
76
|
+
Create = "create",
|
|
77
|
+
Update = "update",
|
|
78
|
+
Delete = "delete"
|
|
79
|
+
}
|
|
80
|
+
export declare enum Status {
|
|
81
|
+
Pending = "pending",
|
|
82
|
+
Confirmed = "confirmed",
|
|
83
|
+
Failed = "failed"
|
|
84
|
+
}
|
|
85
|
+
export interface FrappeDocRef {
|
|
86
|
+
doctype: string;
|
|
87
|
+
name: string;
|
|
88
|
+
}
|
|
89
|
+
export interface CreateMutation<D extends FrappeDocData> {
|
|
90
|
+
mutationId: string;
|
|
91
|
+
operation: Operation.Create;
|
|
92
|
+
doc: FrappeDoc<D>;
|
|
93
|
+
version?: string;
|
|
94
|
+
affected?: {
|
|
95
|
+
doctype: string;
|
|
96
|
+
name: string;
|
|
97
|
+
}[];
|
|
98
|
+
}
|
|
99
|
+
export interface UpdateMutation<Data extends FrappeDocData> {
|
|
100
|
+
mutationId: string;
|
|
101
|
+
operation: Operation.Update;
|
|
102
|
+
doc: FrappeDoc<Data>;
|
|
103
|
+
version?: string;
|
|
104
|
+
affected?: {
|
|
105
|
+
doctype: string;
|
|
106
|
+
name: string;
|
|
107
|
+
}[];
|
|
108
|
+
}
|
|
109
|
+
export interface DeleteMutation<Data extends FrappeDocData> {
|
|
110
|
+
mutationId: string;
|
|
111
|
+
operation: Operation.Delete;
|
|
112
|
+
version?: string;
|
|
113
|
+
doc: FrappeDoc<Data>;
|
|
114
|
+
affected?: {
|
|
115
|
+
doctype: string;
|
|
116
|
+
name: string;
|
|
117
|
+
}[];
|
|
118
|
+
}
|
|
119
|
+
export type Mutation<Data extends FrappeDocData> = CreateMutation<Data> | UpdateMutation<Data> | DeleteMutation<Data>;
|
|
120
|
+
export declare enum BackfillScope {
|
|
121
|
+
All = "all",
|
|
122
|
+
Doctypes = "doctypes",
|
|
123
|
+
Subscriptions = "subscriptions",
|
|
124
|
+
Docs = "docs"
|
|
125
|
+
}
|
|
126
|
+
export interface BackfillArgs {
|
|
127
|
+
scope: BackfillScope;
|
|
128
|
+
doctypes?: string[];
|
|
129
|
+
subscriptions?: string[];
|
|
130
|
+
docs?: {
|
|
131
|
+
doctype: string;
|
|
132
|
+
name: string;
|
|
133
|
+
}[];
|
|
134
|
+
pageSize?: number;
|
|
135
|
+
}
|
|
136
|
+
/** Types of realtime events */
|
|
137
|
+
export declare enum RealtimeEventType {
|
|
138
|
+
/** Real Frappe event: emitted to the per-doc room on every save (and on delete). */
|
|
139
|
+
DocUpdate = "doc_update",
|
|
140
|
+
/** Real Frappe event: emitted to the doctype room on every save (and on delete). */
|
|
141
|
+
ListUpdate = "list_update",
|
|
142
|
+
/** Designed wire-protocol event (forward-compat) — stock Frappe never emits it. */
|
|
143
|
+
DocChanged = "doc_changed",
|
|
144
|
+
/** Designed wire-protocol event (forward-compat) — stock Frappe never emits it. */
|
|
145
|
+
DocDeleted = "doc_deleted",
|
|
146
|
+
Connected = "connected",
|
|
147
|
+
PermEpochBump = "perm_epoch_bump"
|
|
148
|
+
}
|
|
149
|
+
export interface SyncOptions {
|
|
150
|
+
pageSize?: number;
|
|
151
|
+
persistKey?: string;
|
|
152
|
+
onConflict?: (info: {
|
|
153
|
+
doctype: string;
|
|
154
|
+
name?: string;
|
|
155
|
+
}) => void;
|
|
156
|
+
onRetry?: (info: {
|
|
157
|
+
id: string;
|
|
158
|
+
operation: Operation;
|
|
159
|
+
}) => void;
|
|
160
|
+
onBackfill?: (info: {
|
|
161
|
+
doctype: string;
|
|
162
|
+
fetched: number;
|
|
163
|
+
checkpoint?: string;
|
|
164
|
+
}) => void;
|
|
165
|
+
storage?: KVStorage;
|
|
166
|
+
versionField?: string;
|
|
167
|
+
versionFields?: Record<string, string>;
|
|
168
|
+
/**
|
|
169
|
+
* CRDT-like field merge configuration per doctype.
|
|
170
|
+
* Maps doctype → field name → merge strategy or custom function.
|
|
171
|
+
* Strategies: 'client-wins', 'server-wins', 'sum', 'max', 'min', 'union-set',
|
|
172
|
+
* or a custom `(base, client, server) => resolved` function.
|
|
173
|
+
*/
|
|
174
|
+
fieldMergeConfig?: Record<string, Record<string, FieldMergeStrategyOrFunction>>;
|
|
175
|
+
onMutationStart?: <Data extends FrappeDocData>(mutation: Mutation<Data>) => void;
|
|
176
|
+
onOptimisticApply?: (info: {
|
|
177
|
+
doctype: string;
|
|
178
|
+
name?: string;
|
|
179
|
+
operation: Operation;
|
|
180
|
+
}) => void;
|
|
181
|
+
onMutationSuccess?: <Data extends FrappeDocData>(mutation: Mutation<Data>) => void;
|
|
182
|
+
onMutationError?: <Data extends FrappeDocData>(info: {
|
|
183
|
+
mutation: Mutation<Data>;
|
|
184
|
+
err: unknown;
|
|
185
|
+
}) => void;
|
|
186
|
+
onReplayStart?: () => void;
|
|
187
|
+
onReplayComplete?: (info: {
|
|
188
|
+
anyFailed: boolean;
|
|
189
|
+
}) => void;
|
|
190
|
+
onRealtimeEvent?: (info: {
|
|
191
|
+
type: RealtimeEventType;
|
|
192
|
+
payload?: unknown;
|
|
193
|
+
}) => void;
|
|
194
|
+
onTrace?: (info: {
|
|
195
|
+
event: string;
|
|
196
|
+
details?: unknown;
|
|
197
|
+
}) => void;
|
|
198
|
+
onResetCache?: () => void;
|
|
199
|
+
onBackfillAll?: () => void;
|
|
200
|
+
/**
|
|
201
|
+
* Internal: invoked after realtime-driven cache/membership changes
|
|
202
|
+
* (doc_update/list_update reconcile, doc_deleted eviction, rehydration,
|
|
203
|
+
* connection state flips) so the sync store can notify its listeners.
|
|
204
|
+
* Wired by SyncModule; not intended for consumer use.
|
|
205
|
+
*/
|
|
206
|
+
onStoreChange?: () => void;
|
|
207
|
+
/** Connection management configuration */
|
|
208
|
+
connectionConfig?: ConnectionConfig;
|
|
209
|
+
/** Multi-tab coordination configuration */
|
|
210
|
+
tabCoordination?: TabCoordinationConfig;
|
|
211
|
+
/** Mutation TTL in milliseconds (default: 24 hours) */
|
|
212
|
+
mutationTTL?: number;
|
|
213
|
+
/** Batch size for fetching documents (default: 100) */
|
|
214
|
+
batchSize?: number;
|
|
215
|
+
/**
|
|
216
|
+
* Max CDC pages drained per backfill when the server reports has_more
|
|
217
|
+
* (default: 20). Bounds catch-up work after long offline periods in both
|
|
218
|
+
* drain paths: the subscription drain (SubscriptionManager.backfillSub)
|
|
219
|
+
* and the periodic/recovery path (BackfillManager.incrementalBackfill).
|
|
220
|
+
*/
|
|
221
|
+
backfillMaxPages?: number;
|
|
222
|
+
/** Maximum number of documents to keep in normalized cache (default: unlimited) */
|
|
223
|
+
maxCacheSize?: number;
|
|
224
|
+
/** Enable automatic mutation batching (default: false) */
|
|
225
|
+
enableBatching?: boolean;
|
|
226
|
+
/** Batch delay in milliseconds - time to wait before sending batch (default: 100ms) */
|
|
227
|
+
batchDelay?: number;
|
|
228
|
+
/** Maximum mutations per batch (default: 50) */
|
|
229
|
+
batchMaxSize?: number;
|
|
230
|
+
/** Use atomic batching - all mutations succeed or all fail (default: false) */
|
|
231
|
+
batchAtomic?: boolean;
|
|
232
|
+
/** Rate limit for mutation replay - max mutations per second (default: 10) */
|
|
233
|
+
replayRateLimit?: number;
|
|
234
|
+
/**
|
|
235
|
+
* Optional interval (in milliseconds) for periodic CDC polling.
|
|
236
|
+
* Acts as a safety net for silent socket drops. Set to 0 or omit
|
|
237
|
+
* to rely solely on event-driven backfill (focus, online, reconnect).
|
|
238
|
+
* Recommended: 30000 (30 seconds) for production.
|
|
239
|
+
*/
|
|
240
|
+
cdcInterval?: number;
|
|
241
|
+
/** Enable cursor pagination (requires server extension) */
|
|
242
|
+
useCursorPagination?: boolean;
|
|
243
|
+
/** Maximum age of tombstones in milliseconds before cleanup (default: 30 minutes) */
|
|
244
|
+
tombstoneMaxAge?: number;
|
|
245
|
+
/** Maximum number of tombstones per subscription before cleanup (default: 1000) */
|
|
246
|
+
tombstoneMaxCount?: number;
|
|
247
|
+
/**
|
|
248
|
+
* How long (in milliseconds) a subscription restored from a persisted
|
|
249
|
+
* snapshot may stay unadopted before it is garbage-collected (default:
|
|
250
|
+
* 30 minutes). Restored subscriptions are re-adopted (id, checkpoint, and
|
|
251
|
+
* cached membership reused) when an identical query subscribes; unadopted
|
|
252
|
+
* ones are excluded from backfill and dropped after this grace period.
|
|
253
|
+
* Only relevant when `persistKey` is set.
|
|
254
|
+
*/
|
|
255
|
+
restoredSubscriptionTTL?: number;
|
|
256
|
+
/** Callback when tab becomes leader */
|
|
257
|
+
onBecomeLeader?: () => void;
|
|
258
|
+
/** Callback when tab loses leadership */
|
|
259
|
+
onLoseLeadership?: () => void;
|
|
260
|
+
}
|
|
261
|
+
export interface KVStorage {
|
|
262
|
+
getItem(key: string): Promise<string | null>;
|
|
263
|
+
setItem(key: string, value: string): Promise<void>;
|
|
264
|
+
removeItem(key: string): Promise<void>;
|
|
265
|
+
}
|
|
266
|
+
/** Type of rehydration strategy */
|
|
267
|
+
export declare enum RehydrationStrategyType {
|
|
268
|
+
FetchItemOnly = "fetch-item-only",
|
|
269
|
+
FullRefresh = "full-refresh"
|
|
270
|
+
}
|
|
271
|
+
/** Rehydration strategy for updating subscriptions */
|
|
272
|
+
export interface RehydrationStrategy {
|
|
273
|
+
type: RehydrationStrategyType;
|
|
274
|
+
priority: number;
|
|
275
|
+
delay: number;
|
|
276
|
+
}
|
|
277
|
+
/** Rehydration task queued for execution */
|
|
278
|
+
export interface RehydrationTask {
|
|
279
|
+
subscriptionId: string;
|
|
280
|
+
strategy: RehydrationStrategy;
|
|
281
|
+
scheduledAt: number;
|
|
282
|
+
}
|
|
283
|
+
/** Reasons for triggering rehydration */
|
|
284
|
+
export declare enum RehydrationReason {
|
|
285
|
+
Create = "create",
|
|
286
|
+
Delete = "delete",
|
|
287
|
+
Overflow = "overflow",
|
|
288
|
+
RemoteCreate = "remote-create",
|
|
289
|
+
Uncertain = "uncertain"
|
|
290
|
+
}
|
|
291
|
+
export interface MutationJournalEntry<Data extends FrappeDocData> {
|
|
292
|
+
createdAt: number;
|
|
293
|
+
error?: unknown;
|
|
294
|
+
id: string;
|
|
295
|
+
mutation: Mutation<Data>;
|
|
296
|
+
optimisticData?: Record<string, FrappeDocValue>;
|
|
297
|
+
originalData?: Record<string, FrappeDocValue>;
|
|
298
|
+
retryCount: number;
|
|
299
|
+
sequence: number;
|
|
300
|
+
status: Status;
|
|
301
|
+
timestamp: number;
|
|
302
|
+
ttl?: number;
|
|
303
|
+
}
|
|
304
|
+
/** Status of a mutation batch */
|
|
305
|
+
export declare enum MutationBatchStatus {
|
|
306
|
+
Pending = "pending",
|
|
307
|
+
Processing = "processing",
|
|
308
|
+
Completed = "completed",
|
|
309
|
+
Failed = "failed"
|
|
310
|
+
}
|
|
311
|
+
/** Mutation batch for sending multiple mutations together */
|
|
312
|
+
export interface MutationBatch<Data extends FrappeDocData> {
|
|
313
|
+
batchId: string;
|
|
314
|
+
mutations: Mutation<Data>[];
|
|
315
|
+
createdAt: number;
|
|
316
|
+
status: MutationBatchStatus;
|
|
317
|
+
}
|
|
318
|
+
/** Connection management configuration */
|
|
319
|
+
export interface ConnectionConfig {
|
|
320
|
+
/** Base delay for reconnection (default: 1000ms) */
|
|
321
|
+
reconnectBaseDelay?: number;
|
|
322
|
+
/** Maximum delay for reconnection (default: 30000ms) */
|
|
323
|
+
reconnectMaxDelay?: number;
|
|
324
|
+
/** Jitter factor for reconnection (default: 0.25 = ±25%) */
|
|
325
|
+
reconnectJitter?: number;
|
|
326
|
+
/** Enable exponential backoff (default: true) */
|
|
327
|
+
exponentialBackoff?: boolean;
|
|
328
|
+
}
|
|
329
|
+
/** Multi-tab coordination configuration */
|
|
330
|
+
export interface TabCoordinationConfig {
|
|
331
|
+
/** Enable active tab priority leadership (default: true) */
|
|
332
|
+
activeTabPriority?: boolean;
|
|
333
|
+
/** Leader timeout in milliseconds (default: 5000ms) */
|
|
334
|
+
leaderTimeout?: number;
|
|
335
|
+
/** Grace period for handoff operations (default: 2000ms) */
|
|
336
|
+
handoffGracePeriod?: number;
|
|
337
|
+
}
|
|
338
|
+
/** Tab coordination message types */
|
|
339
|
+
export type TabMessage<Data extends FrappeDocData> = {
|
|
340
|
+
type: "heartbeat";
|
|
341
|
+
tabId: string;
|
|
342
|
+
} | {
|
|
343
|
+
type: "leadership-request";
|
|
344
|
+
tabId: string;
|
|
345
|
+
visibilityState: string;
|
|
346
|
+
} | {
|
|
347
|
+
type: "mutation";
|
|
348
|
+
mutation: Mutation<Data>;
|
|
349
|
+
} | {
|
|
350
|
+
type: "sync-state";
|
|
351
|
+
state: unknown;
|
|
352
|
+
} | {
|
|
353
|
+
type: "visibility-check";
|
|
354
|
+
fromTab: string;
|
|
355
|
+
} | {
|
|
356
|
+
type: "visibility-response";
|
|
357
|
+
tabId: string;
|
|
358
|
+
isVisible: boolean;
|
|
359
|
+
} | {
|
|
360
|
+
type: "leadership-handoff";
|
|
361
|
+
fromTab: string;
|
|
362
|
+
toTab: string;
|
|
363
|
+
state?: unknown;
|
|
364
|
+
};
|
|
365
|
+
/** Page island represents a cached range of pages */
|
|
366
|
+
export interface PageIsland {
|
|
367
|
+
startPage: number;
|
|
368
|
+
endPage: number;
|
|
369
|
+
startIndex: number;
|
|
370
|
+
endIndex: number;
|
|
371
|
+
fetchedVia: "cursor" | "offset";
|
|
372
|
+
}
|
|
373
|
+
/** Debug snapshot of a subscription's state */
|
|
374
|
+
export interface DebugSubscription {
|
|
375
|
+
id: string;
|
|
376
|
+
query: SubscriptionQuery;
|
|
377
|
+
docCount: number;
|
|
378
|
+
tombstoneCount: number;
|
|
379
|
+
checkpoint?: string;
|
|
380
|
+
cursor?: string;
|
|
381
|
+
/** Serving persisted cache after a failed network refresh. */
|
|
382
|
+
stale?: boolean;
|
|
383
|
+
/** Restored from a persisted snapshot and not yet re-adopted by a live query. */
|
|
384
|
+
restored?: boolean;
|
|
385
|
+
progressiveCache?: {
|
|
386
|
+
docIds: string[];
|
|
387
|
+
nextCursor?: string;
|
|
388
|
+
hasMore: boolean;
|
|
389
|
+
totalCount?: number;
|
|
390
|
+
lastFetchedAt?: string;
|
|
391
|
+
islands?: PageIsland[];
|
|
392
|
+
};
|
|
393
|
+
pageInfo?: {
|
|
394
|
+
currentPage: number;
|
|
395
|
+
knownPages: number;
|
|
396
|
+
totalPages: number | "unknown";
|
|
397
|
+
hasMore: boolean;
|
|
398
|
+
itemsInCache: number;
|
|
399
|
+
pageSize: number;
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
/** Debug snapshot of a mutation journal entry */
|
|
403
|
+
export interface DebugMutationEntry {
|
|
404
|
+
id: string;
|
|
405
|
+
operation: Operation;
|
|
406
|
+
doctype: string;
|
|
407
|
+
docname?: string;
|
|
408
|
+
status: Status;
|
|
409
|
+
createdAt: number;
|
|
410
|
+
retryCount: number;
|
|
411
|
+
error?: string;
|
|
412
|
+
}
|
|
413
|
+
/** Full debug state snapshot from SyncModule.__debug() */
|
|
414
|
+
export interface FrappeDebugState {
|
|
415
|
+
subscriptions: DebugSubscription[];
|
|
416
|
+
normalizedCache: {
|
|
417
|
+
size: number;
|
|
418
|
+
doctypes: {
|
|
419
|
+
doctype: string;
|
|
420
|
+
count: number;
|
|
421
|
+
}[];
|
|
422
|
+
};
|
|
423
|
+
mutationJournal: {
|
|
424
|
+
pending: DebugMutationEntry[];
|
|
425
|
+
confirmed: DebugMutationEntry[];
|
|
426
|
+
failed: DebugMutationEntry[];
|
|
427
|
+
};
|
|
428
|
+
connection: {
|
|
429
|
+
socketConnected: boolean;
|
|
430
|
+
isLeader: boolean;
|
|
431
|
+
isOnline: boolean;
|
|
432
|
+
lastBackfillAt?: string;
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=types.d.ts.map
|