@multiplatform.one/frappe 6.0.4 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -12
- package/dist/cjs/auth.cjs +1 -1
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.cjs +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.cjs +18 -4
- package/dist/cjs/collection.native.js +18 -4
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/core/http.cjs +92 -9
- package/dist/cjs/core/http.native.js +96 -7
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/db.cjs +7 -7
- package/dist/cjs/db.native.js +4 -4
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/doctype.cjs +97 -39
- package/dist/cjs/doctype.native.js +116 -46
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.cjs +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.cjs +3 -2
- package/dist/cjs/fixtureDb.native.js +2 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/frappeApp.cjs +15 -14
- package/dist/cjs/frappeApp.native.js +16 -14
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +198 -18
- package/dist/cjs/frappeReact.native.js +241 -18
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -4
- package/dist/cjs/index.native.js +9 -4
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/pacer.cjs +2 -2
- package/dist/cjs/pacer.native.js +2 -2
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +186 -46
- package/dist/cjs/realtime.native.js +268 -48
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.cjs +32 -27
- package/dist/cjs/sync/backfill.native.js +49 -43
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/index.cjs +90 -24
- package/dist/cjs/sync/index.native.js +112 -10
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.cjs +0 -3
- package/dist/cjs/sync/merge.native.js +0 -3
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.cjs +25 -19
- package/dist/cjs/sync/mutationEngine.native.js +16 -13
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.cjs +9 -4
- package/dist/cjs/sync/mutationJournal.native.js +7 -4
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.cjs +7 -3
- package/dist/cjs/sync/normalizedCache.native.js +7 -2
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.cjs +63 -31
- package/dist/cjs/sync/persistence.native.js +120 -63
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.cjs +124 -13
- package/dist/cjs/sync/realtime.native.js +163 -20
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.cjs +16 -10
- package/dist/cjs/sync/rehydration.native.js +16 -14
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.cjs +3 -3
- package/dist/cjs/sync/storage.native.js +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.cjs +255 -65
- package/dist/cjs/sync/subscriptionManager.native.js +330 -93
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.cjs +2 -0
- package/dist/cjs/sync/types.native.js +2 -0
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.cjs +9 -9
- package/dist/cjs/sync/virtualPageManager.native.js +5 -9
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.cjs +52 -0
- package/dist/cjs/useLiveQuery.native.js +59 -0
- package/dist/cjs/useLiveQuery.native.js.map +1 -0
- package/dist/cjs/util.cjs +11 -2
- package/dist/cjs/util.native.js +16 -2
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.mjs +1 -1
- package/dist/esm/auth.mjs.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.mjs +1 -1
- package/dist/esm/call.mjs.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.mjs +18 -4
- package/dist/esm/collection.mjs.map +1 -1
- package/dist/esm/collection.native.js +18 -4
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/core/http.mjs +93 -10
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +97 -8
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/db.mjs +7 -7
- package/dist/esm/db.mjs.map +1 -1
- package/dist/esm/db.native.js +4 -4
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/doctype.mjs +96 -39
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +115 -46
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.mjs +1 -1
- package/dist/esm/file.mjs.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.mjs +3 -2
- package/dist/esm/fixtureDb.mjs.map +1 -1
- package/dist/esm/fixtureDb.native.js +2 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/frappeApp.mjs +15 -14
- package/dist/esm/frappeApp.mjs.map +1 -1
- package/dist/esm/frappeApp.native.js +16 -14
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +197 -19
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +240 -19
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -4
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -4
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/pacer.mjs +1 -1
- package/dist/esm/pacer.native.js +1 -1
- package/dist/esm/realtime.mjs +187 -47
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +269 -49
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.mjs +32 -27
- package/dist/esm/sync/backfill.mjs.map +1 -1
- package/dist/esm/sync/backfill.native.js +49 -43
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/index.mjs +90 -24
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +112 -10
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.mjs +1 -1
- package/dist/esm/sync/merge.mjs.map +1 -1
- package/dist/esm/sync/merge.native.js +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.mjs +25 -19
- package/dist/esm/sync/mutationEngine.mjs.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +16 -13
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.mjs +9 -4
- package/dist/esm/sync/mutationJournal.mjs.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +7 -4
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.mjs +7 -3
- package/dist/esm/sync/normalizedCache.mjs.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js +7 -2
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.mjs +64 -32
- package/dist/esm/sync/persistence.mjs.map +1 -1
- package/dist/esm/sync/persistence.native.js +121 -64
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.mjs +124 -13
- package/dist/esm/sync/realtime.mjs.map +1 -1
- package/dist/esm/sync/realtime.native.js +163 -20
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.mjs +16 -10
- package/dist/esm/sync/rehydration.mjs.map +1 -1
- package/dist/esm/sync/rehydration.native.js +16 -14
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.mjs +3 -3
- package/dist/esm/sync/storage.mjs.map +1 -1
- package/dist/esm/sync/storage.native.js +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.mjs +255 -65
- package/dist/esm/sync/subscriptionManager.mjs.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +330 -93
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.mjs +2 -0
- package/dist/esm/sync/types.mjs.map +1 -1
- package/dist/esm/sync/types.native.js +2 -0
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.mjs +9 -9
- package/dist/esm/sync/virtualPageManager.mjs.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +5 -9
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.mjs +26 -0
- package/dist/esm/useLiveQuery.mjs.map +1 -0
- package/dist/esm/useLiveQuery.native.js +30 -0
- package/dist/esm/useLiveQuery.native.js.map +1 -0
- package/dist/esm/util.mjs +11 -3
- package/dist/esm/util.mjs.map +1 -1
- package/dist/esm/util.native.js +16 -3
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/auth.mjs +1 -1
- package/dist/jsx/auth.mjs.map +1 -1
- package/dist/jsx/auth.native.js.map +1 -1
- package/dist/jsx/call.mjs +1 -1
- package/dist/jsx/call.mjs.map +1 -1
- package/dist/jsx/call.native.js.map +1 -1
- package/dist/jsx/collection.mjs +18 -4
- package/dist/jsx/collection.mjs.map +1 -1
- package/dist/jsx/collection.native.js +18 -4
- package/dist/jsx/collection.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +93 -10
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +96 -7
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/db.mjs +7 -7
- package/dist/jsx/db.mjs.map +1 -1
- package/dist/jsx/db.native.js +4 -4
- package/dist/jsx/db.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +96 -39
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +116 -46
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/file.mjs +1 -1
- package/dist/jsx/file.mjs.map +1 -1
- package/dist/jsx/file.native.js.map +1 -1
- package/dist/jsx/fixtureDb.mjs +3 -2
- package/dist/jsx/fixtureDb.mjs.map +1 -1
- package/dist/jsx/fixtureDb.native.js +2 -1
- package/dist/jsx/fixtureDb.native.js.map +1 -1
- package/dist/jsx/frappeApp.mjs +15 -14
- package/dist/jsx/frappeApp.mjs.map +1 -1
- package/dist/jsx/frappeApp.native.js +16 -14
- package/dist/jsx/frappeApp.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +197 -19
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +241 -18
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +5 -4
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -4
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +9 -4
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/pacer.mjs +1 -1
- package/dist/jsx/pacer.native.js +2 -2
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +187 -47
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +268 -48
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/sync/backfill.mjs +32 -27
- package/dist/jsx/sync/backfill.mjs.map +1 -1
- package/dist/jsx/sync/backfill.native.js +49 -43
- package/dist/jsx/sync/backfill.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +90 -24
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +112 -10
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/merge.mjs +1 -1
- package/dist/jsx/sync/merge.mjs.map +1 -1
- package/dist/jsx/sync/merge.native.js +0 -3
- package/dist/jsx/sync/merge.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.mjs +25 -19
- package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js +16 -13
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.mjs +9 -4
- package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js +7 -4
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/normalizedCache.mjs +7 -3
- package/dist/jsx/sync/normalizedCache.mjs.map +1 -1
- package/dist/jsx/sync/normalizedCache.native.js +7 -2
- package/dist/jsx/sync/normalizedCache.native.js.map +1 -1
- package/dist/jsx/sync/persistence.mjs +64 -32
- package/dist/jsx/sync/persistence.mjs.map +1 -1
- package/dist/jsx/sync/persistence.native.js +120 -63
- package/dist/jsx/sync/persistence.native.js.map +1 -1
- package/dist/jsx/sync/realtime.mjs +124 -13
- package/dist/jsx/sync/realtime.mjs.map +1 -1
- package/dist/jsx/sync/realtime.native.js +163 -20
- package/dist/jsx/sync/realtime.native.js.map +1 -1
- package/dist/jsx/sync/rehydration.mjs +16 -10
- package/dist/jsx/sync/rehydration.mjs.map +1 -1
- package/dist/jsx/sync/rehydration.native.js +16 -14
- package/dist/jsx/sync/rehydration.native.js.map +1 -1
- package/dist/jsx/sync/storage.mjs +3 -3
- package/dist/jsx/sync/storage.mjs.map +1 -1
- package/dist/jsx/sync/storage.native.js +1 -1
- package/dist/jsx/sync/storage.native.js.map +1 -1
- package/dist/jsx/sync/subscriptionManager.mjs +255 -65
- package/dist/jsx/sync/subscriptionManager.mjs.map +1 -1
- package/dist/jsx/sync/subscriptionManager.native.js +330 -93
- package/dist/jsx/sync/subscriptionManager.native.js.map +1 -1
- package/dist/jsx/sync/types.mjs +2 -0
- package/dist/jsx/sync/types.mjs.map +1 -1
- package/dist/jsx/sync/types.native.js +2 -0
- package/dist/jsx/sync/types.native.js.map +1 -1
- package/dist/jsx/sync/virtualPageManager.mjs +9 -9
- package/dist/jsx/sync/virtualPageManager.mjs.map +1 -1
- package/dist/jsx/sync/virtualPageManager.native.js +5 -9
- package/dist/jsx/sync/virtualPageManager.native.js.map +1 -1
- package/dist/jsx/useLiveQuery.mjs +26 -0
- package/dist/jsx/useLiveQuery.mjs.map +1 -0
- package/dist/jsx/useLiveQuery.native.js +59 -0
- package/dist/jsx/useLiveQuery.native.js.map +1 -0
- package/dist/jsx/util.mjs +11 -3
- package/dist/jsx/util.mjs.map +1 -1
- package/dist/jsx/util.native.js +16 -2
- package/dist/jsx/util.native.js.map +1 -1
- package/package.json +20 -17
- package/src/auth.ts +5 -1
- package/src/call.ts +5 -1
- package/src/collection.spec.ts +55 -0
- package/src/collection.ts +33 -4
- package/src/core/http.spec.ts +66 -0
- package/src/core/http.ts +115 -9
- package/src/core/httpNative.spec.ts +234 -0
- package/src/core/types.ts +2 -0
- package/src/db.spec.ts +91 -51
- package/src/db.ts +27 -8
- package/src/doctype.spec.ts +247 -39
- package/src/doctype.ts +203 -53
- package/src/file.ts +5 -1
- package/src/fixtureDb.ts +13 -2
- package/src/frappeApp.ts +18 -19
- package/src/frappeReact.spec.ts +565 -1
- package/src/frappeReact.ts +446 -38
- package/src/frappeReactLiveQueryGc.spec.ts +320 -0
- package/src/frappeReactNative.spec.ts +65 -0
- package/src/index.ts +10 -9
- package/src/pacer.ts +2 -2
- package/src/realtime.spec.ts +464 -20
- package/src/realtime.ts +284 -46
- package/src/sync/backfill.spec.ts +43 -0
- package/src/sync/backfill.ts +59 -39
- package/src/sync/debug.spec.ts +36 -0
- package/src/sync/filterValidation.spec.ts +197 -0
- package/src/sync/index.ts +98 -7
- package/src/sync/merge.ts +3 -3
- package/src/sync/mutationEngine.spec.ts +36 -4
- package/src/sync/mutationEngine.ts +30 -11
- package/src/sync/mutationJournal.ts +18 -4
- package/src/sync/normalizedCache.spec.ts +102 -0
- package/src/sync/normalizedCache.ts +19 -3
- package/src/sync/offlineRestore.spec.ts +423 -0
- package/src/sync/persistence.spec.ts +39 -7
- package/src/sync/persistence.ts +90 -18
- package/src/sync/persistenceGjs.spec.ts +143 -0
- package/src/sync/persistenceNative.spec.ts +139 -0
- package/src/sync/realtime.spec.ts +18 -1
- package/src/sync/realtime.ts +161 -13
- package/src/sync/rehydration.ts +23 -5
- package/src/sync/storage.ts +5 -4
- package/src/sync/subscriptionManager.spec.ts +94 -0
- package/src/sync/subscriptionManager.ts +304 -82
- package/src/sync/syncModule.spec.ts +137 -0
- package/src/sync/types.ts +39 -0
- package/src/sync/virtualPageManager.ts +8 -4
- package/src/useLiveQuery.ts +58 -0
- package/src/util.spec.ts +35 -4
- package/src/util.ts +37 -2
- package/types/auth.d.ts +13 -0
- package/types/auth.d.ts.map +1 -0
- package/types/call.d.ts +10 -0
- package/types/call.d.ts.map +1 -0
- package/types/collection.d.ts +127 -0
- package/types/collection.d.ts.map +1 -0
- package/types/common/types.d.ts +35 -0
- package/types/common/types.d.ts.map +1 -0
- package/types/core/http.d.ts +86 -0
- package/types/core/http.d.ts.map +1 -0
- package/types/core/types.d.ts +74 -0
- package/types/core/types.d.ts.map +1 -0
- package/types/core/wire.d.ts +405 -0
- package/types/core/wire.d.ts.map +1 -0
- package/types/db.d.ts +244 -0
- package/types/db.d.ts.map +1 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts +7 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts.map +1 -0
- package/types/devtools/index.d.ts +4 -0
- package/types/devtools/index.d.ts.map +1 -0
- package/types/devtools/plugin.d.ts +9 -0
- package/types/devtools/plugin.d.ts.map +1 -0
- package/types/devtools/theme.d.ts +15 -0
- package/types/devtools/theme.d.ts.map +1 -0
- package/types/doctype.d.ts +256 -0
- package/types/doctype.d.ts.map +1 -0
- package/types/file.d.ts +15 -0
- package/types/file.d.ts.map +1 -0
- package/types/fixtureDb.d.ts +76 -0
- package/types/fixtureDb.d.ts.map +1 -0
- package/types/fixtures.d.ts +55 -0
- package/types/fixtures.d.ts.map +1 -0
- package/types/frappeApp.d.ts +45 -0
- package/types/frappeApp.d.ts.map +1 -0
- package/types/frappeReact.d.ts +270 -0
- package/types/frappeReact.d.ts.map +1 -0
- package/types/index.d.ts +44 -0
- package/types/index.d.ts.map +1 -0
- package/types/optimistic.d.ts +38 -0
- package/types/optimistic.d.ts.map +1 -0
- package/types/pacer.d.ts +193 -0
- package/types/pacer.d.ts.map +1 -0
- package/types/plugin/index.d.ts +11 -0
- package/types/plugin/index.d.ts.map +1 -0
- package/types/realtime.d.ts +121 -0
- package/types/realtime.d.ts.map +1 -0
- package/types/sync/backfill.d.ts +60 -0
- package/types/sync/backfill.d.ts.map +1 -0
- package/types/sync/filters.d.ts +101 -0
- package/types/sync/filters.d.ts.map +1 -0
- package/types/sync/index.d.ts +181 -0
- package/types/sync/index.d.ts.map +1 -0
- package/types/sync/merge.d.ts +59 -0
- package/types/sync/merge.d.ts.map +1 -0
- package/types/sync/mutationEngine.d.ts +117 -0
- package/types/sync/mutationEngine.d.ts.map +1 -0
- package/types/sync/mutationJournal.d.ts +60 -0
- package/types/sync/mutationJournal.d.ts.map +1 -0
- package/types/sync/normalizedCache.d.ts +59 -0
- package/types/sync/normalizedCache.d.ts.map +1 -0
- package/types/sync/persistence.d.ts +185 -0
- package/types/sync/persistence.d.ts.map +1 -0
- package/types/sync/realtime.d.ts +121 -0
- package/types/sync/realtime.d.ts.map +1 -0
- package/types/sync/rehydration.d.ts +109 -0
- package/types/sync/rehydration.d.ts.map +1 -0
- package/types/sync/storage.d.ts +65 -0
- package/types/sync/storage.d.ts.map +1 -0
- package/types/sync/subscriptionManager.d.ts +161 -0
- package/types/sync/subscriptionManager.d.ts.map +1 -0
- package/types/sync/types.d.ts +435 -0
- package/types/sync/types.d.ts.map +1 -0
- package/types/sync/virtualPageManager.d.ts +190 -0
- package/types/sync/virtualPageManager.d.ts.map +1 -0
- package/types/useLiveQuery.d.ts +16 -0
- package/types/useLiveQuery.d.ts.map +1 -0
- package/types/util.d.ts +24 -0
- package/types/util.d.ts.map +1 -0
- package/dist/cjs/auth.spec.cjs +0 -322
- package/dist/cjs/auth.spec.native.js +0 -329
- package/dist/cjs/auth.spec.native.js.map +0 -1
- package/dist/cjs/call.spec.cjs +0 -427
- package/dist/cjs/call.spec.native.js +0 -430
- package/dist/cjs/call.spec.native.js.map +0 -1
- package/dist/cjs/collection.spec.cjs +0 -186
- package/dist/cjs/collection.spec.native.js +0 -216
- package/dist/cjs/collection.spec.native.js.map +0 -1
- package/dist/cjs/common/types.spec.cjs +0 -266
- package/dist/cjs/common/types.spec.native.js +0 -271
- package/dist/cjs/common/types.spec.native.js.map +0 -1
- package/dist/cjs/core/http.spec.cjs +0 -1259
- package/dist/cjs/core/http.spec.native.js +0 -1401
- package/dist/cjs/core/http.spec.native.js.map +0 -1
- package/dist/cjs/core/wire.spec.cjs +0 -478
- package/dist/cjs/core/wire.spec.native.js +0 -482
- package/dist/cjs/core/wire.spec.native.js.map +0 -1
- package/dist/cjs/db.spec.cjs +0 -862
- package/dist/cjs/db.spec.native.js +0 -865
- package/dist/cjs/db.spec.native.js.map +0 -1
- package/dist/cjs/doctype.spec.cjs +0 -460
- package/dist/cjs/doctype.spec.native.js +0 -538
- package/dist/cjs/doctype.spec.native.js.map +0 -1
- package/dist/cjs/file.spec.cjs +0 -315
- package/dist/cjs/file.spec.native.js +0 -342
- package/dist/cjs/file.spec.native.js.map +0 -1
- package/dist/cjs/frappeApp.spec.cjs +0 -306
- package/dist/cjs/frappeApp.spec.native.js +0 -308
- package/dist/cjs/frappeApp.spec.native.js.map +0 -1
- package/dist/cjs/frappeReact.spec.cjs +0 -531
- package/dist/cjs/frappeReact.spec.native.js +0 -670
- package/dist/cjs/frappeReact.spec.native.js.map +0 -1
- package/dist/cjs/optimistic.spec.cjs +0 -11
- package/dist/cjs/optimistic.spec.native.js +0 -19
- package/dist/cjs/optimistic.spec.native.js.map +0 -1
- package/dist/cjs/pacer.spec.cjs +0 -470
- package/dist/cjs/pacer.spec.native.js +0 -537
- package/dist/cjs/pacer.spec.native.js.map +0 -1
- package/dist/cjs/realtime.spec.cjs +0 -326
- package/dist/cjs/realtime.spec.native.js +0 -392
- package/dist/cjs/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/backfill.spec.cjs +0 -586
- package/dist/cjs/sync/backfill.spec.native.js +0 -712
- package/dist/cjs/sync/backfill.spec.native.js.map +0 -1
- package/dist/cjs/sync/debug.spec.cjs +0 -125
- package/dist/cjs/sync/debug.spec.native.js +0 -133
- package/dist/cjs/sync/debug.spec.native.js.map +0 -1
- package/dist/cjs/sync/filters.spec.cjs +0 -168
- package/dist/cjs/sync/filters.spec.native.js +0 -173
- package/dist/cjs/sync/filters.spec.native.js.map +0 -1
- package/dist/cjs/sync/merge.spec.cjs +0 -908
- package/dist/cjs/sync/merge.spec.native.js +0 -937
- package/dist/cjs/sync/merge.spec.native.js.map +0 -1
- package/dist/cjs/sync/multiOrderBy.spec.cjs +0 -165
- package/dist/cjs/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/cjs/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationEngine.spec.cjs +0 -1158
- package/dist/cjs/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/cjs/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationJournal.spec.cjs +0 -330
- package/dist/cjs/sync/mutationJournal.spec.native.js +0 -333
- package/dist/cjs/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutations.spec.cjs +0 -327
- package/dist/cjs/sync/mutations.spec.native.js +0 -330
- package/dist/cjs/sync/mutations.spec.native.js.map +0 -1
- package/dist/cjs/sync/normalizedCache.spec.cjs +0 -302
- package/dist/cjs/sync/normalizedCache.spec.native.js +0 -311
- package/dist/cjs/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/cjs/sync/persistence.spec.cjs +0 -562
- package/dist/cjs/sync/persistence.spec.native.js +0 -572
- package/dist/cjs/sync/persistence.spec.native.js.map +0 -1
- package/dist/cjs/sync/realtime.spec.cjs +0 -499
- package/dist/cjs/sync/realtime.spec.native.js +0 -512
- package/dist/cjs/sync/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/rehydration.spec.cjs +0 -731
- package/dist/cjs/sync/rehydration.spec.native.js +0 -736
- package/dist/cjs/sync/rehydration.spec.native.js.map +0 -1
- package/dist/cjs/sync/storage.spec.cjs +0 -446
- package/dist/cjs/sync/storage.spec.native.js +0 -470
- package/dist/cjs/sync/storage.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptionManager.spec.cjs +0 -1102
- package/dist/cjs/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/cjs/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptions.spec.cjs +0 -937
- package/dist/cjs/sync/subscriptions.spec.native.js +0 -969
- package/dist/cjs/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/cjs/sync/syncModule.spec.cjs +0 -206
- package/dist/cjs/sync/syncModule.spec.native.js +0 -222
- package/dist/cjs/sync/syncModule.spec.native.js.map +0 -1
- package/dist/cjs/sync/types.spec.cjs +0 -246
- package/dist/cjs/sync/types.spec.native.js +0 -256
- package/dist/cjs/sync/types.spec.native.js.map +0 -1
- package/dist/cjs/sync/virtualPageManager.spec.cjs +0 -801
- package/dist/cjs/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/cjs/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/cjs/util.spec.cjs +0 -43
- package/dist/cjs/util.spec.native.js +0 -48
- package/dist/cjs/util.spec.native.js.map +0 -1
- package/dist/esm/auth.spec.mjs +0 -323
- package/dist/esm/auth.spec.mjs.map +0 -1
- package/dist/esm/auth.spec.native.js +0 -327
- package/dist/esm/auth.spec.native.js.map +0 -1
- package/dist/esm/call.spec.mjs +0 -428
- package/dist/esm/call.spec.mjs.map +0 -1
- package/dist/esm/call.spec.native.js +0 -428
- package/dist/esm/call.spec.native.js.map +0 -1
- package/dist/esm/collection.spec.mjs +0 -187
- package/dist/esm/collection.spec.mjs.map +0 -1
- package/dist/esm/collection.spec.native.js +0 -214
- package/dist/esm/collection.spec.native.js.map +0 -1
- package/dist/esm/common/types.spec.mjs +0 -267
- package/dist/esm/common/types.spec.mjs.map +0 -1
- package/dist/esm/common/types.spec.native.js +0 -269
- package/dist/esm/common/types.spec.native.js.map +0 -1
- package/dist/esm/core/http.spec.mjs +0 -1260
- package/dist/esm/core/http.spec.mjs.map +0 -1
- package/dist/esm/core/http.spec.native.js +0 -1399
- package/dist/esm/core/http.spec.native.js.map +0 -1
- package/dist/esm/core/wire.spec.mjs +0 -479
- package/dist/esm/core/wire.spec.mjs.map +0 -1
- package/dist/esm/core/wire.spec.native.js +0 -480
- package/dist/esm/core/wire.spec.native.js.map +0 -1
- package/dist/esm/db.spec.mjs +0 -863
- package/dist/esm/db.spec.mjs.map +0 -1
- package/dist/esm/db.spec.native.js +0 -863
- package/dist/esm/db.spec.native.js.map +0 -1
- package/dist/esm/doctype.spec.mjs +0 -461
- package/dist/esm/doctype.spec.mjs.map +0 -1
- package/dist/esm/doctype.spec.native.js +0 -536
- package/dist/esm/doctype.spec.native.js.map +0 -1
- package/dist/esm/file.spec.mjs +0 -316
- package/dist/esm/file.spec.mjs.map +0 -1
- package/dist/esm/file.spec.native.js +0 -340
- package/dist/esm/file.spec.native.js.map +0 -1
- package/dist/esm/frappeApp.spec.mjs +0 -307
- package/dist/esm/frappeApp.spec.mjs.map +0 -1
- package/dist/esm/frappeApp.spec.native.js +0 -306
- package/dist/esm/frappeApp.spec.native.js.map +0 -1
- package/dist/esm/frappeReact.spec.mjs +0 -532
- package/dist/esm/frappeReact.spec.mjs.map +0 -1
- package/dist/esm/frappeReact.spec.native.js +0 -668
- package/dist/esm/frappeReact.spec.native.js.map +0 -1
- package/dist/esm/optimistic.spec.mjs +0 -12
- package/dist/esm/optimistic.spec.mjs.map +0 -1
- package/dist/esm/optimistic.spec.native.js +0 -17
- package/dist/esm/optimistic.spec.native.js.map +0 -1
- package/dist/esm/pacer.spec.mjs +0 -447
- package/dist/esm/pacer.spec.mjs.map +0 -1
- package/dist/esm/pacer.spec.native.js +0 -511
- package/dist/esm/pacer.spec.native.js.map +0 -1
- package/dist/esm/realtime.spec.mjs +0 -327
- package/dist/esm/realtime.spec.mjs.map +0 -1
- package/dist/esm/realtime.spec.native.js +0 -390
- package/dist/esm/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/backfill.spec.mjs +0 -563
- package/dist/esm/sync/backfill.spec.mjs.map +0 -1
- package/dist/esm/sync/backfill.spec.native.js +0 -686
- package/dist/esm/sync/backfill.spec.native.js.map +0 -1
- package/dist/esm/sync/debug.spec.mjs +0 -102
- package/dist/esm/sync/debug.spec.mjs.map +0 -1
- package/dist/esm/sync/debug.spec.native.js +0 -107
- package/dist/esm/sync/debug.spec.native.js.map +0 -1
- package/dist/esm/sync/filters.spec.mjs +0 -169
- package/dist/esm/sync/filters.spec.mjs.map +0 -1
- package/dist/esm/sync/filters.spec.native.js +0 -171
- package/dist/esm/sync/filters.spec.native.js.map +0 -1
- package/dist/esm/sync/merge.spec.mjs +0 -909
- package/dist/esm/sync/merge.spec.mjs.map +0 -1
- package/dist/esm/sync/merge.spec.native.js +0 -935
- package/dist/esm/sync/merge.spec.native.js.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/esm/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.native.js +0 -227
- package/dist/esm/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/esm/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.native.js +0 -1171
- package/dist/esm/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.mjs +0 -331
- package/dist/esm/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.native.js +0 -331
- package/dist/esm/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/esm/sync/mutations.spec.mjs +0 -328
- package/dist/esm/sync/mutations.spec.mjs.map +0 -1
- package/dist/esm/sync/mutations.spec.native.js +0 -328
- package/dist/esm/sync/mutations.spec.native.js.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.mjs +0 -303
- package/dist/esm/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.native.js +0 -309
- package/dist/esm/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/esm/sync/persistence.spec.mjs +0 -563
- package/dist/esm/sync/persistence.spec.mjs.map +0 -1
- package/dist/esm/sync/persistence.spec.native.js +0 -570
- package/dist/esm/sync/persistence.spec.native.js.map +0 -1
- package/dist/esm/sync/realtime.spec.mjs +0 -500
- package/dist/esm/sync/realtime.spec.mjs.map +0 -1
- package/dist/esm/sync/realtime.spec.native.js +0 -510
- package/dist/esm/sync/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/rehydration.spec.mjs +0 -732
- package/dist/esm/sync/rehydration.spec.mjs.map +0 -1
- package/dist/esm/sync/rehydration.spec.native.js +0 -734
- package/dist/esm/sync/rehydration.spec.native.js.map +0 -1
- package/dist/esm/sync/storage.spec.mjs +0 -423
- package/dist/esm/sync/storage.spec.mjs.map +0 -1
- package/dist/esm/sync/storage.spec.native.js +0 -444
- package/dist/esm/sync/storage.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/esm/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.native.js +0 -1110
- package/dist/esm/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptions.spec.mjs +0 -914
- package/dist/esm/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptions.spec.native.js +0 -943
- package/dist/esm/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/esm/sync/syncModule.spec.mjs +0 -207
- package/dist/esm/sync/syncModule.spec.mjs.map +0 -1
- package/dist/esm/sync/syncModule.spec.native.js +0 -220
- package/dist/esm/sync/syncModule.spec.native.js.map +0 -1
- package/dist/esm/sync/types.spec.mjs +0 -247
- package/dist/esm/sync/types.spec.mjs.map +0 -1
- package/dist/esm/sync/types.spec.native.js +0 -254
- package/dist/esm/sync/types.spec.native.js.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/esm/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.native.js +0 -871
- package/dist/esm/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/esm/util.spec.mjs +0 -20
- package/dist/esm/util.spec.mjs.map +0 -1
- package/dist/esm/util.spec.native.js +0 -22
- package/dist/esm/util.spec.native.js.map +0 -1
- package/dist/jsx/auth.spec.mjs +0 -323
- package/dist/jsx/auth.spec.mjs.map +0 -1
- package/dist/jsx/auth.spec.native.js +0 -329
- package/dist/jsx/auth.spec.native.js.map +0 -1
- package/dist/jsx/call.spec.mjs +0 -428
- package/dist/jsx/call.spec.mjs.map +0 -1
- package/dist/jsx/call.spec.native.js +0 -430
- package/dist/jsx/call.spec.native.js.map +0 -1
- package/dist/jsx/collection.spec.mjs +0 -187
- package/dist/jsx/collection.spec.mjs.map +0 -1
- package/dist/jsx/collection.spec.native.js +0 -216
- package/dist/jsx/collection.spec.native.js.map +0 -1
- package/dist/jsx/common/types.spec.mjs +0 -267
- package/dist/jsx/common/types.spec.mjs.map +0 -1
- package/dist/jsx/common/types.spec.native.js +0 -271
- package/dist/jsx/common/types.spec.native.js.map +0 -1
- package/dist/jsx/core/http.spec.mjs +0 -1260
- package/dist/jsx/core/http.spec.mjs.map +0 -1
- package/dist/jsx/core/http.spec.native.js +0 -1401
- package/dist/jsx/core/http.spec.native.js.map +0 -1
- package/dist/jsx/core/wire.spec.mjs +0 -479
- package/dist/jsx/core/wire.spec.mjs.map +0 -1
- package/dist/jsx/core/wire.spec.native.js +0 -482
- package/dist/jsx/core/wire.spec.native.js.map +0 -1
- package/dist/jsx/db.spec.mjs +0 -863
- package/dist/jsx/db.spec.mjs.map +0 -1
- package/dist/jsx/db.spec.native.js +0 -865
- package/dist/jsx/db.spec.native.js.map +0 -1
- package/dist/jsx/doctype.spec.mjs +0 -461
- package/dist/jsx/doctype.spec.mjs.map +0 -1
- package/dist/jsx/doctype.spec.native.js +0 -538
- package/dist/jsx/doctype.spec.native.js.map +0 -1
- package/dist/jsx/file.spec.mjs +0 -316
- package/dist/jsx/file.spec.mjs.map +0 -1
- package/dist/jsx/file.spec.native.js +0 -342
- package/dist/jsx/file.spec.native.js.map +0 -1
- package/dist/jsx/frappeApp.spec.mjs +0 -307
- package/dist/jsx/frappeApp.spec.mjs.map +0 -1
- package/dist/jsx/frappeApp.spec.native.js +0 -308
- package/dist/jsx/frappeApp.spec.native.js.map +0 -1
- package/dist/jsx/frappeReact.spec.mjs +0 -532
- package/dist/jsx/frappeReact.spec.mjs.map +0 -1
- package/dist/jsx/frappeReact.spec.native.js +0 -670
- package/dist/jsx/frappeReact.spec.native.js.map +0 -1
- package/dist/jsx/optimistic.spec.mjs +0 -12
- package/dist/jsx/optimistic.spec.mjs.map +0 -1
- package/dist/jsx/optimistic.spec.native.js +0 -19
- package/dist/jsx/optimistic.spec.native.js.map +0 -1
- package/dist/jsx/pacer.spec.mjs +0 -447
- package/dist/jsx/pacer.spec.mjs.map +0 -1
- package/dist/jsx/pacer.spec.native.js +0 -537
- package/dist/jsx/pacer.spec.native.js.map +0 -1
- package/dist/jsx/realtime.spec.mjs +0 -327
- package/dist/jsx/realtime.spec.mjs.map +0 -1
- package/dist/jsx/realtime.spec.native.js +0 -392
- package/dist/jsx/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/backfill.spec.mjs +0 -563
- package/dist/jsx/sync/backfill.spec.mjs.map +0 -1
- package/dist/jsx/sync/backfill.spec.native.js +0 -712
- package/dist/jsx/sync/backfill.spec.native.js.map +0 -1
- package/dist/jsx/sync/debug.spec.mjs +0 -102
- package/dist/jsx/sync/debug.spec.mjs.map +0 -1
- package/dist/jsx/sync/debug.spec.native.js +0 -133
- package/dist/jsx/sync/debug.spec.native.js.map +0 -1
- package/dist/jsx/sync/filters.spec.mjs +0 -169
- package/dist/jsx/sync/filters.spec.mjs.map +0 -1
- package/dist/jsx/sync/filters.spec.native.js +0 -173
- package/dist/jsx/sync/filters.spec.native.js.map +0 -1
- package/dist/jsx/sync/merge.spec.mjs +0 -909
- package/dist/jsx/sync/merge.spec.mjs.map +0 -1
- package/dist/jsx/sync/merge.spec.native.js +0 -937
- package/dist/jsx/sync/merge.spec.native.js.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/jsx/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/jsx/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/jsx/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/jsx/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.mjs +0 -331
- package/dist/jsx/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.native.js +0 -333
- package/dist/jsx/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutations.spec.mjs +0 -328
- package/dist/jsx/sync/mutations.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutations.spec.native.js +0 -330
- package/dist/jsx/sync/mutations.spec.native.js.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.mjs +0 -303
- package/dist/jsx/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.native.js +0 -311
- package/dist/jsx/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/jsx/sync/persistence.spec.mjs +0 -563
- package/dist/jsx/sync/persistence.spec.mjs.map +0 -1
- package/dist/jsx/sync/persistence.spec.native.js +0 -572
- package/dist/jsx/sync/persistence.spec.native.js.map +0 -1
- package/dist/jsx/sync/realtime.spec.mjs +0 -500
- package/dist/jsx/sync/realtime.spec.mjs.map +0 -1
- package/dist/jsx/sync/realtime.spec.native.js +0 -512
- package/dist/jsx/sync/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/rehydration.spec.mjs +0 -732
- package/dist/jsx/sync/rehydration.spec.mjs.map +0 -1
- package/dist/jsx/sync/rehydration.spec.native.js +0 -736
- package/dist/jsx/sync/rehydration.spec.native.js.map +0 -1
- package/dist/jsx/sync/storage.spec.mjs +0 -423
- package/dist/jsx/sync/storage.spec.mjs.map +0 -1
- package/dist/jsx/sync/storage.spec.native.js +0 -470
- package/dist/jsx/sync/storage.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/jsx/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/jsx/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.mjs +0 -914
- package/dist/jsx/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.native.js +0 -969
- package/dist/jsx/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/jsx/sync/syncModule.spec.mjs +0 -207
- package/dist/jsx/sync/syncModule.spec.mjs.map +0 -1
- package/dist/jsx/sync/syncModule.spec.native.js +0 -222
- package/dist/jsx/sync/syncModule.spec.native.js.map +0 -1
- package/dist/jsx/sync/types.spec.mjs +0 -247
- package/dist/jsx/sync/types.spec.mjs.map +0 -1
- package/dist/jsx/sync/types.spec.native.js +0 -256
- package/dist/jsx/sync/types.spec.native.js.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/jsx/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/jsx/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/jsx/util.spec.mjs +0 -20
- package/dist/jsx/util.spec.mjs.map +0 -1
- package/dist/jsx/util.spec.native.js +0 -48
- package/dist/jsx/util.spec.native.js.map +0 -1
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import type { Collection } from "@tanstack/db";
|
|
2
|
+
import { type FrappeCollectionOptionsConfig } from "./collection";
|
|
3
|
+
import { SyncModule } from "./sync";
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for creating a Frappe collection with connection details.
|
|
6
|
+
*/
|
|
7
|
+
export interface UseFrappeCollectionConfig {
|
|
8
|
+
/** The base URL of the Frappe server */
|
|
9
|
+
baseURL: string;
|
|
10
|
+
/**
|
|
11
|
+
* Override the port used for the Socket.IO realtime connection.
|
|
12
|
+
* In dev, set to `FRAPPE_SOCKETIO_PORT` (e.g. 9000). Omit in production
|
|
13
|
+
* behind a reverse proxy so the base URL port is used.
|
|
14
|
+
*/
|
|
15
|
+
socketPort?: number;
|
|
16
|
+
/** Authentication configuration */
|
|
17
|
+
auth?: {
|
|
18
|
+
useToken?: boolean;
|
|
19
|
+
token?: string | (() => string | Promise<string>);
|
|
20
|
+
type?: string;
|
|
21
|
+
/** Session id for Socket.IO cookie auth on Node / React Native */
|
|
22
|
+
sessionId?: string | (() => string | Promise<string>);
|
|
23
|
+
};
|
|
24
|
+
/** Sync options for the SyncModule */
|
|
25
|
+
syncOptions?: import("./sync/types").SyncOptions;
|
|
26
|
+
/**
|
|
27
|
+
* Extra Socket.IO client options merged over the defaults — e.g.
|
|
28
|
+
* `{ transports: ["polling", "websocket"] }` behind dev proxies that can't
|
|
29
|
+
* forward WebSocket upgrades (websocket-first would never connect there).
|
|
30
|
+
*/
|
|
31
|
+
socketOptions?: import("./realtime").RealtimeConfig["socketOptions"];
|
|
32
|
+
/** Fixture provider for testing (used by frappe-ui in development) */
|
|
33
|
+
fixtures?: import("./fixtures").FixtureProvider;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns the first active SyncModule, or undefined if none exist.
|
|
37
|
+
* Intended for devtools integration — not part of the public API.
|
|
38
|
+
*/
|
|
39
|
+
export declare function __getActiveSyncModule(): SyncModule | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* React hook that returns a TanStack DB Collection backed by a Frappe doctype.
|
|
42
|
+
*
|
|
43
|
+
* Collections are shared: every hook instance with the same connection,
|
|
44
|
+
* doctype, and options (fields/filters/orderBy/limit/id) receives the SAME
|
|
45
|
+
* collection instance backed by ONE SyncModule subscription and ONE realtime
|
|
46
|
+
* room. Instances are refcounted — the shared collection is cleaned up
|
|
47
|
+
* shortly after the last consumer unmounts. `onSyncError` callbacks are
|
|
48
|
+
* per-consumer: each mounted consumer's handler fires (replayed on retain
|
|
49
|
+
* for late mounts). A failed initial sync is HELD by the entry while any
|
|
50
|
+
* consumer retains it — error-state re-renders reuse the same errored
|
|
51
|
+
* collection instead of looping fresh failing syncs — and the entry is
|
|
52
|
+
* evicted when the last consumer releases it, so the next mount (an
|
|
53
|
+
* explicit Retry remount) starts exactly one fresh attempt.
|
|
54
|
+
*
|
|
55
|
+
* The collection is stable across re-renders. It can be used with
|
|
56
|
+
* `useLiveQuery` for reactive queries and has `.insert()`, `.update()`,
|
|
57
|
+
* `.delete()` methods for mutations.
|
|
58
|
+
*
|
|
59
|
+
* @typeParam TDoc - The Frappe document type
|
|
60
|
+
* @param config - Connection configuration (baseURL, auth)
|
|
61
|
+
* @param doctype - The Frappe doctype name
|
|
62
|
+
* @param options - Optional collection configuration (fields, filters, etc.)
|
|
63
|
+
* @returns A stable TanStack DB Collection instance, or undefined if config is not provided
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```tsx
|
|
67
|
+
* function PokemonList() {
|
|
68
|
+
* const config = useFrappeConfig();
|
|
69
|
+
* const collection = useFrappeCollection<Pokemon>(
|
|
70
|
+
* config ? { baseURL: config.baseURL, auth: config.auth } : undefined,
|
|
71
|
+
* "Pokemon",
|
|
72
|
+
* { fields: ["name", "pokemon_name", "poke_id"] }
|
|
73
|
+
* );
|
|
74
|
+
*
|
|
75
|
+
* const { data, isLoading } = useLiveQuery(
|
|
76
|
+
* (q) => collection ? q.from({ pokemon: collection }) : null,
|
|
77
|
+
* [collection]
|
|
78
|
+
* );
|
|
79
|
+
*
|
|
80
|
+
* if (isLoading) return <Spinner />;
|
|
81
|
+
* return data?.map(p => <div key={p.name}>{p.pokemon_name}</div>);
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function useFrappeCollection<TDoc extends object & {
|
|
86
|
+
name: string;
|
|
87
|
+
doctype: string;
|
|
88
|
+
}>(config: UseFrappeCollectionConfig | undefined, doctype: string, options?: Omit<FrappeCollectionOptionsConfig<TDoc>, "sync">): Collection<TDoc, string> | undefined;
|
|
89
|
+
/** Snapshot returned by {@link useFrappeConnection}. */
|
|
90
|
+
export interface FrappeConnectionState {
|
|
91
|
+
/** Socket connected right now. */
|
|
92
|
+
connected: boolean;
|
|
93
|
+
/** Socket has connected at least once this session. */
|
|
94
|
+
everConnected: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* React hook exposing the realtime socket state for the given connection.
|
|
98
|
+
*
|
|
99
|
+
* `connected` flips on every socket connect/disconnect; `everConnected`
|
|
100
|
+
* distinguishes "reconnecting" (show an indicator) from "realtime was never
|
|
101
|
+
* up" (fixture mode / SSR / no socket — show nothing). Fixture-backed
|
|
102
|
+
* configs always report disconnected/never-connected.
|
|
103
|
+
*/
|
|
104
|
+
export declare function useFrappeConnection(config: UseFrappeCollectionConfig | undefined): FrappeConnectionState;
|
|
105
|
+
/**
|
|
106
|
+
* React hook that joins a doctype's realtime room and invokes `onEvent`
|
|
107
|
+
* for every realtime event targeting that doctype (doc_update, list_update,
|
|
108
|
+
* doc_deleted). Intended for consumers that manage their own fetching
|
|
109
|
+
* (e.g. server-side paginated tables) and want live invalidation hints.
|
|
110
|
+
*
|
|
111
|
+
* The handler is kept in a ref, so an inline function is fine.
|
|
112
|
+
*/
|
|
113
|
+
export declare function useFrappeDoctypeEvents(config: UseFrappeCollectionConfig | undefined, doctype: string, onEvent: (event: {
|
|
114
|
+
type: string;
|
|
115
|
+
payload?: unknown;
|
|
116
|
+
}) => void, enabled?: boolean): void;
|
|
117
|
+
/**
|
|
118
|
+
* Configuration for the useInfiniteScroll hook
|
|
119
|
+
*/
|
|
120
|
+
export interface UseInfiniteScrollConfig {
|
|
121
|
+
/** Whether more data is available to load */
|
|
122
|
+
hasMore: boolean;
|
|
123
|
+
/** Whether data is currently being loaded */
|
|
124
|
+
isLoading: boolean;
|
|
125
|
+
/** Function to call when more data should be loaded */
|
|
126
|
+
onLoadMore: () => void | Promise<void>;
|
|
127
|
+
/** Root element for intersection (default: viewport) */
|
|
128
|
+
root?: Element | null;
|
|
129
|
+
/** Margin around the root (default: "100px") */
|
|
130
|
+
rootMargin?: string;
|
|
131
|
+
/** Visibility threshold 0-1 (default: 0.1) */
|
|
132
|
+
threshold?: number;
|
|
133
|
+
/** Debounce delay in ms (default: 100) */
|
|
134
|
+
debounceMs?: number;
|
|
135
|
+
/** Enable/disable the hook (default: true) */
|
|
136
|
+
enabled?: boolean;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Result from the useInfiniteScroll hook
|
|
140
|
+
*/
|
|
141
|
+
export interface UseInfiniteScrollResult {
|
|
142
|
+
/** Ref to attach to the sentinel element */
|
|
143
|
+
sentinelRef: React.RefCallback<Element | null>;
|
|
144
|
+
/** Whether the sentinel is currently visible */
|
|
145
|
+
isVisible: boolean;
|
|
146
|
+
/** Whether load more is in progress */
|
|
147
|
+
isLoadingMore: boolean;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* React hook for automatic infinite scroll loading.
|
|
151
|
+
*
|
|
152
|
+
* Uses IntersectionObserver to detect when a sentinel element becomes visible
|
|
153
|
+
* and automatically triggers loading of more data. Includes debouncing to prevent
|
|
154
|
+
* rapid-fire requests.
|
|
155
|
+
*
|
|
156
|
+
* @param config - Configuration options
|
|
157
|
+
* @returns Object with sentinelRef to attach to your loading indicator element
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```tsx
|
|
161
|
+
* function PokemonList() {
|
|
162
|
+
* const [page, setPage] = useState(1);
|
|
163
|
+
* const { data, hasMore, isLoading } = usePokemonList(page);
|
|
164
|
+
*
|
|
165
|
+
* const { sentinelRef, isLoadingMore } = useInfiniteScroll({
|
|
166
|
+
* hasMore,
|
|
167
|
+
* isLoading,
|
|
168
|
+
* onLoadMore: () => setPage(p => p + 1),
|
|
169
|
+
* });
|
|
170
|
+
*
|
|
171
|
+
* return (
|
|
172
|
+
* <div>
|
|
173
|
+
* {data.map(pokemon => <PokemonCard key={pokemon.name} {...pokemon} />)}
|
|
174
|
+
* <div ref={sentinelRef}>
|
|
175
|
+
* {isLoadingMore ? <Spinner /> : hasMore ? "Scroll for more" : "No more items"}
|
|
176
|
+
* </div>
|
|
177
|
+
* </div>
|
|
178
|
+
* );
|
|
179
|
+
* }
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
export declare function useInfiniteScroll(config: UseInfiniteScrollConfig): UseInfiniteScrollResult;
|
|
183
|
+
/**
|
|
184
|
+
* Options for the useFrappeInfiniteList hook
|
|
185
|
+
*/
|
|
186
|
+
export interface UseFrappeInfiniteListConfig<TDoc> {
|
|
187
|
+
/** Frappe connection configuration */
|
|
188
|
+
config: UseFrappeCollectionConfig | undefined;
|
|
189
|
+
/** DocType to query */
|
|
190
|
+
doctype: string;
|
|
191
|
+
/** Fields to fetch */
|
|
192
|
+
fields?: string[];
|
|
193
|
+
/** Filters to apply */
|
|
194
|
+
filters?: Array<[string, string, unknown]> | Record<string, unknown>;
|
|
195
|
+
/** Order by specification */
|
|
196
|
+
orderBy?: import("./sync/types").OrderBy;
|
|
197
|
+
/** Page size (default: 20) */
|
|
198
|
+
pageSize?: number;
|
|
199
|
+
/** Transform function for items */
|
|
200
|
+
transform?: (doc: TDoc) => TDoc;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Result from useFrappeInfiniteList hook
|
|
204
|
+
*/
|
|
205
|
+
export interface UseFrappeInfiniteListResult<TDoc> {
|
|
206
|
+
/** All loaded items */
|
|
207
|
+
items: TDoc[];
|
|
208
|
+
/** Whether more items are available */
|
|
209
|
+
hasMore: boolean;
|
|
210
|
+
/** Whether initial load is in progress */
|
|
211
|
+
isLoading: boolean;
|
|
212
|
+
/** Whether loading more is in progress */
|
|
213
|
+
isLoadingMore: boolean;
|
|
214
|
+
/** Any error that occurred */
|
|
215
|
+
error: Error | null;
|
|
216
|
+
/** Ref to attach to sentinel element */
|
|
217
|
+
sentinelRef: React.RefCallback<Element | null>;
|
|
218
|
+
/** Manually trigger loading more */
|
|
219
|
+
loadMore: () => Promise<void>;
|
|
220
|
+
/** Refresh the list from the beginning */
|
|
221
|
+
refresh: () => Promise<void>;
|
|
222
|
+
/** Total number of loaded items */
|
|
223
|
+
totalLoaded: number;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* React hook for infinite scrolling through a Frappe doctype list.
|
|
227
|
+
*
|
|
228
|
+
* Uses SyncModule with progressive subscriptions so that infinite-scroll
|
|
229
|
+
* lists automatically receive realtime updates, optimistic mutations,
|
|
230
|
+
* offline support, and CDC backfill -- all features that were previously
|
|
231
|
+
* only available to `useFrappeCollection` consumers.
|
|
232
|
+
*
|
|
233
|
+
* @typeParam TDoc - The document type
|
|
234
|
+
* @param options - Configuration options
|
|
235
|
+
* @returns Object with items, loading states, and sentinelRef
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```tsx
|
|
239
|
+
* function PokemonList() {
|
|
240
|
+
* const config = useFrappeConfig();
|
|
241
|
+
* const {
|
|
242
|
+
* items,
|
|
243
|
+
* hasMore,
|
|
244
|
+
* isLoading,
|
|
245
|
+
* sentinelRef,
|
|
246
|
+
* } = useFrappeInfiniteList<Pokemon>({
|
|
247
|
+
* config,
|
|
248
|
+
* doctype: "Pokemon",
|
|
249
|
+
* fields: ["name", "pokemon_name", "poke_id"],
|
|
250
|
+
* pageSize: 20,
|
|
251
|
+
* });
|
|
252
|
+
*
|
|
253
|
+
* if (isLoading && items.length === 0) return <Spinner />;
|
|
254
|
+
*
|
|
255
|
+
* return (
|
|
256
|
+
* <div>
|
|
257
|
+
* {items.map(pokemon => <PokemonCard key={pokemon.name} {...pokemon} />)}
|
|
258
|
+
* <div ref={sentinelRef}>
|
|
259
|
+
* {hasMore ? <Spinner /> : "No more pokemon"}
|
|
260
|
+
* </div>
|
|
261
|
+
* </div>
|
|
262
|
+
* );
|
|
263
|
+
* }
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export declare function useFrappeInfiniteList<TDoc extends object & {
|
|
267
|
+
name: string;
|
|
268
|
+
doctype: string;
|
|
269
|
+
}>(options: UseFrappeInfiniteListConfig<TDoc>): UseFrappeInfiniteListResult<TDoc>;
|
|
270
|
+
//# sourceMappingURL=frappeReact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frappeReact.d.ts","sourceRoot":"","sources":["../src/frappeReact.ts"],"names":[],"mappings":"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"}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frappe SDK with TanStack DB Integration
|
|
3
|
+
*
|
|
4
|
+
* Production-ready SDK with modular architecture and enterprise features.
|
|
5
|
+
* Uses TanStack DB for reactive collections, live queries, and optimistic mutations.
|
|
6
|
+
*/
|
|
7
|
+
export { FrappeApp } from "./frappeApp";
|
|
8
|
+
export type { FrappeConfig } from "./frappeApp";
|
|
9
|
+
export { AuthModule } from "./auth";
|
|
10
|
+
export { CallModule } from "./call";
|
|
11
|
+
export { DbModule } from "./db";
|
|
12
|
+
export { FileModule } from "./file";
|
|
13
|
+
export { RealtimeModule } from "./realtime";
|
|
14
|
+
export { SyncModule } from "./sync";
|
|
15
|
+
export { createFrappeCollection, frappeCollectionOptions, createFixtureCollection, fixtureCollectionOptions, } from "./collection";
|
|
16
|
+
export type { FrappeCollectionOptionsConfig, FixtureCollectionOptionsConfig } from "./collection";
|
|
17
|
+
export { createOptimisticAction } from "./optimistic";
|
|
18
|
+
export { useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useInfiniteScroll, useFrappeInfiniteList, __getActiveSyncModule, } from "./frappeReact";
|
|
19
|
+
export type { FrappeConnectionState, UseFrappeCollectionConfig, UseInfiniteScrollConfig, UseInfiniteScrollResult, UseFrappeInfiniteListConfig, UseFrappeInfiniteListResult, } from "./frappeReact";
|
|
20
|
+
export type { SyncRealtimeEvent } from "./sync";
|
|
21
|
+
export { useDebouncedSearch, useThrottledPagination, createRateLimitedBatch } from "./pacer";
|
|
22
|
+
export type { DebouncedSearchOptions, DebouncedSearchResult, FrappeConnectionConfig, ThrottledPaginationOptions, ThrottledPaginationResult, RateLimitedBatchOptions, RateLimitedBatchHandle, } from "./pacer";
|
|
23
|
+
export { useLiveQuery } from "./useLiveQuery";
|
|
24
|
+
export { createCollection, createTransaction } from "@tanstack/db";
|
|
25
|
+
export { eq, gt, gte, lt, lte, and, or, not, inArray, like, ilike, isUndefined, isNull, count, avg, sum, min, max, } from "@tanstack/db";
|
|
26
|
+
export { Debouncer, AsyncDebouncer, Throttler, AsyncThrottler, RateLimiter, AsyncRateLimiter, Queuer, AsyncQueuer, Batcher, AsyncBatcher, debounce, asyncDebounce, throttle, asyncThrottle, rateLimit, asyncRateLimit, queue, asyncQueue, batch, asyncBatch, } from "@tanstack/pacer";
|
|
27
|
+
export * from "./fixtures";
|
|
28
|
+
export { HttpClient, getCookie, setCookie, deleteCookie, setSSRCookies, clearSSRCookies, invalidateCookieCache, } from "./core/http";
|
|
29
|
+
export { FrappeError } from "./core/types";
|
|
30
|
+
export type { AuthConfig, ListOptions, CustomEndpoints, FrappeLiveConfig } from "./core/types";
|
|
31
|
+
export type { BackfillArgs, BackfillResponse, CursorPaginationArgs, CursorPaginationResponse, BatchMutationType, BatchMutation, BatchMutationsArgs, BatchMutationResult, BatchMutationsResponse, ListSinceArgs, ListSinceResponse, } from "./db";
|
|
32
|
+
export { useDocTypeMeta, useLinkSearch, useLinkTitle, useDocTypeSearch, parseDependsOn, parseFormLayout, } from "./doctype";
|
|
33
|
+
export type { DocTypeMeta, DocTypeField, DocTypePermission, FormSection, FormColumn, FrappeFieldType, LinkSearchResult, LinkSearchOptions, DocTypeSearchResult, } from "./doctype";
|
|
34
|
+
export type { FrappeDocValue, FrappeDocData, FrappeDoc, ChildTableRow } from "./common/types";
|
|
35
|
+
export type { SyncOptions, PageBoundaries, RehydrationStrategy, Mutation, ConnectionConfig, TabCoordinationConfig, TabMessage, FrappeDebugState, DebugSubscription, DebugMutationEntry, PageIsland, } from "./sync/types";
|
|
36
|
+
export { Order } from "./sync/types";
|
|
37
|
+
export { MergeStrategy, FieldMergeStrategy } from "./sync/merge";
|
|
38
|
+
export type { FieldMergeStrategyOrFunction, MergeConfig, MergeResult } from "./sync/merge";
|
|
39
|
+
export { matchesFilters, validateFilters, normalizeFilters, extractFilterFields, extractSingleName, formatFilter, hasServerOnlyOperators, canEvaluateClientSide, isTreeOperator, getClientEvaluationBlockers, FilterOperator, } from "./sync/filters";
|
|
40
|
+
export type { Filters, FilterTuple, FilterObject, FilterValue, FilterValidationResult, FilterValidationError, } from "./sync/filters";
|
|
41
|
+
export { TreeDbModule } from "./db";
|
|
42
|
+
export type { GetTreeChildrenArgs, GetTreeAncestorsArgs, GetTreeDescendantsArgs, TreeNode, } from "./db";
|
|
43
|
+
export { default as frappePlugin } from "./plugin";
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createOptimisticAction as tanstackCreateOptimisticAction } from "@tanstack/db";
|
|
2
|
+
export { tanstackCreateOptimisticAction as createOptimisticAction };
|
|
3
|
+
/**
|
|
4
|
+
* Re-export of TanStack DB's `createOptimisticAction`.
|
|
5
|
+
*
|
|
6
|
+
* Creates an optimistic action that applies local state changes immediately
|
|
7
|
+
* before the server mutation executes. When the mutation completes, the
|
|
8
|
+
* optimistic state is replaced by the server-confirmed data. On failure,
|
|
9
|
+
* the optimistic change is rolled back.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { createOptimisticAction } from "@multiplatform.one/frappe";
|
|
14
|
+
*
|
|
15
|
+
* const addPokemon = createOptimisticAction<Partial<Pokemon>>({
|
|
16
|
+
* onMutate: (data) => {
|
|
17
|
+
* pokemonCollection.insert({
|
|
18
|
+
* name: data.name ?? crypto.randomUUID(),
|
|
19
|
+
* doctype: "Pokemon",
|
|
20
|
+
* ...data,
|
|
21
|
+
* });
|
|
22
|
+
* },
|
|
23
|
+
* mutationFn: async (data) => {
|
|
24
|
+
* await fetch("/api/resource/Pokemon", {
|
|
25
|
+
* method: "POST",
|
|
26
|
+
* body: JSON.stringify(data),
|
|
27
|
+
* });
|
|
28
|
+
* // Wait for sync to pick up the new doc before returning
|
|
29
|
+
* // so the optimistic state can be safely dropped
|
|
30
|
+
* },
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // Usage
|
|
34
|
+
* const tx = addPokemon({ name: "pikachu", pokemon_name: "Pikachu", poke_id: 25 });
|
|
35
|
+
* await tx.isPersisted.promise;
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
//# sourceMappingURL=optimistic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimistic.d.ts","sourceRoot":"","sources":["../src/optimistic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,8BAA8B,IAAI,sBAAsB,EAAE,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG"}
|
package/types/pacer.d.ts
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import type { Collection } from "@tanstack/db";
|
|
2
|
+
import type { FrappeDoc, FrappeDocData } from "./common/types";
|
|
3
|
+
import type { SyncModule } from "./sync";
|
|
4
|
+
/**
|
|
5
|
+
* Options for `useDebouncedSearch`.
|
|
6
|
+
*/
|
|
7
|
+
export interface DebouncedSearchOptions<TDoc extends FrappeDocData> {
|
|
8
|
+
/** Debounce delay in milliseconds (default 300) */
|
|
9
|
+
wait?: number;
|
|
10
|
+
/** Fields to return from the search */
|
|
11
|
+
fields?: readonly (keyof TDoc & string)[];
|
|
12
|
+
/** Additional static filters merged into every request */
|
|
13
|
+
filters?: Record<string, unknown> | Array<[string, string, unknown]>;
|
|
14
|
+
/** Maximum results per search (default 20) */
|
|
15
|
+
limit?: number;
|
|
16
|
+
/** Minimum query length before firing a search (default 1) */
|
|
17
|
+
minLength?: number;
|
|
18
|
+
/** Field to match against with `like` (default "name") */
|
|
19
|
+
searchField?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Return type of `useDebouncedSearch`.
|
|
23
|
+
*/
|
|
24
|
+
export interface DebouncedSearchResult<TDoc extends FrappeDocData> {
|
|
25
|
+
/** Current query string */
|
|
26
|
+
query: string;
|
|
27
|
+
/** Set the search query (triggers debounced search) */
|
|
28
|
+
setQuery: (query: string) => void;
|
|
29
|
+
/** Search results from the most recent completed search */
|
|
30
|
+
results: FrappeDoc<TDoc>[];
|
|
31
|
+
/** Whether a search API call is in-flight */
|
|
32
|
+
isSearching: boolean;
|
|
33
|
+
/** Cancel any pending debounced search */
|
|
34
|
+
cancel: () => void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Connection configuration for hooks that need a Frappe backend.
|
|
38
|
+
*/
|
|
39
|
+
export interface FrappeConnectionConfig {
|
|
40
|
+
/** The base URL of the Frappe server */
|
|
41
|
+
baseURL: string;
|
|
42
|
+
/** Override port for Socket.IO realtime connection (e.g. 9000 in dev). */
|
|
43
|
+
socketPort?: number;
|
|
44
|
+
/** Authentication configuration */
|
|
45
|
+
auth?: {
|
|
46
|
+
useToken?: boolean;
|
|
47
|
+
token?: string | (() => string | Promise<string>);
|
|
48
|
+
type?: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Debounced search hook for Frappe doctypes.
|
|
53
|
+
*
|
|
54
|
+
* Uses TanStack Pacer's `AsyncDebouncer` to debounce user input before
|
|
55
|
+
* firing a `getDocList` API call with a `like` filter.
|
|
56
|
+
*
|
|
57
|
+
* @typeParam TDoc - The Frappe document type
|
|
58
|
+
* @param config - Connection configuration (baseURL, auth), or undefined to disable
|
|
59
|
+
* @param doctype - The Frappe doctype to search
|
|
60
|
+
* @param options - Search options (wait, fields, filters, limit, minLength, searchField)
|
|
61
|
+
* @returns `{ query, setQuery, results, isSearching, cancel }`
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```tsx
|
|
65
|
+
* function PokemonSearch() {
|
|
66
|
+
* const { query, setQuery, results, isSearching } = useDebouncedSearch<Pokemon>(
|
|
67
|
+
* { baseURL: "https://frappe.example.com" },
|
|
68
|
+
* "Pokemon",
|
|
69
|
+
* { fields: ["name", "pokemon_name"], wait: 250 },
|
|
70
|
+
* );
|
|
71
|
+
* return (
|
|
72
|
+
* <div>
|
|
73
|
+
* <input value={query} onChange={e => setQuery(e.target.value)} />
|
|
74
|
+
* {isSearching && <span>Searching...</span>}
|
|
75
|
+
* {results.map(p => <div key={p.name}>{p.pokemon_name}</div>)}
|
|
76
|
+
* </div>
|
|
77
|
+
* );
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function useDebouncedSearch<TDoc extends FrappeDocData>(config: FrappeConnectionConfig | undefined, doctype: string, options?: DebouncedSearchOptions<TDoc>): DebouncedSearchResult<TDoc>;
|
|
82
|
+
/**
|
|
83
|
+
* Options for `useThrottledPagination`.
|
|
84
|
+
*/
|
|
85
|
+
export interface ThrottledPaginationOptions {
|
|
86
|
+
/** Number of items per page (default 20) */
|
|
87
|
+
pageSize?: number;
|
|
88
|
+
/** Throttle interval in milliseconds for loadMore (default 200) */
|
|
89
|
+
throttleMs?: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Return type of `useThrottledPagination`.
|
|
93
|
+
*/
|
|
94
|
+
export interface ThrottledPaginationResult<TDoc extends FrappeDocData> {
|
|
95
|
+
/** Currently visible items (paginated view of the collection) */
|
|
96
|
+
items: TDoc[];
|
|
97
|
+
/** Load the next page of items (throttled) */
|
|
98
|
+
loadMore: () => void;
|
|
99
|
+
/** Whether more items are available beyond the current page */
|
|
100
|
+
hasMore: boolean;
|
|
101
|
+
/** Whether the collection is still loading */
|
|
102
|
+
isLoading: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Throttled pagination hook for TanStack DB collections.
|
|
106
|
+
*
|
|
107
|
+
* Provides a paginated window over a TanStack DB collection backed by Frappe.
|
|
108
|
+
* The `loadMore` callback is throttled using TanStack Pacer to prevent
|
|
109
|
+
* rapid-fire scroll events from over-fetching.
|
|
110
|
+
*
|
|
111
|
+
* @typeParam TDoc - The Frappe document type
|
|
112
|
+
* @param collection - A TanStack DB Collection, or undefined
|
|
113
|
+
* @param options - Pagination options (pageSize, throttleMs)
|
|
114
|
+
* @returns `{ items, loadMore, hasMore, isLoading }`
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```tsx
|
|
118
|
+
* function PokemonList() {
|
|
119
|
+
* const collection = useFrappeCollection<Pokemon>(config, "Pokemon");
|
|
120
|
+
* const { items, loadMore, hasMore, isLoading } = useThrottledPagination(
|
|
121
|
+
* collection,
|
|
122
|
+
* { pageSize: 10, throttleMs: 200 },
|
|
123
|
+
* );
|
|
124
|
+
*
|
|
125
|
+
* return (
|
|
126
|
+
* <div onScroll={handleScroll}>
|
|
127
|
+
* {items.map(p => <div key={p.name}>{p.pokemon_name}</div>)}
|
|
128
|
+
* {hasMore && <button onClick={loadMore}>Load More</button>}
|
|
129
|
+
* {isLoading && <span>Loading...</span>}
|
|
130
|
+
* </div>
|
|
131
|
+
* );
|
|
132
|
+
* }
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export declare function useThrottledPagination<TDoc extends FrappeDocData>(collection: Collection<TDoc, string> | undefined, options?: ThrottledPaginationOptions): ThrottledPaginationResult<TDoc>;
|
|
136
|
+
/**
|
|
137
|
+
* Options for `createRateLimitedBatch`.
|
|
138
|
+
*/
|
|
139
|
+
export interface RateLimitedBatchOptions {
|
|
140
|
+
/** The Frappe doctype */
|
|
141
|
+
doctype: string;
|
|
142
|
+
/** The mutation operation to perform (create | update | delete) */
|
|
143
|
+
operation: "create" | "update" | "delete";
|
|
144
|
+
/** Maximum operations per second (default 5) */
|
|
145
|
+
maxPerSecond?: number;
|
|
146
|
+
/** Number of items to send per batch request (default 10) */
|
|
147
|
+
batchSize?: number;
|
|
148
|
+
/** SyncModule instance for sending mutations */
|
|
149
|
+
syncModule: SyncModule;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Return type of `createRateLimitedBatch`.
|
|
153
|
+
*/
|
|
154
|
+
export interface RateLimitedBatchHandle<TDoc extends FrappeDocData> {
|
|
155
|
+
/** Add an item to the batch queue */
|
|
156
|
+
add: (name: string, data?: Partial<TDoc>) => void;
|
|
157
|
+
/** Execute all queued items with rate limiting */
|
|
158
|
+
execute: (callbacks?: {
|
|
159
|
+
onProgress?: (completed: number, total: number) => void;
|
|
160
|
+
}) => Promise<void>;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Creates a rate-limited batch processor for bulk Frappe operations.
|
|
164
|
+
*
|
|
165
|
+
* Uses TanStack Pacer's `AsyncRateLimiter` to enforce per-second rate
|
|
166
|
+
* limits when executing bulk create/update/delete operations against
|
|
167
|
+
* a Frappe backend via SyncModule.
|
|
168
|
+
*
|
|
169
|
+
* @typeParam TDoc - The Frappe document type
|
|
170
|
+
* @param options - Batch configuration (doctype, operation, rate limits, syncModule)
|
|
171
|
+
* @returns `{ add(name, data), execute({ onProgress }) }`
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* const batch = createRateLimitedBatch<Pokemon>({
|
|
176
|
+
* doctype: "Pokemon",
|
|
177
|
+
* operation: "update",
|
|
178
|
+
* maxPerSecond: 5,
|
|
179
|
+
* batchSize: 10,
|
|
180
|
+
* syncModule,
|
|
181
|
+
* });
|
|
182
|
+
*
|
|
183
|
+
* for (const pokemon of allPokemon) {
|
|
184
|
+
* batch.add(pokemon.name, { hp: 100 });
|
|
185
|
+
* }
|
|
186
|
+
*
|
|
187
|
+
* await batch.execute({
|
|
188
|
+
* onProgress: (done, total) => console.log(`${done}/${total}`),
|
|
189
|
+
* });
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export declare function createRateLimitedBatch<TDoc extends FrappeDocData>(options: RateLimitedBatchOptions): RateLimitedBatchHandle<TDoc>;
|
|
193
|
+
//# sourceMappingURL=pacer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pacer.d.ts","sourceRoot":"","sources":["../src/pacer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface LanguageServiceProxy {
|
|
2
|
+
getExternalFiles(): string[];
|
|
3
|
+
getSourceFile(fileName: string, languageVersion: any, _onError?: any, _shouldCreateNewSourceFile?: boolean, _length?: number): any;
|
|
4
|
+
}
|
|
5
|
+
declare function init(modules: {
|
|
6
|
+
typescript: any;
|
|
7
|
+
}): {
|
|
8
|
+
create: (info: any) => LanguageServiceProxy;
|
|
9
|
+
};
|
|
10
|
+
export default init;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAaA,UAAU,oBAAoB;IAC5B,gBAAgB,IAAI,MAAM,EAAE,CAAC;IAC7B,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,GAAG,EACpB,QAAQ,CAAC,EAAE,GAAG,EACd,0BAA0B,CAAC,EAAE,OAAO,EACpC,OAAO,CAAC,EAAE,MAAM,GACf,GAAG,CAAC;CACR;AAED,iBAAS,IAAI,CAAC,OAAO,EAAE;IAAE,UAAU,EAAE,GAAG,CAAA;CAAE;mBAOlB,GAAG,KAAG,oBAAoB;EA0GjD;AAGD,eAAe,IAAI,CAAC"}
|