@multiplatform.one/frappe 6.1.0 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -12
- package/dist/cjs/auth.cjs +1 -1
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.cjs +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.cjs +18 -4
- package/dist/cjs/collection.native.js +18 -4
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/core/http.cjs +92 -9
- package/dist/cjs/core/http.native.js +96 -7
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/db.cjs +7 -7
- package/dist/cjs/db.native.js +4 -4
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/doctype.cjs +97 -39
- package/dist/cjs/doctype.native.js +116 -46
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.cjs +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.cjs +3 -2
- package/dist/cjs/fixtureDb.native.js +2 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/frappeApp.cjs +15 -14
- package/dist/cjs/frappeApp.native.js +16 -14
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +198 -18
- package/dist/cjs/frappeReact.native.js +241 -18
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -4
- package/dist/cjs/index.native.js +9 -4
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/pacer.cjs +2 -2
- package/dist/cjs/pacer.native.js +2 -2
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +186 -46
- package/dist/cjs/realtime.native.js +268 -48
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.cjs +32 -27
- package/dist/cjs/sync/backfill.native.js +49 -43
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/index.cjs +90 -24
- package/dist/cjs/sync/index.native.js +112 -10
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.cjs +0 -3
- package/dist/cjs/sync/merge.native.js +0 -3
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.cjs +25 -19
- package/dist/cjs/sync/mutationEngine.native.js +16 -13
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.cjs +9 -4
- package/dist/cjs/sync/mutationJournal.native.js +7 -4
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.cjs +7 -3
- package/dist/cjs/sync/normalizedCache.native.js +7 -2
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.cjs +63 -31
- package/dist/cjs/sync/persistence.native.js +120 -63
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.cjs +124 -13
- package/dist/cjs/sync/realtime.native.js +163 -20
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.cjs +16 -10
- package/dist/cjs/sync/rehydration.native.js +16 -14
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.cjs +3 -3
- package/dist/cjs/sync/storage.native.js +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.cjs +255 -65
- package/dist/cjs/sync/subscriptionManager.native.js +330 -93
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.cjs +2 -0
- package/dist/cjs/sync/types.native.js +2 -0
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.cjs +9 -9
- package/dist/cjs/sync/virtualPageManager.native.js +5 -9
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.cjs +52 -0
- package/dist/cjs/useLiveQuery.native.js +59 -0
- package/dist/cjs/useLiveQuery.native.js.map +1 -0
- package/dist/cjs/util.cjs +11 -2
- package/dist/cjs/util.native.js +16 -2
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.mjs +1 -1
- package/dist/esm/auth.mjs.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.mjs +1 -1
- package/dist/esm/call.mjs.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.mjs +18 -4
- package/dist/esm/collection.mjs.map +1 -1
- package/dist/esm/collection.native.js +18 -4
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/core/http.mjs +93 -10
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +97 -8
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/db.mjs +7 -7
- package/dist/esm/db.mjs.map +1 -1
- package/dist/esm/db.native.js +4 -4
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/doctype.mjs +96 -39
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +115 -46
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.mjs +1 -1
- package/dist/esm/file.mjs.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.mjs +3 -2
- package/dist/esm/fixtureDb.mjs.map +1 -1
- package/dist/esm/fixtureDb.native.js +2 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/frappeApp.mjs +15 -14
- package/dist/esm/frappeApp.mjs.map +1 -1
- package/dist/esm/frappeApp.native.js +16 -14
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +197 -19
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +240 -19
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -4
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -4
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/pacer.mjs +1 -1
- package/dist/esm/pacer.native.js +1 -1
- package/dist/esm/realtime.mjs +187 -47
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +269 -49
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.mjs +32 -27
- package/dist/esm/sync/backfill.mjs.map +1 -1
- package/dist/esm/sync/backfill.native.js +49 -43
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/index.mjs +90 -24
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +112 -10
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.mjs +1 -1
- package/dist/esm/sync/merge.mjs.map +1 -1
- package/dist/esm/sync/merge.native.js +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.mjs +25 -19
- package/dist/esm/sync/mutationEngine.mjs.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +16 -13
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.mjs +9 -4
- package/dist/esm/sync/mutationJournal.mjs.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +7 -4
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.mjs +7 -3
- package/dist/esm/sync/normalizedCache.mjs.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js +7 -2
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.mjs +64 -32
- package/dist/esm/sync/persistence.mjs.map +1 -1
- package/dist/esm/sync/persistence.native.js +121 -64
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.mjs +124 -13
- package/dist/esm/sync/realtime.mjs.map +1 -1
- package/dist/esm/sync/realtime.native.js +163 -20
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.mjs +16 -10
- package/dist/esm/sync/rehydration.mjs.map +1 -1
- package/dist/esm/sync/rehydration.native.js +16 -14
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.mjs +3 -3
- package/dist/esm/sync/storage.mjs.map +1 -1
- package/dist/esm/sync/storage.native.js +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.mjs +255 -65
- package/dist/esm/sync/subscriptionManager.mjs.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +330 -93
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.mjs +2 -0
- package/dist/esm/sync/types.mjs.map +1 -1
- package/dist/esm/sync/types.native.js +2 -0
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.mjs +9 -9
- package/dist/esm/sync/virtualPageManager.mjs.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +5 -9
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.mjs +26 -0
- package/dist/esm/useLiveQuery.mjs.map +1 -0
- package/dist/esm/useLiveQuery.native.js +30 -0
- package/dist/esm/useLiveQuery.native.js.map +1 -0
- package/dist/esm/util.mjs +10 -2
- package/dist/esm/util.mjs.map +1 -1
- package/dist/esm/util.native.js +15 -2
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/auth.mjs +1 -1
- package/dist/jsx/auth.mjs.map +1 -1
- package/dist/jsx/auth.native.js.map +1 -1
- package/dist/jsx/call.mjs +1 -1
- package/dist/jsx/call.mjs.map +1 -1
- package/dist/jsx/call.native.js.map +1 -1
- package/dist/jsx/collection.mjs +18 -4
- package/dist/jsx/collection.mjs.map +1 -1
- package/dist/jsx/collection.native.js +18 -4
- package/dist/jsx/collection.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +93 -10
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +96 -7
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/db.mjs +7 -7
- package/dist/jsx/db.mjs.map +1 -1
- package/dist/jsx/db.native.js +4 -4
- package/dist/jsx/db.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +96 -39
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +116 -46
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/file.mjs +1 -1
- package/dist/jsx/file.mjs.map +1 -1
- package/dist/jsx/file.native.js.map +1 -1
- package/dist/jsx/fixtureDb.mjs +3 -2
- package/dist/jsx/fixtureDb.mjs.map +1 -1
- package/dist/jsx/fixtureDb.native.js +2 -1
- package/dist/jsx/fixtureDb.native.js.map +1 -1
- package/dist/jsx/frappeApp.mjs +15 -14
- package/dist/jsx/frappeApp.mjs.map +1 -1
- package/dist/jsx/frappeApp.native.js +16 -14
- package/dist/jsx/frappeApp.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +197 -19
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +241 -18
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +5 -4
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -4
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +9 -4
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/pacer.mjs +1 -1
- package/dist/jsx/pacer.native.js +2 -2
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +187 -47
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +268 -48
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/sync/backfill.mjs +32 -27
- package/dist/jsx/sync/backfill.mjs.map +1 -1
- package/dist/jsx/sync/backfill.native.js +49 -43
- package/dist/jsx/sync/backfill.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +90 -24
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +112 -10
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/merge.mjs +1 -1
- package/dist/jsx/sync/merge.mjs.map +1 -1
- package/dist/jsx/sync/merge.native.js +0 -3
- package/dist/jsx/sync/merge.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.mjs +25 -19
- package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js +16 -13
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.mjs +9 -4
- package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js +7 -4
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/normalizedCache.mjs +7 -3
- package/dist/jsx/sync/normalizedCache.mjs.map +1 -1
- package/dist/jsx/sync/normalizedCache.native.js +7 -2
- package/dist/jsx/sync/normalizedCache.native.js.map +1 -1
- package/dist/jsx/sync/persistence.mjs +64 -32
- package/dist/jsx/sync/persistence.mjs.map +1 -1
- package/dist/jsx/sync/persistence.native.js +120 -63
- package/dist/jsx/sync/persistence.native.js.map +1 -1
- package/dist/jsx/sync/realtime.mjs +124 -13
- package/dist/jsx/sync/realtime.mjs.map +1 -1
- package/dist/jsx/sync/realtime.native.js +163 -20
- package/dist/jsx/sync/realtime.native.js.map +1 -1
- package/dist/jsx/sync/rehydration.mjs +16 -10
- package/dist/jsx/sync/rehydration.mjs.map +1 -1
- package/dist/jsx/sync/rehydration.native.js +16 -14
- package/dist/jsx/sync/rehydration.native.js.map +1 -1
- package/dist/jsx/sync/storage.mjs +3 -3
- package/dist/jsx/sync/storage.mjs.map +1 -1
- package/dist/jsx/sync/storage.native.js +1 -1
- package/dist/jsx/sync/storage.native.js.map +1 -1
- package/dist/jsx/sync/subscriptionManager.mjs +255 -65
- package/dist/jsx/sync/subscriptionManager.mjs.map +1 -1
- package/dist/jsx/sync/subscriptionManager.native.js +330 -93
- package/dist/jsx/sync/subscriptionManager.native.js.map +1 -1
- package/dist/jsx/sync/types.mjs +2 -0
- package/dist/jsx/sync/types.mjs.map +1 -1
- package/dist/jsx/sync/types.native.js +2 -0
- package/dist/jsx/sync/types.native.js.map +1 -1
- package/dist/jsx/sync/virtualPageManager.mjs +9 -9
- package/dist/jsx/sync/virtualPageManager.mjs.map +1 -1
- package/dist/jsx/sync/virtualPageManager.native.js +5 -9
- package/dist/jsx/sync/virtualPageManager.native.js.map +1 -1
- package/dist/jsx/useLiveQuery.mjs +26 -0
- package/dist/jsx/useLiveQuery.mjs.map +1 -0
- package/dist/jsx/useLiveQuery.native.js +59 -0
- package/dist/jsx/useLiveQuery.native.js.map +1 -0
- package/dist/jsx/util.mjs +10 -2
- package/dist/jsx/util.mjs.map +1 -1
- package/dist/jsx/util.native.js +16 -2
- package/dist/jsx/util.native.js.map +1 -1
- package/package.json +20 -17
- package/src/auth.ts +5 -1
- package/src/call.ts +5 -1
- package/src/collection.spec.ts +55 -0
- package/src/collection.ts +33 -4
- package/src/core/http.spec.ts +66 -0
- package/src/core/http.ts +115 -9
- package/src/core/httpNative.spec.ts +234 -0
- package/src/core/types.ts +2 -0
- package/src/db.spec.ts +91 -51
- package/src/db.ts +27 -8
- package/src/doctype.spec.ts +247 -39
- package/src/doctype.ts +203 -53
- package/src/file.ts +5 -1
- package/src/fixtureDb.ts +13 -2
- package/src/frappeApp.ts +18 -19
- package/src/frappeReact.spec.ts +565 -1
- package/src/frappeReact.ts +445 -37
- package/src/frappeReactLiveQueryGc.spec.ts +320 -0
- package/src/frappeReactNative.spec.ts +65 -0
- package/src/index.ts +10 -9
- package/src/pacer.ts +1 -1
- package/src/realtime.spec.ts +464 -20
- package/src/realtime.ts +284 -46
- package/src/sync/backfill.spec.ts +43 -0
- package/src/sync/backfill.ts +59 -39
- package/src/sync/debug.spec.ts +36 -0
- package/src/sync/filterValidation.spec.ts +197 -0
- package/src/sync/index.ts +98 -7
- package/src/sync/merge.ts +3 -3
- package/src/sync/mutationEngine.spec.ts +36 -4
- package/src/sync/mutationEngine.ts +30 -11
- package/src/sync/mutationJournal.ts +18 -4
- package/src/sync/normalizedCache.spec.ts +102 -0
- package/src/sync/normalizedCache.ts +19 -3
- package/src/sync/offlineRestore.spec.ts +423 -0
- package/src/sync/persistence.spec.ts +39 -7
- package/src/sync/persistence.ts +90 -18
- package/src/sync/persistenceGjs.spec.ts +143 -0
- package/src/sync/persistenceNative.spec.ts +139 -0
- package/src/sync/realtime.spec.ts +18 -1
- package/src/sync/realtime.ts +161 -13
- package/src/sync/rehydration.ts +23 -5
- package/src/sync/storage.ts +5 -4
- package/src/sync/subscriptionManager.spec.ts +94 -0
- package/src/sync/subscriptionManager.ts +304 -82
- package/src/sync/syncModule.spec.ts +137 -0
- package/src/sync/types.ts +39 -0
- package/src/sync/virtualPageManager.ts +8 -4
- package/src/useLiveQuery.ts +58 -0
- package/src/util.spec.ts +35 -4
- package/src/util.ts +34 -7
- package/types/auth.d.ts +13 -0
- package/types/auth.d.ts.map +1 -0
- package/types/call.d.ts +10 -0
- package/types/call.d.ts.map +1 -0
- package/types/collection.d.ts +127 -0
- package/types/collection.d.ts.map +1 -0
- package/types/common/types.d.ts +35 -0
- package/types/common/types.d.ts.map +1 -0
- package/types/core/http.d.ts +86 -0
- package/types/core/http.d.ts.map +1 -0
- package/types/core/types.d.ts +74 -0
- package/types/core/types.d.ts.map +1 -0
- package/types/core/wire.d.ts +405 -0
- package/types/core/wire.d.ts.map +1 -0
- package/types/db.d.ts +244 -0
- package/types/db.d.ts.map +1 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts +7 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts.map +1 -0
- package/types/devtools/index.d.ts +4 -0
- package/types/devtools/index.d.ts.map +1 -0
- package/types/devtools/plugin.d.ts +9 -0
- package/types/devtools/plugin.d.ts.map +1 -0
- package/types/devtools/theme.d.ts +15 -0
- package/types/devtools/theme.d.ts.map +1 -0
- package/types/doctype.d.ts +256 -0
- package/types/doctype.d.ts.map +1 -0
- package/types/file.d.ts +15 -0
- package/types/file.d.ts.map +1 -0
- package/types/fixtureDb.d.ts +76 -0
- package/types/fixtureDb.d.ts.map +1 -0
- package/types/fixtures.d.ts +55 -0
- package/types/fixtures.d.ts.map +1 -0
- package/types/frappeApp.d.ts +45 -0
- package/types/frappeApp.d.ts.map +1 -0
- package/types/frappeReact.d.ts +270 -0
- package/types/frappeReact.d.ts.map +1 -0
- package/types/index.d.ts +44 -0
- package/types/index.d.ts.map +1 -0
- package/types/optimistic.d.ts +38 -0
- package/types/optimistic.d.ts.map +1 -0
- package/types/pacer.d.ts +193 -0
- package/types/pacer.d.ts.map +1 -0
- package/types/plugin/index.d.ts +11 -0
- package/types/plugin/index.d.ts.map +1 -0
- package/types/realtime.d.ts +121 -0
- package/types/realtime.d.ts.map +1 -0
- package/types/sync/backfill.d.ts +60 -0
- package/types/sync/backfill.d.ts.map +1 -0
- package/types/sync/filters.d.ts +101 -0
- package/types/sync/filters.d.ts.map +1 -0
- package/types/sync/index.d.ts +181 -0
- package/types/sync/index.d.ts.map +1 -0
- package/types/sync/merge.d.ts +59 -0
- package/types/sync/merge.d.ts.map +1 -0
- package/types/sync/mutationEngine.d.ts +117 -0
- package/types/sync/mutationEngine.d.ts.map +1 -0
- package/types/sync/mutationJournal.d.ts +60 -0
- package/types/sync/mutationJournal.d.ts.map +1 -0
- package/types/sync/normalizedCache.d.ts +59 -0
- package/types/sync/normalizedCache.d.ts.map +1 -0
- package/types/sync/persistence.d.ts +185 -0
- package/types/sync/persistence.d.ts.map +1 -0
- package/types/sync/realtime.d.ts +121 -0
- package/types/sync/realtime.d.ts.map +1 -0
- package/types/sync/rehydration.d.ts +109 -0
- package/types/sync/rehydration.d.ts.map +1 -0
- package/types/sync/storage.d.ts +65 -0
- package/types/sync/storage.d.ts.map +1 -0
- package/types/sync/subscriptionManager.d.ts +161 -0
- package/types/sync/subscriptionManager.d.ts.map +1 -0
- package/types/sync/types.d.ts +435 -0
- package/types/sync/types.d.ts.map +1 -0
- package/types/sync/virtualPageManager.d.ts +190 -0
- package/types/sync/virtualPageManager.d.ts.map +1 -0
- package/types/useLiveQuery.d.ts +16 -0
- package/types/useLiveQuery.d.ts.map +1 -0
- package/types/util.d.ts +24 -0
- package/types/util.d.ts.map +1 -0
- package/dist/cjs/auth.spec.cjs +0 -322
- package/dist/cjs/auth.spec.native.js +0 -329
- package/dist/cjs/auth.spec.native.js.map +0 -1
- package/dist/cjs/call.spec.cjs +0 -427
- package/dist/cjs/call.spec.native.js +0 -430
- package/dist/cjs/call.spec.native.js.map +0 -1
- package/dist/cjs/collection.spec.cjs +0 -186
- package/dist/cjs/collection.spec.native.js +0 -216
- package/dist/cjs/collection.spec.native.js.map +0 -1
- package/dist/cjs/common/types.spec.cjs +0 -266
- package/dist/cjs/common/types.spec.native.js +0 -271
- package/dist/cjs/common/types.spec.native.js.map +0 -1
- package/dist/cjs/core/http.spec.cjs +0 -1259
- package/dist/cjs/core/http.spec.native.js +0 -1401
- package/dist/cjs/core/http.spec.native.js.map +0 -1
- package/dist/cjs/core/wire.spec.cjs +0 -478
- package/dist/cjs/core/wire.spec.native.js +0 -482
- package/dist/cjs/core/wire.spec.native.js.map +0 -1
- package/dist/cjs/db.spec.cjs +0 -862
- package/dist/cjs/db.spec.native.js +0 -865
- package/dist/cjs/db.spec.native.js.map +0 -1
- package/dist/cjs/doctype.spec.cjs +0 -460
- package/dist/cjs/doctype.spec.native.js +0 -538
- package/dist/cjs/doctype.spec.native.js.map +0 -1
- package/dist/cjs/file.spec.cjs +0 -315
- package/dist/cjs/file.spec.native.js +0 -342
- package/dist/cjs/file.spec.native.js.map +0 -1
- package/dist/cjs/frappeApp.spec.cjs +0 -306
- package/dist/cjs/frappeApp.spec.native.js +0 -308
- package/dist/cjs/frappeApp.spec.native.js.map +0 -1
- package/dist/cjs/frappeReact.spec.cjs +0 -531
- package/dist/cjs/frappeReact.spec.native.js +0 -670
- package/dist/cjs/frappeReact.spec.native.js.map +0 -1
- package/dist/cjs/optimistic.spec.cjs +0 -11
- package/dist/cjs/optimistic.spec.native.js +0 -19
- package/dist/cjs/optimistic.spec.native.js.map +0 -1
- package/dist/cjs/pacer.spec.cjs +0 -470
- package/dist/cjs/pacer.spec.native.js +0 -537
- package/dist/cjs/pacer.spec.native.js.map +0 -1
- package/dist/cjs/realtime.spec.cjs +0 -326
- package/dist/cjs/realtime.spec.native.js +0 -392
- package/dist/cjs/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/backfill.spec.cjs +0 -586
- package/dist/cjs/sync/backfill.spec.native.js +0 -712
- package/dist/cjs/sync/backfill.spec.native.js.map +0 -1
- package/dist/cjs/sync/debug.spec.cjs +0 -125
- package/dist/cjs/sync/debug.spec.native.js +0 -133
- package/dist/cjs/sync/debug.spec.native.js.map +0 -1
- package/dist/cjs/sync/filters.spec.cjs +0 -168
- package/dist/cjs/sync/filters.spec.native.js +0 -173
- package/dist/cjs/sync/filters.spec.native.js.map +0 -1
- package/dist/cjs/sync/merge.spec.cjs +0 -908
- package/dist/cjs/sync/merge.spec.native.js +0 -937
- package/dist/cjs/sync/merge.spec.native.js.map +0 -1
- package/dist/cjs/sync/multiOrderBy.spec.cjs +0 -165
- package/dist/cjs/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/cjs/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationEngine.spec.cjs +0 -1158
- package/dist/cjs/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/cjs/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationJournal.spec.cjs +0 -330
- package/dist/cjs/sync/mutationJournal.spec.native.js +0 -333
- package/dist/cjs/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutations.spec.cjs +0 -327
- package/dist/cjs/sync/mutations.spec.native.js +0 -330
- package/dist/cjs/sync/mutations.spec.native.js.map +0 -1
- package/dist/cjs/sync/normalizedCache.spec.cjs +0 -302
- package/dist/cjs/sync/normalizedCache.spec.native.js +0 -311
- package/dist/cjs/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/cjs/sync/persistence.spec.cjs +0 -562
- package/dist/cjs/sync/persistence.spec.native.js +0 -572
- package/dist/cjs/sync/persistence.spec.native.js.map +0 -1
- package/dist/cjs/sync/realtime.spec.cjs +0 -499
- package/dist/cjs/sync/realtime.spec.native.js +0 -512
- package/dist/cjs/sync/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/rehydration.spec.cjs +0 -731
- package/dist/cjs/sync/rehydration.spec.native.js +0 -736
- package/dist/cjs/sync/rehydration.spec.native.js.map +0 -1
- package/dist/cjs/sync/storage.spec.cjs +0 -446
- package/dist/cjs/sync/storage.spec.native.js +0 -470
- package/dist/cjs/sync/storage.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptionManager.spec.cjs +0 -1102
- package/dist/cjs/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/cjs/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptions.spec.cjs +0 -937
- package/dist/cjs/sync/subscriptions.spec.native.js +0 -969
- package/dist/cjs/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/cjs/sync/syncModule.spec.cjs +0 -206
- package/dist/cjs/sync/syncModule.spec.native.js +0 -222
- package/dist/cjs/sync/syncModule.spec.native.js.map +0 -1
- package/dist/cjs/sync/types.spec.cjs +0 -246
- package/dist/cjs/sync/types.spec.native.js +0 -256
- package/dist/cjs/sync/types.spec.native.js.map +0 -1
- package/dist/cjs/sync/virtualPageManager.spec.cjs +0 -801
- package/dist/cjs/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/cjs/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/cjs/util.spec.cjs +0 -43
- package/dist/cjs/util.spec.native.js +0 -48
- package/dist/cjs/util.spec.native.js.map +0 -1
- package/dist/esm/auth.spec.mjs +0 -323
- package/dist/esm/auth.spec.mjs.map +0 -1
- package/dist/esm/auth.spec.native.js +0 -327
- package/dist/esm/auth.spec.native.js.map +0 -1
- package/dist/esm/call.spec.mjs +0 -428
- package/dist/esm/call.spec.mjs.map +0 -1
- package/dist/esm/call.spec.native.js +0 -428
- package/dist/esm/call.spec.native.js.map +0 -1
- package/dist/esm/collection.spec.mjs +0 -187
- package/dist/esm/collection.spec.mjs.map +0 -1
- package/dist/esm/collection.spec.native.js +0 -214
- package/dist/esm/collection.spec.native.js.map +0 -1
- package/dist/esm/common/types.spec.mjs +0 -267
- package/dist/esm/common/types.spec.mjs.map +0 -1
- package/dist/esm/common/types.spec.native.js +0 -269
- package/dist/esm/common/types.spec.native.js.map +0 -1
- package/dist/esm/core/http.spec.mjs +0 -1260
- package/dist/esm/core/http.spec.mjs.map +0 -1
- package/dist/esm/core/http.spec.native.js +0 -1399
- package/dist/esm/core/http.spec.native.js.map +0 -1
- package/dist/esm/core/wire.spec.mjs +0 -479
- package/dist/esm/core/wire.spec.mjs.map +0 -1
- package/dist/esm/core/wire.spec.native.js +0 -480
- package/dist/esm/core/wire.spec.native.js.map +0 -1
- package/dist/esm/db.spec.mjs +0 -863
- package/dist/esm/db.spec.mjs.map +0 -1
- package/dist/esm/db.spec.native.js +0 -863
- package/dist/esm/db.spec.native.js.map +0 -1
- package/dist/esm/doctype.spec.mjs +0 -461
- package/dist/esm/doctype.spec.mjs.map +0 -1
- package/dist/esm/doctype.spec.native.js +0 -536
- package/dist/esm/doctype.spec.native.js.map +0 -1
- package/dist/esm/file.spec.mjs +0 -316
- package/dist/esm/file.spec.mjs.map +0 -1
- package/dist/esm/file.spec.native.js +0 -340
- package/dist/esm/file.spec.native.js.map +0 -1
- package/dist/esm/frappeApp.spec.mjs +0 -307
- package/dist/esm/frappeApp.spec.mjs.map +0 -1
- package/dist/esm/frappeApp.spec.native.js +0 -306
- package/dist/esm/frappeApp.spec.native.js.map +0 -1
- package/dist/esm/frappeReact.spec.mjs +0 -532
- package/dist/esm/frappeReact.spec.mjs.map +0 -1
- package/dist/esm/frappeReact.spec.native.js +0 -668
- package/dist/esm/frappeReact.spec.native.js.map +0 -1
- package/dist/esm/optimistic.spec.mjs +0 -12
- package/dist/esm/optimistic.spec.mjs.map +0 -1
- package/dist/esm/optimistic.spec.native.js +0 -17
- package/dist/esm/optimistic.spec.native.js.map +0 -1
- package/dist/esm/pacer.spec.mjs +0 -447
- package/dist/esm/pacer.spec.mjs.map +0 -1
- package/dist/esm/pacer.spec.native.js +0 -511
- package/dist/esm/pacer.spec.native.js.map +0 -1
- package/dist/esm/realtime.spec.mjs +0 -327
- package/dist/esm/realtime.spec.mjs.map +0 -1
- package/dist/esm/realtime.spec.native.js +0 -390
- package/dist/esm/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/backfill.spec.mjs +0 -563
- package/dist/esm/sync/backfill.spec.mjs.map +0 -1
- package/dist/esm/sync/backfill.spec.native.js +0 -686
- package/dist/esm/sync/backfill.spec.native.js.map +0 -1
- package/dist/esm/sync/debug.spec.mjs +0 -102
- package/dist/esm/sync/debug.spec.mjs.map +0 -1
- package/dist/esm/sync/debug.spec.native.js +0 -107
- package/dist/esm/sync/debug.spec.native.js.map +0 -1
- package/dist/esm/sync/filters.spec.mjs +0 -169
- package/dist/esm/sync/filters.spec.mjs.map +0 -1
- package/dist/esm/sync/filters.spec.native.js +0 -171
- package/dist/esm/sync/filters.spec.native.js.map +0 -1
- package/dist/esm/sync/merge.spec.mjs +0 -909
- package/dist/esm/sync/merge.spec.mjs.map +0 -1
- package/dist/esm/sync/merge.spec.native.js +0 -935
- package/dist/esm/sync/merge.spec.native.js.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/esm/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.native.js +0 -227
- package/dist/esm/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/esm/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.native.js +0 -1171
- package/dist/esm/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.mjs +0 -331
- package/dist/esm/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.native.js +0 -331
- package/dist/esm/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/esm/sync/mutations.spec.mjs +0 -328
- package/dist/esm/sync/mutations.spec.mjs.map +0 -1
- package/dist/esm/sync/mutations.spec.native.js +0 -328
- package/dist/esm/sync/mutations.spec.native.js.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.mjs +0 -303
- package/dist/esm/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.native.js +0 -309
- package/dist/esm/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/esm/sync/persistence.spec.mjs +0 -563
- package/dist/esm/sync/persistence.spec.mjs.map +0 -1
- package/dist/esm/sync/persistence.spec.native.js +0 -570
- package/dist/esm/sync/persistence.spec.native.js.map +0 -1
- package/dist/esm/sync/realtime.spec.mjs +0 -500
- package/dist/esm/sync/realtime.spec.mjs.map +0 -1
- package/dist/esm/sync/realtime.spec.native.js +0 -510
- package/dist/esm/sync/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/rehydration.spec.mjs +0 -732
- package/dist/esm/sync/rehydration.spec.mjs.map +0 -1
- package/dist/esm/sync/rehydration.spec.native.js +0 -734
- package/dist/esm/sync/rehydration.spec.native.js.map +0 -1
- package/dist/esm/sync/storage.spec.mjs +0 -423
- package/dist/esm/sync/storage.spec.mjs.map +0 -1
- package/dist/esm/sync/storage.spec.native.js +0 -444
- package/dist/esm/sync/storage.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/esm/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.native.js +0 -1110
- package/dist/esm/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptions.spec.mjs +0 -914
- package/dist/esm/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptions.spec.native.js +0 -943
- package/dist/esm/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/esm/sync/syncModule.spec.mjs +0 -207
- package/dist/esm/sync/syncModule.spec.mjs.map +0 -1
- package/dist/esm/sync/syncModule.spec.native.js +0 -220
- package/dist/esm/sync/syncModule.spec.native.js.map +0 -1
- package/dist/esm/sync/types.spec.mjs +0 -247
- package/dist/esm/sync/types.spec.mjs.map +0 -1
- package/dist/esm/sync/types.spec.native.js +0 -254
- package/dist/esm/sync/types.spec.native.js.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/esm/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.native.js +0 -871
- package/dist/esm/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/esm/util.spec.mjs +0 -20
- package/dist/esm/util.spec.mjs.map +0 -1
- package/dist/esm/util.spec.native.js +0 -22
- package/dist/esm/util.spec.native.js.map +0 -1
- package/dist/jsx/auth.spec.mjs +0 -323
- package/dist/jsx/auth.spec.mjs.map +0 -1
- package/dist/jsx/auth.spec.native.js +0 -329
- package/dist/jsx/auth.spec.native.js.map +0 -1
- package/dist/jsx/call.spec.mjs +0 -428
- package/dist/jsx/call.spec.mjs.map +0 -1
- package/dist/jsx/call.spec.native.js +0 -430
- package/dist/jsx/call.spec.native.js.map +0 -1
- package/dist/jsx/collection.spec.mjs +0 -187
- package/dist/jsx/collection.spec.mjs.map +0 -1
- package/dist/jsx/collection.spec.native.js +0 -216
- package/dist/jsx/collection.spec.native.js.map +0 -1
- package/dist/jsx/common/types.spec.mjs +0 -267
- package/dist/jsx/common/types.spec.mjs.map +0 -1
- package/dist/jsx/common/types.spec.native.js +0 -271
- package/dist/jsx/common/types.spec.native.js.map +0 -1
- package/dist/jsx/core/http.spec.mjs +0 -1260
- package/dist/jsx/core/http.spec.mjs.map +0 -1
- package/dist/jsx/core/http.spec.native.js +0 -1401
- package/dist/jsx/core/http.spec.native.js.map +0 -1
- package/dist/jsx/core/wire.spec.mjs +0 -479
- package/dist/jsx/core/wire.spec.mjs.map +0 -1
- package/dist/jsx/core/wire.spec.native.js +0 -482
- package/dist/jsx/core/wire.spec.native.js.map +0 -1
- package/dist/jsx/db.spec.mjs +0 -863
- package/dist/jsx/db.spec.mjs.map +0 -1
- package/dist/jsx/db.spec.native.js +0 -865
- package/dist/jsx/db.spec.native.js.map +0 -1
- package/dist/jsx/doctype.spec.mjs +0 -461
- package/dist/jsx/doctype.spec.mjs.map +0 -1
- package/dist/jsx/doctype.spec.native.js +0 -538
- package/dist/jsx/doctype.spec.native.js.map +0 -1
- package/dist/jsx/file.spec.mjs +0 -316
- package/dist/jsx/file.spec.mjs.map +0 -1
- package/dist/jsx/file.spec.native.js +0 -342
- package/dist/jsx/file.spec.native.js.map +0 -1
- package/dist/jsx/frappeApp.spec.mjs +0 -307
- package/dist/jsx/frappeApp.spec.mjs.map +0 -1
- package/dist/jsx/frappeApp.spec.native.js +0 -308
- package/dist/jsx/frappeApp.spec.native.js.map +0 -1
- package/dist/jsx/frappeReact.spec.mjs +0 -532
- package/dist/jsx/frappeReact.spec.mjs.map +0 -1
- package/dist/jsx/frappeReact.spec.native.js +0 -670
- package/dist/jsx/frappeReact.spec.native.js.map +0 -1
- package/dist/jsx/optimistic.spec.mjs +0 -12
- package/dist/jsx/optimistic.spec.mjs.map +0 -1
- package/dist/jsx/optimistic.spec.native.js +0 -19
- package/dist/jsx/optimistic.spec.native.js.map +0 -1
- package/dist/jsx/pacer.spec.mjs +0 -447
- package/dist/jsx/pacer.spec.mjs.map +0 -1
- package/dist/jsx/pacer.spec.native.js +0 -537
- package/dist/jsx/pacer.spec.native.js.map +0 -1
- package/dist/jsx/realtime.spec.mjs +0 -327
- package/dist/jsx/realtime.spec.mjs.map +0 -1
- package/dist/jsx/realtime.spec.native.js +0 -392
- package/dist/jsx/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/backfill.spec.mjs +0 -563
- package/dist/jsx/sync/backfill.spec.mjs.map +0 -1
- package/dist/jsx/sync/backfill.spec.native.js +0 -712
- package/dist/jsx/sync/backfill.spec.native.js.map +0 -1
- package/dist/jsx/sync/debug.spec.mjs +0 -102
- package/dist/jsx/sync/debug.spec.mjs.map +0 -1
- package/dist/jsx/sync/debug.spec.native.js +0 -133
- package/dist/jsx/sync/debug.spec.native.js.map +0 -1
- package/dist/jsx/sync/filters.spec.mjs +0 -169
- package/dist/jsx/sync/filters.spec.mjs.map +0 -1
- package/dist/jsx/sync/filters.spec.native.js +0 -173
- package/dist/jsx/sync/filters.spec.native.js.map +0 -1
- package/dist/jsx/sync/merge.spec.mjs +0 -909
- package/dist/jsx/sync/merge.spec.mjs.map +0 -1
- package/dist/jsx/sync/merge.spec.native.js +0 -937
- package/dist/jsx/sync/merge.spec.native.js.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/jsx/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/jsx/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/jsx/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/jsx/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.mjs +0 -331
- package/dist/jsx/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.native.js +0 -333
- package/dist/jsx/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutations.spec.mjs +0 -328
- package/dist/jsx/sync/mutations.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutations.spec.native.js +0 -330
- package/dist/jsx/sync/mutations.spec.native.js.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.mjs +0 -303
- package/dist/jsx/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.native.js +0 -311
- package/dist/jsx/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/jsx/sync/persistence.spec.mjs +0 -563
- package/dist/jsx/sync/persistence.spec.mjs.map +0 -1
- package/dist/jsx/sync/persistence.spec.native.js +0 -572
- package/dist/jsx/sync/persistence.spec.native.js.map +0 -1
- package/dist/jsx/sync/realtime.spec.mjs +0 -500
- package/dist/jsx/sync/realtime.spec.mjs.map +0 -1
- package/dist/jsx/sync/realtime.spec.native.js +0 -512
- package/dist/jsx/sync/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/rehydration.spec.mjs +0 -732
- package/dist/jsx/sync/rehydration.spec.mjs.map +0 -1
- package/dist/jsx/sync/rehydration.spec.native.js +0 -736
- package/dist/jsx/sync/rehydration.spec.native.js.map +0 -1
- package/dist/jsx/sync/storage.spec.mjs +0 -423
- package/dist/jsx/sync/storage.spec.mjs.map +0 -1
- package/dist/jsx/sync/storage.spec.native.js +0 -470
- package/dist/jsx/sync/storage.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/jsx/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/jsx/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.mjs +0 -914
- package/dist/jsx/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.native.js +0 -969
- package/dist/jsx/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/jsx/sync/syncModule.spec.mjs +0 -207
- package/dist/jsx/sync/syncModule.spec.mjs.map +0 -1
- package/dist/jsx/sync/syncModule.spec.native.js +0 -222
- package/dist/jsx/sync/syncModule.spec.native.js.map +0 -1
- package/dist/jsx/sync/types.spec.mjs +0 -247
- package/dist/jsx/sync/types.spec.mjs.map +0 -1
- package/dist/jsx/sync/types.spec.native.js +0 -256
- package/dist/jsx/sync/types.spec.native.js.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/jsx/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/jsx/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/jsx/util.spec.mjs +0 -20
- package/dist/jsx/util.spec.mjs.map +0 -1
- package/dist/jsx/util.spec.native.js +0 -48
- package/dist/jsx/util.spec.native.js.map +0 -1
|
@@ -27,6 +27,22 @@ __export(realtime_exports, {
|
|
|
27
27
|
module.exports = __toCommonJS(realtime_exports);
|
|
28
28
|
var import_types = require("./types.cjs");
|
|
29
29
|
class RealtimeHandler {
|
|
30
|
+
reconnectAttempts = 0;
|
|
31
|
+
reconnectTimer;
|
|
32
|
+
hasConnected = false;
|
|
33
|
+
/** Live socket state: true between `connected` and `disconnect` events. */
|
|
34
|
+
connected = false;
|
|
35
|
+
connectionConfig;
|
|
36
|
+
/** Refcount of active subscriptions per doctype — drives doctype room membership. */
|
|
37
|
+
watchedDoctypes = /* @__PURE__ */new Map();
|
|
38
|
+
/** In-flight authoritative fetches, deduping concurrent doc_update/list_update pairs. */
|
|
39
|
+
inflightFetches = /* @__PURE__ */new Map();
|
|
40
|
+
db;
|
|
41
|
+
realtime;
|
|
42
|
+
normalizedCache;
|
|
43
|
+
subscriptionManager;
|
|
44
|
+
rehydrationManager;
|
|
45
|
+
options;
|
|
30
46
|
constructor(db, realtime, normalizedCache, subscriptionManager, rehydrationManager, options = {}) {
|
|
31
47
|
this.db = db;
|
|
32
48
|
this.realtime = realtime;
|
|
@@ -43,21 +59,40 @@ class RealtimeHandler {
|
|
|
43
59
|
this.setupRealtimeHandlers();
|
|
44
60
|
this.setupConnectionManagement();
|
|
45
61
|
}
|
|
46
|
-
db;
|
|
47
|
-
realtime;
|
|
48
|
-
normalizedCache;
|
|
49
|
-
subscriptionManager;
|
|
50
|
-
rehydrationManager;
|
|
51
|
-
options;
|
|
52
|
-
reconnectAttempts = 0;
|
|
53
|
-
reconnectTimer;
|
|
54
|
-
hasConnected = false;
|
|
55
|
-
connectionConfig;
|
|
56
62
|
/**
|
|
57
63
|
* Sets up realtime event handlers for document changes.
|
|
64
|
+
*
|
|
65
|
+
* Real Frappe (v15) wire protocol, verified live against a stock bench
|
|
66
|
+
* (see .test-evidence/storybook-rubric/p-results/frappe-realtime-live-e2e.md):
|
|
67
|
+
* - `doc_update` `{doctype, name, modified}` — emitted to the per-doc room
|
|
68
|
+
* `doc:{doctype}/{name}` on every save.
|
|
69
|
+
* - `list_update` `{doctype, name, user}` — emitted to the doctype room
|
|
70
|
+
* `doctype:{doctype}` on every save of a non-single, non-child doctype.
|
|
71
|
+
* - Deletion emits the SAME two events (payload indistinguishable from an
|
|
72
|
+
* update) — there is NO `doc_deleted` event. Deletions are detected here
|
|
73
|
+
* opportunistically when the authoritative re-fetch 404s, but the durable
|
|
74
|
+
* deletion signal remains the tombstone/CDC backfill (`Deleted Document`
|
|
75
|
+
* doctype maintained by the `live` app's on_trash hook).
|
|
76
|
+
*
|
|
77
|
+
* Both real events funnel into the same fetch-and-reconcile path, deduped
|
|
78
|
+
* so a doc_update/list_update pair for the same doc costs one fetch.
|
|
58
79
|
*/
|
|
59
80
|
setupRealtimeHandlers() {
|
|
60
81
|
if (!this.realtime) return;
|
|
82
|
+
this.realtime?.on("doc_update", async payload => {
|
|
83
|
+
if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
|
|
84
|
+
type: import_types.RealtimeEventType.DocUpdate,
|
|
85
|
+
payload
|
|
86
|
+
});
|
|
87
|
+
return this.onDocChanged(payload);
|
|
88
|
+
});
|
|
89
|
+
this.realtime?.on("list_update", async payload => {
|
|
90
|
+
if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
|
|
91
|
+
type: import_types.RealtimeEventType.ListUpdate,
|
|
92
|
+
payload
|
|
93
|
+
});
|
|
94
|
+
return this.onDocChanged(payload);
|
|
95
|
+
});
|
|
61
96
|
this.realtime?.on("doc_changed", async payload => {
|
|
62
97
|
if (this.options.onRealtimeEvent) this.options.onRealtimeEvent({
|
|
63
98
|
type: import_types.RealtimeEventType.DocChanged,
|
|
@@ -99,6 +134,7 @@ class RealtimeHandler {
|
|
|
99
134
|
*/
|
|
100
135
|
onConnected() {
|
|
101
136
|
this.hasConnected = true;
|
|
137
|
+
this.connected = true;
|
|
102
138
|
this.reconnectAttempts = 0;
|
|
103
139
|
if (this.reconnectTimer) {
|
|
104
140
|
clearTimeout(this.reconnectTimer);
|
|
@@ -112,6 +148,7 @@ class RealtimeHandler {
|
|
|
112
148
|
if (this.options.onBackfillAll) {
|
|
113
149
|
this.options.onBackfillAll();
|
|
114
150
|
}
|
|
151
|
+
this.options.onStoreChange?.();
|
|
115
152
|
console.debug("[RealtimeHandler] Connected to realtime server");
|
|
116
153
|
}
|
|
117
154
|
/**
|
|
@@ -119,18 +156,24 @@ class RealtimeHandler {
|
|
|
119
156
|
*/
|
|
120
157
|
onDisconnected() {
|
|
121
158
|
console.debug("[RealtimeHandler] Disconnected from realtime server");
|
|
159
|
+
this.connected = false;
|
|
160
|
+
this.options.onStoreChange?.();
|
|
122
161
|
if (this.hasConnected) {
|
|
123
162
|
this.scheduleReconnection();
|
|
124
163
|
}
|
|
125
164
|
}
|
|
126
165
|
/**
|
|
127
|
-
*
|
|
166
|
+
* No-op placeholder retained for the disconnect backoff schedule below.
|
|
167
|
+
* Transport reconnect is owned by Socket.IO inside RealtimeModule; this
|
|
168
|
+
* layer only tracks attempts for logging / future health hooks.
|
|
128
169
|
*/
|
|
129
170
|
attemptConnection() {
|
|
130
171
|
if (!this.realtime) return;
|
|
131
172
|
}
|
|
132
173
|
/**
|
|
133
|
-
* Schedules a reconnection
|
|
174
|
+
* Schedules a reconnection *watchdog* tick with exponential backoff and jitter.
|
|
175
|
+
* Does not open sockets — RealtimeModule already reconnects. Kept so disconnect
|
|
176
|
+
* storms remain observable (and existing unit tests stay meaningful).
|
|
134
177
|
*/
|
|
135
178
|
scheduleReconnection() {
|
|
136
179
|
if (this.reconnectTimer) {
|
|
@@ -156,12 +199,61 @@ class RealtimeHandler {
|
|
|
156
199
|
delay = Math.round(delay + jitter);
|
|
157
200
|
return Math.max(this.connectionConfig.reconnectBaseDelay, Math.min(delay, this.connectionConfig.reconnectMaxDelay));
|
|
158
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Join the realtime doctype room for a doctype (refcounted). Called by the
|
|
204
|
+
* sync module whenever a subscription for the doctype is added. Room
|
|
205
|
+
* membership survives reconnects — RealtimeModule re-joins tracked rooms on
|
|
206
|
+
* every `connect`.
|
|
207
|
+
*
|
|
208
|
+
* Note: only doctype-level rooms are joined. `list_update` fires for every
|
|
209
|
+
* save of a regular doctype, which covers doc updates too; per-doc rooms
|
|
210
|
+
* would only add coverage for single/read-only doctypes.
|
|
211
|
+
*/
|
|
212
|
+
watchDoctype(doctype) {
|
|
213
|
+
const count = (this.watchedDoctypes.get(doctype) ?? 0) + 1;
|
|
214
|
+
this.watchedDoctypes.set(doctype, count);
|
|
215
|
+
if (count === 1 && this.realtime) {
|
|
216
|
+
Promise.resolve(this.realtime.subscribeList(doctype)).catch(err => console.warn(`[RealtimeHandler] Failed to join doctype room ${doctype}:`, err));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/** Release one reference to a doctype room; leaves the room on the last one. */
|
|
220
|
+
unwatchDoctype(doctype) {
|
|
221
|
+
const count = (this.watchedDoctypes.get(doctype) ?? 0) - 1;
|
|
222
|
+
if (count > 0) {
|
|
223
|
+
this.watchedDoctypes.set(doctype, count);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this.watchedDoctypes.delete(doctype);
|
|
227
|
+
this.realtime?.unsubscribeList(doctype);
|
|
228
|
+
}
|
|
229
|
+
/** Leave all doctype rooms (used by cache resets/disposal). */
|
|
230
|
+
unwatchAll() {
|
|
231
|
+
if (this.realtime) {
|
|
232
|
+
for (const doctype of this.watchedDoctypes.keys()) {
|
|
233
|
+
this.realtime.unsubscribeList(doctype);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
this.watchedDoctypes.clear();
|
|
237
|
+
}
|
|
159
238
|
/**
|
|
160
239
|
* Realtime handler: authoritative document changed.
|
|
161
240
|
* Fetches document via REST with current user context to respect permissions,
|
|
162
241
|
* updates cache, and reconciles subscription membership.
|
|
242
|
+
*
|
|
243
|
+
* Concurrent events for the same document (frappe emits doc_update AND
|
|
244
|
+
* list_update per save) share a single in-flight fetch.
|
|
163
245
|
*/
|
|
164
|
-
|
|
246
|
+
onDocChanged(payload) {
|
|
247
|
+
const key = `${payload?.doctype}\0${payload?.name}`;
|
|
248
|
+
const inflight = this.inflightFetches.get(key);
|
|
249
|
+
if (inflight) return inflight;
|
|
250
|
+
const fetchPromise = this.fetchAndReconcile(payload).finally(() => {
|
|
251
|
+
this.inflightFetches.delete(key);
|
|
252
|
+
});
|
|
253
|
+
this.inflightFetches.set(key, fetchPromise);
|
|
254
|
+
return fetchPromise;
|
|
255
|
+
}
|
|
256
|
+
async fetchAndReconcile(payload) {
|
|
165
257
|
try {
|
|
166
258
|
const document = await this.db.getDoc(payload.doctype, payload.name);
|
|
167
259
|
this.normalizedCache.upsert(document);
|
|
@@ -169,7 +261,12 @@ class RealtimeHandler {
|
|
|
169
261
|
for (const subscription of subscriptionsNeedingRehydration) {
|
|
170
262
|
this.rehydrationManager?.scheduleRehydration(subscription, import_types.RehydrationReason.RemoteCreate);
|
|
171
263
|
}
|
|
264
|
+
this.options.onStoreChange?.();
|
|
172
265
|
} catch (err) {
|
|
266
|
+
if (err?.status === 404) {
|
|
267
|
+
await this.onDocDeleted(payload);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
173
270
|
console.warn(`Failed to fetch document ${payload?.doctype}/${payload?.name} during realtime update:`, err);
|
|
174
271
|
}
|
|
175
272
|
}
|
|
@@ -186,6 +283,7 @@ class RealtimeHandler {
|
|
|
186
283
|
for (const subscription of affectedSubscriptions) {
|
|
187
284
|
this.rehydrationManager?.scheduleRehydration(subscription, import_types.RehydrationReason.Delete);
|
|
188
285
|
}
|
|
286
|
+
this.options.onStoreChange?.();
|
|
189
287
|
} catch (err) {
|
|
190
288
|
console.warn(`Failed to process doc_deleted for ${payload?.doctype}/${payload?.name}:`, err);
|
|
191
289
|
}
|
|
@@ -199,6 +297,18 @@ class RealtimeHandler {
|
|
|
199
297
|
getIsConnected() {
|
|
200
298
|
return this.hasConnected;
|
|
201
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* Live connection snapshot for reconnect indicators.
|
|
302
|
+
* `connected` tracks the socket right now; `everConnected` distinguishes
|
|
303
|
+
* "reconnecting" (was up, dropped) from "never had realtime" (fixtures,
|
|
304
|
+
* SSR, no realtime module).
|
|
305
|
+
*/
|
|
306
|
+
getConnectionState() {
|
|
307
|
+
return {
|
|
308
|
+
connected: this.connected,
|
|
309
|
+
everConnected: this.hasConnected
|
|
310
|
+
};
|
|
311
|
+
}
|
|
202
312
|
/**
|
|
203
313
|
* Disposes of resources and clears timers.
|
|
204
314
|
*/
|
|
@@ -207,6 +317,7 @@ class RealtimeHandler {
|
|
|
207
317
|
clearTimeout(this.reconnectTimer);
|
|
208
318
|
this.reconnectTimer = void 0;
|
|
209
319
|
}
|
|
320
|
+
this.unwatchAll();
|
|
210
321
|
if (this.realtime) {
|
|
211
322
|
this.realtime?.disconnect();
|
|
212
323
|
}
|
|
@@ -68,24 +68,25 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
68
68
|
_class_call_check(this, RealtimeHandler2);
|
|
69
69
|
var _ref, _ref1, _ref2, _ref3;
|
|
70
70
|
var _options_connectionConfig, _options_connectionConfig1, _options_connectionConfig2, _options_connectionConfig3;
|
|
71
|
+
_define_property(this, "reconnectAttempts", 0);
|
|
72
|
+
_define_property(this, "reconnectTimer", void 0);
|
|
73
|
+
_define_property(this, "hasConnected", false);
|
|
74
|
+
_define_property(this, "connected", false);
|
|
75
|
+
_define_property(this, "connectionConfig", void 0);
|
|
76
|
+
_define_property(this, "watchedDoctypes", /* @__PURE__ */new Map());
|
|
77
|
+
_define_property(this, "inflightFetches", /* @__PURE__ */new Map());
|
|
71
78
|
_define_property(this, "db", void 0);
|
|
72
79
|
_define_property(this, "realtime", void 0);
|
|
73
80
|
_define_property(this, "normalizedCache", void 0);
|
|
74
81
|
_define_property(this, "subscriptionManager", void 0);
|
|
75
82
|
_define_property(this, "rehydrationManager", void 0);
|
|
76
83
|
_define_property(this, "options", void 0);
|
|
77
|
-
_define_property(this, "reconnectAttempts", void 0);
|
|
78
|
-
_define_property(this, "reconnectTimer", void 0);
|
|
79
|
-
_define_property(this, "hasConnected", void 0);
|
|
80
|
-
_define_property(this, "connectionConfig", void 0);
|
|
81
84
|
this.db = db;
|
|
82
85
|
this.realtime = realtime;
|
|
83
86
|
this.normalizedCache = normalizedCache;
|
|
84
87
|
this.subscriptionManager = subscriptionManager;
|
|
85
88
|
this.rehydrationManager = rehydrationManager;
|
|
86
89
|
this.options = options;
|
|
87
|
-
this.reconnectAttempts = 0;
|
|
88
|
-
this.hasConnected = false;
|
|
89
90
|
this.connectionConfig = {
|
|
90
91
|
reconnectBaseDelay: (_ref = (_options_connectionConfig = options.connectionConfig) === null || _options_connectionConfig === void 0 ? void 0 : _options_connectionConfig.reconnectBaseDelay) !== null && _ref !== void 0 ? _ref : 1e3,
|
|
91
92
|
reconnectMaxDelay: (_ref1 = (_options_connectionConfig1 = options.connectionConfig) === null || _options_connectionConfig1 === void 0 ? void 0 : _options_connectionConfig1.reconnectMaxDelay) !== null && _ref1 !== void 0 ? _ref1 : 3e4,
|
|
@@ -100,26 +101,55 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
100
101
|
value: (
|
|
101
102
|
/**
|
|
102
103
|
* Sets up realtime event handlers for document changes.
|
|
104
|
+
*
|
|
105
|
+
* Real Frappe (v15) wire protocol, verified live against a stock bench
|
|
106
|
+
* (see .test-evidence/storybook-rubric/p-results/frappe-realtime-live-e2e.md):
|
|
107
|
+
* - `doc_update` `{doctype, name, modified}` — emitted to the per-doc room
|
|
108
|
+
* `doc:{doctype}/{name}` on every save.
|
|
109
|
+
* - `list_update` `{doctype, name, user}` — emitted to the doctype room
|
|
110
|
+
* `doctype:{doctype}` on every save of a non-single, non-child doctype.
|
|
111
|
+
* - Deletion emits the SAME two events (payload indistinguishable from an
|
|
112
|
+
* update) — there is NO `doc_deleted` event. Deletions are detected here
|
|
113
|
+
* opportunistically when the authoritative re-fetch 404s, but the durable
|
|
114
|
+
* deletion signal remains the tombstone/CDC backfill (`Deleted Document`
|
|
115
|
+
* doctype maintained by the `live` app's on_trash hook).
|
|
116
|
+
*
|
|
117
|
+
* Both real events funnel into the same fetch-and-reconcile path, deduped
|
|
118
|
+
* so a doc_update/list_update pair for the same doc costs one fetch.
|
|
103
119
|
*/
|
|
104
120
|
function setupRealtimeHandlers() {
|
|
105
121
|
var _this = this;
|
|
106
|
-
var _this_realtime, _this_realtime1, _this_realtime2, _this_realtime3, _this_realtime4;
|
|
122
|
+
var _this_realtime, _this_realtime1, _this_realtime2, _this_realtime3, _this_realtime4, _this_realtime5, _this_realtime6;
|
|
107
123
|
if (!this.realtime) return;
|
|
108
|
-
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.on("
|
|
124
|
+
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.on("doc_update", async function (payload) {
|
|
125
|
+
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
126
|
+
type: import_types.RealtimeEventType.DocUpdate,
|
|
127
|
+
payload
|
|
128
|
+
});
|
|
129
|
+
return _this.onDocChanged(payload);
|
|
130
|
+
});
|
|
131
|
+
(_this_realtime1 = this.realtime) === null || _this_realtime1 === void 0 ? void 0 : _this_realtime1.on("list_update", async function (payload) {
|
|
132
|
+
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
133
|
+
type: import_types.RealtimeEventType.ListUpdate,
|
|
134
|
+
payload
|
|
135
|
+
});
|
|
136
|
+
return _this.onDocChanged(payload);
|
|
137
|
+
});
|
|
138
|
+
(_this_realtime2 = this.realtime) === null || _this_realtime2 === void 0 ? void 0 : _this_realtime2.on("doc_changed", async function (payload) {
|
|
109
139
|
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
110
140
|
type: import_types.RealtimeEventType.DocChanged,
|
|
111
141
|
payload
|
|
112
142
|
});
|
|
113
143
|
return _this.onDocChanged(payload);
|
|
114
144
|
});
|
|
115
|
-
(
|
|
145
|
+
(_this_realtime3 = this.realtime) === null || _this_realtime3 === void 0 ? void 0 : _this_realtime3.on("doc_deleted", async function (payload) {
|
|
116
146
|
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
117
147
|
type: import_types.RealtimeEventType.DocDeleted,
|
|
118
148
|
payload
|
|
119
149
|
});
|
|
120
150
|
return _this.onDocDeleted(payload);
|
|
121
151
|
});
|
|
122
|
-
(
|
|
152
|
+
(_this_realtime4 = this.realtime) === null || _this_realtime4 === void 0 ? void 0 : _this_realtime4.on("perm_epoch_bump", function () {
|
|
123
153
|
if (_this.options.onRealtimeEvent) _this.options.onRealtimeEvent({
|
|
124
154
|
type: import_types.RealtimeEventType.PermEpochBump
|
|
125
155
|
});
|
|
@@ -127,10 +157,10 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
127
157
|
_this.options.onResetCache();
|
|
128
158
|
}
|
|
129
159
|
});
|
|
130
|
-
(
|
|
160
|
+
(_this_realtime5 = this.realtime) === null || _this_realtime5 === void 0 ? void 0 : _this_realtime5.on("connected", function () {
|
|
131
161
|
_this.onConnected();
|
|
132
162
|
});
|
|
133
|
-
(
|
|
163
|
+
(_this_realtime6 = this.realtime) === null || _this_realtime6 === void 0 ? void 0 : _this_realtime6.on("disconnect", function () {
|
|
134
164
|
_this.onDisconnected();
|
|
135
165
|
});
|
|
136
166
|
})
|
|
@@ -151,7 +181,9 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
151
181
|
* Handles successful connection.
|
|
152
182
|
*/
|
|
153
183
|
function onConnected() {
|
|
184
|
+
var _this_options_onStoreChange, _this_options;
|
|
154
185
|
this.hasConnected = true;
|
|
186
|
+
this.connected = true;
|
|
155
187
|
this.reconnectAttempts = 0;
|
|
156
188
|
if (this.reconnectTimer) {
|
|
157
189
|
clearTimeout(this.reconnectTimer);
|
|
@@ -165,6 +197,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
165
197
|
if (this.options.onBackfillAll) {
|
|
166
198
|
this.options.onBackfillAll();
|
|
167
199
|
}
|
|
200
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
168
201
|
console.debug("[RealtimeHandler] Connected to realtime server");
|
|
169
202
|
})
|
|
170
203
|
}, {
|
|
@@ -174,7 +207,10 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
174
207
|
* Handles disconnection with automatic reconnection.
|
|
175
208
|
*/
|
|
176
209
|
function onDisconnected() {
|
|
210
|
+
var _this_options_onStoreChange, _this_options;
|
|
177
211
|
console.debug("[RealtimeHandler] Disconnected from realtime server");
|
|
212
|
+
this.connected = false;
|
|
213
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
178
214
|
if (this.hasConnected) {
|
|
179
215
|
this.scheduleReconnection();
|
|
180
216
|
}
|
|
@@ -183,18 +219,20 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
183
219
|
key: "attemptConnection",
|
|
184
220
|
value: (
|
|
185
221
|
/**
|
|
186
|
-
*
|
|
222
|
+
* No-op placeholder retained for the disconnect backoff schedule below.
|
|
223
|
+
* Transport reconnect is owned by Socket.IO inside RealtimeModule; this
|
|
224
|
+
* layer only tracks attempts for logging / future health hooks.
|
|
187
225
|
*/
|
|
188
226
|
function attemptConnection() {
|
|
189
227
|
if (!this.realtime) return;
|
|
190
228
|
})
|
|
191
229
|
}, {
|
|
192
230
|
key: "scheduleReconnection",
|
|
193
|
-
value:
|
|
194
|
-
// RealtimeModule handles reconnection internally via its reconnection config.
|
|
195
|
-
// Handlers are already attached in the constructor via setupRealtimeHandlers().
|
|
231
|
+
value: (
|
|
196
232
|
/**
|
|
197
|
-
* Schedules a reconnection
|
|
233
|
+
* Schedules a reconnection *watchdog* tick with exponential backoff and jitter.
|
|
234
|
+
* Does not open sockets — RealtimeModule already reconnects. Kept so disconnect
|
|
235
|
+
* storms remain observable (and existing unit tests stay meaningful).
|
|
198
236
|
*/
|
|
199
237
|
function scheduleReconnection() {
|
|
200
238
|
var _this = this;
|
|
@@ -207,7 +245,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
207
245
|
_this.reconnectAttempts++;
|
|
208
246
|
_this.attemptConnection();
|
|
209
247
|
}, delay);
|
|
210
|
-
}
|
|
248
|
+
})
|
|
211
249
|
}, {
|
|
212
250
|
key: "calculateReconnectDelay",
|
|
213
251
|
value: (
|
|
@@ -224,6 +262,72 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
224
262
|
delay = Math.round(delay + jitter);
|
|
225
263
|
return Math.max(this.connectionConfig.reconnectBaseDelay, Math.min(delay, this.connectionConfig.reconnectMaxDelay));
|
|
226
264
|
})
|
|
265
|
+
}, {
|
|
266
|
+
/**
|
|
267
|
+
* Join the realtime doctype room for a doctype (refcounted). Called by the
|
|
268
|
+
* sync module whenever a subscription for the doctype is added. Room
|
|
269
|
+
* membership survives reconnects — RealtimeModule re-joins tracked rooms on
|
|
270
|
+
* every `connect`.
|
|
271
|
+
*
|
|
272
|
+
* Note: only doctype-level rooms are joined. `list_update` fires for every
|
|
273
|
+
* save of a regular doctype, which covers doc updates too; per-doc rooms
|
|
274
|
+
* would only add coverage for single/read-only doctypes.
|
|
275
|
+
*/
|
|
276
|
+
key: "watchDoctype",
|
|
277
|
+
value: function watchDoctype(doctype) {
|
|
278
|
+
var _this_watchedDoctypes_get;
|
|
279
|
+
var count = ((_this_watchedDoctypes_get = this.watchedDoctypes.get(doctype)) !== null && _this_watchedDoctypes_get !== void 0 ? _this_watchedDoctypes_get : 0) + 1;
|
|
280
|
+
this.watchedDoctypes.set(doctype, count);
|
|
281
|
+
if (count === 1 && this.realtime) {
|
|
282
|
+
Promise.resolve(this.realtime.subscribeList(doctype)).catch(function (err) {
|
|
283
|
+
return console.warn(`[RealtimeHandler] Failed to join doctype room ${doctype}:`, err);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}, {
|
|
288
|
+
/** Release one reference to a doctype room; leaves the room on the last one. */
|
|
289
|
+
key: "unwatchDoctype",
|
|
290
|
+
value: function unwatchDoctype(doctype) {
|
|
291
|
+
var _this_watchedDoctypes_get;
|
|
292
|
+
var _this_realtime;
|
|
293
|
+
var count = ((_this_watchedDoctypes_get = this.watchedDoctypes.get(doctype)) !== null && _this_watchedDoctypes_get !== void 0 ? _this_watchedDoctypes_get : 0) - 1;
|
|
294
|
+
if (count > 0) {
|
|
295
|
+
this.watchedDoctypes.set(doctype, count);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
this.watchedDoctypes.delete(doctype);
|
|
299
|
+
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.unsubscribeList(doctype);
|
|
300
|
+
}
|
|
301
|
+
}, {
|
|
302
|
+
/** Leave all doctype rooms (used by cache resets/disposal). */
|
|
303
|
+
key: "unwatchAll",
|
|
304
|
+
value: function unwatchAll() {
|
|
305
|
+
if (this.realtime) {
|
|
306
|
+
var _iteratorNormalCompletion = true,
|
|
307
|
+
_didIteratorError = false,
|
|
308
|
+
_iteratorError = void 0;
|
|
309
|
+
try {
|
|
310
|
+
for (var _iterator = this.watchedDoctypes.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
311
|
+
var doctype = _step.value;
|
|
312
|
+
this.realtime.unsubscribeList(doctype);
|
|
313
|
+
}
|
|
314
|
+
} catch (err) {
|
|
315
|
+
_didIteratorError = true;
|
|
316
|
+
_iteratorError = err;
|
|
317
|
+
} finally {
|
|
318
|
+
try {
|
|
319
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
320
|
+
_iterator.return();
|
|
321
|
+
}
|
|
322
|
+
} finally {
|
|
323
|
+
if (_didIteratorError) {
|
|
324
|
+
throw _iteratorError;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
this.watchedDoctypes.clear();
|
|
330
|
+
}
|
|
227
331
|
}, {
|
|
228
332
|
key: "onDocChanged",
|
|
229
333
|
value: (
|
|
@@ -231,9 +335,26 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
231
335
|
* Realtime handler: authoritative document changed.
|
|
232
336
|
* Fetches document via REST with current user context to respect permissions,
|
|
233
337
|
* updates cache, and reconciles subscription membership.
|
|
338
|
+
*
|
|
339
|
+
* Concurrent events for the same document (frappe emits doc_update AND
|
|
340
|
+
* list_update per save) share a single in-flight fetch.
|
|
234
341
|
*/
|
|
235
|
-
|
|
342
|
+
function onDocChanged(payload) {
|
|
343
|
+
var _this = this;
|
|
344
|
+
var key = `${payload === null || payload === void 0 ? void 0 : payload.doctype}\0${payload === null || payload === void 0 ? void 0 : payload.name}`;
|
|
345
|
+
var inflight = this.inflightFetches.get(key);
|
|
346
|
+
if (inflight) return inflight;
|
|
347
|
+
var fetchPromise = this.fetchAndReconcile(payload).finally(function () {
|
|
348
|
+
_this.inflightFetches.delete(key);
|
|
349
|
+
});
|
|
350
|
+
this.inflightFetches.set(key, fetchPromise);
|
|
351
|
+
return fetchPromise;
|
|
352
|
+
})
|
|
353
|
+
}, {
|
|
354
|
+
key: "fetchAndReconcile",
|
|
355
|
+
value: async function fetchAndReconcile(payload) {
|
|
236
356
|
try {
|
|
357
|
+
var _this_options_onStoreChange, _this_options;
|
|
237
358
|
var document = await this.db.getDoc(payload.doctype, payload.name);
|
|
238
359
|
this.normalizedCache.upsert(document);
|
|
239
360
|
var subscriptionsNeedingRehydration = this.subscriptionManager.updateSubscriptionMembership(document);
|
|
@@ -260,10 +381,15 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
260
381
|
}
|
|
261
382
|
}
|
|
262
383
|
}
|
|
384
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
263
385
|
} catch (err) {
|
|
386
|
+
if ((err === null || err === void 0 ? void 0 : err.status) === 404) {
|
|
387
|
+
await this.onDocDeleted(payload);
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
264
390
|
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);
|
|
265
391
|
}
|
|
266
|
-
}
|
|
392
|
+
}
|
|
267
393
|
}, {
|
|
268
394
|
key: "onDocDeleted",
|
|
269
395
|
value: (
|
|
@@ -272,6 +398,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
272
398
|
*/
|
|
273
399
|
async function onDocDeleted(payload) {
|
|
274
400
|
try {
|
|
401
|
+
var _this_options_onStoreChange, _this_options;
|
|
275
402
|
this.normalizedCache.remove({
|
|
276
403
|
doctype: payload.doctype,
|
|
277
404
|
name: payload.name
|
|
@@ -300,6 +427,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
300
427
|
}
|
|
301
428
|
}
|
|
302
429
|
}
|
|
430
|
+
(_this_options_onStoreChange = (_this_options = this.options).onStoreChange) === null || _this_options_onStoreChange === void 0 ? void 0 : _this_options_onStoreChange.call(_this_options);
|
|
303
431
|
} catch (err) {
|
|
304
432
|
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);
|
|
305
433
|
}
|
|
@@ -319,6 +447,20 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
319
447
|
value: function getIsConnected() {
|
|
320
448
|
return this.hasConnected;
|
|
321
449
|
}
|
|
450
|
+
}, {
|
|
451
|
+
/**
|
|
452
|
+
* Live connection snapshot for reconnect indicators.
|
|
453
|
+
* `connected` tracks the socket right now; `everConnected` distinguishes
|
|
454
|
+
* "reconnecting" (was up, dropped) from "never had realtime" (fixtures,
|
|
455
|
+
* SSR, no realtime module).
|
|
456
|
+
*/
|
|
457
|
+
key: "getConnectionState",
|
|
458
|
+
value: function getConnectionState() {
|
|
459
|
+
return {
|
|
460
|
+
connected: this.connected,
|
|
461
|
+
everConnected: this.hasConnected
|
|
462
|
+
};
|
|
463
|
+
}
|
|
322
464
|
}, {
|
|
323
465
|
/**
|
|
324
466
|
* Disposes of resources and clears timers.
|
|
@@ -329,6 +471,7 @@ var RealtimeHandler = /* @__PURE__ */function () {
|
|
|
329
471
|
clearTimeout(this.reconnectTimer);
|
|
330
472
|
this.reconnectTimer = void 0;
|
|
331
473
|
}
|
|
474
|
+
this.unwatchAll();
|
|
332
475
|
if (this.realtime) {
|
|
333
476
|
var _this_realtime;
|
|
334
477
|
(_this_realtime = this.realtime) === null || _this_realtime === void 0 ? void 0 : _this_realtime.disconnect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","realtime_exports","__export","RealtimeHandler","module","exports","import_types","require","_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","RealtimeHandler2","db","realtime","normalizedCache","subscriptionManager","rehydrationManager","options","arguments","_ref","_ref1","_ref2","_ref3","_options_connectionConfig","_options_connectionConfig1","_options_connectionConfig2","_options_connectionConfig3","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","realtime_exports","__export","RealtimeHandler","module","exports","import_types","require","_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","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","RealtimeEventType","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":[]}
|
|
@@ -28,16 +28,6 @@ module.exports = __toCommonJS(rehydration_exports);
|
|
|
28
28
|
var import_pacer = require("@tanstack/pacer");
|
|
29
29
|
var import_types = require("./types.cjs");
|
|
30
30
|
class RehydrationManager {
|
|
31
|
-
constructor(db, cache, subscriptionManager, mutationJournal) {
|
|
32
|
-
this.db = db;
|
|
33
|
-
this.cache = cache;
|
|
34
|
-
this.subscriptionManager = subscriptionManager;
|
|
35
|
-
this.mutationJournal = mutationJournal;
|
|
36
|
-
}
|
|
37
|
-
db;
|
|
38
|
-
cache;
|
|
39
|
-
subscriptionManager;
|
|
40
|
-
mutationJournal;
|
|
41
31
|
/** Queue of pending rehydration tasks, keyed by subscription ID */
|
|
42
32
|
rehydrationQueue = /* @__PURE__ */new Map();
|
|
43
33
|
/** Debouncer for batching rehydration queue processing */
|
|
@@ -46,6 +36,19 @@ class RehydrationManager {
|
|
|
46
36
|
});
|
|
47
37
|
/** Maps temporary IDs to server-assigned IDs for optimistic creates */
|
|
48
38
|
temporaryIdMap = /* @__PURE__ */new Map();
|
|
39
|
+
db;
|
|
40
|
+
cache;
|
|
41
|
+
subscriptionManager;
|
|
42
|
+
mutationJournal;
|
|
43
|
+
/** Notifies the sync store after rehydration mutates cache/membership. */
|
|
44
|
+
onChange;
|
|
45
|
+
constructor(db, cache, subscriptionManager, mutationJournal, onChange) {
|
|
46
|
+
this.db = db;
|
|
47
|
+
this.cache = cache;
|
|
48
|
+
this.subscriptionManager = subscriptionManager;
|
|
49
|
+
this.mutationJournal = mutationJournal;
|
|
50
|
+
this.onChange = onChange;
|
|
51
|
+
}
|
|
49
52
|
/**
|
|
50
53
|
* Schedules a rehydration task for a subscription based on the reason.
|
|
51
54
|
* Coalesces multiple requests for the same subscription.
|
|
@@ -159,14 +162,17 @@ class RehydrationManager {
|
|
|
159
162
|
}
|
|
160
163
|
return a.scheduledAt - b.scheduledAt;
|
|
161
164
|
});
|
|
165
|
+
let anyExecuted = false;
|
|
162
166
|
for (const task of tasks) {
|
|
163
167
|
try {
|
|
164
168
|
await this.executeRehydration(task);
|
|
165
169
|
this.rehydrationQueue.delete(task.subscriptionId);
|
|
170
|
+
anyExecuted = true;
|
|
166
171
|
} catch (error) {
|
|
167
172
|
console.error(`Rehydration failed for ${task.subscriptionId}:`, error);
|
|
168
173
|
}
|
|
169
174
|
}
|
|
175
|
+
if (anyExecuted) this.onChange?.();
|
|
170
176
|
}
|
|
171
177
|
/**
|
|
172
178
|
* Executes a single rehydration task.
|