@multiplatform.one/frappe 6.0.4 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +11 -3
- package/dist/esm/util.mjs.map +1 -1
- package/dist/esm/util.native.js +16 -3
- 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 +11 -3
- 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 +446 -38
- package/src/frappeReactLiveQueryGc.spec.ts +320 -0
- package/src/frappeReactNative.spec.ts +65 -0
- package/src/index.ts +10 -9
- package/src/pacer.ts +2 -2
- 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 +37 -2
- 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,121 @@
|
|
|
1
|
+
import type { ManagerOptions, Socket, SocketOptions } from "socket.io-client";
|
|
2
|
+
import type { AuthConfig } from "./core/types";
|
|
3
|
+
export type Handler = (payload: unknown) => void;
|
|
4
|
+
export declare enum RealtimePlatform {
|
|
5
|
+
Node = "node",
|
|
6
|
+
Web = "web",
|
|
7
|
+
ReactNative = "react-native"
|
|
8
|
+
}
|
|
9
|
+
export interface RealtimeConfig {
|
|
10
|
+
auth?: AuthConfig;
|
|
11
|
+
baseURL: string;
|
|
12
|
+
/**
|
|
13
|
+
* Override the port used for the Socket.IO connection.
|
|
14
|
+
*
|
|
15
|
+
* In development the Frappe SocketIO server often runs on a separate port
|
|
16
|
+
* (e.g. `FRAPPE_SOCKETIO_PORT=9000`) while the main Frappe HTTP server is
|
|
17
|
+
* on port 8000. Set this to the SocketIO port so the client connects to
|
|
18
|
+
* the right place without needing a reverse proxy.
|
|
19
|
+
*
|
|
20
|
+
* When omitted the port from `baseURL` is used as-is, which is the correct
|
|
21
|
+
* behaviour behind a production reverse proxy (e.g. nginx) that maps
|
|
22
|
+
* `/socket.io` to the SocketIO backend.
|
|
23
|
+
*/
|
|
24
|
+
socketPort?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Frappe site name, used as the Socket.IO namespace.
|
|
27
|
+
*
|
|
28
|
+
* Frappe's realtime server is multi-tenant: every site lives on its own
|
|
29
|
+
* Socket.IO namespace (`/<sitename>`) guarded by the auth middleware, and
|
|
30
|
+
* server events are only emitted to that namespace. Connecting to the
|
|
31
|
+
* root namespace `/` silently succeeds but never receives any events.
|
|
32
|
+
*
|
|
33
|
+
* Defaults to the hostname of `baseURL`, which matches Frappe's own
|
|
34
|
+
* site-name resolution for host-served sites (and the `default_site` of a
|
|
35
|
+
* standard dev bench on localhost).
|
|
36
|
+
*/
|
|
37
|
+
siteName?: string;
|
|
38
|
+
platform?: RealtimePlatform;
|
|
39
|
+
socketOptions?: Partial<ManagerOptions & SocketOptions>;
|
|
40
|
+
}
|
|
41
|
+
export declare class RealtimeModule {
|
|
42
|
+
private socket;
|
|
43
|
+
private handlerMap;
|
|
44
|
+
/** Tracks events with socket listeners attached to prevent duplicates. */
|
|
45
|
+
private attachedSocketEvents;
|
|
46
|
+
/** Stored socket event handler references for proper cleanup. */
|
|
47
|
+
private socketEventHandlers;
|
|
48
|
+
/** Active doc rooms — re-emitted on every (re)connect. */
|
|
49
|
+
private docRooms;
|
|
50
|
+
/** Active list rooms — re-emitted on every (re)connect. */
|
|
51
|
+
private listRooms;
|
|
52
|
+
private socketHealthy;
|
|
53
|
+
private isConnecting;
|
|
54
|
+
private healthyWaiters;
|
|
55
|
+
private config;
|
|
56
|
+
/** In-flight credential re-resolution (deduped across triggers). */
|
|
57
|
+
private authRefreshInflight?;
|
|
58
|
+
constructor(config: RealtimeConfig);
|
|
59
|
+
private detectPlatform;
|
|
60
|
+
private getSocketURL;
|
|
61
|
+
private getAuthOptions;
|
|
62
|
+
/**
|
|
63
|
+
* Re-resolve credentials (token function / session id) and swap them into
|
|
64
|
+
* the LIVE manager options in place. Socket.IO constructs a fresh engine
|
|
65
|
+
* from `manager.opts` on every (re)connect attempt, so mutating the opts
|
|
66
|
+
* makes the next handshake carry the refreshed token — without tearing
|
|
67
|
+
* down handlers or room subscriptions. Called on disconnect and before
|
|
68
|
+
* reconnect attempts so a token that rotated mid-session (e.g. Keycloak
|
|
69
|
+
* refresh) never strands the socket in an auth-rejected retry loop.
|
|
70
|
+
*/
|
|
71
|
+
private refreshSocketAuth;
|
|
72
|
+
private resolveHealthyWaiters;
|
|
73
|
+
private waitUntilHealthy;
|
|
74
|
+
private ensureConnected;
|
|
75
|
+
private resubscribeRooms;
|
|
76
|
+
private connect;
|
|
77
|
+
/**
|
|
78
|
+
* Tear down the socket without clearing app handlers or room subscriptions.
|
|
79
|
+
* Used by auth refresh so listeners/rooms survive credential rotation.
|
|
80
|
+
*/
|
|
81
|
+
private softDisconnect;
|
|
82
|
+
private initHandlers;
|
|
83
|
+
/**
|
|
84
|
+
* Attaches a socket listener for an event, storing the reference to prevent duplicates.
|
|
85
|
+
*/
|
|
86
|
+
private attachSocketListener;
|
|
87
|
+
/**
|
|
88
|
+
* Removes a socket listener for an event.
|
|
89
|
+
*/
|
|
90
|
+
private detachSocketListener;
|
|
91
|
+
private emitToHandlers;
|
|
92
|
+
on(event: string, handler: Handler): Promise<void>;
|
|
93
|
+
off(event: string, handler: Handler): void;
|
|
94
|
+
subscribeDoc(doctype: string, name: string): Promise<void>;
|
|
95
|
+
unsubscribeDoc(doctype: string, name: string): void;
|
|
96
|
+
/**
|
|
97
|
+
* Subscribe to list-level updates for a doctype (`list_update` events).
|
|
98
|
+
*
|
|
99
|
+
* `filters` are tracked client-side only: frappe's realtime server has a
|
|
100
|
+
* single room per doctype (`doctype_subscribe`) and does not support
|
|
101
|
+
* filtered list rooms.
|
|
102
|
+
*/
|
|
103
|
+
subscribeList(doctype: string, filters?: Record<string, unknown>): Promise<void>;
|
|
104
|
+
unsubscribeList(doctype: string): void;
|
|
105
|
+
/**
|
|
106
|
+
* Tears the socket down when the last room is released. Room membership is
|
|
107
|
+
* the socket's reason to exist: while any subscription holds a room, the
|
|
108
|
+
* infinite Socket.IO reconnection loop is the reconnect catch-up protocol
|
|
109
|
+
* working as designed — but once nothing is subscribed, that same loop is
|
|
110
|
+
* a leak (unmounted consumers leaving a dead-host socket reconnect-polling
|
|
111
|
+
* forever). Handlers and any re-added rooms survive: the next
|
|
112
|
+
* subscribeDoc/subscribeList reconnects and re-attaches everything.
|
|
113
|
+
*/
|
|
114
|
+
private teardownWhenIdle;
|
|
115
|
+
isHealthy(): boolean;
|
|
116
|
+
disconnect(): void;
|
|
117
|
+
updateAuth(auth: AuthConfig): Promise<void>;
|
|
118
|
+
emit(event: string, data: unknown): void;
|
|
119
|
+
getSocket(): Socket<import("@socket.io/component-emitter").DefaultEventsMap, import("@socket.io/component-emitter").DefaultEventsMap> | undefined;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=realtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAEjD,oBAAY,gBAAgB;IAC1B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,WAAW,iBAAiB;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;CACzD;AASD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAmC;IACrD,0EAA0E;IAC1E,OAAO,CAAC,oBAAoB,CAAqB;IACjD,iEAAiE;IACjE,OAAO,CAAC,mBAAmB,CAAiD;IAC5E,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAA8B;IAC9C,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,MAAM,CAAiB;IAC/B,oEAAoE;IACpE,OAAO,CAAC,mBAAmB,CAAC,CAAgB;gBAEhC,MAAM,EAAE,cAAc;IAOlC,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,YAAY;YA0BN,cAAc;IA2D5B;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,gBAAgB;YAeV,eAAe;IAQ7B,OAAO,CAAC,gBAAgB;YAYV,OAAO;IA0CrB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAwCpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,cAAc;IAQhB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAUpC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQnD;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtF,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IASxB,SAAS;IAIT,UAAU,IAAI,IAAI;IAOZ,UAAU,CAAC,IAAI,EAAE,UAAU;IAejC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAMjC,SAAS;CAGV"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { FrappeDoc, FrappeDocData } from "../common/types";
|
|
2
|
+
import type { DbModule } from "../db";
|
|
3
|
+
import type { NormalizedCache } from "./normalizedCache";
|
|
4
|
+
import type { VirtualSubscription } from "./virtualPageManager";
|
|
5
|
+
export declare enum BackfillReason {
|
|
6
|
+
DeleteGap = "delete-gap",
|
|
7
|
+
Initial = "initial",
|
|
8
|
+
Pagination = "pagination",
|
|
9
|
+
Periodic = "periodic",
|
|
10
|
+
Recovery = "recovery",
|
|
11
|
+
Rehydration = "rehydration",
|
|
12
|
+
RemoteCreate = "remote-create",
|
|
13
|
+
RemoteUpdate = "remote-update"
|
|
14
|
+
}
|
|
15
|
+
export declare enum BackfillStrategy {
|
|
16
|
+
CursorFetch = "cursor-fetch",
|
|
17
|
+
FullRefresh = "full-refresh",
|
|
18
|
+
GapFill = "gap-fill",
|
|
19
|
+
Incremental = "incremental",
|
|
20
|
+
PageOnly = "page-only"
|
|
21
|
+
}
|
|
22
|
+
export interface BackfillOptions {
|
|
23
|
+
maxRetries?: number;
|
|
24
|
+
pageSize?: number;
|
|
25
|
+
retryDelay?: number;
|
|
26
|
+
batchSize?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Max CDC pages drained per incremental backfill when the server reports
|
|
29
|
+
* has_more (default: 20). Fed from SyncOptions.backfillMaxPages so one
|
|
30
|
+
* knob bounds both drain paths.
|
|
31
|
+
*/
|
|
32
|
+
maxPages?: number;
|
|
33
|
+
}
|
|
34
|
+
export declare class BackfillManager {
|
|
35
|
+
private activeBackfills;
|
|
36
|
+
private backfillQueue;
|
|
37
|
+
private db;
|
|
38
|
+
private normalizedCache;
|
|
39
|
+
private options;
|
|
40
|
+
constructor(db: DbModule, normalizedCache: NormalizedCache, options?: BackfillOptions);
|
|
41
|
+
backfill(subscription: VirtualSubscription, reason: BackfillReason): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Backfill one item to fill a gap
|
|
44
|
+
*/
|
|
45
|
+
backfillOne(subscription: VirtualSubscription): Promise<FrappeDoc<FrappeDocData> | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Rehydrate current page
|
|
48
|
+
*/
|
|
49
|
+
rehydrateCurrentPage(subscription: VirtualSubscription): Promise<void>;
|
|
50
|
+
private performBackfill;
|
|
51
|
+
private determineStrategy;
|
|
52
|
+
private fullRefresh;
|
|
53
|
+
private incrementalBackfill;
|
|
54
|
+
private pageBackfill;
|
|
55
|
+
private gapBackfill;
|
|
56
|
+
private cursorFetch;
|
|
57
|
+
private fetchWithCursor;
|
|
58
|
+
private queueBackfill;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=backfill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backfill.d.ts","sourceRoot":"","sources":["../../src/sync/backfill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAmCtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,oBAAY,cAAc;IACxB,SAAS,eAAe;IACxB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;CAC/B;AAED,oBAAY,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAC5B,OAAO,aAAa;IACpB,WAAW,gBAAgB;IAC3B,QAAQ,cAAc;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAkB;gBAErB,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,GAAE,eAAoB;IAMnF,QAAQ,CAAC,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BxF;;OAEG;IACG,WAAW,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IA6B9F;;OAEG;IACG,oBAAoB,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;YAmC9D,eAAe;IAwB7B,OAAO,CAAC,iBAAiB;YA8BX,WAAW;YAgBX,mBAAmB;YA+DnB,YAAY;YA8BZ,WAAW;YAQX,WAAW;YAqBX,eAAe;IAa7B,OAAO,CAAC,aAAa;CAOtB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { FrappeDoc, FrappeDocData } from "../common/types";
|
|
2
|
+
export declare enum FilterOperator {
|
|
3
|
+
AncestorsOf = "ancestors of",
|
|
4
|
+
Between = "between",
|
|
5
|
+
DescendantsOf = "descendants of",
|
|
6
|
+
DoubleEquals = "==",
|
|
7
|
+
Equals = "=",
|
|
8
|
+
GreaterThan = ">",
|
|
9
|
+
GreaterThanOrEqual = ">=",
|
|
10
|
+
In = "in",
|
|
11
|
+
Is = "is",
|
|
12
|
+
IsNot = "is not",
|
|
13
|
+
LessThan = "<",
|
|
14
|
+
LessThanOrEqual = "<=",
|
|
15
|
+
Like = "like",
|
|
16
|
+
NotAncestorsOf = "not ancestors of",
|
|
17
|
+
NotDescendantsOf = "not descendants of",
|
|
18
|
+
NotEquals = "!=",
|
|
19
|
+
NotEqualsAngle = "<>",
|
|
20
|
+
NotIn = "not in",
|
|
21
|
+
NotLike = "not like"
|
|
22
|
+
}
|
|
23
|
+
export type FilterValue = boolean | null | number | string | undefined | unknown | unknown[];
|
|
24
|
+
export type FilterTuple = [string, FilterOperator | string, unknown];
|
|
25
|
+
export type FilterObject = Record<string, unknown>;
|
|
26
|
+
export type Filters = FilterTuple[] | FilterObject | null | undefined;
|
|
27
|
+
export declare function matchesFilters<Data extends FrappeDocData>(doc: FrappeDoc<Data>, filters: Filters): boolean;
|
|
28
|
+
export declare function extractSingleName(filters: Filters): string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Validation error for filter fields
|
|
31
|
+
*/
|
|
32
|
+
export interface FilterValidationError {
|
|
33
|
+
field: string;
|
|
34
|
+
message: string;
|
|
35
|
+
code: "unknown_field" | "invalid_operator" | "type_mismatch" | "invalid_value";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validation result
|
|
39
|
+
*/
|
|
40
|
+
export interface FilterValidationResult {
|
|
41
|
+
valid: boolean;
|
|
42
|
+
errors: FilterValidationError[];
|
|
43
|
+
warnings: string[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Schema field type (minimal interface for validation)
|
|
47
|
+
*/
|
|
48
|
+
interface SchemaField {
|
|
49
|
+
fieldname: string;
|
|
50
|
+
fieldtype: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Validate filter fields against doctype schema
|
|
54
|
+
*/
|
|
55
|
+
export declare function validateFilters(filters: Filters, schema: SchemaField[], options?: {
|
|
56
|
+
strict?: boolean;
|
|
57
|
+
}): FilterValidationResult;
|
|
58
|
+
/**
|
|
59
|
+
* Normalize filters to array format
|
|
60
|
+
*/
|
|
61
|
+
export declare function normalizeFilters(filters: Filters): FilterTuple[];
|
|
62
|
+
/**
|
|
63
|
+
* Extract field names from filters for field selection optimization
|
|
64
|
+
*/
|
|
65
|
+
export declare function extractFilterFields(filters: Filters): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Build a filter string for display purposes
|
|
68
|
+
*/
|
|
69
|
+
export declare function formatFilter(condition: FilterTuple): string;
|
|
70
|
+
/**
|
|
71
|
+
* Check if filters contain any server-only operators (like tree operators).
|
|
72
|
+
* Use this to determine if client-side filtering can be used.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* if (hasServerOnlyOperators(filters)) {
|
|
77
|
+
* // Cannot evaluate client-side, must fetch from server
|
|
78
|
+
* return await db.getDocList(doctype, { filters });
|
|
79
|
+
* } else {
|
|
80
|
+
* // Can filter client-side with matchesFilters
|
|
81
|
+
* return docs.filter(doc => matchesFilters(doc, filters));
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function hasServerOnlyOperators(filters: Filters): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Check if filters can be evaluated client-side.
|
|
88
|
+
* Returns false if filters contain tree operators or other server-only operators.
|
|
89
|
+
*/
|
|
90
|
+
export declare function canEvaluateClientSide(filters: Filters): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Check if an operator is a tree-related operator.
|
|
93
|
+
* Tree operators are: "ancestors of", "descendants of", "not ancestors of", "not descendants of"
|
|
94
|
+
*/
|
|
95
|
+
export declare function isTreeOperator(operator: FilterOperator | string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Get human-readable description of why filters can't be evaluated client-side.
|
|
98
|
+
*/
|
|
99
|
+
export declare function getClientEvaluationBlockers(filters: Filters): string[];
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/sync/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhE,oBAAY,cAAc;IACxB,WAAW,iBAAiB;IAC5B,OAAO,YAAY;IACnB,aAAa,mBAAmB;IAChC,YAAY,OAAO;IACnB,MAAM,MAAM;IACZ,WAAW,MAAM;IACjB,kBAAkB,OAAO;IACzB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,KAAK,WAAW;IAChB,QAAQ,MAAM;IACd,eAAe,OAAO;IACtB,IAAI,SAAS;IACb,cAAc,qBAAqB;IACnC,gBAAgB,uBAAuB;IACvC,SAAS,OAAO;IAChB,cAAc,OAAO;IACrB,KAAK,WAAW;IAChB,OAAO,aAAa;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC;AAE7F,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG,WAAW,EAAE,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;AAMtE,wBAAgB,cAAc,CAAC,IAAI,SAAS,aAAa,EACvD,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,EACpB,OAAO,EAAE,OAAO,GACf,OAAO,CAoBT;AA6GD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBtE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,GAAG,kBAAkB,GAAG,eAAe,GAAG,eAAe,CAAC;CAChF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAmDD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,sBAAsB,CA0HxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAWhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAK9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAe3D;AAiBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAKhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAgBtE"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import type { FrappeDoc, FrappeDocData } from "../common/types";
|
|
2
|
+
import type { DbModule } from "../db";
|
|
3
|
+
import type { RealtimeModule } from "../realtime";
|
|
4
|
+
import type { BackfillArgs, SyncOptions, FrappeDebugState, Mutation, RealtimeEventType, SubscriptionQuery } from "./types";
|
|
5
|
+
/** Realtime event forwarded to `subscribeRealtimeEvents` listeners. */
|
|
6
|
+
export interface SyncRealtimeEvent {
|
|
7
|
+
type: RealtimeEventType;
|
|
8
|
+
payload?: unknown;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Synchronization engine that provides Zero-style UX on top of Frappe's REST API.
|
|
12
|
+
*
|
|
13
|
+
* Core capabilities:
|
|
14
|
+
* - Maintains live subscriptions with realtime hints (Socket.IO events)
|
|
15
|
+
* - Local normalized cache for instant reads and optimistic updates
|
|
16
|
+
* - Mutation journal for idempotency, offline queuing, and replay
|
|
17
|
+
* - Cursors and backfill to avoid misses after disconnects or tab sleeps
|
|
18
|
+
* - Optional persistence (IndexedDB/MMKV/localStorage) and multi-tab coordination
|
|
19
|
+
* - Cross-page coordination to prevent duplicate optimistic items
|
|
20
|
+
* - Page locking for stable pagination during edits
|
|
21
|
+
* - Intelligent rehydration strategies based on operation type
|
|
22
|
+
* - Sophisticated conflict resolution with field-level merge strategies
|
|
23
|
+
*
|
|
24
|
+
* Design constraints:
|
|
25
|
+
* - All reads/writes flow through Frappe REST to respect middleware and permissions
|
|
26
|
+
* - Realtime is advisory: correctness relies on HTTP backfill, not sockets
|
|
27
|
+
* - No assumptions about framework: minimal store subscription surface
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const sync = new SyncModule(db, realtime, {
|
|
32
|
+
* pageSize: 50,
|
|
33
|
+
* persistKey: 'my-app',
|
|
34
|
+
* onConflict: (info) => console.log('Conflict:', info),
|
|
35
|
+
* fieldMergeConfig: {
|
|
36
|
+
* 'Task': {
|
|
37
|
+
* 'tags': 'union-set', // FieldMergeStrategy enum value
|
|
38
|
+
* 'priority': 'max', // pick whichever side is higher
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Subscribe to documents
|
|
44
|
+
* const { subscriptionId } = await sync.subscribe({
|
|
45
|
+
* doctype: 'Task',
|
|
46
|
+
* fields: ['name', 'subject', 'status'],
|
|
47
|
+
* filters: { project: 'PROJ-001' },
|
|
48
|
+
* orderBy: { field: 'priority', order: 'desc' },
|
|
49
|
+
* limit: 20
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* // Get documents from cache
|
|
53
|
+
* const tasks = sync.getDocsForSubscription(subscriptionId);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare class SyncModule {
|
|
57
|
+
private normalizedCache;
|
|
58
|
+
private mutationJournal;
|
|
59
|
+
private storeListeners;
|
|
60
|
+
/** Listeners registered via `subscribeRealtimeEvents`. */
|
|
61
|
+
private realtimeEventListeners;
|
|
62
|
+
private subscriptionManager;
|
|
63
|
+
/** Mutation engine for optimistic updates and conflict resolution. */
|
|
64
|
+
private mutationEngine;
|
|
65
|
+
/** Realtime event handler for Socket.IO integration. */
|
|
66
|
+
private realtimeHandler;
|
|
67
|
+
/** Persistence manager for state snapshots. */
|
|
68
|
+
private persistenceManager;
|
|
69
|
+
/** Rehydration manager for intelligent subscription updates. */
|
|
70
|
+
private rehydrationManager;
|
|
71
|
+
/** Cleanup functions returned by lifecycle subscriptions. */
|
|
72
|
+
private cleanupFocus?;
|
|
73
|
+
private cleanupFocusReplay?;
|
|
74
|
+
private cleanupOnlineBackfill?;
|
|
75
|
+
private cleanupOnlineReplay?;
|
|
76
|
+
/** Timer handle for periodic CDC polling. */
|
|
77
|
+
private cdcIntervalHandle?;
|
|
78
|
+
private readonly db;
|
|
79
|
+
private readonly realtime?;
|
|
80
|
+
private readonly options;
|
|
81
|
+
constructor(db: DbModule, realtime?: RealtimeModule, options?: SyncOptions);
|
|
82
|
+
/**
|
|
83
|
+
* Sets up lifecycle event listeners for sync triggers.
|
|
84
|
+
* Stores cleanup functions returned by each subscription.
|
|
85
|
+
*/
|
|
86
|
+
private setupWindowEvents;
|
|
87
|
+
/**
|
|
88
|
+
* Creates a subscription, seeds cache with initial rows, and stores a backfill checkpoint.
|
|
89
|
+
*
|
|
90
|
+
* With persistence enabled, a query matching a subscription restored from
|
|
91
|
+
* the snapshot is re-adopted cache-first: the returned rows come from the
|
|
92
|
+
* restored cache and a background network refresh follows (`result.refresh`).
|
|
93
|
+
* If that refresh fails (offline), the cached membership keeps serving and
|
|
94
|
+
* the subscription is marked stale until the next successful backfill.
|
|
95
|
+
*/
|
|
96
|
+
subscribe<Data extends FrappeDocData>(query: SubscriptionQuery): Promise<import("./subscriptionManager").SubscribeResult<Data>>;
|
|
97
|
+
/**
|
|
98
|
+
* Removes a subscription by id.
|
|
99
|
+
*/
|
|
100
|
+
unsubscribe(subscriptionId: string): void;
|
|
101
|
+
mutate(mutation: Mutation<FrappeDocData>): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Reconciles local state by fetching changes since stored cursors.
|
|
104
|
+
*/
|
|
105
|
+
backfill(args: BackfillArgs): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Replays pending mutations with error handling.
|
|
108
|
+
*/
|
|
109
|
+
replayPending(): Promise<void>;
|
|
110
|
+
/** Reads a single document from the local cache. */
|
|
111
|
+
getDocFromCache<T extends FrappeDocData = FrappeDocData>(doctype: string, name: string): T | undefined;
|
|
112
|
+
/** Returns subscription metadata by id. */
|
|
113
|
+
getSubscription(id: string): import("./types").Subscription | undefined;
|
|
114
|
+
/**
|
|
115
|
+
* Returns current rows for a subscription from the cache.
|
|
116
|
+
*/
|
|
117
|
+
getDocsForSubscription<Data extends FrappeDocData>(id: string): FrappeDoc<Data>[];
|
|
118
|
+
/**
|
|
119
|
+
* Get a specific page of documents using virtual pagination.
|
|
120
|
+
* Requires the subscription to have been created with `progressive: true`.
|
|
121
|
+
*/
|
|
122
|
+
getPage<Data extends FrappeDocData>(subscriptionId: string, page: number): Promise<FrappeDoc<Data>[]>;
|
|
123
|
+
/**
|
|
124
|
+
* Get the next batch of documents after a cursor for infinite scroll.
|
|
125
|
+
* Requires the subscription to have been created with `progressive: true`.
|
|
126
|
+
*/
|
|
127
|
+
getNextBatch<Data extends FrappeDocData>(subscriptionId: string, cursorDocId: string, limit: number): Promise<FrappeDoc<Data>[]>;
|
|
128
|
+
/**
|
|
129
|
+
* Get page information for a subscription.
|
|
130
|
+
*/
|
|
131
|
+
getPageInfo(subscriptionId: string): import("./virtualPageManager").VirtualPageInfo;
|
|
132
|
+
/** Refetches authoritative copies for specific documents and updates cache. */
|
|
133
|
+
refetchDocs(docs: {
|
|
134
|
+
doctype: string;
|
|
135
|
+
name: string;
|
|
136
|
+
}[]): Promise<void>;
|
|
137
|
+
/** Adds a store listener; returns an unsubscribe function. */
|
|
138
|
+
subscribeStore(listener: () => void): () => void;
|
|
139
|
+
/**
|
|
140
|
+
* Registers a listener for raw realtime events (doc_update, list_update,
|
|
141
|
+
* doc_deleted, connected, …). Useful for consumers that manage their own
|
|
142
|
+
* fetching (e.g. server-side paginated tables) but still want live
|
|
143
|
+
* invalidation hints. Returns an unsubscribe function.
|
|
144
|
+
*/
|
|
145
|
+
subscribeRealtimeEvents(listener: (event: SyncRealtimeEvent) => void): () => void;
|
|
146
|
+
/**
|
|
147
|
+
* Joins the realtime doctype room without creating a data subscription
|
|
148
|
+
* (refcounted). Pair with `unwatchDoctype` on cleanup. Used by consumers
|
|
149
|
+
* that fetch their own data but need the doctype's realtime hints.
|
|
150
|
+
*/
|
|
151
|
+
watchDoctype(doctype: string): void;
|
|
152
|
+
/** Releases one `watchDoctype` reference. */
|
|
153
|
+
unwatchDoctype(doctype: string): void;
|
|
154
|
+
/**
|
|
155
|
+
* Live socket connection snapshot. `connected` is the state right now;
|
|
156
|
+
* `everConnected` distinguishes "reconnecting" from "realtime never up"
|
|
157
|
+
* (fixture mode, SSR, or no realtime module). Store listeners are
|
|
158
|
+
* notified on every flip, so read this inside a `subscribeStore` callback
|
|
159
|
+
* for a reactive indicator.
|
|
160
|
+
*/
|
|
161
|
+
getConnectionState(): {
|
|
162
|
+
connected: boolean;
|
|
163
|
+
everConnected: boolean;
|
|
164
|
+
};
|
|
165
|
+
/** Notifies listeners, schedules persistence, and broadcasts cross-tab changes. */
|
|
166
|
+
private emit;
|
|
167
|
+
/** Clears subscriptions, cache, journal, and temp id mappings. */
|
|
168
|
+
resetCache(): void;
|
|
169
|
+
/** Cleanup and dispose of resources */
|
|
170
|
+
dispose(): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* Returns a snapshot of internal state for devtools inspection.
|
|
173
|
+
* Prefixed with __ to signal internal/debug use only.
|
|
174
|
+
*/
|
|
175
|
+
__debug(): FrappeDebugState;
|
|
176
|
+
/**
|
|
177
|
+
* Checks if this tab is the leader for multi-tab coordination.
|
|
178
|
+
*/
|
|
179
|
+
isLeader(): boolean;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { FrappeDoc, FrappeDocData, FrappeDocValue } from "../common/types";
|
|
2
|
+
export interface ChildTableRow<_Data extends FrappeDocData = FrappeDocData> {
|
|
3
|
+
name: string;
|
|
4
|
+
idx: number | null;
|
|
5
|
+
parent: string | null;
|
|
6
|
+
parentfield: string | null;
|
|
7
|
+
parenttype: string | null;
|
|
8
|
+
doctype?: string | null;
|
|
9
|
+
[key: string]: FrappeDocValue;
|
|
10
|
+
}
|
|
11
|
+
export declare enum MergeStrategy {
|
|
12
|
+
ClientWins = "client-wins",
|
|
13
|
+
ServerWins = "server-wins"
|
|
14
|
+
}
|
|
15
|
+
export declare enum FieldMergeStrategy {
|
|
16
|
+
ClientWins = "client-wins",
|
|
17
|
+
ServerWins = "server-wins",
|
|
18
|
+
Sum = "sum",
|
|
19
|
+
Max = "max",
|
|
20
|
+
Min = "min",
|
|
21
|
+
UnionSet = "union-set"
|
|
22
|
+
}
|
|
23
|
+
export type FieldMergeStrategyOrFunction = FieldMergeStrategy | ((base: FrappeDocValue, client: FrappeDocValue, server: FrappeDocValue) => FrappeDocValue);
|
|
24
|
+
export declare function isObject(value: FrappeDocValue): value is Record<string, FrappeDocValue>;
|
|
25
|
+
export interface MergeResult<Data extends FrappeDocData = FrappeDocData> {
|
|
26
|
+
merged: FrappeDoc<Data>;
|
|
27
|
+
conflicts: string[];
|
|
28
|
+
hasConflicts: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface ObjectMergeResult {
|
|
31
|
+
merged: Record<string, FrappeDocValue>;
|
|
32
|
+
hasConflicts: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface MergeFieldOptions {
|
|
35
|
+
isChildTable?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface DoctypeConfig {
|
|
38
|
+
defaultStrategy?: MergeStrategy;
|
|
39
|
+
fields?: Record<string, FieldMergeStrategyOrFunction>;
|
|
40
|
+
}
|
|
41
|
+
export interface MergeConfig {
|
|
42
|
+
defaultStrategy: MergeStrategy;
|
|
43
|
+
doctypes?: Record<string, DoctypeConfig>;
|
|
44
|
+
}
|
|
45
|
+
export declare function getFieldMergeStrategy(fieldName: string, config?: MergeConfig, doctype?: string): FieldMergeStrategyOrFunction;
|
|
46
|
+
export interface MergeStrategyResult {
|
|
47
|
+
value: FrappeDocValue;
|
|
48
|
+
hasConflict: boolean;
|
|
49
|
+
}
|
|
50
|
+
export declare function applyMergeStrategy(fieldName: string, base: FrappeDocValue, client: FrappeDocValue, server: FrappeDocValue, strategy: FieldMergeStrategyOrFunction): MergeStrategyResult;
|
|
51
|
+
export declare function mergeFieldValue(base: FrappeDocValue, client: FrappeDocValue, options?: MergeFieldOptions): FrappeDocValue;
|
|
52
|
+
export declare function merge<Data extends FrappeDocData = FrappeDocData>(base: FrappeDoc<Data> | undefined, client: FrappeDoc<Data>, server: FrappeDoc<Data>, config?: MergeConfig, doctype?: string): MergeResult<Data>;
|
|
53
|
+
export declare function mergeChildTable(baseArray: FrappeDocValue[], clientArray: FrappeDocValue[], serverArray?: FrappeDocValue[], config?: MergeConfig): FrappeDocValue[];
|
|
54
|
+
export declare function deepEqual(valueA: FrappeDocValue, valueB: FrappeDocValue): boolean;
|
|
55
|
+
export declare function isChildTableRow<Data extends FrappeDocData = FrappeDocData>(value: unknown): value is ChildTableRow<Data>;
|
|
56
|
+
export declare function isChildTableArray(value1: unknown, value2: unknown, ...values: unknown[]): boolean;
|
|
57
|
+
export declare function isChildTableArray(...values: unknown[]): boolean | null;
|
|
58
|
+
export declare function stripNullsFromChildRow<Data extends FrappeDocData = FrappeDocData>(row: ChildTableRow<Data>): Partial<ChildTableRow<Data>>;
|
|
59
|
+
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/sync/merge.ts"],"names":[],"mappings":"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"}
|