@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
|
@@ -64,27 +64,26 @@ function _define_property(obj, key, value) {
|
|
|
64
64
|
var RehydrationManager = /* @__PURE__ */function () {
|
|
65
65
|
"use strict";
|
|
66
66
|
|
|
67
|
-
function RehydrationManager2(db, cache, subscriptionManager, mutationJournal) {
|
|
67
|
+
function RehydrationManager2(db, cache, subscriptionManager, mutationJournal, onChange) {
|
|
68
68
|
var _this = this;
|
|
69
69
|
_class_call_check(this, RehydrationManager2);
|
|
70
|
+
_define_property(this, "rehydrationQueue", /* @__PURE__ */new Map());
|
|
71
|
+
_define_property(this, "processDebouncer", new import_pacer.Debouncer(function () {
|
|
72
|
+
return _this.processQueue();
|
|
73
|
+
}, {
|
|
74
|
+
wait: 100
|
|
75
|
+
}));
|
|
76
|
+
_define_property(this, "temporaryIdMap", /* @__PURE__ */new Map());
|
|
70
77
|
_define_property(this, "db", void 0);
|
|
71
78
|
_define_property(this, "cache", void 0);
|
|
72
79
|
_define_property(this, "subscriptionManager", void 0);
|
|
73
80
|
_define_property(this, "mutationJournal", void 0);
|
|
74
|
-
_define_property(this, "
|
|
75
|
-
_define_property(this, "processDebouncer", void 0);
|
|
76
|
-
_define_property(this, "temporaryIdMap", void 0);
|
|
81
|
+
_define_property(this, "onChange", void 0);
|
|
77
82
|
this.db = db;
|
|
78
83
|
this.cache = cache;
|
|
79
84
|
this.subscriptionManager = subscriptionManager;
|
|
80
85
|
this.mutationJournal = mutationJournal;
|
|
81
|
-
this.
|
|
82
|
-
this.processDebouncer = new import_pacer.Debouncer(function () {
|
|
83
|
-
return _this.processQueue();
|
|
84
|
-
}, {
|
|
85
|
-
wait: 100
|
|
86
|
-
});
|
|
87
|
-
this.temporaryIdMap = /* @__PURE__ */new Map();
|
|
86
|
+
this.onChange = onChange;
|
|
88
87
|
}
|
|
89
88
|
_create_class(RehydrationManager2, [{
|
|
90
89
|
/**
|
|
@@ -203,6 +202,7 @@ var RehydrationManager = /* @__PURE__ */function () {
|
|
|
203
202
|
* Failed tasks remain in the queue for retry.
|
|
204
203
|
*/
|
|
205
204
|
async function processQueue() {
|
|
205
|
+
var _this_onChange, _this;
|
|
206
206
|
var tasks = Array.from(this.rehydrationQueue.values());
|
|
207
207
|
tasks.sort(function (a, b) {
|
|
208
208
|
if (a.strategy.priority !== b.strategy.priority) {
|
|
@@ -210,6 +210,7 @@ var RehydrationManager = /* @__PURE__ */function () {
|
|
|
210
210
|
}
|
|
211
211
|
return a.scheduledAt - b.scheduledAt;
|
|
212
212
|
});
|
|
213
|
+
var anyExecuted = false;
|
|
213
214
|
var _iteratorNormalCompletion = true,
|
|
214
215
|
_didIteratorError = false,
|
|
215
216
|
_iteratorError = void 0;
|
|
@@ -219,6 +220,7 @@ var RehydrationManager = /* @__PURE__ */function () {
|
|
|
219
220
|
try {
|
|
220
221
|
await this.executeRehydration(task);
|
|
221
222
|
this.rehydrationQueue.delete(task.subscriptionId);
|
|
223
|
+
anyExecuted = true;
|
|
222
224
|
} catch (error) {
|
|
223
225
|
console.error(`Rehydration failed for ${task.subscriptionId}:`, error);
|
|
224
226
|
}
|
|
@@ -237,11 +239,11 @@ var RehydrationManager = /* @__PURE__ */function () {
|
|
|
237
239
|
}
|
|
238
240
|
}
|
|
239
241
|
}
|
|
242
|
+
if (anyExecuted) (_this_onChange = (_this = this).onChange) === null || _this_onChange === void 0 ? void 0 : _this_onChange.call(_this);
|
|
240
243
|
})
|
|
241
244
|
}, {
|
|
242
245
|
key: "executeRehydration",
|
|
243
|
-
value:
|
|
244
|
-
// Keep in queue for retry
|
|
246
|
+
value: (
|
|
245
247
|
/**
|
|
246
248
|
* Executes a single rehydration task.
|
|
247
249
|
*/
|
|
@@ -257,7 +259,7 @@ var RehydrationManager = /* @__PURE__ */function () {
|
|
|
257
259
|
break;
|
|
258
260
|
}
|
|
259
261
|
subscription.pendingRehydration = void 0;
|
|
260
|
-
}
|
|
262
|
+
})
|
|
261
263
|
}, {
|
|
262
264
|
key: "fetchOptimisticItems",
|
|
263
265
|
value: (
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","rehydration_exports","__export","RehydrationManager","module","exports","import_pacer","require","import_types","_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","RehydrationManager2","db","cache","subscriptionManager","mutationJournal","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","rehydration_exports","__export","RehydrationManager","module","exports","import_pacer","require","import_types","_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","RehydrationManager2","db","cache","subscriptionManager","mutationJournal","onChange","_this","Map","Debouncer","processQueue","wait","scheduleRehydration","subscription","reason","existingTask","rehydrationQueue","get","id","strategy","determineStrategy","priority","scheduleProcessing","delay","set","subscriptionId","scheduledAt","Date","now","RehydrationReason","Create","type","RehydrationStrategyType","FetchItemOnly","RemoteCreate","FullRefresh","Delete","Overflow","Uncertain","processDebouncer","setOptions","maybeExecute","_this_onChange","tasks","Array","from","values","sort","a","b","anyExecuted","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","task","executeRehydration","delete","error","console","err","return","call","getSubscription","fetchOptimisticItems","fullPageRefresh","pendingRehydration","pendingCreates","getPendingCreates","query","doctype","mutation","temporaryId","docname","realName","temporaryIdMap","document","getDoc","upsert"],"sources":["../../../src/sync/rehydration.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -52,6 +52,9 @@ class PlatformStorageKV {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
class IndexedDBKV {
|
|
55
|
+
dbPromise;
|
|
56
|
+
dbName;
|
|
57
|
+
store;
|
|
55
58
|
constructor(dbName = "frappe-sync", store = "kv") {
|
|
56
59
|
this.dbName = dbName;
|
|
57
60
|
this.store = store;
|
|
@@ -75,9 +78,6 @@ class IndexedDBKV {
|
|
|
75
78
|
};
|
|
76
79
|
});
|
|
77
80
|
}
|
|
78
|
-
dbName;
|
|
79
|
-
store;
|
|
80
|
-
dbPromise;
|
|
81
81
|
async getItem(key) {
|
|
82
82
|
const database = await this.dbPromise;
|
|
83
83
|
return new Promise((resolve, reject) => {
|
|
@@ -106,9 +106,9 @@ var IndexedDBKV = /* @__PURE__ */function () {
|
|
|
106
106
|
var dbName = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "frappe-sync",
|
|
107
107
|
store = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "kv";
|
|
108
108
|
_class_call_check(this, IndexedDBKV2);
|
|
109
|
+
_define_property(this, "dbPromise", void 0);
|
|
109
110
|
_define_property(this, "dbName", void 0);
|
|
110
111
|
_define_property(this, "store", void 0);
|
|
111
|
-
_define_property(this, "dbPromise", void 0);
|
|
112
112
|
this.dbName = dbName;
|
|
113
113
|
this.store = store;
|
|
114
114
|
this.dbPromise = new Promise(function (resolve, reject) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","storage_exports","__export","IndexedDBKV","PlatformStorageKV","module","exports","import_store","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","PlatformStorageKV2","getItem","_storage_getItem","storage","err","console","warn","setItem","removeItem","IndexedDBKV2","dbName","arguments","store","dbPromise","Promise","resolve","reject","indexedDB","Error","openRequest","open","onupgradeneeded","database","result","objectStoreNames","contains","createObjectStore","onsuccess","onerror","error","_this","transaction","objectStore"],"sources":["../../../src/sync/storage.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,eAAA;AAAAC,QAAA,CAAAD,eAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAwB,CAAAK,eAAA;AASjB,IAAAM,YAAM,GAAAC,OAAuC;AAAA,SAC5CC,iBAA6CA,CAAAC,QAAA,EAAAC,WAAA;EACjD,MAAID,QAAA,YAAAC,WAAA;IACF,UAAOC,SAAA,oCAAwB;EAAA;AAE/B;AACA,SAAAC,iBAAOA,CAAAC,MAAA,EAAAC,KAAA;EAAA,KACT,IAAAC,CAAA,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IACF,IAAAE,UAAA,GAAAH,KAAA,CAAAC,CAAA;IAEAE,UAAM,CAAAC,UAAqB,GAA8BD,UAAA,CAAAC,UAAA;IACvDD,UAAI,CAAAE,YAAA;IACF,eAAAF,UAAQ,EAAAA,UAAa,CAAAG,QAAK;IAC5BC,MAAA,CAAAC,cAAc,CAAAT,MAAA,EAAAI,UAAA,CAAAM,GAAA,EAAAN,UAAA;EACZ;AAA4D;AAC9D,SACFO,cAAAd,WAAA,EAAAe,UAAA,EAAAC,WAAA;EAEA,IAAAD,UAAM,EAAAb,iBAAuC,CAAAF,WAAA,CAAAiB,SAAA,EAAAF,UAAA;EAC3C,IAAAC,WAAI,EAAAd,iBAAA,CAAAF,WAAA,EAAAgB,WAAA;EACF,OAAAhB,WAAA;AAAsB;AAEtB,SAAAkB,gBAAaA,CAAAC,GAAA,EAAAN,GAAA,EAAAxB,KAAA;EAAkD,IACjEwB,GAAA,IAAAM,GAAA;IACFR,MAAA,CAAAC,cAAA,CAAAO,GAAA,EAAAN,GAAA;MACFxB,KAAA;MAuCamB,UAAA,EAAiC;
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","storage_exports","__export","IndexedDBKV","PlatformStorageKV","module","exports","import_store","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","PlatformStorageKV2","getItem","_storage_getItem","storage","err","console","warn","setItem","removeItem","IndexedDBKV2","dbName","arguments","store","dbPromise","Promise","resolve","reject","indexedDB","Error","openRequest","open","onupgradeneeded","database","result","objectStoreNames","contains","createObjectStore","onsuccess","onerror","error","_this","transaction","objectStore"],"sources":["../../../src/sync/storage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -30,6 +30,25 @@ var import_filters = require("./filters.cjs");
|
|
|
30
30
|
var import_types = require("./types.cjs");
|
|
31
31
|
var import_virtualPageManager = require("./virtualPageManager.cjs");
|
|
32
32
|
class SubscriptionManager {
|
|
33
|
+
subscriptions = /* @__PURE__ */new Map();
|
|
34
|
+
virtualPageManager;
|
|
35
|
+
backfillManager;
|
|
36
|
+
/** Maps a stable query key to an existing subscriptionId for dedup */
|
|
37
|
+
queryKeyToSubId = /* @__PURE__ */new Map();
|
|
38
|
+
/** Reference counts per subscriptionId for shared subscription lifecycle */
|
|
39
|
+
subRefCounts = /* @__PURE__ */new Map();
|
|
40
|
+
/**
|
|
41
|
+
* Subscriptions restored from a persisted snapshot (or detached on
|
|
42
|
+
* unsubscribe while persistence is on) that no live query has re-adopted
|
|
43
|
+
* yet. They serve cache-first renders on re-subscribe, are excluded from
|
|
44
|
+
* backfill fan-out, and are GC'd after `restoredSubscriptionTTL`.
|
|
45
|
+
*/
|
|
46
|
+
restoredByQueryKey = /* @__PURE__ */new Map();
|
|
47
|
+
/** Restore/detach timestamps per restored subscriptionId (for TTL GC). */
|
|
48
|
+
restoredAt = /* @__PURE__ */new Map();
|
|
49
|
+
db;
|
|
50
|
+
normalizedCache;
|
|
51
|
+
options;
|
|
33
52
|
constructor(db, normalizedCache, options = {}) {
|
|
34
53
|
this.db = db;
|
|
35
54
|
this.normalizedCache = normalizedCache;
|
|
@@ -38,19 +57,10 @@ class SubscriptionManager {
|
|
|
38
57
|
batchSize: this.options.batchSize
|
|
39
58
|
});
|
|
40
59
|
this.backfillManager = new import_backfill.BackfillManager(this.db, this.normalizedCache, {
|
|
41
|
-
pageSize: this.options.pageSize
|
|
60
|
+
pageSize: this.options.pageSize,
|
|
61
|
+
maxPages: this.options.backfillMaxPages
|
|
42
62
|
});
|
|
43
63
|
}
|
|
44
|
-
db;
|
|
45
|
-
normalizedCache;
|
|
46
|
-
options;
|
|
47
|
-
subscriptions = /* @__PURE__ */new Map();
|
|
48
|
-
virtualPageManager;
|
|
49
|
-
backfillManager;
|
|
50
|
-
/** Maps a stable query key to an existing subscriptionId for dedup */
|
|
51
|
-
queryKeyToSubId = /* @__PURE__ */new Map();
|
|
52
|
-
/** Reference counts per subscriptionId for shared subscription lifecycle */
|
|
53
|
-
subRefCounts = /* @__PURE__ */new Map();
|
|
54
64
|
async subscribe(query) {
|
|
55
65
|
const queryKey = JSON.stringify(query);
|
|
56
66
|
const existingId = this.queryKeyToSubId.get(queryKey);
|
|
@@ -64,7 +74,55 @@ class SubscriptionManager {
|
|
|
64
74
|
checkpoint: checkpoint2
|
|
65
75
|
};
|
|
66
76
|
}
|
|
77
|
+
const adopted = this.adoptRestoredSubscription(queryKey, query);
|
|
78
|
+
if (adopted) return adopted;
|
|
67
79
|
const subscriptionId = cryptoRandomId();
|
|
80
|
+
const {
|
|
81
|
+
rows,
|
|
82
|
+
cursor,
|
|
83
|
+
checkpoint
|
|
84
|
+
} = await this.fetchInitialRows(query);
|
|
85
|
+
const subscription = {
|
|
86
|
+
id: subscriptionId,
|
|
87
|
+
query,
|
|
88
|
+
checkpoint,
|
|
89
|
+
// For CDC backfill
|
|
90
|
+
cursor,
|
|
91
|
+
// For stable pagination
|
|
92
|
+
docIds: rows.map(row => row.name),
|
|
93
|
+
tombstones: /* @__PURE__ */new Map()
|
|
94
|
+
};
|
|
95
|
+
if (rows.length > 0) {
|
|
96
|
+
subscription.boundaries = {
|
|
97
|
+
firstItem: rows[0],
|
|
98
|
+
lastItem: rows[rows.length - 1],
|
|
99
|
+
offset: query.limitStart || 0,
|
|
100
|
+
pageSize: query.limit || 20
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
subscription.metadata = {
|
|
104
|
+
itemsBeforePage: 0,
|
|
105
|
+
itemsAfterPage: 0
|
|
106
|
+
};
|
|
107
|
+
this.subscriptions.set(subscriptionId, subscription);
|
|
108
|
+
this.queryKeyToSubId.set(queryKey, subscriptionId);
|
|
109
|
+
this.subRefCounts.set(subscriptionId, 1);
|
|
110
|
+
if (query.progressive) {
|
|
111
|
+
this.virtualPageManager.registerSubscription(subscriptionId, subscription, subscription.docIds, cursor);
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
subscriptionId,
|
|
115
|
+
rows,
|
|
116
|
+
checkpoint
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Performs the initial subscription fetch (single doc via getDoc, lists via
|
|
121
|
+
* getDocList), seeds the normalized cache, and computes the CDC checkpoint
|
|
122
|
+
* as the max `modified` across returned rows. Shared by fresh subscribes
|
|
123
|
+
* and adopted-subscription refreshes so both have identical semantics.
|
|
124
|
+
*/
|
|
125
|
+
async fetchInitialRows(query) {
|
|
68
126
|
const queryFields = query.fields?.length ? Array.from(/* @__PURE__ */new Set([...query.fields, "modified", "name"])) : void 0;
|
|
69
127
|
let rows = [];
|
|
70
128
|
let cursor;
|
|
@@ -105,44 +163,147 @@ class SubscriptionManager {
|
|
|
105
163
|
if (!row.modified) continue;
|
|
106
164
|
if (!checkpoint || row.modified > checkpoint) checkpoint = row.modified;
|
|
107
165
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
query,
|
|
111
|
-
checkpoint,
|
|
112
|
-
// For CDC backfill
|
|
166
|
+
return {
|
|
167
|
+
rows,
|
|
113
168
|
cursor,
|
|
114
|
-
|
|
115
|
-
docIds: rows.map(row => row.name),
|
|
116
|
-
tombstones: /* @__PURE__ */new Map()
|
|
169
|
+
checkpoint
|
|
117
170
|
};
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Re-adopts a subscription restored from a persisted snapshot when an
|
|
174
|
+
* identical query subscribes: the cached membership renders immediately and
|
|
175
|
+
* a background refresh re-seeds from the network. Progressive queries are
|
|
176
|
+
* excluded — their VirtualPageManager state is not persisted, so they take
|
|
177
|
+
* the fresh-subscribe path.
|
|
178
|
+
*/
|
|
179
|
+
adoptRestoredSubscription(queryKey, query) {
|
|
180
|
+
if (query.progressive) return void 0;
|
|
181
|
+
const restoredId = this.restoredByQueryKey.get(queryKey);
|
|
182
|
+
if (!restoredId) return void 0;
|
|
183
|
+
const subscription = this.subscriptions.get(restoredId);
|
|
184
|
+
this.restoredByQueryKey.delete(queryKey);
|
|
185
|
+
this.restoredAt.delete(restoredId);
|
|
186
|
+
if (!subscription) return void 0;
|
|
187
|
+
this.queryKeyToSubId.set(queryKey, restoredId);
|
|
188
|
+
this.subRefCounts.set(restoredId, 1);
|
|
189
|
+
const refresh = this.refreshAdoptedSubscription(subscription);
|
|
190
|
+
const rows = this.getDocsForSubscription(restoredId);
|
|
191
|
+
return {
|
|
192
|
+
subscriptionId: restoredId,
|
|
193
|
+
rows,
|
|
194
|
+
checkpoint: subscription.checkpoint,
|
|
195
|
+
refresh
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Network refresh for an adopted subscription with fresh-subscribe
|
|
200
|
+
* semantics: an authoritative page fetch replaces membership and recomputes
|
|
201
|
+
* the checkpoint (identical to what a brand-new subscribe would produce).
|
|
202
|
+
* On failure (offline) the cached membership and the restored CDC
|
|
203
|
+
* checkpoint are kept and the subscription is marked stale — the next
|
|
204
|
+
* backfill trigger drains changes from that checkpoint. Never rejects.
|
|
205
|
+
*/
|
|
206
|
+
async refreshAdoptedSubscription(subscription) {
|
|
207
|
+
try {
|
|
208
|
+
const {
|
|
209
|
+
rows,
|
|
210
|
+
cursor,
|
|
211
|
+
checkpoint
|
|
212
|
+
} = await this.fetchInitialRows(subscription.query);
|
|
213
|
+
subscription.checkpoint = checkpoint;
|
|
214
|
+
subscription.cursor = cursor;
|
|
215
|
+
subscription.docIds = rows.map(row => row.name);
|
|
216
|
+
if (rows.length > 0) {
|
|
217
|
+
subscription.boundaries = {
|
|
218
|
+
firstItem: rows[0],
|
|
219
|
+
lastItem: rows[rows.length - 1],
|
|
220
|
+
offset: subscription.query.limitStart || 0,
|
|
221
|
+
pageSize: subscription.query.limit || 20
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
subscription.metadata = {
|
|
225
|
+
itemsBeforePage: 0,
|
|
226
|
+
itemsAfterPage: 0
|
|
227
|
+
};
|
|
228
|
+
subscription.stale = false;
|
|
229
|
+
return {
|
|
230
|
+
ok: true
|
|
231
|
+
};
|
|
232
|
+
} catch (error) {
|
|
233
|
+
subscription.stale = true;
|
|
234
|
+
return {
|
|
235
|
+
ok: false,
|
|
236
|
+
error
|
|
124
237
|
};
|
|
125
238
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Registers a subscription restored from a persisted snapshot. Restored
|
|
242
|
+
* subscriptions are dormant: they hold the persisted query, CDC checkpoint,
|
|
243
|
+
* and membership for cache-first re-adoption, but are skipped by backfill
|
|
244
|
+
* fan-out until adopted. Duplicate snapshot entries for the same query
|
|
245
|
+
* (accumulated by pre-GC versions) collapse last-wins.
|
|
246
|
+
*/
|
|
247
|
+
restoreSubscription(snapshotSub) {
|
|
248
|
+
if (!snapshotSub?.id || !snapshotSub.query?.doctype) return;
|
|
249
|
+
if (this.subscriptions.has(snapshotSub.id)) return;
|
|
250
|
+
const queryKey = JSON.stringify(snapshotSub.query);
|
|
251
|
+
const activeId = this.queryKeyToSubId.get(queryKey);
|
|
252
|
+
if (activeId && this.subscriptions.has(activeId)) return;
|
|
253
|
+
const previousId = this.restoredByQueryKey.get(queryKey);
|
|
254
|
+
if (previousId) {
|
|
255
|
+
this.subscriptions.delete(previousId);
|
|
256
|
+
this.restoredAt.delete(previousId);
|
|
135
257
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
checkpoint
|
|
258
|
+
const subscription = {
|
|
259
|
+
id: snapshotSub.id,
|
|
260
|
+
query: snapshotSub.query,
|
|
261
|
+
checkpoint: snapshotSub.checkpoint,
|
|
262
|
+
cursor: snapshotSub.cursor,
|
|
263
|
+
docIds: Array.isArray(snapshotSub.docIds) ? snapshotSub.docIds : [],
|
|
264
|
+
tombstones: /* @__PURE__ */new Map(),
|
|
265
|
+
metadata: {
|
|
266
|
+
itemsBeforePage: 0,
|
|
267
|
+
itemsAfterPage: 0
|
|
268
|
+
}
|
|
140
269
|
};
|
|
270
|
+
this.subscriptions.set(subscription.id, subscription);
|
|
271
|
+
this.restoredByQueryKey.set(queryKey, subscription.id);
|
|
272
|
+
this.restoredAt.set(subscription.id, Date.now());
|
|
273
|
+
}
|
|
274
|
+
/** True when the subscription came from a snapshot and is not yet adopted. */
|
|
275
|
+
isRestoredSubscription(subscriptionId) {
|
|
276
|
+
return this.restoredAt.has(subscriptionId);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Drops restored subscriptions that no query re-adopted within
|
|
280
|
+
* `restoredSubscriptionTTL` (default 30 minutes). Called before every
|
|
281
|
+
* persistence snapshot so expired entries also leave the snapshot.
|
|
282
|
+
*/
|
|
283
|
+
gcRestoredSubscriptions(now = Date.now()) {
|
|
284
|
+
const ttl = this.options.restoredSubscriptionTTL ?? 30 * 60 * 1e3;
|
|
285
|
+
for (const [subscriptionId, restoredAtMs] of this.restoredAt) {
|
|
286
|
+
if (now - restoredAtMs <= ttl) continue;
|
|
287
|
+
this.restoredAt.delete(subscriptionId);
|
|
288
|
+
this.subscriptions.delete(subscriptionId);
|
|
289
|
+
for (const [key, id] of this.restoredByQueryKey) {
|
|
290
|
+
if (id === subscriptionId) {
|
|
291
|
+
this.restoredByQueryKey.delete(key);
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
141
296
|
}
|
|
142
297
|
/**
|
|
143
298
|
* Removes a subscription by id. Cached docs remain until evicted by
|
|
144
299
|
* realtime/backfill or explicit resets. This keeps other subs fast if they
|
|
145
300
|
* share the same doctypes.
|
|
301
|
+
*
|
|
302
|
+
* With persistence enabled (`persistKey`), the released subscription is
|
|
303
|
+
* detached into the restored pool instead of deleted: its query,
|
|
304
|
+
* checkpoint, and membership stay in the snapshot so a remount (or a
|
|
305
|
+
* cold offline reload) can re-adopt it cache-first. Detached subscriptions
|
|
306
|
+
* are excluded from backfill and GC'd after `restoredSubscriptionTTL`.
|
|
146
307
|
*/
|
|
147
308
|
unsubscribe(subscriptionId) {
|
|
148
309
|
const refCount = (this.subRefCounts.get(subscriptionId) || 1) - 1;
|
|
@@ -151,12 +312,20 @@ class SubscriptionManager {
|
|
|
151
312
|
return;
|
|
152
313
|
}
|
|
153
314
|
this.subRefCounts.delete(subscriptionId);
|
|
315
|
+
let queryKey;
|
|
154
316
|
for (const [key, id] of this.queryKeyToSubId) {
|
|
155
317
|
if (id === subscriptionId) {
|
|
318
|
+
queryKey = key;
|
|
156
319
|
this.queryKeyToSubId.delete(key);
|
|
157
320
|
break;
|
|
158
321
|
}
|
|
159
322
|
}
|
|
323
|
+
const subscription = this.subscriptions.get(subscriptionId);
|
|
324
|
+
if (this.options.persistKey && subscription && queryKey && !subscription.query.progressive && !this.restoredByQueryKey.has(queryKey)) {
|
|
325
|
+
this.restoredByQueryKey.set(queryKey, subscriptionId);
|
|
326
|
+
this.restoredAt.set(subscriptionId, Date.now());
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
160
329
|
this.subscriptions.delete(subscriptionId);
|
|
161
330
|
}
|
|
162
331
|
/** Returns subscription metadata by id. */
|
|
@@ -222,7 +391,10 @@ class SubscriptionManager {
|
|
|
222
391
|
*/
|
|
223
392
|
async backfill(args) {
|
|
224
393
|
if (args.scope === import_types.BackfillScope.All) {
|
|
225
|
-
for (const subscription of this.subscriptions.values())
|
|
394
|
+
for (const subscription of this.subscriptions.values()) {
|
|
395
|
+
if (this.restoredAt.has(subscription.id)) continue;
|
|
396
|
+
await this.backfillSub(subscription, args.pageSize);
|
|
397
|
+
}
|
|
226
398
|
return;
|
|
227
399
|
}
|
|
228
400
|
if (args.scope === import_types.BackfillScope.Subscriptions) {
|
|
@@ -234,7 +406,10 @@ class SubscriptionManager {
|
|
|
234
406
|
}
|
|
235
407
|
if (args.scope === import_types.BackfillScope.Doctypes) {
|
|
236
408
|
const set = new Set(args.doctypes || []);
|
|
237
|
-
for (const subscription of this.subscriptions.values())
|
|
409
|
+
for (const subscription of this.subscriptions.values()) {
|
|
410
|
+
if (this.restoredAt.has(subscription.id)) continue;
|
|
411
|
+
if (set.has(subscription.query.doctype)) await this.backfillSub(subscription, args.pageSize);
|
|
412
|
+
}
|
|
238
413
|
return;
|
|
239
414
|
}
|
|
240
415
|
if (args.scope === import_types.BackfillScope.Docs) {
|
|
@@ -248,7 +423,9 @@ class SubscriptionManager {
|
|
|
248
423
|
* Backfills one subscription using CDC checkpoint and updates membership.
|
|
249
424
|
*
|
|
250
425
|
* Algorithm
|
|
251
|
-
* - Query backfill using checkpoint for CDC (Change Data Capture)
|
|
426
|
+
* - Query backfill using checkpoint for CDC (Change Data Capture),
|
|
427
|
+
* draining follow-up pages while the server reports has_more (bounded)
|
|
428
|
+
* so reconnect catch-up is complete rather than one page deep
|
|
252
429
|
* - Upsert each row to cache
|
|
253
430
|
* - For each row: test client-side filters; add/remove membership accordingly
|
|
254
431
|
* - Track tombstones for deleted documents
|
|
@@ -256,29 +433,39 @@ class SubscriptionManager {
|
|
|
256
433
|
* - If no filters were specified, derive membership directly from returned rows
|
|
257
434
|
*/
|
|
258
435
|
async backfillSub(subscription, pageSize = this.options.pageSize ?? 200) {
|
|
259
|
-
const
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
this.normalizedCache.remove({
|
|
275
|
-
doctype: deletedDoctype,
|
|
276
|
-
name: deleted.name
|
|
277
|
-
});
|
|
278
|
-
if (deletedDoctype === subscription.query.doctype) subscription.docIds = subscription.docIds.filter(currentName => currentName !== deleted.name);
|
|
436
|
+
const maxPages = this.options.backfillMaxPages ?? 20;
|
|
437
|
+
const rows = [];
|
|
438
|
+
const deleted = [];
|
|
439
|
+
for (let page = 0; page < maxPages; page++) {
|
|
440
|
+
const response = await this.db.backfill({
|
|
441
|
+
doctype: subscription.query.doctype,
|
|
442
|
+
fields: subscription.query.fields,
|
|
443
|
+
filters: subscription.query.filters,
|
|
444
|
+
modifiedAfter: subscription.checkpoint,
|
|
445
|
+
// CDC checkpoint
|
|
446
|
+
limit: pageSize
|
|
447
|
+
});
|
|
448
|
+
if (Array.isArray(response.deleted)) {
|
|
449
|
+
deleted.push(...response.deleted);
|
|
279
450
|
}
|
|
451
|
+
rows.push(...response.rows);
|
|
452
|
+
if (response.checkpoint) subscription.checkpoint = response.checkpoint;
|
|
453
|
+
const madeProgress = response.rows.length > 0 || (response.deleted?.length ?? 0) > 0;
|
|
454
|
+
if (!response.has_more || !response.checkpoint || !madeProgress) break;
|
|
280
455
|
}
|
|
281
|
-
for (const
|
|
456
|
+
for (const deletedRef of deleted) {
|
|
457
|
+
if (!deletedRef?.name) continue;
|
|
458
|
+
const deletedDoctype = deletedRef.doctype || subscription.query.doctype;
|
|
459
|
+
if (deletedDoctype === subscription.query.doctype && subscription.tombstones) {
|
|
460
|
+
subscription.tombstones.set(deletedRef.name, Date.now());
|
|
461
|
+
}
|
|
462
|
+
this.normalizedCache.remove({
|
|
463
|
+
doctype: deletedDoctype,
|
|
464
|
+
name: deletedRef.name
|
|
465
|
+
});
|
|
466
|
+
if (deletedDoctype === subscription.query.doctype) subscription.docIds = subscription.docIds.filter(currentName => currentName !== deletedRef.name);
|
|
467
|
+
}
|
|
468
|
+
for (const row of rows) {
|
|
282
469
|
if (!row.doctype) row.doctype = subscription.query.doctype;
|
|
283
470
|
this.normalizedCache.upsert(row);
|
|
284
471
|
const name = row.name;
|
|
@@ -287,8 +474,7 @@ class SubscriptionManager {
|
|
|
287
474
|
if (match && !subscription.docIds.includes(name)) subscription.docIds.push(name);
|
|
288
475
|
if (!match) subscription.docIds = subscription.docIds.filter(currentName => currentName !== name);
|
|
289
476
|
}
|
|
290
|
-
if (
|
|
291
|
-
if (response.rows.length && !subscription.query.filters) subscription.docIds = response.rows.map(row => row.name);
|
|
477
|
+
if (rows.length && !subscription.query.filters) subscription.docIds = rows.map(row => row.name);
|
|
292
478
|
if (subscription.docIds.length > 0) {
|
|
293
479
|
const firstDoc = this.normalizedCache.get({
|
|
294
480
|
doctype: subscription.query.doctype,
|
|
@@ -309,9 +495,10 @@ class SubscriptionManager {
|
|
|
309
495
|
}
|
|
310
496
|
this.resortSubscriptionDocIds(subscription);
|
|
311
497
|
this.cleanupTombstones(subscription.id);
|
|
498
|
+
subscription.stale = false;
|
|
312
499
|
if (this.options.onBackfill) this.options.onBackfill({
|
|
313
500
|
doctype: subscription.query.doctype,
|
|
314
|
-
fetched:
|
|
501
|
+
fetched: rows.length,
|
|
315
502
|
checkpoint: subscription.checkpoint
|
|
316
503
|
});
|
|
317
504
|
}
|
|
@@ -351,6 +538,7 @@ class SubscriptionManager {
|
|
|
351
538
|
updateSubscriptionMembership(doc) {
|
|
352
539
|
const subscriptionsNeedingRehydration = [];
|
|
353
540
|
for (const subscription of this.subscriptions.values()) {
|
|
541
|
+
if (this.restoredAt.has(subscription.id)) continue;
|
|
354
542
|
if (subscription.query.doctype !== doc.doctype) continue;
|
|
355
543
|
const match = (0, import_filters.matchesFilters)(doc, subscription.query.filters);
|
|
356
544
|
const isExisting = subscription.docIds.includes(doc.name);
|
|
@@ -451,6 +639,8 @@ class SubscriptionManager {
|
|
|
451
639
|
this.subscriptions.clear();
|
|
452
640
|
this.queryKeyToSubId.clear();
|
|
453
641
|
this.subRefCounts.clear();
|
|
642
|
+
this.restoredByQueryKey.clear();
|
|
643
|
+
this.restoredAt.clear();
|
|
454
644
|
}
|
|
455
645
|
/**
|
|
456
646
|
* Cleans up expired tombstones based on age and count limits.
|