@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
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { RealtimeEventType, RehydrationReason } from "./types.mjs";
|
|
2
2
|
class RealtimeHandler {
|
|
3
|
+
reconnectAttempts = 0;
|
|
4
|
+
reconnectTimer;
|
|
5
|
+
hasConnected = false;
|
|
6
|
+
/** Live socket state: true between `connected` and `disconnect` events. */
|
|
7
|
+
connected = false;
|
|
8
|
+
connectionConfig;
|
|
9
|
+
/** Refcount of active subscriptions per doctype — drives doctype room membership. */
|
|
10
|
+
watchedDoctypes = /* @__PURE__ */new Map();
|
|
11
|
+
/** In-flight authoritative fetches, deduping concurrent doc_update/list_update pairs. */
|
|
12
|
+
inflightFetches = /* @__PURE__ */new Map();
|
|
13
|
+
db;
|
|
14
|
+
realtime;
|
|
15
|
+
normalizedCache;
|
|
16
|
+
subscriptionManager;
|
|
17
|
+
rehydrationManager;
|
|
18
|
+
options;
|
|
3
19
|
constructor(db, realtime, normalizedCache, subscriptionManager, rehydrationManager, options = {}) {
|
|
4
20
|
this.db = db;
|
|
5
21
|
this.realtime = realtime;
|
|
@@ -16,21 +32,40 @@ class RealtimeHandler {
|
|
|
16
32
|
this.setupRealtimeHandlers();
|
|
17
33
|
this.setupConnectionManagement();
|
|
18
34
|
}
|
|
19
|
-
db;
|
|
20
|
-
realtime;
|
|
21
|
-
normalizedCache;
|
|
22
|
-
subscriptionManager;
|
|
23
|
-
rehydrationManager;
|
|
24
|
-
options;
|
|
25
|
-
reconnectAttempts = 0;
|
|
26
|
-
reconnectTimer;
|
|
27
|
-
hasConnected = false;
|
|
28
|
-
connectionConfig;
|
|
29
35
|
/**
|
|
30
36
|
* Sets up realtime event handlers for document changes.
|
|
37
|
+
*
|
|
38
|
+
* Real Frappe (v15) wire protocol, verified live against a stock bench
|
|
39
|
+
* (see .test-evidence/storybook-rubric/p-results/frappe-realtime-live-e2e.md):
|
|
40
|
+
* - `doc_update` `{doctype, name, modified}` — emitted to the per-doc room
|
|
41
|
+
* `doc:{doctype}/{name}` on every save.
|
|
42
|
+
* - `list_update` `{doctype, name, user}` — emitted to the doctype room
|
|
43
|
+
* `doctype:{doctype}` on every save of a non-single, non-child doctype.
|
|
44
|
+
* - Deletion emits the SAME two events (payload indistinguishable from an
|
|
45
|
+
* update) — there is NO `doc_deleted` event. Deletions are detected here
|
|
46
|
+
* opportunistically when the authoritative re-fetch 404s, but the durable
|
|
47
|
+
* deletion signal remains the tombstone/CDC backfill (`Deleted Document`
|
|
48
|
+
* doctype maintained by the `live` app's on_trash hook).
|
|
49
|
+
*
|
|
50
|
+
* Both real events funnel into the same fetch-and-reconcile path, deduped
|
|
51
|
+
* so a doc_update/list_update pair for the same doc costs one fetch.
|
|
31
52
|
*/
|
|
32
53
|
setupRealtimeHandlers() {
|
|
33
54
|
if (!this.realtime) return;
|
|
55
|
+
this.realtime?.on("doc_update", async payload => {
|
|
56
|
+
if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
|
|
57
|
+
type: RealtimeEventType.DocUpdate,
|
|
58
|
+
payload
|
|
59
|
+
});
|
|
60
|
+
return this.onDocChanged(payload);
|
|
61
|
+
});
|
|
62
|
+
this.realtime?.on("list_update", async payload => {
|
|
63
|
+
if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
|
|
64
|
+
type: RealtimeEventType.ListUpdate,
|
|
65
|
+
payload
|
|
66
|
+
});
|
|
67
|
+
return this.onDocChanged(payload);
|
|
68
|
+
});
|
|
34
69
|
this.realtime?.on("doc_changed", async payload => {
|
|
35
70
|
if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
|
|
36
71
|
type: RealtimeEventType.DocChanged,
|
|
@@ -72,6 +107,7 @@ class RealtimeHandler {
|
|
|
72
107
|
*/
|
|
73
108
|
onConnected() {
|
|
74
109
|
this.hasConnected = true;
|
|
110
|
+
this.connected = true;
|
|
75
111
|
this.reconnectAttempts = 0;
|
|
76
112
|
if (this.reconnectTimer) {
|
|
77
113
|
clearTimeout(this.reconnectTimer);
|
|
@@ -85,6 +121,7 @@ class RealtimeHandler {
|
|
|
85
121
|
if (this.options.onBackfillAll) {
|
|
86
122
|
this.options.onBackfillAll();
|
|
87
123
|
}
|
|
124
|
+
this.options.onStoreChange?.();
|
|
88
125
|
console.debug("[RealtimeHandler] Connected to realtime server");
|
|
89
126
|
}
|
|
90
127
|
/**
|
|
@@ -92,18 +129,24 @@ class RealtimeHandler {
|
|
|
92
129
|
*/
|
|
93
130
|
onDisconnected() {
|
|
94
131
|
console.debug("[RealtimeHandler] Disconnected from realtime server");
|
|
132
|
+
this.connected = false;
|
|
133
|
+
this.options.onStoreChange?.();
|
|
95
134
|
if (this.hasConnected) {
|
|
96
135
|
this.scheduleReconnection();
|
|
97
136
|
}
|
|
98
137
|
}
|
|
99
138
|
/**
|
|
100
|
-
*
|
|
139
|
+
* No-op placeholder retained for the disconnect backoff schedule below.
|
|
140
|
+
* Transport reconnect is owned by Socket.IO inside RealtimeModule; this
|
|
141
|
+
* layer only tracks attempts for logging / future health hooks.
|
|
101
142
|
*/
|
|
102
143
|
attemptConnection() {
|
|
103
144
|
if (!this.realtime) return;
|
|
104
145
|
}
|
|
105
146
|
/**
|
|
106
|
-
* Schedules a reconnection
|
|
147
|
+
* Schedules a reconnection *watchdog* tick with exponential backoff and jitter.
|
|
148
|
+
* Does not open sockets — RealtimeModule already reconnects. Kept so disconnect
|
|
149
|
+
* storms remain observable (and existing unit tests stay meaningful).
|
|
107
150
|
*/
|
|
108
151
|
scheduleReconnection() {
|
|
109
152
|
if (this.reconnectTimer) {
|
|
@@ -129,12 +172,61 @@ class RealtimeHandler {
|
|
|
129
172
|
delay = Math.round(delay + jitter);
|
|
130
173
|
return Math.max(this.connectionConfig.reconnectBaseDelay, Math.min(delay, this.connectionConfig.reconnectMaxDelay));
|
|
131
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Join the realtime doctype room for a doctype (refcounted). Called by the
|
|
177
|
+
* sync module whenever a subscription for the doctype is added. Room
|
|
178
|
+
* membership survives reconnects — RealtimeModule re-joins tracked rooms on
|
|
179
|
+
* every `connect`.
|
|
180
|
+
*
|
|
181
|
+
* Note: only doctype-level rooms are joined. `list_update` fires for every
|
|
182
|
+
* save of a regular doctype, which covers doc updates too; per-doc rooms
|
|
183
|
+
* would only add coverage for single/read-only doctypes.
|
|
184
|
+
*/
|
|
185
|
+
watchDoctype(doctype) {
|
|
186
|
+
const count = (this.watchedDoctypes.get(doctype) ?? 0) + 1;
|
|
187
|
+
this.watchedDoctypes.set(doctype, count);
|
|
188
|
+
if (count === 1 && this.realtime) {
|
|
189
|
+
Promise.resolve(this.realtime.subscribeList(doctype)).catch(err => console.warn(`[RealtimeHandler] Failed to join doctype room ${doctype}:`, err));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/** Release one reference to a doctype room; leaves the room on the last one. */
|
|
193
|
+
unwatchDoctype(doctype) {
|
|
194
|
+
const count = (this.watchedDoctypes.get(doctype) ?? 0) - 1;
|
|
195
|
+
if (count > 0) {
|
|
196
|
+
this.watchedDoctypes.set(doctype, count);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
this.watchedDoctypes.delete(doctype);
|
|
200
|
+
this.realtime?.unsubscribeList(doctype);
|
|
201
|
+
}
|
|
202
|
+
/** Leave all doctype rooms (used by cache resets/disposal). */
|
|
203
|
+
unwatchAll() {
|
|
204
|
+
if (this.realtime) {
|
|
205
|
+
for (const doctype of this.watchedDoctypes.keys()) {
|
|
206
|
+
this.realtime.unsubscribeList(doctype);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
this.watchedDoctypes.clear();
|
|
210
|
+
}
|
|
132
211
|
/**
|
|
133
212
|
* Realtime handler: authoritative document changed.
|
|
134
213
|
* Fetches document via REST with current user context to respect permissions,
|
|
135
214
|
* updates cache, and reconciles subscription membership.
|
|
215
|
+
*
|
|
216
|
+
* Concurrent events for the same document (frappe emits doc_update AND
|
|
217
|
+
* list_update per save) share a single in-flight fetch.
|
|
136
218
|
*/
|
|
137
|
-
|
|
219
|
+
onDocChanged(payload) {
|
|
220
|
+
const key = `${payload?.doctype}\0${payload?.name}`;
|
|
221
|
+
const inflight = this.inflightFetches.get(key);
|
|
222
|
+
if (inflight) return inflight;
|
|
223
|
+
const fetchPromise = this.fetchAndReconcile(payload).finally(() => {
|
|
224
|
+
this.inflightFetches.delete(key);
|
|
225
|
+
});
|
|
226
|
+
this.inflightFetches.set(key, fetchPromise);
|
|
227
|
+
return fetchPromise;
|
|
228
|
+
}
|
|
229
|
+
async fetchAndReconcile(payload) {
|
|
138
230
|
try {
|
|
139
231
|
const document = await this.db.getDoc(payload.doctype, payload.name);
|
|
140
232
|
this.normalizedCache.upsert(document);
|
|
@@ -142,7 +234,12 @@ class RealtimeHandler {
|
|
|
142
234
|
for (const subscription of subscriptionsNeedingRehydration) {
|
|
143
235
|
this.rehydrationManager?.scheduleRehydration(subscription, RehydrationReason.RemoteCreate);
|
|
144
236
|
}
|
|
237
|
+
this.options.onStoreChange?.();
|
|
145
238
|
} catch (err) {
|
|
239
|
+
if (err?.status === 404) {
|
|
240
|
+
await this.onDocDeleted(payload);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
146
243
|
console.warn(`Failed to fetch document ${payload?.doctype}/${payload?.name} during realtime update:`, err);
|
|
147
244
|
}
|
|
148
245
|
}
|
|
@@ -159,6 +256,7 @@ class RealtimeHandler {
|
|
|
159
256
|
for (const subscription of affectedSubscriptions) {
|
|
160
257
|
this.rehydrationManager?.scheduleRehydration(subscription, RehydrationReason.Delete);
|
|
161
258
|
}
|
|
259
|
+
this.options.onStoreChange?.();
|
|
162
260
|
} catch (err) {
|
|
163
261
|
console.warn(`Failed to process doc_deleted for ${payload?.doctype}/${payload?.name}:`, err);
|
|
164
262
|
}
|
|
@@ -172,6 +270,18 @@ class RealtimeHandler {
|
|
|
172
270
|
getIsConnected() {
|
|
173
271
|
return this.hasConnected;
|
|
174
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* Live connection snapshot for reconnect indicators.
|
|
275
|
+
* `connected` tracks the socket right now; `everConnected` distinguishes
|
|
276
|
+
* "reconnecting" (was up, dropped) from "never had realtime" (fixtures,
|
|
277
|
+
* SSR, no realtime module).
|
|
278
|
+
*/
|
|
279
|
+
getConnectionState() {
|
|
280
|
+
return {
|
|
281
|
+
connected: this.connected,
|
|
282
|
+
everConnected: this.hasConnected
|
|
283
|
+
};
|
|
284
|
+
}
|
|
175
285
|
/**
|
|
176
286
|
* Disposes of resources and clears timers.
|
|
177
287
|
*/
|
|
@@ -180,6 +290,7 @@ class RealtimeHandler {
|
|
|
180
290
|
clearTimeout(this.reconnectTimer);
|
|
181
291
|
this.reconnectTimer = void 0;
|
|
182
292
|
}
|
|
293
|
+
this.unwatchAll();
|
|
183
294
|
if (this.realtime) {
|
|
184
295
|
this.realtime?.disconnect();
|
|
185
296
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RealtimeEventType","RehydrationReason","RealtimeHandler","
|
|
1
|
+
{"version":3,"names":["RealtimeEventType","RehydrationReason","RealtimeHandler","reconnectAttempts","reconnectTimer","hasConnected","connected","connectionConfig","watchedDoctypes","Map","inflightFetches","db","realtime","normalizedCache","subscriptionManager","rehydrationManager","options","constructor","reconnectBaseDelay","reconnectMaxDelay","reconnectJitter","exponentialBackoff","setupRealtimeHandlers","setupConnectionManagement","on","payload","onRealtimeEvent","type","DocUpdate","onDocChanged","ListUpdate","DocChanged","DocDeleted","onDocDeleted","PermEpochBump","onResetCache","onConnected","onDisconnected","attemptConnection","clearTimeout","Connected","onBackfillAll","onStoreChange","console","debug","scheduleReconnection","delay","calculateReconnectDelay","setTimeout","Math","min","jitterRange","jitter","random","round","max","watchDoctype","doctype","count","get","set","Promise","resolve","subscribeList","catch","err","warn","unwatchDoctype","delete","unsubscribeList","unwatchAll","keys","clear","key","name","inflight","fetchPromise","fetchAndReconcile","finally","document","getDoc","upsert","subscriptionsNeedingRehydration","updateSubscriptionMembership","subscription","scheduleRehydration","RemoteCreate","status","remove","affectedSubscriptions","removeFromAllSubscriptions","Delete","isRealtimeHealthy","isHealthy","getIsConnected","getConnectionState","everConnected","dispose","disconnect"],"sources":["../../../src/sync/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -39,24 +39,25 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
39
39
|
_class_call_check(this, RealtimeHandler2);
|
|
40
40
|
var _ref, _ref1, _ref2, _ref3;
|
|
41
41
|
var _options_connectionConfig, _options_connectionConfig1, _options_connectionConfig2, _options_connectionConfig3;
|
|
42
|
+
_define_property(this, "reconnectAttempts", 0);
|
|
43
|
+
_define_property(this, "reconnectTimer", void 0);
|
|
44
|
+
_define_property(this, "hasConnected", false);
|
|
45
|
+
_define_property(this, "connected", false);
|
|
46
|
+
_define_property(this, "connectionConfig", void 0);
|
|
47
|
+
_define_property(this, "watchedDoctypes", /* @__PURE__ */new Map());
|
|
48
|
+
_define_property(this, "inflightFetches", /* @__PURE__ */new Map());
|
|
42
49
|
_define_property(this, "db", void 0);
|
|
43
50
|
_define_property(this, "realtime", void 0);
|
|
44
51
|
_define_property(this, "normalizedCache", void 0);
|
|
45
52
|
_define_property(this, "subscriptionManager", void 0);
|
|
46
53
|
_define_property(this, "rehydrationManager", void 0);
|
|
47
54
|
_define_property(this, "options", void 0);
|
|
48
|
-
_define_property(this, "reconnectAttempts", void 0);
|
|
49
|
-
_define_property(this, "reconnectTimer", void 0);
|
|
50
|
-
_define_property(this, "hasConnected", void 0);
|
|
51
|
-
_define_property(this, "connectionConfig", void 0);
|
|
52
55
|
this.db = db;
|
|
53
56
|
this.realtime = realtime;
|
|
54
57
|
this.normalizedCache = normalizedCache;
|
|
55
58
|
this.subscriptionManager = subscriptionManager;
|
|
56
59
|
this.rehydrationManager = rehydrationManager;
|
|
57
60
|
this.options = options;
|
|
58
|
-
this.reconnectAttempts = 0;
|
|
59
|
-
this.hasConnected = false;
|
|
60
61
|
this.connectionConfig = {
|
|
61
62
|
reconnectBaseDelay: (_ref = (_options_connectionConfig = options.connectionConfig) === null || _options_connectionConfig === void 0 ? void 0 : _options_connectionConfig.reconnectBaseDelay) !== null && _ref !== void 0 ? _ref : 1e3,
|
|
62
63
|
reconnectMaxDelay: (_ref1 = (_options_connectionConfig1 = options.connectionConfig) === null || _options_connectionConfig1 === void 0 ? void 0 : _options_connectionConfig1.reconnectMaxDelay) !== null && _ref1 !== void 0 ? _ref1 : 3e4,
|
|
@@ -71,26 +72,55 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
71
72
|
value: (
|
|
72
73
|
/**
|
|
73
74
|
* Sets up realtime event handlers for document changes.
|
|
75
|
+
*
|
|
76
|
+
* Real Frappe (v15) wire protocol, verified live against a stock bench
|
|
77
|
+
* (see .test-evidence/storybook-rubric/p-results/frappe-realtime-live-e2e.md):
|
|
78
|
+
* - `doc_update` `{doctype, name, modified}` — emitted to the per-doc room
|
|
79
|
+
* `doc:{doctype}/{name}` on every save.
|
|
80
|
+
* - `list_update` `{doctype, name, user}` — emitted to the doctype room
|
|
81
|
+
* `doctype:{doctype}` on every save of a non-single, non-child doctype.
|
|
82
|
+
* - Deletion emits the SAME two events (payload indistinguishable from an
|
|
83
|
+
* update) — there is NO `doc_deleted` event. Deletions are detected here
|
|
84
|
+
* opportunistically when the authoritative re-fetch 404s, but the durable
|
|
85
|
+
* deletion signal remains the tombstone/CDC backfill (`Deleted Document`
|
|
86
|
+
* doctype maintained by the `live` app's on_trash hook).
|
|
87
|
+
*
|
|
88
|
+
* Both real events funnel into the same fetch-and-reconcile path, deduped
|
|
89
|
+
* so a doc_update/list_update pair for the same doc costs one fetch.
|
|
74
90
|
*/
|
|
75
91
|
function setupRealtimeHandlers() {
|
|
76
92
|
var _this = this;
|
|
77
|
-
var _this_realtime, _this_realtime1, _this_realtime2, _this_realtime3, _this_realtime4;
|
|
93
|
+
var _this_realtime, _this_realtime1, _this_realtime2, _this_realtime3, _this_realtime4, _this_realtime5, _this_realtime6;
|
|
78
94
|
if (!this.realtime) return;
|
|
79
|
-
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.on("
|
|
95
|
+
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.on("doc_update", async function (payload) {
|
|
96
|
+
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
97
|
+
type: RealtimeEventType.DocUpdate,
|
|
98
|
+
payload
|
|
99
|
+
});
|
|
100
|
+
return _this.onDocChanged(payload);
|
|
101
|
+
});
|
|
102
|
+
(_this_realtime1 = this.realtime) === null || _this_realtime1 === void 0 ? void 0 : _this_realtime1.on("list_update", async function (payload) {
|
|
103
|
+
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
104
|
+
type: RealtimeEventType.ListUpdate,
|
|
105
|
+
payload
|
|
106
|
+
});
|
|
107
|
+
return _this.onDocChanged(payload);
|
|
108
|
+
});
|
|
109
|
+
(_this_realtime2 = this.realtime) === null || _this_realtime2 === void 0 ? void 0 : _this_realtime2.on("doc_changed", async function (payload) {
|
|
80
110
|
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
81
111
|
type: RealtimeEventType.DocChanged,
|
|
82
112
|
payload
|
|
83
113
|
});
|
|
84
114
|
return _this.onDocChanged(payload);
|
|
85
115
|
});
|
|
86
|
-
(
|
|
116
|
+
(_this_realtime3 = this.realtime) === null || _this_realtime3 === void 0 ? void 0 : _this_realtime3.on("doc_deleted", async function (payload) {
|
|
87
117
|
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
88
118
|
type: RealtimeEventType.DocDeleted,
|
|
89
119
|
payload
|
|
90
120
|
});
|
|
91
121
|
return _this.onDocDeleted(payload);
|
|
92
122
|
});
|
|
93
|
-
(
|
|
123
|
+
(_this_realtime4 = this.realtime) === null || _this_realtime4 === void 0 ? void 0 : _this_realtime4.on("perm_epoch_bump", function () {
|
|
94
124
|
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
95
125
|
type: RealtimeEventType.PermEpochBump
|
|
96
126
|
});
|
|
@@ -98,10 +128,10 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
98
128
|
_this.options.onResetCache();
|
|
99
129
|
}
|
|
100
130
|
});
|
|
101
|
-
(
|
|
131
|
+
(_this_realtime5 = this.realtime) === null || _this_realtime5 === void 0 ? void 0 : _this_realtime5.on("connected", function () {
|
|
102
132
|
_this.onConnected();
|
|
103
133
|
});
|
|
104
|
-
(
|
|
134
|
+
(_this_realtime6 = this.realtime) === null || _this_realtime6 === void 0 ? void 0 : _this_realtime6.on("disconnect", function () {
|
|
105
135
|
_this.onDisconnected();
|
|
106
136
|
});
|
|
107
137
|
})
|
|
@@ -122,7 +152,9 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
122
152
|
* Handles successful connection.
|
|
123
153
|
*/
|
|
124
154
|
function onConnected() {
|
|
155
|
+
var _this_options_onStoreChange, _this_options;
|
|
125
156
|
this.hasConnected = true;
|
|
157
|
+
this.connected = true;
|
|
126
158
|
this.reconnectAttempts = 0;
|
|
127
159
|
if (this.reconnectTimer) {
|
|
128
160
|
clearTimeout(this.reconnectTimer);
|
|
@@ -136,6 +168,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
136
168
|
if (this.options.onBackfillAll) {
|
|
137
169
|
this.options.onBackfillAll();
|
|
138
170
|
}
|
|
171
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
139
172
|
console.debug("[RealtimeHandler] Connected to realtime server");
|
|
140
173
|
})
|
|
141
174
|
}, {
|
|
@@ -145,7 +178,10 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
145
178
|
* Handles disconnection with automatic reconnection.
|
|
146
179
|
*/
|
|
147
180
|
function onDisconnected() {
|
|
181
|
+
var _this_options_onStoreChange, _this_options;
|
|
148
182
|
console.debug("[RealtimeHandler] Disconnected from realtime server");
|
|
183
|
+
this.connected = false;
|
|
184
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
149
185
|
if (this.hasConnected) {
|
|
150
186
|
this.scheduleReconnection();
|
|
151
187
|
}
|
|
@@ -154,18 +190,20 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
154
190
|
key: "attemptConnection",
|
|
155
191
|
value: (
|
|
156
192
|
/**
|
|
157
|
-
*
|
|
193
|
+
* No-op placeholder retained for the disconnect backoff schedule below.
|
|
194
|
+
* Transport reconnect is owned by Socket.IO inside RealtimeModule; this
|
|
195
|
+
* layer only tracks attempts for logging / future health hooks.
|
|
158
196
|
*/
|
|
159
197
|
function attemptConnection() {
|
|
160
198
|
if (!this.realtime) return;
|
|
161
199
|
})
|
|
162
200
|
}, {
|
|
163
201
|
key: "scheduleReconnection",
|
|
164
|
-
value:
|
|
165
|
-
// RealtimeModule handles reconnection internally via its reconnection config.
|
|
166
|
-
// Handlers are already attached in the constructor via setupRealtimeHandlers().
|
|
202
|
+
value: (
|
|
167
203
|
/**
|
|
168
|
-
* Schedules a reconnection
|
|
204
|
+
* Schedules a reconnection *watchdog* tick with exponential backoff and jitter.
|
|
205
|
+
* Does not open sockets — RealtimeModule already reconnects. Kept so disconnect
|
|
206
|
+
* storms remain observable (and existing unit tests stay meaningful).
|
|
169
207
|
*/
|
|
170
208
|
function scheduleReconnection() {
|
|
171
209
|
var _this = this;
|
|
@@ -178,7 +216,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
178
216
|
_this.reconnectAttempts++;
|
|
179
217
|
_this.attemptConnection();
|
|
180
218
|
}, delay);
|
|
181
|
-
}
|
|
219
|
+
})
|
|
182
220
|
}, {
|
|
183
221
|
key: "calculateReconnectDelay",
|
|
184
222
|
value: (
|
|
@@ -195,6 +233,72 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
195
233
|
delay = Math.round(delay + jitter);
|
|
196
234
|
return Math.max(this.connectionConfig.reconnectBaseDelay, Math.min(delay, this.connectionConfig.reconnectMaxDelay));
|
|
197
235
|
})
|
|
236
|
+
}, {
|
|
237
|
+
/**
|
|
238
|
+
* Join the realtime doctype room for a doctype (refcounted). Called by the
|
|
239
|
+
* sync module whenever a subscription for the doctype is added. Room
|
|
240
|
+
* membership survives reconnects — RealtimeModule re-joins tracked rooms on
|
|
241
|
+
* every `connect`.
|
|
242
|
+
*
|
|
243
|
+
* Note: only doctype-level rooms are joined. `list_update` fires for every
|
|
244
|
+
* save of a regular doctype, which covers doc updates too; per-doc rooms
|
|
245
|
+
* would only add coverage for single/read-only doctypes.
|
|
246
|
+
*/
|
|
247
|
+
key: "watchDoctype",
|
|
248
|
+
value: function watchDoctype(doctype) {
|
|
249
|
+
var _this_watchedDoctypes_get;
|
|
250
|
+
var count = ((_this_watchedDoctypes_get = this.watchedDoctypes.get(doctype)) !== null && _this_watchedDoctypes_get !== void 0 ? _this_watchedDoctypes_get : 0) + 1;
|
|
251
|
+
this.watchedDoctypes.set(doctype, count);
|
|
252
|
+
if (count === 1 && this.realtime) {
|
|
253
|
+
Promise.resolve(this.realtime.subscribeList(doctype)).catch(function (err) {
|
|
254
|
+
return console.warn(`[RealtimeHandler] Failed to join doctype room ${doctype}:`, err);
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}, {
|
|
259
|
+
/** Release one reference to a doctype room; leaves the room on the last one. */
|
|
260
|
+
key: "unwatchDoctype",
|
|
261
|
+
value: function unwatchDoctype(doctype) {
|
|
262
|
+
var _this_watchedDoctypes_get;
|
|
263
|
+
var _this_realtime;
|
|
264
|
+
var count = ((_this_watchedDoctypes_get = this.watchedDoctypes.get(doctype)) !== null && _this_watchedDoctypes_get !== void 0 ? _this_watchedDoctypes_get : 0) - 1;
|
|
265
|
+
if (count > 0) {
|
|
266
|
+
this.watchedDoctypes.set(doctype, count);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
this.watchedDoctypes.delete(doctype);
|
|
270
|
+
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.unsubscribeList(doctype);
|
|
271
|
+
}
|
|
272
|
+
}, {
|
|
273
|
+
/** Leave all doctype rooms (used by cache resets/disposal). */
|
|
274
|
+
key: "unwatchAll",
|
|
275
|
+
value: function unwatchAll() {
|
|
276
|
+
if (this.realtime) {
|
|
277
|
+
var _iteratorNormalCompletion = true,
|
|
278
|
+
_didIteratorError = false,
|
|
279
|
+
_iteratorError = void 0;
|
|
280
|
+
try {
|
|
281
|
+
for (var _iterator = this.watchedDoctypes.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
282
|
+
var doctype = _step.value;
|
|
283
|
+
this.realtime.unsubscribeList(doctype);
|
|
284
|
+
}
|
|
285
|
+
} catch (err) {
|
|
286
|
+
_didIteratorError = true;
|
|
287
|
+
_iteratorError = err;
|
|
288
|
+
} finally {
|
|
289
|
+
try {
|
|
290
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
291
|
+
_iterator.return();
|
|
292
|
+
}
|
|
293
|
+
} finally {
|
|
294
|
+
if (_didIteratorError) {
|
|
295
|
+
throw _iteratorError;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
this.watchedDoctypes.clear();
|
|
301
|
+
}
|
|
198
302
|
}, {
|
|
199
303
|
key: "onDocChanged",
|
|
200
304
|
value: (
|
|
@@ -202,9 +306,26 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
202
306
|
* Realtime handler: authoritative document changed.
|
|
203
307
|
* Fetches document via REST with current user context to respect permissions,
|
|
204
308
|
* updates cache, and reconciles subscription membership.
|
|
309
|
+
*
|
|
310
|
+
* Concurrent events for the same document (frappe emits doc_update AND
|
|
311
|
+
* list_update per save) share a single in-flight fetch.
|
|
205
312
|
*/
|
|
206
|
-
|
|
313
|
+
function onDocChanged(payload) {
|
|
314
|
+
var _this = this;
|
|
315
|
+
var key = `${payload === null || payload === void 0 ? void 0 : payload.doctype}\0${payload === null || payload === void 0 ? void 0 : payload.name}`;
|
|
316
|
+
var inflight = this.inflightFetches.get(key);
|
|
317
|
+
if (inflight) return inflight;
|
|
318
|
+
var fetchPromise = this.fetchAndReconcile(payload).finally(function () {
|
|
319
|
+
_this.inflightFetches.delete(key);
|
|
320
|
+
});
|
|
321
|
+
this.inflightFetches.set(key, fetchPromise);
|
|
322
|
+
return fetchPromise;
|
|
323
|
+
})
|
|
324
|
+
}, {
|
|
325
|
+
key: "fetchAndReconcile",
|
|
326
|
+
value: async function fetchAndReconcile(payload) {
|
|
207
327
|
try {
|
|
328
|
+
var _this_options_onStoreChange, _this_options;
|
|
208
329
|
var document = await this.db.getDoc(payload.doctype, payload.name);
|
|
209
330
|
this.normalizedCache.upsert(document);
|
|
210
331
|
var subscriptionsNeedingRehydration = this.subscriptionManager.updateSubscriptionMembership(document);
|
|
@@ -231,10 +352,15 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
231
352
|
}
|
|
232
353
|
}
|
|
233
354
|
}
|
|
355
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
234
356
|
} catch (err) {
|
|
357
|
+
if ((err === null || err === void 0 ? void 0 : err.status) === 404) {
|
|
358
|
+
await this.onDocDeleted(payload);
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
235
361
|
console.warn(`Failed to fetch document ${payload === null || payload === void 0 ? void 0 : payload.doctype}/${payload === null || payload === void 0 ? void 0 : payload.name} during realtime update:`, err);
|
|
236
362
|
}
|
|
237
|
-
}
|
|
363
|
+
}
|
|
238
364
|
}, {
|
|
239
365
|
key: "onDocDeleted",
|
|
240
366
|
value: (
|
|
@@ -243,6 +369,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
243
369
|
*/
|
|
244
370
|
async function onDocDeleted(payload) {
|
|
245
371
|
try {
|
|
372
|
+
var _this_options_onStoreChange, _this_options;
|
|
246
373
|
this.normalizedCache.remove({
|
|
247
374
|
doctype: payload.doctype,
|
|
248
375
|
name: payload.name
|
|
@@ -271,6 +398,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
271
398
|
}
|
|
272
399
|
}
|
|
273
400
|
}
|
|
401
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
274
402
|
} catch (err) {
|
|
275
403
|
console.warn(`Failed to process doc_deleted for ${payload === null || payload === void 0 ? void 0 : payload.doctype}/${payload === null || payload === void 0 ? void 0 : payload.name}:`, err);
|
|
276
404
|
}
|
|
@@ -290,6 +418,20 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
290
418
|
value: function getIsConnected() {
|
|
291
419
|
return this.hasConnected;
|
|
292
420
|
}
|
|
421
|
+
}, {
|
|
422
|
+
/**
|
|
423
|
+
* Live connection snapshot for reconnect indicators.
|
|
424
|
+
* `connected` tracks the socket right now; `everConnected` distinguishes
|
|
425
|
+
* "reconnecting" (was up, dropped) from "never had realtime" (fixtures,
|
|
426
|
+
* SSR, no realtime module).
|
|
427
|
+
*/
|
|
428
|
+
key: "getConnectionState",
|
|
429
|
+
value: function getConnectionState() {
|
|
430
|
+
return {
|
|
431
|
+
connected: this.connected,
|
|
432
|
+
everConnected: this.hasConnected
|
|
433
|
+
};
|
|
434
|
+
}
|
|
293
435
|
}, {
|
|
294
436
|
/**
|
|
295
437
|
* Disposes of resources and clears timers.
|
|
@@ -300,6 +442,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
300
442
|
clearTimeout(this.reconnectTimer);
|
|
301
443
|
this.reconnectTimer = void 0;
|
|
302
444
|
}
|
|
445
|
+
this.unwatchAll();
|
|
303
446
|
if (this.realtime) {
|
|
304
447
|
var _this_realtime;
|
|
305
448
|
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.disconnect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RealtimeEventType","RehydrationReason","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","RealtimeHandler","RealtimeHandler2","db","realtime","normalizedCache","subscriptionManager","rehydrationManager","options","arguments","_ref","_ref1","_ref2","_ref3","_options_connectionConfig","_options_connectionConfig1","_options_connectionConfig2","_options_connectionConfig3","
|
|
1
|
+
{"version":3,"names":["RealtimeEventType","RehydrationReason","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","RealtimeHandler","RealtimeHandler2","db","realtime","normalizedCache","subscriptionManager","rehydrationManager","options","arguments","_ref","_ref1","_ref2","_ref3","_options_connectionConfig","_options_connectionConfig1","_options_connectionConfig2","_options_connectionConfig3","Map","connectionConfig","reconnectBaseDelay","reconnectMaxDelay","reconnectJitter","exponentialBackoff","setupRealtimeHandlers","setupConnectionManagement","_this","_this_realtime","_this_realtime1","_this_realtime2","_this_realtime3","_this_realtime4","_this_realtime5","_this_realtime6","on","payload","onRealtimeEvent","type","DocUpdate","onDocChanged","ListUpdate","DocChanged","DocDeleted","onDocDeleted","PermEpochBump","onResetCache","onConnected","onDisconnected","attemptConnection","_this_options_onStoreChange","_this_options","hasConnected","connected","reconnectAttempts","reconnectTimer","clearTimeout","Connected","onBackfillAll","onStoreChange","call","console","debug","scheduleReconnection","delay","calculateReconnectDelay","setTimeout","Math","min","pow","jitterRange","jitter","random","round","max","watchDoctype","doctype","_this_watchedDoctypes_get","count","watchedDoctypes","get","set","Promise","resolve","subscribeList","catch","err","warn","unwatchDoctype","delete","unsubscribeList","unwatchAll","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","keys","Symbol","iterator","_step","next","done","return"],"sources":["../../../src/sync/realtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|