@multiplatform.one/frappe 6.1.0 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -12
- package/dist/cjs/auth.cjs +1 -1
- package/dist/cjs/auth.native.js.map +1 -1
- package/dist/cjs/call.cjs +1 -1
- package/dist/cjs/call.native.js.map +1 -1
- package/dist/cjs/collection.cjs +18 -4
- package/dist/cjs/collection.native.js +18 -4
- package/dist/cjs/collection.native.js.map +1 -1
- package/dist/cjs/core/http.cjs +92 -9
- package/dist/cjs/core/http.native.js +96 -7
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/db.cjs +7 -7
- package/dist/cjs/db.native.js +4 -4
- package/dist/cjs/db.native.js.map +1 -1
- package/dist/cjs/doctype.cjs +97 -39
- package/dist/cjs/doctype.native.js +116 -46
- package/dist/cjs/doctype.native.js.map +1 -1
- package/dist/cjs/file.cjs +1 -1
- package/dist/cjs/file.native.js.map +1 -1
- package/dist/cjs/fixtureDb.cjs +3 -2
- package/dist/cjs/fixtureDb.native.js +2 -1
- package/dist/cjs/fixtureDb.native.js.map +1 -1
- package/dist/cjs/frappeApp.cjs +15 -14
- package/dist/cjs/frappeApp.native.js +16 -14
- package/dist/cjs/frappeApp.native.js.map +1 -1
- package/dist/cjs/frappeReact.cjs +198 -18
- package/dist/cjs/frappeReact.native.js +241 -18
- package/dist/cjs/frappeReact.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -4
- package/dist/cjs/index.native.js +9 -4
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/pacer.cjs +2 -2
- package/dist/cjs/pacer.native.js +2 -2
- package/dist/cjs/pacer.native.js.map +1 -1
- package/dist/cjs/realtime.cjs +186 -46
- package/dist/cjs/realtime.native.js +268 -48
- package/dist/cjs/realtime.native.js.map +1 -1
- package/dist/cjs/sync/backfill.cjs +32 -27
- package/dist/cjs/sync/backfill.native.js +49 -43
- package/dist/cjs/sync/backfill.native.js.map +1 -1
- package/dist/cjs/sync/index.cjs +90 -24
- package/dist/cjs/sync/index.native.js +112 -10
- package/dist/cjs/sync/index.native.js.map +1 -1
- package/dist/cjs/sync/merge.cjs +0 -3
- package/dist/cjs/sync/merge.native.js +0 -3
- package/dist/cjs/sync/merge.native.js.map +1 -1
- package/dist/cjs/sync/mutationEngine.cjs +25 -19
- package/dist/cjs/sync/mutationEngine.native.js +16 -13
- package/dist/cjs/sync/mutationEngine.native.js.map +1 -1
- package/dist/cjs/sync/mutationJournal.cjs +9 -4
- package/dist/cjs/sync/mutationJournal.native.js +7 -4
- package/dist/cjs/sync/mutationJournal.native.js.map +1 -1
- package/dist/cjs/sync/normalizedCache.cjs +7 -3
- package/dist/cjs/sync/normalizedCache.native.js +7 -2
- package/dist/cjs/sync/normalizedCache.native.js.map +1 -1
- package/dist/cjs/sync/persistence.cjs +63 -31
- package/dist/cjs/sync/persistence.native.js +120 -63
- package/dist/cjs/sync/persistence.native.js.map +1 -1
- package/dist/cjs/sync/realtime.cjs +124 -13
- package/dist/cjs/sync/realtime.native.js +163 -20
- package/dist/cjs/sync/realtime.native.js.map +1 -1
- package/dist/cjs/sync/rehydration.cjs +16 -10
- package/dist/cjs/sync/rehydration.native.js +16 -14
- package/dist/cjs/sync/rehydration.native.js.map +1 -1
- package/dist/cjs/sync/storage.cjs +3 -3
- package/dist/cjs/sync/storage.native.js +1 -1
- package/dist/cjs/sync/storage.native.js.map +1 -1
- package/dist/cjs/sync/subscriptionManager.cjs +255 -65
- package/dist/cjs/sync/subscriptionManager.native.js +330 -93
- package/dist/cjs/sync/subscriptionManager.native.js.map +1 -1
- package/dist/cjs/sync/types.cjs +2 -0
- package/dist/cjs/sync/types.native.js +2 -0
- package/dist/cjs/sync/types.native.js.map +1 -1
- package/dist/cjs/sync/virtualPageManager.cjs +9 -9
- package/dist/cjs/sync/virtualPageManager.native.js +5 -9
- package/dist/cjs/sync/virtualPageManager.native.js.map +1 -1
- package/dist/cjs/useLiveQuery.cjs +52 -0
- package/dist/cjs/useLiveQuery.native.js +59 -0
- package/dist/cjs/useLiveQuery.native.js.map +1 -0
- package/dist/cjs/util.cjs +11 -2
- package/dist/cjs/util.native.js +16 -2
- package/dist/cjs/util.native.js.map +1 -1
- package/dist/esm/auth.mjs +1 -1
- package/dist/esm/auth.mjs.map +1 -1
- package/dist/esm/auth.native.js.map +1 -1
- package/dist/esm/call.mjs +1 -1
- package/dist/esm/call.mjs.map +1 -1
- package/dist/esm/call.native.js.map +1 -1
- package/dist/esm/collection.mjs +18 -4
- package/dist/esm/collection.mjs.map +1 -1
- package/dist/esm/collection.native.js +18 -4
- package/dist/esm/collection.native.js.map +1 -1
- package/dist/esm/core/http.mjs +93 -10
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +97 -8
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/db.mjs +7 -7
- package/dist/esm/db.mjs.map +1 -1
- package/dist/esm/db.native.js +4 -4
- package/dist/esm/db.native.js.map +1 -1
- package/dist/esm/doctype.mjs +96 -39
- package/dist/esm/doctype.mjs.map +1 -1
- package/dist/esm/doctype.native.js +115 -46
- package/dist/esm/doctype.native.js.map +1 -1
- package/dist/esm/file.mjs +1 -1
- package/dist/esm/file.mjs.map +1 -1
- package/dist/esm/file.native.js.map +1 -1
- package/dist/esm/fixtureDb.mjs +3 -2
- package/dist/esm/fixtureDb.mjs.map +1 -1
- package/dist/esm/fixtureDb.native.js +2 -1
- package/dist/esm/fixtureDb.native.js.map +1 -1
- package/dist/esm/frappeApp.mjs +15 -14
- package/dist/esm/frappeApp.mjs.map +1 -1
- package/dist/esm/frappeApp.native.js +16 -14
- package/dist/esm/frappeApp.native.js.map +1 -1
- package/dist/esm/frappeReact.mjs +197 -19
- package/dist/esm/frappeReact.mjs.map +1 -1
- package/dist/esm/frappeReact.native.js +240 -19
- package/dist/esm/frappeReact.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -4
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -4
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/pacer.mjs +1 -1
- package/dist/esm/pacer.native.js +1 -1
- package/dist/esm/realtime.mjs +187 -47
- package/dist/esm/realtime.mjs.map +1 -1
- package/dist/esm/realtime.native.js +269 -49
- package/dist/esm/realtime.native.js.map +1 -1
- package/dist/esm/sync/backfill.mjs +32 -27
- package/dist/esm/sync/backfill.mjs.map +1 -1
- package/dist/esm/sync/backfill.native.js +49 -43
- package/dist/esm/sync/backfill.native.js.map +1 -1
- package/dist/esm/sync/index.mjs +90 -24
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/index.native.js +112 -10
- package/dist/esm/sync/index.native.js.map +1 -1
- package/dist/esm/sync/merge.mjs +1 -1
- package/dist/esm/sync/merge.mjs.map +1 -1
- package/dist/esm/sync/merge.native.js +1 -1
- package/dist/esm/sync/merge.native.js.map +1 -1
- package/dist/esm/sync/mutationEngine.mjs +25 -19
- package/dist/esm/sync/mutationEngine.mjs.map +1 -1
- package/dist/esm/sync/mutationEngine.native.js +16 -13
- package/dist/esm/sync/mutationEngine.native.js.map +1 -1
- package/dist/esm/sync/mutationJournal.mjs +9 -4
- package/dist/esm/sync/mutationJournal.mjs.map +1 -1
- package/dist/esm/sync/mutationJournal.native.js +7 -4
- package/dist/esm/sync/mutationJournal.native.js.map +1 -1
- package/dist/esm/sync/normalizedCache.mjs +7 -3
- package/dist/esm/sync/normalizedCache.mjs.map +1 -1
- package/dist/esm/sync/normalizedCache.native.js +7 -2
- package/dist/esm/sync/normalizedCache.native.js.map +1 -1
- package/dist/esm/sync/persistence.mjs +64 -32
- package/dist/esm/sync/persistence.mjs.map +1 -1
- package/dist/esm/sync/persistence.native.js +121 -64
- package/dist/esm/sync/persistence.native.js.map +1 -1
- package/dist/esm/sync/realtime.mjs +124 -13
- package/dist/esm/sync/realtime.mjs.map +1 -1
- package/dist/esm/sync/realtime.native.js +163 -20
- package/dist/esm/sync/realtime.native.js.map +1 -1
- package/dist/esm/sync/rehydration.mjs +16 -10
- package/dist/esm/sync/rehydration.mjs.map +1 -1
- package/dist/esm/sync/rehydration.native.js +16 -14
- package/dist/esm/sync/rehydration.native.js.map +1 -1
- package/dist/esm/sync/storage.mjs +3 -3
- package/dist/esm/sync/storage.mjs.map +1 -1
- package/dist/esm/sync/storage.native.js +1 -1
- package/dist/esm/sync/storage.native.js.map +1 -1
- package/dist/esm/sync/subscriptionManager.mjs +255 -65
- package/dist/esm/sync/subscriptionManager.mjs.map +1 -1
- package/dist/esm/sync/subscriptionManager.native.js +330 -93
- package/dist/esm/sync/subscriptionManager.native.js.map +1 -1
- package/dist/esm/sync/types.mjs +2 -0
- package/dist/esm/sync/types.mjs.map +1 -1
- package/dist/esm/sync/types.native.js +2 -0
- package/dist/esm/sync/types.native.js.map +1 -1
- package/dist/esm/sync/virtualPageManager.mjs +9 -9
- package/dist/esm/sync/virtualPageManager.mjs.map +1 -1
- package/dist/esm/sync/virtualPageManager.native.js +5 -9
- package/dist/esm/sync/virtualPageManager.native.js.map +1 -1
- package/dist/esm/useLiveQuery.mjs +26 -0
- package/dist/esm/useLiveQuery.mjs.map +1 -0
- package/dist/esm/useLiveQuery.native.js +30 -0
- package/dist/esm/useLiveQuery.native.js.map +1 -0
- package/dist/esm/util.mjs +10 -2
- package/dist/esm/util.mjs.map +1 -1
- package/dist/esm/util.native.js +15 -2
- package/dist/esm/util.native.js.map +1 -1
- package/dist/jsx/auth.mjs +1 -1
- package/dist/jsx/auth.mjs.map +1 -1
- package/dist/jsx/auth.native.js.map +1 -1
- package/dist/jsx/call.mjs +1 -1
- package/dist/jsx/call.mjs.map +1 -1
- package/dist/jsx/call.native.js.map +1 -1
- package/dist/jsx/collection.mjs +18 -4
- package/dist/jsx/collection.mjs.map +1 -1
- package/dist/jsx/collection.native.js +18 -4
- package/dist/jsx/collection.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +93 -10
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +96 -7
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/db.mjs +7 -7
- package/dist/jsx/db.mjs.map +1 -1
- package/dist/jsx/db.native.js +4 -4
- package/dist/jsx/db.native.js.map +1 -1
- package/dist/jsx/doctype.mjs +96 -39
- package/dist/jsx/doctype.mjs.map +1 -1
- package/dist/jsx/doctype.native.js +116 -46
- package/dist/jsx/doctype.native.js.map +1 -1
- package/dist/jsx/file.mjs +1 -1
- package/dist/jsx/file.mjs.map +1 -1
- package/dist/jsx/file.native.js.map +1 -1
- package/dist/jsx/fixtureDb.mjs +3 -2
- package/dist/jsx/fixtureDb.mjs.map +1 -1
- package/dist/jsx/fixtureDb.native.js +2 -1
- package/dist/jsx/fixtureDb.native.js.map +1 -1
- package/dist/jsx/frappeApp.mjs +15 -14
- package/dist/jsx/frappeApp.mjs.map +1 -1
- package/dist/jsx/frappeApp.native.js +16 -14
- package/dist/jsx/frappeApp.native.js.map +1 -1
- package/dist/jsx/frappeReact.mjs +197 -19
- package/dist/jsx/frappeReact.mjs.map +1 -1
- package/dist/jsx/frappeReact.native.js +241 -18
- package/dist/jsx/frappeReact.native.js.map +1 -1
- package/dist/jsx/index.js +5 -4
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -4
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +9 -4
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/pacer.mjs +1 -1
- package/dist/jsx/pacer.native.js +2 -2
- package/dist/jsx/pacer.native.js.map +1 -1
- package/dist/jsx/realtime.mjs +187 -47
- package/dist/jsx/realtime.mjs.map +1 -1
- package/dist/jsx/realtime.native.js +268 -48
- package/dist/jsx/realtime.native.js.map +1 -1
- package/dist/jsx/sync/backfill.mjs +32 -27
- package/dist/jsx/sync/backfill.mjs.map +1 -1
- package/dist/jsx/sync/backfill.native.js +49 -43
- package/dist/jsx/sync/backfill.native.js.map +1 -1
- package/dist/jsx/sync/index.mjs +90 -24
- package/dist/jsx/sync/index.mjs.map +1 -1
- package/dist/jsx/sync/index.native.js +112 -10
- package/dist/jsx/sync/index.native.js.map +1 -1
- package/dist/jsx/sync/merge.mjs +1 -1
- package/dist/jsx/sync/merge.mjs.map +1 -1
- package/dist/jsx/sync/merge.native.js +0 -3
- package/dist/jsx/sync/merge.native.js.map +1 -1
- package/dist/jsx/sync/mutationEngine.mjs +25 -19
- package/dist/jsx/sync/mutationEngine.mjs.map +1 -1
- package/dist/jsx/sync/mutationEngine.native.js +16 -13
- package/dist/jsx/sync/mutationEngine.native.js.map +1 -1
- package/dist/jsx/sync/mutationJournal.mjs +9 -4
- package/dist/jsx/sync/mutationJournal.mjs.map +1 -1
- package/dist/jsx/sync/mutationJournal.native.js +7 -4
- package/dist/jsx/sync/mutationJournal.native.js.map +1 -1
- package/dist/jsx/sync/normalizedCache.mjs +7 -3
- package/dist/jsx/sync/normalizedCache.mjs.map +1 -1
- package/dist/jsx/sync/normalizedCache.native.js +7 -2
- package/dist/jsx/sync/normalizedCache.native.js.map +1 -1
- package/dist/jsx/sync/persistence.mjs +64 -32
- package/dist/jsx/sync/persistence.mjs.map +1 -1
- package/dist/jsx/sync/persistence.native.js +120 -63
- package/dist/jsx/sync/persistence.native.js.map +1 -1
- package/dist/jsx/sync/realtime.mjs +124 -13
- package/dist/jsx/sync/realtime.mjs.map +1 -1
- package/dist/jsx/sync/realtime.native.js +163 -20
- package/dist/jsx/sync/realtime.native.js.map +1 -1
- package/dist/jsx/sync/rehydration.mjs +16 -10
- package/dist/jsx/sync/rehydration.mjs.map +1 -1
- package/dist/jsx/sync/rehydration.native.js +16 -14
- package/dist/jsx/sync/rehydration.native.js.map +1 -1
- package/dist/jsx/sync/storage.mjs +3 -3
- package/dist/jsx/sync/storage.mjs.map +1 -1
- package/dist/jsx/sync/storage.native.js +1 -1
- package/dist/jsx/sync/storage.native.js.map +1 -1
- package/dist/jsx/sync/subscriptionManager.mjs +255 -65
- package/dist/jsx/sync/subscriptionManager.mjs.map +1 -1
- package/dist/jsx/sync/subscriptionManager.native.js +330 -93
- package/dist/jsx/sync/subscriptionManager.native.js.map +1 -1
- package/dist/jsx/sync/types.mjs +2 -0
- package/dist/jsx/sync/types.mjs.map +1 -1
- package/dist/jsx/sync/types.native.js +2 -0
- package/dist/jsx/sync/types.native.js.map +1 -1
- package/dist/jsx/sync/virtualPageManager.mjs +9 -9
- package/dist/jsx/sync/virtualPageManager.mjs.map +1 -1
- package/dist/jsx/sync/virtualPageManager.native.js +5 -9
- package/dist/jsx/sync/virtualPageManager.native.js.map +1 -1
- package/dist/jsx/useLiveQuery.mjs +26 -0
- package/dist/jsx/useLiveQuery.mjs.map +1 -0
- package/dist/jsx/useLiveQuery.native.js +59 -0
- package/dist/jsx/useLiveQuery.native.js.map +1 -0
- package/dist/jsx/util.mjs +10 -2
- package/dist/jsx/util.mjs.map +1 -1
- package/dist/jsx/util.native.js +16 -2
- package/dist/jsx/util.native.js.map +1 -1
- package/package.json +20 -17
- package/src/auth.ts +5 -1
- package/src/call.ts +5 -1
- package/src/collection.spec.ts +55 -0
- package/src/collection.ts +33 -4
- package/src/core/http.spec.ts +66 -0
- package/src/core/http.ts +115 -9
- package/src/core/httpNative.spec.ts +234 -0
- package/src/core/types.ts +2 -0
- package/src/db.spec.ts +91 -51
- package/src/db.ts +27 -8
- package/src/doctype.spec.ts +247 -39
- package/src/doctype.ts +203 -53
- package/src/file.ts +5 -1
- package/src/fixtureDb.ts +13 -2
- package/src/frappeApp.ts +18 -19
- package/src/frappeReact.spec.ts +565 -1
- package/src/frappeReact.ts +445 -37
- package/src/frappeReactLiveQueryGc.spec.ts +320 -0
- package/src/frappeReactNative.spec.ts +65 -0
- package/src/index.ts +10 -9
- package/src/pacer.ts +1 -1
- package/src/realtime.spec.ts +464 -20
- package/src/realtime.ts +284 -46
- package/src/sync/backfill.spec.ts +43 -0
- package/src/sync/backfill.ts +59 -39
- package/src/sync/debug.spec.ts +36 -0
- package/src/sync/filterValidation.spec.ts +197 -0
- package/src/sync/index.ts +98 -7
- package/src/sync/merge.ts +3 -3
- package/src/sync/mutationEngine.spec.ts +36 -4
- package/src/sync/mutationEngine.ts +30 -11
- package/src/sync/mutationJournal.ts +18 -4
- package/src/sync/normalizedCache.spec.ts +102 -0
- package/src/sync/normalizedCache.ts +19 -3
- package/src/sync/offlineRestore.spec.ts +423 -0
- package/src/sync/persistence.spec.ts +39 -7
- package/src/sync/persistence.ts +90 -18
- package/src/sync/persistenceGjs.spec.ts +143 -0
- package/src/sync/persistenceNative.spec.ts +139 -0
- package/src/sync/realtime.spec.ts +18 -1
- package/src/sync/realtime.ts +161 -13
- package/src/sync/rehydration.ts +23 -5
- package/src/sync/storage.ts +5 -4
- package/src/sync/subscriptionManager.spec.ts +94 -0
- package/src/sync/subscriptionManager.ts +304 -82
- package/src/sync/syncModule.spec.ts +137 -0
- package/src/sync/types.ts +39 -0
- package/src/sync/virtualPageManager.ts +8 -4
- package/src/useLiveQuery.ts +58 -0
- package/src/util.spec.ts +35 -4
- package/src/util.ts +34 -7
- package/types/auth.d.ts +13 -0
- package/types/auth.d.ts.map +1 -0
- package/types/call.d.ts +10 -0
- package/types/call.d.ts.map +1 -0
- package/types/collection.d.ts +127 -0
- package/types/collection.d.ts.map +1 -0
- package/types/common/types.d.ts +35 -0
- package/types/common/types.d.ts.map +1 -0
- package/types/core/http.d.ts +86 -0
- package/types/core/http.d.ts.map +1 -0
- package/types/core/types.d.ts +74 -0
- package/types/core/types.d.ts.map +1 -0
- package/types/core/wire.d.ts +405 -0
- package/types/core/wire.d.ts.map +1 -0
- package/types/db.d.ts +244 -0
- package/types/db.d.ts.map +1 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts +7 -0
- package/types/devtools/FrappeDevtoolsPanel.d.ts.map +1 -0
- package/types/devtools/index.d.ts +4 -0
- package/types/devtools/index.d.ts.map +1 -0
- package/types/devtools/plugin.d.ts +9 -0
- package/types/devtools/plugin.d.ts.map +1 -0
- package/types/devtools/theme.d.ts +15 -0
- package/types/devtools/theme.d.ts.map +1 -0
- package/types/doctype.d.ts +256 -0
- package/types/doctype.d.ts.map +1 -0
- package/types/file.d.ts +15 -0
- package/types/file.d.ts.map +1 -0
- package/types/fixtureDb.d.ts +76 -0
- package/types/fixtureDb.d.ts.map +1 -0
- package/types/fixtures.d.ts +55 -0
- package/types/fixtures.d.ts.map +1 -0
- package/types/frappeApp.d.ts +45 -0
- package/types/frappeApp.d.ts.map +1 -0
- package/types/frappeReact.d.ts +270 -0
- package/types/frappeReact.d.ts.map +1 -0
- package/types/index.d.ts +44 -0
- package/types/index.d.ts.map +1 -0
- package/types/optimistic.d.ts +38 -0
- package/types/optimistic.d.ts.map +1 -0
- package/types/pacer.d.ts +193 -0
- package/types/pacer.d.ts.map +1 -0
- package/types/plugin/index.d.ts +11 -0
- package/types/plugin/index.d.ts.map +1 -0
- package/types/realtime.d.ts +121 -0
- package/types/realtime.d.ts.map +1 -0
- package/types/sync/backfill.d.ts +60 -0
- package/types/sync/backfill.d.ts.map +1 -0
- package/types/sync/filters.d.ts +101 -0
- package/types/sync/filters.d.ts.map +1 -0
- package/types/sync/index.d.ts +181 -0
- package/types/sync/index.d.ts.map +1 -0
- package/types/sync/merge.d.ts +59 -0
- package/types/sync/merge.d.ts.map +1 -0
- package/types/sync/mutationEngine.d.ts +117 -0
- package/types/sync/mutationEngine.d.ts.map +1 -0
- package/types/sync/mutationJournal.d.ts +60 -0
- package/types/sync/mutationJournal.d.ts.map +1 -0
- package/types/sync/normalizedCache.d.ts +59 -0
- package/types/sync/normalizedCache.d.ts.map +1 -0
- package/types/sync/persistence.d.ts +185 -0
- package/types/sync/persistence.d.ts.map +1 -0
- package/types/sync/realtime.d.ts +121 -0
- package/types/sync/realtime.d.ts.map +1 -0
- package/types/sync/rehydration.d.ts +109 -0
- package/types/sync/rehydration.d.ts.map +1 -0
- package/types/sync/storage.d.ts +65 -0
- package/types/sync/storage.d.ts.map +1 -0
- package/types/sync/subscriptionManager.d.ts +161 -0
- package/types/sync/subscriptionManager.d.ts.map +1 -0
- package/types/sync/types.d.ts +435 -0
- package/types/sync/types.d.ts.map +1 -0
- package/types/sync/virtualPageManager.d.ts +190 -0
- package/types/sync/virtualPageManager.d.ts.map +1 -0
- package/types/useLiveQuery.d.ts +16 -0
- package/types/useLiveQuery.d.ts.map +1 -0
- package/types/util.d.ts +24 -0
- package/types/util.d.ts.map +1 -0
- package/dist/cjs/auth.spec.cjs +0 -322
- package/dist/cjs/auth.spec.native.js +0 -329
- package/dist/cjs/auth.spec.native.js.map +0 -1
- package/dist/cjs/call.spec.cjs +0 -427
- package/dist/cjs/call.spec.native.js +0 -430
- package/dist/cjs/call.spec.native.js.map +0 -1
- package/dist/cjs/collection.spec.cjs +0 -186
- package/dist/cjs/collection.spec.native.js +0 -216
- package/dist/cjs/collection.spec.native.js.map +0 -1
- package/dist/cjs/common/types.spec.cjs +0 -266
- package/dist/cjs/common/types.spec.native.js +0 -271
- package/dist/cjs/common/types.spec.native.js.map +0 -1
- package/dist/cjs/core/http.spec.cjs +0 -1259
- package/dist/cjs/core/http.spec.native.js +0 -1401
- package/dist/cjs/core/http.spec.native.js.map +0 -1
- package/dist/cjs/core/wire.spec.cjs +0 -478
- package/dist/cjs/core/wire.spec.native.js +0 -482
- package/dist/cjs/core/wire.spec.native.js.map +0 -1
- package/dist/cjs/db.spec.cjs +0 -862
- package/dist/cjs/db.spec.native.js +0 -865
- package/dist/cjs/db.spec.native.js.map +0 -1
- package/dist/cjs/doctype.spec.cjs +0 -460
- package/dist/cjs/doctype.spec.native.js +0 -538
- package/dist/cjs/doctype.spec.native.js.map +0 -1
- package/dist/cjs/file.spec.cjs +0 -315
- package/dist/cjs/file.spec.native.js +0 -342
- package/dist/cjs/file.spec.native.js.map +0 -1
- package/dist/cjs/frappeApp.spec.cjs +0 -306
- package/dist/cjs/frappeApp.spec.native.js +0 -308
- package/dist/cjs/frappeApp.spec.native.js.map +0 -1
- package/dist/cjs/frappeReact.spec.cjs +0 -531
- package/dist/cjs/frappeReact.spec.native.js +0 -670
- package/dist/cjs/frappeReact.spec.native.js.map +0 -1
- package/dist/cjs/optimistic.spec.cjs +0 -11
- package/dist/cjs/optimistic.spec.native.js +0 -19
- package/dist/cjs/optimistic.spec.native.js.map +0 -1
- package/dist/cjs/pacer.spec.cjs +0 -470
- package/dist/cjs/pacer.spec.native.js +0 -537
- package/dist/cjs/pacer.spec.native.js.map +0 -1
- package/dist/cjs/realtime.spec.cjs +0 -326
- package/dist/cjs/realtime.spec.native.js +0 -392
- package/dist/cjs/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/backfill.spec.cjs +0 -586
- package/dist/cjs/sync/backfill.spec.native.js +0 -712
- package/dist/cjs/sync/backfill.spec.native.js.map +0 -1
- package/dist/cjs/sync/debug.spec.cjs +0 -125
- package/dist/cjs/sync/debug.spec.native.js +0 -133
- package/dist/cjs/sync/debug.spec.native.js.map +0 -1
- package/dist/cjs/sync/filters.spec.cjs +0 -168
- package/dist/cjs/sync/filters.spec.native.js +0 -173
- package/dist/cjs/sync/filters.spec.native.js.map +0 -1
- package/dist/cjs/sync/merge.spec.cjs +0 -908
- package/dist/cjs/sync/merge.spec.native.js +0 -937
- package/dist/cjs/sync/merge.spec.native.js.map +0 -1
- package/dist/cjs/sync/multiOrderBy.spec.cjs +0 -165
- package/dist/cjs/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/cjs/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationEngine.spec.cjs +0 -1158
- package/dist/cjs/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/cjs/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutationJournal.spec.cjs +0 -330
- package/dist/cjs/sync/mutationJournal.spec.native.js +0 -333
- package/dist/cjs/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/cjs/sync/mutations.spec.cjs +0 -327
- package/dist/cjs/sync/mutations.spec.native.js +0 -330
- package/dist/cjs/sync/mutations.spec.native.js.map +0 -1
- package/dist/cjs/sync/normalizedCache.spec.cjs +0 -302
- package/dist/cjs/sync/normalizedCache.spec.native.js +0 -311
- package/dist/cjs/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/cjs/sync/persistence.spec.cjs +0 -562
- package/dist/cjs/sync/persistence.spec.native.js +0 -572
- package/dist/cjs/sync/persistence.spec.native.js.map +0 -1
- package/dist/cjs/sync/realtime.spec.cjs +0 -499
- package/dist/cjs/sync/realtime.spec.native.js +0 -512
- package/dist/cjs/sync/realtime.spec.native.js.map +0 -1
- package/dist/cjs/sync/rehydration.spec.cjs +0 -731
- package/dist/cjs/sync/rehydration.spec.native.js +0 -736
- package/dist/cjs/sync/rehydration.spec.native.js.map +0 -1
- package/dist/cjs/sync/storage.spec.cjs +0 -446
- package/dist/cjs/sync/storage.spec.native.js +0 -470
- package/dist/cjs/sync/storage.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptionManager.spec.cjs +0 -1102
- package/dist/cjs/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/cjs/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/cjs/sync/subscriptions.spec.cjs +0 -937
- package/dist/cjs/sync/subscriptions.spec.native.js +0 -969
- package/dist/cjs/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/cjs/sync/syncModule.spec.cjs +0 -206
- package/dist/cjs/sync/syncModule.spec.native.js +0 -222
- package/dist/cjs/sync/syncModule.spec.native.js.map +0 -1
- package/dist/cjs/sync/types.spec.cjs +0 -246
- package/dist/cjs/sync/types.spec.native.js +0 -256
- package/dist/cjs/sync/types.spec.native.js.map +0 -1
- package/dist/cjs/sync/virtualPageManager.spec.cjs +0 -801
- package/dist/cjs/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/cjs/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/cjs/util.spec.cjs +0 -43
- package/dist/cjs/util.spec.native.js +0 -48
- package/dist/cjs/util.spec.native.js.map +0 -1
- package/dist/esm/auth.spec.mjs +0 -323
- package/dist/esm/auth.spec.mjs.map +0 -1
- package/dist/esm/auth.spec.native.js +0 -327
- package/dist/esm/auth.spec.native.js.map +0 -1
- package/dist/esm/call.spec.mjs +0 -428
- package/dist/esm/call.spec.mjs.map +0 -1
- package/dist/esm/call.spec.native.js +0 -428
- package/dist/esm/call.spec.native.js.map +0 -1
- package/dist/esm/collection.spec.mjs +0 -187
- package/dist/esm/collection.spec.mjs.map +0 -1
- package/dist/esm/collection.spec.native.js +0 -214
- package/dist/esm/collection.spec.native.js.map +0 -1
- package/dist/esm/common/types.spec.mjs +0 -267
- package/dist/esm/common/types.spec.mjs.map +0 -1
- package/dist/esm/common/types.spec.native.js +0 -269
- package/dist/esm/common/types.spec.native.js.map +0 -1
- package/dist/esm/core/http.spec.mjs +0 -1260
- package/dist/esm/core/http.spec.mjs.map +0 -1
- package/dist/esm/core/http.spec.native.js +0 -1399
- package/dist/esm/core/http.spec.native.js.map +0 -1
- package/dist/esm/core/wire.spec.mjs +0 -479
- package/dist/esm/core/wire.spec.mjs.map +0 -1
- package/dist/esm/core/wire.spec.native.js +0 -480
- package/dist/esm/core/wire.spec.native.js.map +0 -1
- package/dist/esm/db.spec.mjs +0 -863
- package/dist/esm/db.spec.mjs.map +0 -1
- package/dist/esm/db.spec.native.js +0 -863
- package/dist/esm/db.spec.native.js.map +0 -1
- package/dist/esm/doctype.spec.mjs +0 -461
- package/dist/esm/doctype.spec.mjs.map +0 -1
- package/dist/esm/doctype.spec.native.js +0 -536
- package/dist/esm/doctype.spec.native.js.map +0 -1
- package/dist/esm/file.spec.mjs +0 -316
- package/dist/esm/file.spec.mjs.map +0 -1
- package/dist/esm/file.spec.native.js +0 -340
- package/dist/esm/file.spec.native.js.map +0 -1
- package/dist/esm/frappeApp.spec.mjs +0 -307
- package/dist/esm/frappeApp.spec.mjs.map +0 -1
- package/dist/esm/frappeApp.spec.native.js +0 -306
- package/dist/esm/frappeApp.spec.native.js.map +0 -1
- package/dist/esm/frappeReact.spec.mjs +0 -532
- package/dist/esm/frappeReact.spec.mjs.map +0 -1
- package/dist/esm/frappeReact.spec.native.js +0 -668
- package/dist/esm/frappeReact.spec.native.js.map +0 -1
- package/dist/esm/optimistic.spec.mjs +0 -12
- package/dist/esm/optimistic.spec.mjs.map +0 -1
- package/dist/esm/optimistic.spec.native.js +0 -17
- package/dist/esm/optimistic.spec.native.js.map +0 -1
- package/dist/esm/pacer.spec.mjs +0 -447
- package/dist/esm/pacer.spec.mjs.map +0 -1
- package/dist/esm/pacer.spec.native.js +0 -511
- package/dist/esm/pacer.spec.native.js.map +0 -1
- package/dist/esm/realtime.spec.mjs +0 -327
- package/dist/esm/realtime.spec.mjs.map +0 -1
- package/dist/esm/realtime.spec.native.js +0 -390
- package/dist/esm/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/backfill.spec.mjs +0 -563
- package/dist/esm/sync/backfill.spec.mjs.map +0 -1
- package/dist/esm/sync/backfill.spec.native.js +0 -686
- package/dist/esm/sync/backfill.spec.native.js.map +0 -1
- package/dist/esm/sync/debug.spec.mjs +0 -102
- package/dist/esm/sync/debug.spec.mjs.map +0 -1
- package/dist/esm/sync/debug.spec.native.js +0 -107
- package/dist/esm/sync/debug.spec.native.js.map +0 -1
- package/dist/esm/sync/filters.spec.mjs +0 -169
- package/dist/esm/sync/filters.spec.mjs.map +0 -1
- package/dist/esm/sync/filters.spec.native.js +0 -171
- package/dist/esm/sync/filters.spec.native.js.map +0 -1
- package/dist/esm/sync/merge.spec.mjs +0 -909
- package/dist/esm/sync/merge.spec.mjs.map +0 -1
- package/dist/esm/sync/merge.spec.native.js +0 -935
- package/dist/esm/sync/merge.spec.native.js.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/esm/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/esm/sync/multiOrderBy.spec.native.js +0 -227
- package/dist/esm/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/esm/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationEngine.spec.native.js +0 -1171
- package/dist/esm/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.mjs +0 -331
- package/dist/esm/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/esm/sync/mutationJournal.spec.native.js +0 -331
- package/dist/esm/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/esm/sync/mutations.spec.mjs +0 -328
- package/dist/esm/sync/mutations.spec.mjs.map +0 -1
- package/dist/esm/sync/mutations.spec.native.js +0 -328
- package/dist/esm/sync/mutations.spec.native.js.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.mjs +0 -303
- package/dist/esm/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/esm/sync/normalizedCache.spec.native.js +0 -309
- package/dist/esm/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/esm/sync/persistence.spec.mjs +0 -563
- package/dist/esm/sync/persistence.spec.mjs.map +0 -1
- package/dist/esm/sync/persistence.spec.native.js +0 -570
- package/dist/esm/sync/persistence.spec.native.js.map +0 -1
- package/dist/esm/sync/realtime.spec.mjs +0 -500
- package/dist/esm/sync/realtime.spec.mjs.map +0 -1
- package/dist/esm/sync/realtime.spec.native.js +0 -510
- package/dist/esm/sync/realtime.spec.native.js.map +0 -1
- package/dist/esm/sync/rehydration.spec.mjs +0 -732
- package/dist/esm/sync/rehydration.spec.mjs.map +0 -1
- package/dist/esm/sync/rehydration.spec.native.js +0 -734
- package/dist/esm/sync/rehydration.spec.native.js.map +0 -1
- package/dist/esm/sync/storage.spec.mjs +0 -423
- package/dist/esm/sync/storage.spec.mjs.map +0 -1
- package/dist/esm/sync/storage.spec.native.js +0 -444
- package/dist/esm/sync/storage.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/esm/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptionManager.spec.native.js +0 -1110
- package/dist/esm/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/esm/sync/subscriptions.spec.mjs +0 -914
- package/dist/esm/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/esm/sync/subscriptions.spec.native.js +0 -943
- package/dist/esm/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/esm/sync/syncModule.spec.mjs +0 -207
- package/dist/esm/sync/syncModule.spec.mjs.map +0 -1
- package/dist/esm/sync/syncModule.spec.native.js +0 -220
- package/dist/esm/sync/syncModule.spec.native.js.map +0 -1
- package/dist/esm/sync/types.spec.mjs +0 -247
- package/dist/esm/sync/types.spec.mjs.map +0 -1
- package/dist/esm/sync/types.spec.native.js +0 -254
- package/dist/esm/sync/types.spec.native.js.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/esm/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/esm/sync/virtualPageManager.spec.native.js +0 -871
- package/dist/esm/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/esm/util.spec.mjs +0 -20
- package/dist/esm/util.spec.mjs.map +0 -1
- package/dist/esm/util.spec.native.js +0 -22
- package/dist/esm/util.spec.native.js.map +0 -1
- package/dist/jsx/auth.spec.mjs +0 -323
- package/dist/jsx/auth.spec.mjs.map +0 -1
- package/dist/jsx/auth.spec.native.js +0 -329
- package/dist/jsx/auth.spec.native.js.map +0 -1
- package/dist/jsx/call.spec.mjs +0 -428
- package/dist/jsx/call.spec.mjs.map +0 -1
- package/dist/jsx/call.spec.native.js +0 -430
- package/dist/jsx/call.spec.native.js.map +0 -1
- package/dist/jsx/collection.spec.mjs +0 -187
- package/dist/jsx/collection.spec.mjs.map +0 -1
- package/dist/jsx/collection.spec.native.js +0 -216
- package/dist/jsx/collection.spec.native.js.map +0 -1
- package/dist/jsx/common/types.spec.mjs +0 -267
- package/dist/jsx/common/types.spec.mjs.map +0 -1
- package/dist/jsx/common/types.spec.native.js +0 -271
- package/dist/jsx/common/types.spec.native.js.map +0 -1
- package/dist/jsx/core/http.spec.mjs +0 -1260
- package/dist/jsx/core/http.spec.mjs.map +0 -1
- package/dist/jsx/core/http.spec.native.js +0 -1401
- package/dist/jsx/core/http.spec.native.js.map +0 -1
- package/dist/jsx/core/wire.spec.mjs +0 -479
- package/dist/jsx/core/wire.spec.mjs.map +0 -1
- package/dist/jsx/core/wire.spec.native.js +0 -482
- package/dist/jsx/core/wire.spec.native.js.map +0 -1
- package/dist/jsx/db.spec.mjs +0 -863
- package/dist/jsx/db.spec.mjs.map +0 -1
- package/dist/jsx/db.spec.native.js +0 -865
- package/dist/jsx/db.spec.native.js.map +0 -1
- package/dist/jsx/doctype.spec.mjs +0 -461
- package/dist/jsx/doctype.spec.mjs.map +0 -1
- package/dist/jsx/doctype.spec.native.js +0 -538
- package/dist/jsx/doctype.spec.native.js.map +0 -1
- package/dist/jsx/file.spec.mjs +0 -316
- package/dist/jsx/file.spec.mjs.map +0 -1
- package/dist/jsx/file.spec.native.js +0 -342
- package/dist/jsx/file.spec.native.js.map +0 -1
- package/dist/jsx/frappeApp.spec.mjs +0 -307
- package/dist/jsx/frappeApp.spec.mjs.map +0 -1
- package/dist/jsx/frappeApp.spec.native.js +0 -308
- package/dist/jsx/frappeApp.spec.native.js.map +0 -1
- package/dist/jsx/frappeReact.spec.mjs +0 -532
- package/dist/jsx/frappeReact.spec.mjs.map +0 -1
- package/dist/jsx/frappeReact.spec.native.js +0 -670
- package/dist/jsx/frappeReact.spec.native.js.map +0 -1
- package/dist/jsx/optimistic.spec.mjs +0 -12
- package/dist/jsx/optimistic.spec.mjs.map +0 -1
- package/dist/jsx/optimistic.spec.native.js +0 -19
- package/dist/jsx/optimistic.spec.native.js.map +0 -1
- package/dist/jsx/pacer.spec.mjs +0 -447
- package/dist/jsx/pacer.spec.mjs.map +0 -1
- package/dist/jsx/pacer.spec.native.js +0 -537
- package/dist/jsx/pacer.spec.native.js.map +0 -1
- package/dist/jsx/realtime.spec.mjs +0 -327
- package/dist/jsx/realtime.spec.mjs.map +0 -1
- package/dist/jsx/realtime.spec.native.js +0 -392
- package/dist/jsx/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/backfill.spec.mjs +0 -563
- package/dist/jsx/sync/backfill.spec.mjs.map +0 -1
- package/dist/jsx/sync/backfill.spec.native.js +0 -712
- package/dist/jsx/sync/backfill.spec.native.js.map +0 -1
- package/dist/jsx/sync/debug.spec.mjs +0 -102
- package/dist/jsx/sync/debug.spec.mjs.map +0 -1
- package/dist/jsx/sync/debug.spec.native.js +0 -133
- package/dist/jsx/sync/debug.spec.native.js.map +0 -1
- package/dist/jsx/sync/filters.spec.mjs +0 -169
- package/dist/jsx/sync/filters.spec.mjs.map +0 -1
- package/dist/jsx/sync/filters.spec.native.js +0 -173
- package/dist/jsx/sync/filters.spec.native.js.map +0 -1
- package/dist/jsx/sync/merge.spec.mjs +0 -909
- package/dist/jsx/sync/merge.spec.mjs.map +0 -1
- package/dist/jsx/sync/merge.spec.native.js +0 -937
- package/dist/jsx/sync/merge.spec.native.js.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.mjs +0 -166
- package/dist/jsx/sync/multiOrderBy.spec.mjs.map +0 -1
- package/dist/jsx/sync/multiOrderBy.spec.native.js +0 -229
- package/dist/jsx/sync/multiOrderBy.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.mjs +0 -1159
- package/dist/jsx/sync/mutationEngine.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationEngine.spec.native.js +0 -1173
- package/dist/jsx/sync/mutationEngine.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.mjs +0 -331
- package/dist/jsx/sync/mutationJournal.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutationJournal.spec.native.js +0 -333
- package/dist/jsx/sync/mutationJournal.spec.native.js.map +0 -1
- package/dist/jsx/sync/mutations.spec.mjs +0 -328
- package/dist/jsx/sync/mutations.spec.mjs.map +0 -1
- package/dist/jsx/sync/mutations.spec.native.js +0 -330
- package/dist/jsx/sync/mutations.spec.native.js.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.mjs +0 -303
- package/dist/jsx/sync/normalizedCache.spec.mjs.map +0 -1
- package/dist/jsx/sync/normalizedCache.spec.native.js +0 -311
- package/dist/jsx/sync/normalizedCache.spec.native.js.map +0 -1
- package/dist/jsx/sync/persistence.spec.mjs +0 -563
- package/dist/jsx/sync/persistence.spec.mjs.map +0 -1
- package/dist/jsx/sync/persistence.spec.native.js +0 -572
- package/dist/jsx/sync/persistence.spec.native.js.map +0 -1
- package/dist/jsx/sync/realtime.spec.mjs +0 -500
- package/dist/jsx/sync/realtime.spec.mjs.map +0 -1
- package/dist/jsx/sync/realtime.spec.native.js +0 -512
- package/dist/jsx/sync/realtime.spec.native.js.map +0 -1
- package/dist/jsx/sync/rehydration.spec.mjs +0 -732
- package/dist/jsx/sync/rehydration.spec.mjs.map +0 -1
- package/dist/jsx/sync/rehydration.spec.native.js +0 -736
- package/dist/jsx/sync/rehydration.spec.native.js.map +0 -1
- package/dist/jsx/sync/storage.spec.mjs +0 -423
- package/dist/jsx/sync/storage.spec.mjs.map +0 -1
- package/dist/jsx/sync/storage.spec.native.js +0 -470
- package/dist/jsx/sync/storage.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.mjs +0 -1079
- package/dist/jsx/sync/subscriptionManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptionManager.spec.native.js +0 -1136
- package/dist/jsx/sync/subscriptionManager.spec.native.js.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.mjs +0 -914
- package/dist/jsx/sync/subscriptions.spec.mjs.map +0 -1
- package/dist/jsx/sync/subscriptions.spec.native.js +0 -969
- package/dist/jsx/sync/subscriptions.spec.native.js.map +0 -1
- package/dist/jsx/sync/syncModule.spec.mjs +0 -207
- package/dist/jsx/sync/syncModule.spec.mjs.map +0 -1
- package/dist/jsx/sync/syncModule.spec.native.js +0 -222
- package/dist/jsx/sync/syncModule.spec.native.js.map +0 -1
- package/dist/jsx/sync/types.spec.mjs +0 -247
- package/dist/jsx/sync/types.spec.mjs.map +0 -1
- package/dist/jsx/sync/types.spec.native.js +0 -256
- package/dist/jsx/sync/types.spec.native.js.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.mjs +0 -802
- package/dist/jsx/sync/virtualPageManager.spec.mjs.map +0 -1
- package/dist/jsx/sync/virtualPageManager.spec.native.js +0 -873
- package/dist/jsx/sync/virtualPageManager.spec.native.js.map +0 -1
- package/dist/jsx/util.spec.mjs +0 -20
- package/dist/jsx/util.spec.mjs.map +0 -1
- package/dist/jsx/util.spec.native.js +0 -48
- package/dist/jsx/util.spec.native.js.map +0 -1
package/src/sync/types.ts
CHANGED
|
@@ -75,6 +75,12 @@ export interface Subscription {
|
|
|
75
75
|
};
|
|
76
76
|
/** Tombstones for tracking deleted documents with timestamps */
|
|
77
77
|
tombstones?: Map<string, number>;
|
|
78
|
+
/**
|
|
79
|
+
* True when the last network refresh for this subscription failed and its
|
|
80
|
+
* membership is being served from the persisted cache. Cleared by the next
|
|
81
|
+
* successful refresh or CDC backfill.
|
|
82
|
+
*/
|
|
83
|
+
stale?: boolean;
|
|
78
84
|
}
|
|
79
85
|
|
|
80
86
|
export enum Operation {
|
|
@@ -140,7 +146,13 @@ export interface BackfillArgs {
|
|
|
140
146
|
|
|
141
147
|
/** Types of realtime events */
|
|
142
148
|
export enum RealtimeEventType {
|
|
149
|
+
/** Real Frappe event: emitted to the per-doc room on every save (and on delete). */
|
|
150
|
+
DocUpdate = "doc_update",
|
|
151
|
+
/** Real Frappe event: emitted to the doctype room on every save (and on delete). */
|
|
152
|
+
ListUpdate = "list_update",
|
|
153
|
+
/** Designed wire-protocol event (forward-compat) — stock Frappe never emits it. */
|
|
143
154
|
DocChanged = "doc_changed",
|
|
155
|
+
/** Designed wire-protocol event (forward-compat) — stock Frappe never emits it. */
|
|
144
156
|
DocDeleted = "doc_deleted",
|
|
145
157
|
Connected = "connected",
|
|
146
158
|
PermEpochBump = "perm_epoch_bump",
|
|
@@ -175,6 +187,13 @@ export interface SyncOptions {
|
|
|
175
187
|
onTrace?: (info: { event: string; details?: unknown }) => void;
|
|
176
188
|
onResetCache?: () => void;
|
|
177
189
|
onBackfillAll?: () => void;
|
|
190
|
+
/**
|
|
191
|
+
* Internal: invoked after realtime-driven cache/membership changes
|
|
192
|
+
* (doc_update/list_update reconcile, doc_deleted eviction, rehydration,
|
|
193
|
+
* connection state flips) so the sync store can notify its listeners.
|
|
194
|
+
* Wired by SyncModule; not intended for consumer use.
|
|
195
|
+
*/
|
|
196
|
+
onStoreChange?: () => void;
|
|
178
197
|
/** Connection management configuration */
|
|
179
198
|
connectionConfig?: ConnectionConfig;
|
|
180
199
|
/** Multi-tab coordination configuration */
|
|
@@ -183,6 +202,13 @@ export interface SyncOptions {
|
|
|
183
202
|
mutationTTL?: number;
|
|
184
203
|
/** Batch size for fetching documents (default: 100) */
|
|
185
204
|
batchSize?: number;
|
|
205
|
+
/**
|
|
206
|
+
* Max CDC pages drained per backfill when the server reports has_more
|
|
207
|
+
* (default: 20). Bounds catch-up work after long offline periods in both
|
|
208
|
+
* drain paths: the subscription drain (SubscriptionManager.backfillSub)
|
|
209
|
+
* and the periodic/recovery path (BackfillManager.incrementalBackfill).
|
|
210
|
+
*/
|
|
211
|
+
backfillMaxPages?: number;
|
|
186
212
|
/** Maximum number of documents to keep in normalized cache (default: unlimited) */
|
|
187
213
|
maxCacheSize?: number;
|
|
188
214
|
/** Enable automatic mutation batching (default: false) */
|
|
@@ -208,6 +234,15 @@ export interface SyncOptions {
|
|
|
208
234
|
tombstoneMaxAge?: number;
|
|
209
235
|
/** Maximum number of tombstones per subscription before cleanup (default: 1000) */
|
|
210
236
|
tombstoneMaxCount?: number;
|
|
237
|
+
/**
|
|
238
|
+
* How long (in milliseconds) a subscription restored from a persisted
|
|
239
|
+
* snapshot may stay unadopted before it is garbage-collected (default:
|
|
240
|
+
* 30 minutes). Restored subscriptions are re-adopted (id, checkpoint, and
|
|
241
|
+
* cached membership reused) when an identical query subscribes; unadopted
|
|
242
|
+
* ones are excluded from backfill and dropped after this grace period.
|
|
243
|
+
* Only relevant when `persistKey` is set.
|
|
244
|
+
*/
|
|
245
|
+
restoredSubscriptionTTL?: number;
|
|
211
246
|
/** Callback when tab becomes leader */
|
|
212
247
|
onBecomeLeader?: () => void;
|
|
213
248
|
/** Callback when tab loses leadership */
|
|
@@ -333,6 +368,10 @@ export interface DebugSubscription {
|
|
|
333
368
|
tombstoneCount: number;
|
|
334
369
|
checkpoint?: string;
|
|
335
370
|
cursor?: string;
|
|
371
|
+
/** Serving persisted cache after a failed network refresh. */
|
|
372
|
+
stale?: boolean;
|
|
373
|
+
/** Restored from a persisted snapshot and not yet re-adopted by a live query. */
|
|
374
|
+
restored?: boolean;
|
|
336
375
|
progressiveCache?: {
|
|
337
376
|
docIds: string[];
|
|
338
377
|
nextCursor?: string;
|
|
@@ -213,12 +213,16 @@ export class VirtualPageManager<Data extends FrappeDocData = FrappeDocData> {
|
|
|
213
213
|
private cacheGeneration = 0;
|
|
214
214
|
private readonly batchSize: number;
|
|
215
215
|
private islands = new Map<string, PageIsland[]>();
|
|
216
|
+
private normalizedCache: NormalizedCache;
|
|
217
|
+
private db: DbModule;
|
|
216
218
|
|
|
217
219
|
constructor(
|
|
218
|
-
|
|
219
|
-
|
|
220
|
+
normalizedCache: NormalizedCache,
|
|
221
|
+
db: DbModule,
|
|
220
222
|
options: { batchSize?: number } = {},
|
|
221
223
|
) {
|
|
224
|
+
this.normalizedCache = normalizedCache;
|
|
225
|
+
this.db = db;
|
|
222
226
|
this.batchSize = options.batchSize || 100;
|
|
223
227
|
}
|
|
224
228
|
|
|
@@ -947,7 +951,7 @@ export class VirtualPageManager<Data extends FrappeDocData = FrappeDocData> {
|
|
|
947
951
|
}
|
|
948
952
|
|
|
949
953
|
private async ensureCached(subscription: VirtualSubscription, requiredIndex: number) {
|
|
950
|
-
|
|
954
|
+
const cache = subscription.getProgressiveCache();
|
|
951
955
|
if (cache.docIds.length >= requiredIndex || !cache.hasMore) return;
|
|
952
956
|
|
|
953
957
|
const pageSize = subscription.viewWindow.pageSize;
|
|
@@ -956,7 +960,7 @@ export class VirtualPageManager<Data extends FrappeDocData = FrappeDocData> {
|
|
|
956
960
|
}
|
|
957
961
|
|
|
958
962
|
private recordIsland(subscriptionId: string, island: PageIsland): void {
|
|
959
|
-
|
|
963
|
+
const existing = this.islands.get(subscriptionId) || [];
|
|
960
964
|
|
|
961
965
|
// Add the new island to the list
|
|
962
966
|
existing.push(island);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { useLiveQuery as useLiveQueryBase } from "@tanstack/react-db";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Result returned while server rendering: mirrors the shape
|
|
5
|
+
* `@tanstack/react-db` produces during its initial client-side "loading"
|
|
6
|
+
* state so SSR markup matches the client's first paint.
|
|
7
|
+
*/
|
|
8
|
+
const SSR_LIVE_QUERY_RESULT = Object.freeze({
|
|
9
|
+
state: undefined,
|
|
10
|
+
data: undefined,
|
|
11
|
+
collection: undefined,
|
|
12
|
+
status: "loading",
|
|
13
|
+
isLoading: true,
|
|
14
|
+
isReady: false,
|
|
15
|
+
isIdle: false,
|
|
16
|
+
isError: false,
|
|
17
|
+
isCleanedUp: false,
|
|
18
|
+
isEnabled: true,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* True when this module is evaluated during web server rendering.
|
|
23
|
+
*
|
|
24
|
+
* Resolved once at module init, guarded like `frappe-ui`'s
|
|
25
|
+
* `frappeStoryTarget` precedent: on web, Vite provides `import.meta.env`
|
|
26
|
+
* (dev + build + SSR), so `.SSR` reads the real flag; on native
|
|
27
|
+
* (Metro/Hermes — no Vite define), `import.meta.env` is undefined at
|
|
28
|
+
* runtime and a bare `import.meta.env.SSR` member access THROWS
|
|
29
|
+
* (`Cannot read property 'SSR' of undefined`, crashing every
|
|
30
|
+
* live-query consumer on device). The optional access + try/catch land
|
|
31
|
+
* native on `false`, which is correct — native is always a client.
|
|
32
|
+
*/
|
|
33
|
+
const IS_SSR: boolean = (() => {
|
|
34
|
+
try {
|
|
35
|
+
return (import.meta as ImportMeta & { env?: { SSR?: boolean } }).env?.SSR === true;
|
|
36
|
+
} catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
})();
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* SSR-safe wrapper around `useLiveQuery` from `@tanstack/react-db`.
|
|
43
|
+
*
|
|
44
|
+
* The upstream hook calls `useSyncExternalStore(subscribe, getSnapshot)`
|
|
45
|
+
* without a `getServerSnapshot`, so react-dom/server throws "Missing
|
|
46
|
+
* getServerSnapshot, which is required for server-rendered content" the
|
|
47
|
+
* moment any component using it is server rendered (e.g. deep-linking a
|
|
48
|
+
* web route). On the server we skip the subscription entirely and return
|
|
49
|
+
* a static "loading" result; the live query takes over on the client.
|
|
50
|
+
*
|
|
51
|
+
* `IS_SSR` is constant for the lifetime of the process, so hook order
|
|
52
|
+
* never varies within a renderer.
|
|
53
|
+
*/
|
|
54
|
+
export const useLiveQuery: typeof useLiveQueryBase = ((...args: unknown[]) => {
|
|
55
|
+
if (IS_SSR) return SSR_LIVE_QUERY_RESULT;
|
|
56
|
+
// oxlint-disable-next-line rules-of-hooks -- branch is process-constant
|
|
57
|
+
return (useLiveQueryBase as (...args: unknown[]) => unknown)(...args);
|
|
58
|
+
}) as typeof useLiveQueryBase;
|
package/src/util.spec.ts
CHANGED
|
@@ -1,17 +1,48 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { isBrowser } from "./util";
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { isBrowser, isGjs } from "./util";
|
|
3
3
|
|
|
4
4
|
describe("isBrowser", () => {
|
|
5
5
|
it("returns true in a browser-like (happy-dom) environment", () => {
|
|
6
6
|
expect(isBrowser()).toBe(true);
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
-
it("returns false when
|
|
9
|
+
it("returns false when neither isNative nor isWindowDefined", async () => {
|
|
10
10
|
vi.resetModules();
|
|
11
|
-
vi.doMock("@multiplatform.one/platform", () => ({ isWindowDefined: false }));
|
|
11
|
+
vi.doMock("@multiplatform.one/platform", () => ({ isNative: false, isWindowDefined: false }));
|
|
12
12
|
const { isBrowser: isBrowserFresh } = await import("./util");
|
|
13
13
|
expect(isBrowserFresh()).toBe(false);
|
|
14
14
|
vi.doUnmock("@multiplatform.one/platform");
|
|
15
15
|
vi.resetModules();
|
|
16
16
|
});
|
|
17
17
|
});
|
|
18
|
+
|
|
19
|
+
describe("isGjs", () => {
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
delete (globalThis as { imports?: unknown }).imports;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("returns false in a browser-like environment", () => {
|
|
25
|
+
expect(isGjs()).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it("detects the GJS imports.gi global", () => {
|
|
29
|
+
(globalThis as { imports?: unknown }).imports = { gi: {} };
|
|
30
|
+
expect(isGjs()).toBe(true);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("does not false-positive on an imports global without gi", () => {
|
|
34
|
+
(globalThis as { imports?: unknown }).imports = { something: true };
|
|
35
|
+
expect(isGjs()).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("makes isBrowser() true on GJS even without isNative/isWindowDefined", async () => {
|
|
39
|
+
vi.resetModules();
|
|
40
|
+
vi.doMock("@multiplatform.one/platform", () => ({ isNative: false, isWindowDefined: false }));
|
|
41
|
+
(globalThis as { imports?: unknown }).imports = { gi: {} };
|
|
42
|
+
const fresh = await import("./util");
|
|
43
|
+
expect(fresh.isGjs()).toBe(true);
|
|
44
|
+
expect(fresh.isBrowser()).toBe(true);
|
|
45
|
+
vi.doUnmock("@multiplatform.one/platform");
|
|
46
|
+
vi.resetModules();
|
|
47
|
+
});
|
|
48
|
+
});
|
package/src/util.ts
CHANGED
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
import { isNative, isWindowDefined } from "@multiplatform.one/platform";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* True
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* True when running under GJS (GNOME JavaScript — the GTK desktop runtime).
|
|
5
|
+
*
|
|
6
|
+
* GJS always exposes the legacy `imports` global with its `gi` GObject
|
|
7
|
+
* Introspection namespace, in both script and ESM (`gjs -m`) modes — verified
|
|
8
|
+
* on GJS 1.7x/1.8x. No browser, Node, or React Native runtime defines
|
|
9
|
+
* `globalThis.imports.gi`, so this cannot false-positive elsewhere (a page
|
|
10
|
+
* would have to deliberately fake the GI namespace). Checked lazily — GJS
|
|
11
|
+
* embeds could in theory construct the global after module init.
|
|
12
|
+
*/
|
|
13
|
+
export function isGjs(): boolean {
|
|
14
|
+
try {
|
|
15
|
+
const gjsImports = (globalThis as { imports?: { gi?: unknown } }).imports;
|
|
16
|
+
return (
|
|
17
|
+
typeof gjsImports === "object" &&
|
|
18
|
+
gjsImports !== null &&
|
|
19
|
+
typeof gjsImports.gi === "object" &&
|
|
20
|
+
gjsImports.gi !== null
|
|
21
|
+
);
|
|
22
|
+
} catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* True in any CLIENT runtime — web browser, React Native, or GJS (GNOME) —
|
|
29
|
+
* false in Node/SSR. This gates the live sync pipeline
|
|
30
|
+
* (SyncModule/collections), which is fully capable on all three:
|
|
31
|
+
* native has MMKV storage and the RN realtime transport; GJS runs with
|
|
32
|
+
* WHATWG timers, an entry-installed fetch/WebSocket polyfill (libsoup), and
|
|
33
|
+
* guarded storage/BroadcastChannel no-ops. Window-presence alone is the
|
|
34
|
+
* wrong test: @tamagui/constants hardcodes isWindowDefined=false on native,
|
|
35
|
+
* which used to silently disable every collection on iOS/Android, and GJS
|
|
36
|
+
* has no real window either.
|
|
10
37
|
*/
|
|
11
38
|
export function isBrowser(): boolean {
|
|
12
|
-
return isNative || isWindowDefined;
|
|
39
|
+
return isNative || isWindowDefined || isGjs();
|
|
13
40
|
}
|
package/types/auth.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HttpClient } from "./core/http";
|
|
2
|
+
export declare class AuthModule {
|
|
3
|
+
private readonly http;
|
|
4
|
+
constructor(http: HttpClient);
|
|
5
|
+
loginWithUsernamePassword(input: {
|
|
6
|
+
username: string;
|
|
7
|
+
password: string;
|
|
8
|
+
}): Promise<import("./core/http").HttpResponse<unknown>>;
|
|
9
|
+
getLoggedInUser(): Promise<string>;
|
|
10
|
+
logout(): Promise<import("./core/http").HttpResponse<unknown>>;
|
|
11
|
+
forgetPassword(email: string): Promise<import("./core/http").HttpResponse<unknown>>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAItB,yBAAyB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAOvE,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC,MAAM;IAIN,cAAc,CAAC,KAAK,EAAE,MAAM;CAKnC"}
|
package/types/call.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HttpClient } from "./core/http";
|
|
2
|
+
export declare class CallModule {
|
|
3
|
+
private readonly http;
|
|
4
|
+
constructor(http: HttpClient);
|
|
5
|
+
get<T>(method: string, params?: Record<string, any>): Promise<import("./core/http").HttpResponse<T>>;
|
|
6
|
+
post<T>(method: string, body?: any): Promise<import("./core/http").HttpResponse<T>>;
|
|
7
|
+
put<T>(method: string, body?: any): Promise<import("./core/http").HttpResponse<T>>;
|
|
8
|
+
delete<T>(method: string, body?: any): Promise<import("./core/http").HttpResponse<T>>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAI5B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAInD,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIlC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIjC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAGrC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { CollectionConfig } from "@tanstack/db";
|
|
2
|
+
import type { FixtureProvider } from "./fixtures";
|
|
3
|
+
import type { SyncModule } from "./sync";
|
|
4
|
+
import type { SubscriptionQuery } from "./sync/types";
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for creating a Frappe-backed TanStack DB collection.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam TDoc - The document type stored in the collection
|
|
9
|
+
*/
|
|
10
|
+
export interface FrappeCollectionOptionsConfig<_TDoc extends object & {
|
|
11
|
+
name: string;
|
|
12
|
+
doctype: string;
|
|
13
|
+
}> {
|
|
14
|
+
/** The Frappe SyncModule instance to use for data sync */
|
|
15
|
+
sync: SyncModule;
|
|
16
|
+
/** Fields to subscribe to from the doctype */
|
|
17
|
+
fields?: readonly string[];
|
|
18
|
+
/** Frappe filters to apply to the subscription */
|
|
19
|
+
filters?: Record<string, unknown> | Array<[string, string, unknown]>;
|
|
20
|
+
/** Optional override for the collection id (defaults to doctype) */
|
|
21
|
+
id?: string;
|
|
22
|
+
/** Order-by configuration */
|
|
23
|
+
orderBy?: SubscriptionQuery["orderBy"];
|
|
24
|
+
/** Limit for the subscription */
|
|
25
|
+
limit?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Called when the initial subscription fetch fails (network down,
|
|
28
|
+
* PermissionError/403, bad doctype). Without this the collection just
|
|
29
|
+
* looks empty — consumers should surface an honest error state instead.
|
|
30
|
+
*/
|
|
31
|
+
onSyncError?: (error: unknown) => void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates TanStack DB collection options wired to Frappe's SyncModule.
|
|
35
|
+
*
|
|
36
|
+
* This follows TanStack DB's collection options creator pattern (Pattern B),
|
|
37
|
+
* where mutation handlers are built-in and delegate to SyncModule.
|
|
38
|
+
*
|
|
39
|
+
* @typeParam TDoc - The Frappe document type
|
|
40
|
+
* @param doctype - The Frappe doctype name (e.g. "ToDo", "Pokemon")
|
|
41
|
+
* @param config - Configuration for the collection
|
|
42
|
+
* @returns A CollectionConfig object suitable for `createCollection()`
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const pokemonCollection = createCollection(
|
|
47
|
+
* frappeCollectionOptions<Pokemon>("Pokemon", {
|
|
48
|
+
* sync: syncModule,
|
|
49
|
+
* fields: ["name", "pokemon_name", "poke_id"],
|
|
50
|
+
* })
|
|
51
|
+
* );
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function frappeCollectionOptions<TDoc extends object & {
|
|
55
|
+
name: string;
|
|
56
|
+
doctype: string;
|
|
57
|
+
}>(doctype: string, config: FrappeCollectionOptionsConfig<TDoc>): CollectionConfig<TDoc, string>;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a TanStack DB Collection backed by a Frappe doctype via SyncModule.
|
|
60
|
+
*
|
|
61
|
+
* Convenience wrapper that calls `createCollection(frappeCollectionOptions(...))`.
|
|
62
|
+
*
|
|
63
|
+
* @typeParam TDoc - The Frappe document type
|
|
64
|
+
* @param doctype - The Frappe doctype name
|
|
65
|
+
* @param config - Configuration for the collection
|
|
66
|
+
* @returns A TanStack DB Collection instance
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const pokemonCollection = createFrappeCollection<Pokemon>("Pokemon", {
|
|
71
|
+
* sync: syncModule,
|
|
72
|
+
* fields: ["name", "pokemon_name", "poke_id"],
|
|
73
|
+
* });
|
|
74
|
+
*
|
|
75
|
+
* // Use with useLiveQuery
|
|
76
|
+
* const { data } = useLiveQuery((q) =>
|
|
77
|
+
* q.from({ pokemon: pokemonCollection })
|
|
78
|
+
* );
|
|
79
|
+
*
|
|
80
|
+
* // Direct mutations
|
|
81
|
+
* pokemonCollection.insert({ name: "pikachu", doctype: "Pokemon", ... });
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function createFrappeCollection<TDoc extends object & {
|
|
85
|
+
name: string;
|
|
86
|
+
doctype: string;
|
|
87
|
+
}>(doctype: string, config: FrappeCollectionOptionsConfig<TDoc>): import("@tanstack/db").Collection<TDoc, string, import("@tanstack/db").UtilsRecord, never, TDoc> & import("@tanstack/db").NonSingleResult;
|
|
88
|
+
/**
|
|
89
|
+
* Configuration for creating a fixture-backed TanStack DB collection.
|
|
90
|
+
* Used when fixtures are provided (e.g. in Storybook or tests).
|
|
91
|
+
*/
|
|
92
|
+
export interface FixtureCollectionOptionsConfig<_TDoc extends object & {
|
|
93
|
+
name: string;
|
|
94
|
+
doctype: string;
|
|
95
|
+
}> {
|
|
96
|
+
/** The fixture provider to use for data */
|
|
97
|
+
fixtures: FixtureProvider;
|
|
98
|
+
/** Fields to load from the doctype */
|
|
99
|
+
fields?: readonly string[];
|
|
100
|
+
/** Frappe filters to apply */
|
|
101
|
+
filters?: Record<string, unknown> | Array<[string, string, unknown]>;
|
|
102
|
+
/** Optional override for the collection id */
|
|
103
|
+
id?: string;
|
|
104
|
+
/** Order-by configuration */
|
|
105
|
+
orderBy?: SubscriptionQuery["orderBy"];
|
|
106
|
+
/** Limit for the query */
|
|
107
|
+
limit?: number;
|
|
108
|
+
/** Offset for pagination */
|
|
109
|
+
limitStart?: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Creates TanStack DB collection options wired to a FixtureProvider.
|
|
113
|
+
* Used when config.fixtures is set (e.g. in tests or Storybook).
|
|
114
|
+
*/
|
|
115
|
+
export declare function fixtureCollectionOptions<TDoc extends object & {
|
|
116
|
+
name: string;
|
|
117
|
+
doctype: string;
|
|
118
|
+
}>(doctype: string, config: FixtureCollectionOptionsConfig<TDoc>): CollectionConfig<TDoc, string>;
|
|
119
|
+
/**
|
|
120
|
+
* Creates a TanStack DB Collection backed by a FixtureProvider.
|
|
121
|
+
* Used when config.fixtures is set (e.g. in tests or Storybook).
|
|
122
|
+
*/
|
|
123
|
+
export declare function createFixtureCollection<TDoc extends object & {
|
|
124
|
+
name: string;
|
|
125
|
+
doctype: string;
|
|
126
|
+
}>(doctype: string, config: FixtureCollectionOptionsConfig<TDoc>): import("@tanstack/db").Collection<TDoc, string, import("@tanstack/db").UtilsRecord, never, TDoc> & import("@tanstack/db").NonSingleResult;
|
|
127
|
+
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type PrimitiveValue = string | number | boolean | null | undefined;
|
|
2
|
+
export type FrappeDocValue = ChildTableRow[] | FrappeDocValue[] | PrimitiveValue | {
|
|
3
|
+
[key: string]: FrappeDocValue;
|
|
4
|
+
};
|
|
5
|
+
export interface ChildTableRow {
|
|
6
|
+
name: string;
|
|
7
|
+
doctype: string | null;
|
|
8
|
+
idx: number | null;
|
|
9
|
+
parent: string | null;
|
|
10
|
+
parentfield: string | null;
|
|
11
|
+
parenttype: string | null;
|
|
12
|
+
[key: string]: FrappeDocValue;
|
|
13
|
+
}
|
|
14
|
+
export interface FrappeDocBase {
|
|
15
|
+
creation?: string;
|
|
16
|
+
docstatus?: number;
|
|
17
|
+
doctype: string;
|
|
18
|
+
idx?: number;
|
|
19
|
+
modified?: string;
|
|
20
|
+
modified_by?: string;
|
|
21
|
+
name: string;
|
|
22
|
+
owner?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Minimal constraint for document types - any object with name/doctype (e.g. FrappeTag, FrappeFile) */
|
|
25
|
+
export type FrappeDocDataConstraint = object & {
|
|
26
|
+
name: string;
|
|
27
|
+
doctype: string;
|
|
28
|
+
};
|
|
29
|
+
/** Data can be any object with name/doctype; index signature relaxed for UI types like FrappeFile */
|
|
30
|
+
export type FrappeDocData<Data extends FrappeDocDataConstraint = Record<string, FrappeDocValue> & {
|
|
31
|
+
name: string;
|
|
32
|
+
doctype: string;
|
|
33
|
+
}> = Data & FrappeDocBase;
|
|
34
|
+
export type FrappeDoc<Data extends FrappeDocData> = Data & FrappeDocBase;
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E,MAAM,MAAM,cAAc,GACtB,aAAa,EAAE,GACf,cAAc,EAAE,GAChB,cAAc,GACd;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wGAAwG;AACxG,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,qGAAqG;AACrG,MAAM,MAAM,aAAa,CACvB,IAAI,SAAS,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,IACC,IAAI,GAAG,aAAa,CAAC;AAEzB,MAAM,MAAM,SAAS,CAAC,IAAI,SAAS,aAAa,IAAI,IAAI,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { getCookie, setCookie, deleteCookie } from "@multiplatform.one/platform";
|
|
2
|
+
import { HttpMethod } from "./types";
|
|
3
|
+
import type { AuthConfig, RetryConfig } from "./types";
|
|
4
|
+
export { getCookie, setCookie, deleteCookie };
|
|
5
|
+
export type RequestBody = BodyInit | Record<string, unknown> | unknown[] | ArrayBufferView;
|
|
6
|
+
export interface HttpResponse<T> {
|
|
7
|
+
_res: Response;
|
|
8
|
+
headers: Headers;
|
|
9
|
+
payload: T;
|
|
10
|
+
status: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class HttpClient {
|
|
13
|
+
private readonly retryConfig;
|
|
14
|
+
private _language?;
|
|
15
|
+
/** Server-bootstrapped CSRF token for React Native cookie auth (see ensureNativeCsrfToken). */
|
|
16
|
+
private csrfToken?;
|
|
17
|
+
/** True once a native CSRF bootstrap attempt completed (even if it yielded no token). */
|
|
18
|
+
private csrfBootstrapDone;
|
|
19
|
+
/** In-flight CSRF bootstrap, deduped across concurrent mutating requests. */
|
|
20
|
+
private csrfBootstrap?;
|
|
21
|
+
private readonly baseURL;
|
|
22
|
+
private auth?;
|
|
23
|
+
constructor(baseURL: string, auth?: AuthConfig, retryConfig?: RetryConfig);
|
|
24
|
+
/** Set language preference for Accept-Language header on all requests. */
|
|
25
|
+
setLanguage(lang: string): void;
|
|
26
|
+
/** Get resolved language: explicit > cookie > undefined. */
|
|
27
|
+
getLanguage(): string | undefined;
|
|
28
|
+
/** Sync language preference to Frappe user profile (authenticated users). */
|
|
29
|
+
syncUserLanguage(lang: string, user?: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* React Native cookie-auth CSRF bootstrap.
|
|
32
|
+
*
|
|
33
|
+
* RN's fetch sends the OS cookie jar (so cookie-auth sessions work), but
|
|
34
|
+
* JS cannot READ those cookies — the platform `getCookie` shim is an
|
|
35
|
+
* in-memory map that never sees the `sid`/CSRF cookies — so mutating
|
|
36
|
+
* requests would 400 once the session has a CSRF token. Fetch the token
|
|
37
|
+
* from the server instead and cache it per client:
|
|
38
|
+
*
|
|
39
|
+
* 1. `GET /api/method/frappe.sessions.get_csrf_token` — whitelisted on
|
|
40
|
+
* newer frappe versions; cheap JSON round-trip.
|
|
41
|
+
* 2. Fallback: `GET /app` and parse the `frappe.csrf_token = "…"` boot
|
|
42
|
+
* script — works on every frappe (this repo's bench does NOT
|
|
43
|
+
* whitelist the RPC above) and also generates the token server-side
|
|
44
|
+
* when the session lacks one.
|
|
45
|
+
*
|
|
46
|
+
* Resolves undefined when neither source works (e.g. website-only session
|
|
47
|
+
* without desk access); requests then proceed without the header, which
|
|
48
|
+
* frappe accepts for sessions that have no CSRF token yet. The cache is
|
|
49
|
+
* dropped on auth change and on a 400 from a mutating request so a
|
|
50
|
+
* rotated session re-bootstraps.
|
|
51
|
+
*/
|
|
52
|
+
private ensureNativeCsrfToken;
|
|
53
|
+
private fetchNativeCsrfToken;
|
|
54
|
+
private invalidateNativeCsrfToken;
|
|
55
|
+
private getAuthHeaders;
|
|
56
|
+
private shouldRetryError;
|
|
57
|
+
private getRetryDelay;
|
|
58
|
+
request<T>(method: HttpMethod, path: string, request: {
|
|
59
|
+
body?: RequestBody;
|
|
60
|
+
headers?: Record<string, string>;
|
|
61
|
+
/** Cancels the request (and any pending retry) when aborted. */
|
|
62
|
+
signal?: AbortSignal;
|
|
63
|
+
}): Promise<HttpResponse<T>>;
|
|
64
|
+
get<T>(path: string, params?: Record<string, unknown>, headers?: Record<string, string>, signal?: AbortSignal): Promise<HttpResponse<T>>;
|
|
65
|
+
post<T>(path: string, body?: RequestBody, headers?: Record<string, string>): Promise<HttpResponse<T>>;
|
|
66
|
+
put<T>(path: string, body?: RequestBody, headers?: Record<string, string>): Promise<HttpResponse<T>>;
|
|
67
|
+
delete<T>(path: string, body?: RequestBody, headers?: Record<string, string>): Promise<HttpResponse<T>>;
|
|
68
|
+
head(path: string, params?: Record<string, unknown>, headers?: Record<string, string>): Promise<HttpResponse<void>>;
|
|
69
|
+
getAuthConfig(): AuthConfig;
|
|
70
|
+
updateAuth(auth: AuthConfig): void;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Set cookies for SSR/Node environments where document.cookie is unavailable.
|
|
74
|
+
* Pass a cookie header string (e.g., from incoming request).
|
|
75
|
+
*/
|
|
76
|
+
export declare function setSSRCookies(cookieHeader: string | undefined): void;
|
|
77
|
+
/**
|
|
78
|
+
* Clear SSR cookies (call at end of request lifecycle).
|
|
79
|
+
*/
|
|
80
|
+
export declare function clearSSRCookies(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Invalidate the cookie cache. No-op — retained for backwards compatibility.
|
|
83
|
+
* Cookie reads now delegate directly to the platform abstraction.
|
|
84
|
+
*/
|
|
85
|
+
export declare function invalidateCookieCache(): void;
|
|
86
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { OrderBy } from "../sync/types";
|
|
2
|
+
export declare enum AuthType {
|
|
3
|
+
Bearer = "Bearer",
|
|
4
|
+
Token = "token"
|
|
5
|
+
}
|
|
6
|
+
export interface AuthConfig {
|
|
7
|
+
/**
|
|
8
|
+
* Raw cookie string to attach to every request (used in SSR / Node.js
|
|
9
|
+
* where the browser cookie jar is not available).
|
|
10
|
+
*
|
|
11
|
+
* Example: `"sid=abc123; system_user=yes"`
|
|
12
|
+
*/
|
|
13
|
+
cookie?: string;
|
|
14
|
+
sessionId?: string | (() => string | Promise<string>);
|
|
15
|
+
token?: string | (() => string | Promise<string>);
|
|
16
|
+
type?: AuthType;
|
|
17
|
+
useToken?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface RetryConfig {
|
|
20
|
+
baseDelayMs?: number;
|
|
21
|
+
exponentialBackoff?: boolean;
|
|
22
|
+
maxDelayMs?: number;
|
|
23
|
+
maxRetries?: number;
|
|
24
|
+
retryOnNetworkError?: boolean;
|
|
25
|
+
retryStatusCodes?: number[];
|
|
26
|
+
shouldRetry?: (err: unknown, attempt: number) => boolean;
|
|
27
|
+
}
|
|
28
|
+
export type CustomEndpoints = {
|
|
29
|
+
createDoc?: string;
|
|
30
|
+
deleteDoc?: string;
|
|
31
|
+
backfill?: string;
|
|
32
|
+
updateDoc?: string;
|
|
33
|
+
/** Cursor-based pagination endpoint (frappe_live.api.get_list_with_cursor) */
|
|
34
|
+
getListWithCursor?: string;
|
|
35
|
+
/** Batch mutations endpoint (frappe_live.api.batch_mutations) */
|
|
36
|
+
batchMutations?: string;
|
|
37
|
+
/** CDC list_since endpoint (frappe_live.api.list_since) */
|
|
38
|
+
listSince?: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Configuration for frappe_live extension endpoints
|
|
42
|
+
*/
|
|
43
|
+
export interface FrappeLiveConfig {
|
|
44
|
+
/** Custom Frappe app name for extension endpoints (default: 'frappe_live') */
|
|
45
|
+
appName?: string;
|
|
46
|
+
/** Custom endpoints to override default frappe_live endpoints */
|
|
47
|
+
customEndpoints?: CustomEndpoints;
|
|
48
|
+
}
|
|
49
|
+
export declare enum HttpMethod {
|
|
50
|
+
Delete = "DELETE",
|
|
51
|
+
Get = "GET",
|
|
52
|
+
Head = "HEAD",
|
|
53
|
+
Post = "POST",
|
|
54
|
+
Put = "PUT"
|
|
55
|
+
}
|
|
56
|
+
export declare class FrappeError extends Error {
|
|
57
|
+
readonly status: number;
|
|
58
|
+
readonly data?: unknown;
|
|
59
|
+
constructor(message: string, status: number, data?: unknown);
|
|
60
|
+
}
|
|
61
|
+
export interface ListOptions {
|
|
62
|
+
asDict?: boolean;
|
|
63
|
+
cursor?: string;
|
|
64
|
+
fields?: readonly string[];
|
|
65
|
+
filters?: Array<[string, string, unknown]> | Record<string, unknown>;
|
|
66
|
+
groupBy?: string;
|
|
67
|
+
limit?: number;
|
|
68
|
+
limitStart?: number;
|
|
69
|
+
orFilters?: Array<[string, string, unknown]>;
|
|
70
|
+
orderBy?: OrderBy;
|
|
71
|
+
/** Cancels the underlying HTTP request when aborted (never serialized). */
|
|
72
|
+
signal?: AbortSignal;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,oBAAY,QAAQ;IAClB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,CAAC,EAAE,OAAO,CAAC;gBACnB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAO5D;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB"}
|