@legendapp/state 3.0.0-alpha.0 → 3.0.0-alpha.2
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/.DS_Store +0 -0
- package/CHANGELOG.md +1 -827
- package/LICENSE +1 -21
- package/README.md +1 -141
- package/as/arrayAsRecord.d.mts +5 -0
- package/as/arrayAsRecord.d.ts +5 -0
- package/as/arrayAsRecord.js +28 -0
- package/as/arrayAsRecord.mjs +26 -0
- package/as/arrayAsSet.d.mts +5 -0
- package/as/arrayAsSet.d.ts +5 -0
- package/as/arrayAsSet.js +13 -0
- package/as/arrayAsSet.mjs +11 -0
- package/as/arrayAsString.d.mts +5 -0
- package/as/arrayAsString.d.ts +5 -0
- package/as/arrayAsString.js +13 -0
- package/as/arrayAsString.mjs +11 -0
- package/as/numberAsString.d.mts +5 -0
- package/as/numberAsString.d.ts +5 -0
- package/as/numberAsString.js +13 -0
- package/as/numberAsString.mjs +11 -0
- package/as/recordAsArray.d.mts +5 -0
- package/as/recordAsArray.d.ts +5 -0
- package/as/recordAsArray.js +25 -0
- package/as/recordAsArray.mjs +23 -0
- package/as/recordAsString.d.mts +5 -0
- package/as/recordAsString.d.ts +5 -0
- package/as/recordAsString.js +13 -0
- package/as/recordAsString.mjs +11 -0
- package/as/setAsArray.d.mts +5 -0
- package/as/setAsArray.d.ts +5 -0
- package/as/setAsArray.js +13 -0
- package/as/setAsArray.mjs +11 -0
- package/as/setAsString.d.mts +5 -0
- package/as/setAsString.d.ts +5 -0
- package/as/setAsString.js +13 -0
- package/as/setAsString.mjs +11 -0
- package/as/stringAsArray.d.mts +5 -0
- package/as/stringAsArray.d.ts +5 -0
- package/as/stringAsArray.js +13 -0
- package/as/stringAsArray.mjs +11 -0
- package/as/stringAsNumber.d.mts +5 -0
- package/as/stringAsNumber.d.ts +5 -0
- package/as/stringAsNumber.js +16 -0
- package/as/stringAsNumber.mjs +14 -0
- package/as/stringAsRecord.d.mts +5 -0
- package/as/stringAsRecord.d.ts +5 -0
- package/as/stringAsRecord.js +15 -0
- package/as/stringAsRecord.mjs +13 -0
- package/as/stringAsSet.d.mts +5 -0
- package/as/stringAsSet.d.ts +5 -0
- package/as/stringAsSet.js +13 -0
- package/as/stringAsSet.mjs +11 -0
- package/babel.d.mts +21 -0
- package/babel.d.ts +21 -2
- package/babel.js +57 -53
- package/babel.mjs +65 -0
- package/config/enable$GetSet.js +13 -14
- package/config/enable$GetSet.mjs +13 -14
- package/config/enableReactComponents.d.mts +9 -0
- package/config/enableReactComponents.d.ts +4 -2
- package/config/enableReactComponents.js +13 -10
- package/config/enableReactComponents.mjs +13 -10
- package/config/enableReactNativeComponents.d.mts +22 -0
- package/config/enableReactNativeComponents.d.ts +6 -4
- package/config/enableReactNativeComponents.js +43 -47
- package/config/enableReactNativeComponents.mjs +43 -47
- package/config/enableReactTracking.d.mts +7 -0
- package/config/enableReactTracking.d.ts +3 -2
- package/config/enableReactTracking.js +33 -38
- package/config/enableReactTracking.mjs +33 -38
- package/config/enableReactUse.d.mts +10 -0
- package/config/enableReactUse.d.ts +4 -1
- package/config/enableReactUse.js +15 -14
- package/config/enableReactUse.mjs +15 -14
- package/config/{enable$GetSet.d.ts → enable_GetSet.d.mts} +4 -2
- package/config/enable_GetSet.d.ts +10 -0
- package/config/enable_PeekAssign.d.mts +10 -0
- package/config/enable_PeekAssign.d.ts +4 -2
- package/config/enable_PeekAssign.js +13 -14
- package/config/enable_PeekAssign.mjs +13 -14
- package/helpers/pageHash.d.mts +9 -0
- package/helpers/pageHash.d.ts +2 -0
- package/helpers/pageHash.js +25 -30
- package/helpers/pageHash.mjs +25 -30
- package/helpers/pageHashParams.d.mts +9 -0
- package/helpers/pageHashParams.d.ts +2 -0
- package/helpers/pageHashParams.js +34 -37
- package/helpers/pageHashParams.mjs +34 -37
- package/helpers/time.d.mts +6 -0
- package/helpers/time.d.ts +6 -3
- package/helpers/time.js +17 -17
- package/helpers/time.mjs +17 -17
- package/helpers/trackHistory.d.mts +6 -0
- package/helpers/trackHistory.d.ts +6 -0
- package/helpers/trackHistory.js +21 -0
- package/helpers/trackHistory.mjs +19 -0
- package/helpers/undoRedo.d.mts +37 -0
- package/helpers/undoRedo.d.ts +37 -0
- package/helpers/undoRedo.js +68 -0
- package/helpers/undoRedo.mjs +66 -0
- package/index.d.mts +404 -0
- package/index.d.ts +371 -28
- package/index.js +2003 -2164
- package/index.mjs +2003 -2164
- package/package.json +254 -185
- package/persist-plugins/async-storage.d.mts +18 -0
- package/persist-plugins/async-storage.d.ts +6 -3
- package/persist-plugins/async-storage.js +79 -86
- package/persist-plugins/async-storage.mjs +79 -86
- package/persist-plugins/indexeddb.d.mts +29 -0
- package/persist-plugins/indexeddb.d.ts +6 -3
- package/persist-plugins/indexeddb.js +331 -348
- package/persist-plugins/indexeddb.mjs +331 -348
- package/persist-plugins/local-storage.d.mts +23 -0
- package/persist-plugins/local-storage.d.ts +8 -5
- package/persist-plugins/local-storage.js +74 -76
- package/persist-plugins/local-storage.mjs +74 -76
- package/persist-plugins/mmkv.d.mts +18 -0
- package/persist-plugins/mmkv.d.ts +6 -3
- package/persist-plugins/mmkv.js +82 -86
- package/persist-plugins/mmkv.mjs +82 -86
- package/react-hooks/createObservableHook.d.mts +5 -0
- package/react-hooks/createObservableHook.d.ts +4 -1
- package/react-hooks/createObservableHook.js +29 -30
- package/react-hooks/createObservableHook.mjs +25 -30
- package/react-hooks/useHover.d.mts +5 -0
- package/react-hooks/useHover.d.ts +5 -3
- package/react-hooks/useHover.js +29 -29
- package/react-hooks/useHover.mjs +29 -29
- package/react-hooks/useMeasure.d.mts +9 -0
- package/react-hooks/useMeasure.d.ts +5 -2
- package/react-hooks/useMeasure.js +30 -32
- package/react-hooks/useMeasure.mjs +30 -32
- package/react-hooks/useObservableNextRouter.d.mts +35 -0
- package/react-hooks/useObservableNextRouter.d.ts +9 -7
- package/react-hooks/useObservableNextRouter.js +64 -77
- package/react-hooks/useObservableNextRouter.mjs +60 -77
- package/react.d.mts +157 -0
- package/react.d.ts +157 -21
- package/react.js +458 -749
- package/react.mjs +457 -752
- package/sync-plugins/crud.d.mts +54 -0
- package/sync-plugins/crud.d.ts +12 -10
- package/sync-plugins/crud.js +253 -270
- package/sync-plugins/crud.mjs +253 -270
- package/sync-plugins/fetch.d.mts +21 -0
- package/sync-plugins/fetch.d.ts +7 -4
- package/sync-plugins/fetch.js +50 -37
- package/sync-plugins/fetch.mjs +50 -37
- package/sync-plugins/keel.d.mts +108 -0
- package/sync-plugins/keel.d.ts +17 -15
- package/sync-plugins/keel.js +229 -462
- package/sync-plugins/keel.mjs +227 -464
- package/sync-plugins/supabase.d.mts +39 -0
- package/sync-plugins/supabase.d.ts +16 -14
- package/sync-plugins/supabase.js +128 -128
- package/sync-plugins/supabase.mjs +128 -128
- package/sync-plugins/tanstack-query.d.mts +14 -0
- package/sync-plugins/tanstack-query.d.ts +7 -4
- package/sync-plugins/tanstack-query.js +51 -57
- package/sync-plugins/tanstack-query.mjs +51 -57
- package/sync-plugins/tanstack-react-query.d.mts +8 -0
- package/sync-plugins/tanstack-react-query.d.ts +6 -1
- package/sync-plugins/tanstack-react-query.js +2 -2
- package/sync-plugins/tanstack-react-query.mjs +2 -2
- package/sync.d.mts +351 -0
- package/sync.d.ts +349 -9
- package/sync.js +909 -962
- package/sync.mjs +919 -972
- package/trace.d.mts +9 -0
- package/trace.d.ts +9 -4
- package/trace.js +72 -62
- package/trace.mjs +72 -62
- package/types/babel.d.ts +1 -12
- package/babel.js.map +0 -1
- package/config/enable$GetSet.js.map +0 -1
- package/config/enable$GetSet.mjs.map +0 -1
- package/config/enableReactComponents.js.map +0 -1
- package/config/enableReactComponents.mjs.map +0 -1
- package/config/enableReactNativeComponents.js.map +0 -1
- package/config/enableReactNativeComponents.mjs.map +0 -1
- package/config/enableReactTracking.js.map +0 -1
- package/config/enableReactTracking.mjs.map +0 -1
- package/config/enableReactUse.js.map +0 -1
- package/config/enableReactUse.mjs.map +0 -1
- package/config/enable_PeekAssign.js.map +0 -1
- package/config/enable_PeekAssign.mjs.map +0 -1
- package/helpers/pageHash.js.map +0 -1
- package/helpers/pageHash.mjs.map +0 -1
- package/helpers/pageHashParams.js.map +0 -1
- package/helpers/pageHashParams.mjs.map +0 -1
- package/helpers/time.js.map +0 -1
- package/helpers/time.mjs.map +0 -1
- package/history.d.ts +0 -1
- package/history.js +0 -24
- package/history.js.map +0 -1
- package/history.mjs +0 -22
- package/history.mjs.map +0 -1
- package/index.js.map +0 -1
- package/index.mjs.map +0 -1
- package/persist-plugins/async-storage.js.map +0 -1
- package/persist-plugins/async-storage.mjs.map +0 -1
- package/persist-plugins/indexeddb.js.map +0 -1
- package/persist-plugins/indexeddb.mjs.map +0 -1
- package/persist-plugins/local-storage.js.map +0 -1
- package/persist-plugins/local-storage.mjs.map +0 -1
- package/persist-plugins/mmkv.js.map +0 -1
- package/persist-plugins/mmkv.mjs.map +0 -1
- package/react-hooks/createObservableHook.js.map +0 -1
- package/react-hooks/createObservableHook.mjs.map +0 -1
- package/react-hooks/useHover.js.map +0 -1
- package/react-hooks/useHover.mjs.map +0 -1
- package/react-hooks/useMeasure.js.map +0 -1
- package/react-hooks/useMeasure.mjs.map +0 -1
- package/react-hooks/useObservableNextRouter.js.map +0 -1
- package/react-hooks/useObservableNextRouter.mjs.map +0 -1
- package/react.js.map +0 -1
- package/react.mjs.map +0 -1
- package/src/ObservableObject.ts +0 -1350
- package/src/ObservablePrimitive.ts +0 -62
- package/src/babel/index.ts +0 -83
- package/src/batching.ts +0 -357
- package/src/computed.ts +0 -18
- package/src/config/enable$GetSet.ts +0 -30
- package/src/config/enableReactComponents.ts +0 -26
- package/src/config/enableReactNativeComponents.ts +0 -102
- package/src/config/enableReactTracking.ts +0 -62
- package/src/config/enableReactUse.ts +0 -32
- package/src/config/enable_PeekAssign.ts +0 -31
- package/src/config.ts +0 -47
- package/src/createObservable.ts +0 -47
- package/src/event.ts +0 -26
- package/src/globals.ts +0 -235
- package/src/helpers/pageHash.ts +0 -41
- package/src/helpers/pageHashParams.ts +0 -55
- package/src/helpers/time.ts +0 -30
- package/src/helpers.ts +0 -231
- package/src/history/trackHistory.ts +0 -29
- package/src/history/undoRedo.ts +0 -111
- package/src/is.ts +0 -63
- package/src/linked.ts +0 -17
- package/src/observable.ts +0 -32
- package/src/observableInterfaces.ts +0 -151
- package/src/observableTypes.ts +0 -232
- package/src/observe.ts +0 -89
- package/src/old-plugins/firebase.ts +0 -1053
- package/src/onChange.ts +0 -146
- package/src/persist/configureObservablePersistence.ts +0 -7
- package/src/persist/fieldTransformer.ts +0 -149
- package/src/persist/observablePersistRemoteFunctionsAdapter.ts +0 -39
- package/src/persist/persistObservable.ts +0 -1034
- package/src/persist-plugins/async-storage.ts +0 -99
- package/src/persist-plugins/indexeddb.ts +0 -432
- package/src/persist-plugins/local-storage.ts +0 -86
- package/src/persist-plugins/mmkv.ts +0 -91
- package/src/proxy.ts +0 -28
- package/src/react/Computed.tsx +0 -8
- package/src/react/For.tsx +0 -116
- package/src/react/Memo.tsx +0 -4
- package/src/react/Reactive.tsx +0 -53
- package/src/react/Show.tsx +0 -33
- package/src/react/Switch.tsx +0 -43
- package/src/react/react-globals.ts +0 -3
- package/src/react/reactInterfaces.ts +0 -32
- package/src/react/reactive-observer.tsx +0 -210
- package/src/react/useComputed.ts +0 -36
- package/src/react/useEffectOnce.ts +0 -41
- package/src/react/useIsMounted.ts +0 -16
- package/src/react/useMount.ts +0 -15
- package/src/react/useObservable.ts +0 -24
- package/src/react/useObservableReducer.ts +0 -52
- package/src/react/useObservableState.ts +0 -30
- package/src/react/useObserve.ts +0 -54
- package/src/react/useObserveEffect.ts +0 -40
- package/src/react/usePauseProvider.tsx +0 -16
- package/src/react/useSelector.ts +0 -167
- package/src/react/useUnmount.ts +0 -8
- package/src/react/useWhen.ts +0 -9
- package/src/react-hooks/createObservableHook.ts +0 -53
- package/src/react-hooks/useHover.ts +0 -40
- package/src/react-hooks/useMeasure.ts +0 -48
- package/src/react-hooks/useObservableNextRouter.ts +0 -137
- package/src/retry.ts +0 -71
- package/src/setupTracking.ts +0 -26
- package/src/sync/activateSyncedNode.ts +0 -128
- package/src/sync/configureObservableSync.ts +0 -7
- package/src/sync/persistTypes.ts +0 -216
- package/src/sync/syncHelpers.ts +0 -180
- package/src/sync/syncObservable.ts +0 -1056
- package/src/sync/syncObservableAdapter.ts +0 -31
- package/src/sync/syncTypes.ts +0 -189
- package/src/sync/synced.ts +0 -21
- package/src/sync-plugins/crud.ts +0 -412
- package/src/sync-plugins/fetch.ts +0 -80
- package/src/sync-plugins/keel.ts +0 -495
- package/src/sync-plugins/supabase.ts +0 -249
- package/src/sync-plugins/tanstack-query.ts +0 -113
- package/src/sync-plugins/tanstack-react-query.ts +0 -12
- package/src/trace/traceHelpers.ts +0 -11
- package/src/trace/useTraceListeners.ts +0 -34
- package/src/trace/useTraceUpdates.ts +0 -24
- package/src/trace/useVerifyNotTracking.ts +0 -33
- package/src/trace/useVerifyOneRender.ts +0 -10
- package/src/trackSelector.ts +0 -52
- package/src/tracking.ts +0 -43
- package/src/types/babel.d.ts +0 -12
- package/src/when.ts +0 -75
- package/sync-plugins/crud.js.map +0 -1
- package/sync-plugins/crud.mjs.map +0 -1
- package/sync-plugins/fetch.js.map +0 -1
- package/sync-plugins/fetch.mjs.map +0 -1
- package/sync-plugins/keel.js.map +0 -1
- package/sync-plugins/keel.mjs.map +0 -1
- package/sync-plugins/supabase.js.map +0 -1
- package/sync-plugins/supabase.mjs.map +0 -1
- package/sync-plugins/tanstack-query.js.map +0 -1
- package/sync-plugins/tanstack-query.mjs.map +0 -1
- package/sync-plugins/tanstack-react-query.js.map +0 -1
- package/sync-plugins/tanstack-react-query.mjs.map +0 -1
- package/sync.js.map +0 -1
- package/sync.mjs.map +0 -1
- package/trace.js.map +0 -1
- package/trace.mjs.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Observable } from '@legendapp/state';
|
|
2
|
+
import { SyncedOptions, SyncedOptionsGlobal, SyncedGetParams } from '@legendapp/state/sync';
|
|
3
|
+
import { SyncedCrudPropsBase, CrudAsOption, SyncedCrudReturnType, SyncedCrudPropsMany } from '@legendapp/state/sync-plugins/crud';
|
|
4
|
+
import { PostgrestQueryBuilder, PostgrestFilterBuilder } from '@supabase/postgrest-js';
|
|
5
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
6
|
+
|
|
7
|
+
type SupabaseSchemaOf<Client extends SupabaseClient> = Client extends SupabaseClient<infer _, infer __, infer Schema> ? Schema : never;
|
|
8
|
+
type SupabaseTableOf<Client extends SupabaseClient> = SupabaseSchemaOf<Client>['Tables'];
|
|
9
|
+
type SupabaseCollectionOf<Client extends SupabaseClient> = keyof SupabaseTableOf<Client>;
|
|
10
|
+
type SupabaseRowOf<Client extends SupabaseClient, Collection extends SupabaseCollectionOf<Client>> = SupabaseTableOf<Client>[Collection]['Row'];
|
|
11
|
+
type SyncedSupabaseConfig<TRemote extends {
|
|
12
|
+
id: string | number;
|
|
13
|
+
}, TLocal> = Omit<SyncedCrudPropsBase<TRemote, TLocal>, 'create' | 'update' | 'delete'>;
|
|
14
|
+
interface SyncedSupabaseConfiguration extends Omit<SyncedSupabaseConfig<{
|
|
15
|
+
id: string | number;
|
|
16
|
+
}, {
|
|
17
|
+
id: string | number;
|
|
18
|
+
}>, 'persist' | keyof SyncedOptions> {
|
|
19
|
+
persist?: SyncedOptionsGlobal;
|
|
20
|
+
enabled?: Observable<boolean>;
|
|
21
|
+
as?: Exclude<CrudAsOption, 'value'>;
|
|
22
|
+
}
|
|
23
|
+
interface SyncedSupabaseProps<Client extends SupabaseClient, Collection extends SupabaseCollectionOf<Client>, TOption extends CrudAsOption = 'object', TRemote extends SupabaseRowOf<Client, Collection> = SupabaseRowOf<Client, Collection>, TLocal = TRemote> extends SyncedSupabaseConfig<TRemote, TLocal>, SyncedCrudPropsMany<TRemote, TRemote, TOption> {
|
|
24
|
+
supabase: Client;
|
|
25
|
+
collection: Collection;
|
|
26
|
+
select?: (query: PostgrestQueryBuilder<SupabaseSchemaOf<Client>, SupabaseTableOf<Client>[Collection], Collection>) => PostgrestFilterBuilder<SupabaseSchemaOf<Client>, TRemote, TRemote[], Collection, []>;
|
|
27
|
+
filter?: (select: PostgrestFilterBuilder<SupabaseSchemaOf<Client>, TRemote, TRemote[], Collection, []>, params: SyncedGetParams) => PostgrestFilterBuilder<SupabaseSchemaOf<Client>, TRemote, TRemote[], Collection, []>;
|
|
28
|
+
actions?: ('create' | 'read' | 'update' | 'delete')[];
|
|
29
|
+
realtime?: boolean | {
|
|
30
|
+
schema?: string;
|
|
31
|
+
filter?: string;
|
|
32
|
+
};
|
|
33
|
+
stringifyDates?: boolean;
|
|
34
|
+
}
|
|
35
|
+
declare function getSyncedSupabaseConfiguration(): SyncedSupabaseConfiguration;
|
|
36
|
+
declare function configureSyncedSupabase(config: SyncedSupabaseConfiguration): void;
|
|
37
|
+
declare function syncedSupabase<Client extends SupabaseClient, Collection extends SupabaseCollectionOf<Client> & string, AsOption extends CrudAsOption = 'object', TRemote extends SupabaseRowOf<Client, Collection> = SupabaseRowOf<Client, Collection>, TLocal = TRemote>(props: SyncedSupabaseProps<Client, Collection, AsOption, TRemote, TLocal>): SyncedCrudReturnType<TLocal, AsOption>;
|
|
38
|
+
|
|
39
|
+
export { type SupabaseCollectionOf, type SupabaseRowOf, type SupabaseSchemaOf, type SupabaseTableOf, type SyncedSupabaseConfig, type SyncedSupabaseConfiguration, configureSyncedSupabase, getSyncedSupabaseConfiguration, syncedSupabase };
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { Observable } from '@legendapp/state';
|
|
2
|
-
import { SyncedOptions, SyncedOptionsGlobal,
|
|
3
|
-
import { CrudAsOption,
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import { SyncedOptions, SyncedOptionsGlobal, SyncedGetParams } from '@legendapp/state/sync';
|
|
3
|
+
import { SyncedCrudPropsBase, CrudAsOption, SyncedCrudReturnType, SyncedCrudPropsMany } from '@legendapp/state/sync-plugins/crud';
|
|
4
|
+
import { PostgrestQueryBuilder, PostgrestFilterBuilder } from '@supabase/postgrest-js';
|
|
5
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
6
|
+
|
|
7
|
+
type SupabaseSchemaOf<Client extends SupabaseClient> = Client extends SupabaseClient<infer _, infer __, infer Schema> ? Schema : never;
|
|
8
|
+
type SupabaseTableOf<Client extends SupabaseClient> = SupabaseSchemaOf<Client>['Tables'];
|
|
9
|
+
type SupabaseCollectionOf<Client extends SupabaseClient> = keyof SupabaseTableOf<Client>;
|
|
10
|
+
type SupabaseRowOf<Client extends SupabaseClient, Collection extends SupabaseCollectionOf<Client>> = SupabaseTableOf<Client>[Collection]['Row'];
|
|
11
|
+
type SyncedSupabaseConfig<TRemote extends {
|
|
11
12
|
id: string | number;
|
|
12
13
|
}, TLocal> = Omit<SyncedCrudPropsBase<TRemote, TLocal>, 'create' | 'update' | 'delete'>;
|
|
13
|
-
|
|
14
|
+
interface SyncedSupabaseConfiguration extends Omit<SyncedSupabaseConfig<{
|
|
14
15
|
id: string | number;
|
|
15
16
|
}, {
|
|
16
17
|
id: string | number;
|
|
@@ -31,7 +32,8 @@ interface SyncedSupabaseProps<Client extends SupabaseClient, Collection extends
|
|
|
31
32
|
};
|
|
32
33
|
stringifyDates?: boolean;
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
declare function getSyncedSupabaseConfiguration(): SyncedSupabaseConfiguration;
|
|
36
|
+
declare function configureSyncedSupabase(config: SyncedSupabaseConfiguration): void;
|
|
37
|
+
declare function syncedSupabase<Client extends SupabaseClient, Collection extends SupabaseCollectionOf<Client> & string, AsOption extends CrudAsOption = 'object', TRemote extends SupabaseRowOf<Client, Collection> = SupabaseRowOf<Client, Collection>, TLocal = TRemote>(props: SyncedSupabaseProps<Client, Collection, AsOption, TRemote, TLocal>): SyncedCrudReturnType<TLocal, AsOption>;
|
|
38
|
+
|
|
39
|
+
export { type SupabaseCollectionOf, type SupabaseRowOf, type SupabaseSchemaOf, type SupabaseTableOf, type SyncedSupabaseConfig, type SyncedSupabaseConfiguration, configureSyncedSupabase, getSyncedSupabaseConfiguration, syncedSupabase };
|
package/sync-plugins/supabase.js
CHANGED
|
@@ -4,142 +4,142 @@ var state = require('@legendapp/state');
|
|
|
4
4
|
var sync = require('@legendapp/state/sync');
|
|
5
5
|
var crud = require('@legendapp/state/sync-plugins/crud');
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
// src/sync-plugins/supabase.ts
|
|
8
|
+
var channelNum = 1;
|
|
9
|
+
var supabaseConfig = {};
|
|
10
|
+
var isEnabled$ = state.observable(true);
|
|
10
11
|
function getSyncedSupabaseConfiguration() {
|
|
11
|
-
|
|
12
|
+
return supabaseConfig;
|
|
12
13
|
}
|
|
13
14
|
function configureSyncedSupabase(config) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const { enabled, ...rest } = config;
|
|
16
|
+
if (enabled !== void 0) {
|
|
17
|
+
isEnabled$.set(enabled);
|
|
18
|
+
}
|
|
19
|
+
Object.assign(supabaseConfig, sync.removeNullUndefined(rest));
|
|
19
20
|
}
|
|
20
21
|
function syncedSupabase(props) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const { data, error } = res;
|
|
51
|
-
if (data) {
|
|
52
|
-
const created = data[0];
|
|
53
|
-
return created;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
throw new Error(error === null || error === void 0 ? void 0 : error.message);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
const create = !actions || actions.includes('create') ? upsert : undefined;
|
|
60
|
-
const update = !actions || actions.includes('update') ? upsert : undefined;
|
|
61
|
-
const deleteFn = !fieldDeleted && (!actions || actions.includes('delete'))
|
|
62
|
-
? async (input) => {
|
|
63
|
-
const id = input.id;
|
|
64
|
-
const res = await client.from(collection).delete().eq('id', id).select();
|
|
65
|
-
const { data, error } = res;
|
|
66
|
-
if (data) {
|
|
67
|
-
const created = data[0];
|
|
68
|
-
return created;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
throw new Error(error === null || error === void 0 ? void 0 : error.message);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
: undefined;
|
|
75
|
-
const subscribe = realtime
|
|
76
|
-
? ({ node, value$, update }) => {
|
|
77
|
-
const { filter, schema } = (state.isObject(realtime) ? realtime : {});
|
|
78
|
-
const channel = client
|
|
79
|
-
.channel(`LS_${node.key || ''}${channelNum++}`)
|
|
80
|
-
.on('postgres_changes', {
|
|
81
|
-
event: '*',
|
|
82
|
-
table: collection,
|
|
83
|
-
schema: schema || 'public',
|
|
84
|
-
filter: filter || undefined,
|
|
85
|
-
}, (payload) => {
|
|
86
|
-
var _a;
|
|
87
|
-
const { eventType, new: value, old } = payload;
|
|
88
|
-
if (eventType === 'INSERT' || eventType === 'UPDATE') {
|
|
89
|
-
const cur = (_a = value$.peek()) === null || _a === void 0 ? void 0 : _a[value.id];
|
|
90
|
-
const curDateStr = cur &&
|
|
91
|
-
((fieldUpdatedAt && cur[fieldUpdatedAt]) ||
|
|
92
|
-
fieldCreatedAt ||
|
|
93
|
-
cur[fieldCreatedAt]);
|
|
94
|
-
const valueDateStr = (fieldUpdatedAt && value[fieldUpdatedAt]) ||
|
|
95
|
-
(fieldCreatedAt && value[fieldCreatedAt]);
|
|
96
|
-
const valueDate = +new Date(valueDateStr);
|
|
97
|
-
// Check if new or newer than last seen locally
|
|
98
|
-
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
99
|
-
// Update local with the new value
|
|
100
|
-
update({
|
|
101
|
-
value: { [value.id]: value },
|
|
102
|
-
lastSync: valueDate,
|
|
103
|
-
mode: 'merge',
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else if (eventType === 'DELETE') {
|
|
108
|
-
const { id } = old;
|
|
109
|
-
update({
|
|
110
|
-
value: { [id]: state.symbolDelete },
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
})
|
|
114
|
-
.subscribe();
|
|
115
|
-
return channel.unsubscribe;
|
|
116
|
-
}
|
|
117
|
-
: undefined;
|
|
118
|
-
let transform = transformParam;
|
|
119
|
-
if (stringifyDates) {
|
|
120
|
-
const stringifier = sync.transformStringifyDates();
|
|
121
|
-
transform = transform ? sync.combineTransforms(stringifier, transform) : stringifier;
|
|
22
|
+
props = { ...supabaseConfig, ...props };
|
|
23
|
+
const {
|
|
24
|
+
supabase: client,
|
|
25
|
+
collection,
|
|
26
|
+
select: selectFn,
|
|
27
|
+
filter,
|
|
28
|
+
actions,
|
|
29
|
+
fieldCreatedAt: fieldCreatedAtParam,
|
|
30
|
+
fieldUpdatedAt: fieldUpdatedAtParam,
|
|
31
|
+
fieldDeleted: fieldDeletedParam,
|
|
32
|
+
realtime,
|
|
33
|
+
changesSince,
|
|
34
|
+
transform: transformParam,
|
|
35
|
+
stringifyDates,
|
|
36
|
+
waitFor,
|
|
37
|
+
waitForSet,
|
|
38
|
+
generateId,
|
|
39
|
+
...rest
|
|
40
|
+
} = props;
|
|
41
|
+
const fieldCreatedAt = fieldCreatedAtParam || (changesSince === "last-sync" ? "created_at" : void 0);
|
|
42
|
+
const fieldUpdatedAt = fieldUpdatedAtParam || (changesSince === "last-sync" ? "updated_at" : void 0);
|
|
43
|
+
const fieldDeleted = fieldDeletedParam || (changesSince === "last-sync" ? "deleted" : void 0);
|
|
44
|
+
const list = !actions || actions.includes("read") ? async (params) => {
|
|
45
|
+
const { lastSync } = params;
|
|
46
|
+
const from = client.from(collection);
|
|
47
|
+
let select = selectFn ? selectFn(from) : from.select();
|
|
48
|
+
if (changesSince === "last-sync" && lastSync) {
|
|
49
|
+
const date = new Date(lastSync).toISOString();
|
|
50
|
+
select = select.gt(fieldUpdatedAt, date);
|
|
122
51
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
52
|
+
if (filter) {
|
|
53
|
+
select = filter(select, params);
|
|
54
|
+
}
|
|
55
|
+
const { data, error } = await select;
|
|
56
|
+
if (error) {
|
|
57
|
+
throw new Error(error == null ? void 0 : error.message);
|
|
58
|
+
}
|
|
59
|
+
return data || [];
|
|
60
|
+
} : void 0;
|
|
61
|
+
const upsert = async (input) => {
|
|
62
|
+
const res = await client.from(collection).upsert(input).select();
|
|
63
|
+
const { data, error } = res;
|
|
64
|
+
if (data) {
|
|
65
|
+
const created = data[0];
|
|
66
|
+
return created;
|
|
67
|
+
} else {
|
|
68
|
+
throw new Error(error == null ? void 0 : error.message);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const create = !actions || actions.includes("create") ? upsert : void 0;
|
|
72
|
+
const update = !actions || actions.includes("update") ? upsert : void 0;
|
|
73
|
+
const deleteFn = !fieldDeleted && (!actions || actions.includes("delete")) ? async (input) => {
|
|
74
|
+
const id = input.id;
|
|
75
|
+
const res = await client.from(collection).delete().eq("id", id).select();
|
|
76
|
+
const { data, error } = res;
|
|
77
|
+
if (data) {
|
|
78
|
+
const created = data[0];
|
|
79
|
+
return created;
|
|
80
|
+
} else {
|
|
81
|
+
throw new Error(error == null ? void 0 : error.message);
|
|
82
|
+
}
|
|
83
|
+
} : void 0;
|
|
84
|
+
const subscribe = realtime ? ({ node, value$, update: update2 }) => {
|
|
85
|
+
const { filter: filter2, schema } = state.isObject(realtime) ? realtime : {};
|
|
86
|
+
const channel = client.channel(`LS_${node.key || ""}${channelNum++}`).on(
|
|
87
|
+
"postgres_changes",
|
|
88
|
+
{
|
|
89
|
+
event: "*",
|
|
90
|
+
table: collection,
|
|
91
|
+
schema: schema || "public",
|
|
92
|
+
filter: filter2 || void 0
|
|
93
|
+
},
|
|
94
|
+
(payload) => {
|
|
95
|
+
var _a;
|
|
96
|
+
const { eventType, new: value, old } = payload;
|
|
97
|
+
if (eventType === "INSERT" || eventType === "UPDATE") {
|
|
98
|
+
const cur = (_a = value$.peek()) == null ? void 0 : _a[value.id];
|
|
99
|
+
const curDateStr = cur && (fieldUpdatedAt && cur[fieldUpdatedAt] || fieldCreatedAt || cur[fieldCreatedAt]);
|
|
100
|
+
const valueDateStr = fieldUpdatedAt && value[fieldUpdatedAt] || fieldCreatedAt && value[fieldCreatedAt];
|
|
101
|
+
const valueDate = +new Date(valueDateStr);
|
|
102
|
+
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
103
|
+
update2({
|
|
104
|
+
value: { [value.id]: value },
|
|
105
|
+
lastSync: valueDate,
|
|
106
|
+
mode: "merge"
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
} else if (eventType === "DELETE") {
|
|
110
|
+
const { id } = old;
|
|
111
|
+
update2({
|
|
112
|
+
value: { [id]: state.symbolDelete }
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
).subscribe();
|
|
117
|
+
return channel.unsubscribe;
|
|
118
|
+
} : void 0;
|
|
119
|
+
let transform = transformParam;
|
|
120
|
+
if (stringifyDates) {
|
|
121
|
+
const stringifier = sync.transformStringifyDates();
|
|
122
|
+
transform = transform ? sync.combineTransforms(stringifier, transform) : stringifier;
|
|
123
|
+
}
|
|
124
|
+
return crud.syncedCrud({
|
|
125
|
+
...rest,
|
|
126
|
+
list,
|
|
127
|
+
create,
|
|
128
|
+
update,
|
|
129
|
+
delete: deleteFn,
|
|
130
|
+
subscribe,
|
|
131
|
+
fieldCreatedAt,
|
|
132
|
+
fieldUpdatedAt,
|
|
133
|
+
fieldDeleted,
|
|
134
|
+
updatePartial: false,
|
|
135
|
+
onSavedUpdate: "createdUpdatedAt",
|
|
136
|
+
transform,
|
|
137
|
+
generateId,
|
|
138
|
+
waitFor: () => isEnabled$.get() && (waitFor ? state.computeSelector(waitFor) : true),
|
|
139
|
+
waitForSet
|
|
140
|
+
});
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
exports.configureSyncedSupabase = configureSyncedSupabase;
|
|
143
144
|
exports.getSyncedSupabaseConfiguration = getSyncedSupabaseConfiguration;
|
|
144
145
|
exports.syncedSupabase = syncedSupabase;
|
|
145
|
-
//# sourceMappingURL=supabase.js.map
|
|
@@ -2,140 +2,140 @@ import { observable, computeSelector, isObject, symbolDelete } from '@legendapp/
|
|
|
2
2
|
import { removeNullUndefined, transformStringifyDates, combineTransforms } from '@legendapp/state/sync';
|
|
3
3
|
import { syncedCrud } from '@legendapp/state/sync-plugins/crud';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
// src/sync-plugins/supabase.ts
|
|
6
|
+
var channelNum = 1;
|
|
7
|
+
var supabaseConfig = {};
|
|
8
|
+
var isEnabled$ = observable(true);
|
|
8
9
|
function getSyncedSupabaseConfiguration() {
|
|
9
|
-
|
|
10
|
+
return supabaseConfig;
|
|
10
11
|
}
|
|
11
12
|
function configureSyncedSupabase(config) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
const { enabled, ...rest } = config;
|
|
14
|
+
if (enabled !== void 0) {
|
|
15
|
+
isEnabled$.set(enabled);
|
|
16
|
+
}
|
|
17
|
+
Object.assign(supabaseConfig, removeNullUndefined(rest));
|
|
17
18
|
}
|
|
18
19
|
function syncedSupabase(props) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const { data, error } = res;
|
|
49
|
-
if (data) {
|
|
50
|
-
const created = data[0];
|
|
51
|
-
return created;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
throw new Error(error === null || error === void 0 ? void 0 : error.message);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
const create = !actions || actions.includes('create') ? upsert : undefined;
|
|
58
|
-
const update = !actions || actions.includes('update') ? upsert : undefined;
|
|
59
|
-
const deleteFn = !fieldDeleted && (!actions || actions.includes('delete'))
|
|
60
|
-
? async (input) => {
|
|
61
|
-
const id = input.id;
|
|
62
|
-
const res = await client.from(collection).delete().eq('id', id).select();
|
|
63
|
-
const { data, error } = res;
|
|
64
|
-
if (data) {
|
|
65
|
-
const created = data[0];
|
|
66
|
-
return created;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
throw new Error(error === null || error === void 0 ? void 0 : error.message);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
: undefined;
|
|
73
|
-
const subscribe = realtime
|
|
74
|
-
? ({ node, value$, update }) => {
|
|
75
|
-
const { filter, schema } = (isObject(realtime) ? realtime : {});
|
|
76
|
-
const channel = client
|
|
77
|
-
.channel(`LS_${node.key || ''}${channelNum++}`)
|
|
78
|
-
.on('postgres_changes', {
|
|
79
|
-
event: '*',
|
|
80
|
-
table: collection,
|
|
81
|
-
schema: schema || 'public',
|
|
82
|
-
filter: filter || undefined,
|
|
83
|
-
}, (payload) => {
|
|
84
|
-
var _a;
|
|
85
|
-
const { eventType, new: value, old } = payload;
|
|
86
|
-
if (eventType === 'INSERT' || eventType === 'UPDATE') {
|
|
87
|
-
const cur = (_a = value$.peek()) === null || _a === void 0 ? void 0 : _a[value.id];
|
|
88
|
-
const curDateStr = cur &&
|
|
89
|
-
((fieldUpdatedAt && cur[fieldUpdatedAt]) ||
|
|
90
|
-
fieldCreatedAt ||
|
|
91
|
-
cur[fieldCreatedAt]);
|
|
92
|
-
const valueDateStr = (fieldUpdatedAt && value[fieldUpdatedAt]) ||
|
|
93
|
-
(fieldCreatedAt && value[fieldCreatedAt]);
|
|
94
|
-
const valueDate = +new Date(valueDateStr);
|
|
95
|
-
// Check if new or newer than last seen locally
|
|
96
|
-
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
97
|
-
// Update local with the new value
|
|
98
|
-
update({
|
|
99
|
-
value: { [value.id]: value },
|
|
100
|
-
lastSync: valueDate,
|
|
101
|
-
mode: 'merge',
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else if (eventType === 'DELETE') {
|
|
106
|
-
const { id } = old;
|
|
107
|
-
update({
|
|
108
|
-
value: { [id]: symbolDelete },
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
})
|
|
112
|
-
.subscribe();
|
|
113
|
-
return channel.unsubscribe;
|
|
114
|
-
}
|
|
115
|
-
: undefined;
|
|
116
|
-
let transform = transformParam;
|
|
117
|
-
if (stringifyDates) {
|
|
118
|
-
const stringifier = transformStringifyDates();
|
|
119
|
-
transform = transform ? combineTransforms(stringifier, transform) : stringifier;
|
|
20
|
+
props = { ...supabaseConfig, ...props };
|
|
21
|
+
const {
|
|
22
|
+
supabase: client,
|
|
23
|
+
collection,
|
|
24
|
+
select: selectFn,
|
|
25
|
+
filter,
|
|
26
|
+
actions,
|
|
27
|
+
fieldCreatedAt: fieldCreatedAtParam,
|
|
28
|
+
fieldUpdatedAt: fieldUpdatedAtParam,
|
|
29
|
+
fieldDeleted: fieldDeletedParam,
|
|
30
|
+
realtime,
|
|
31
|
+
changesSince,
|
|
32
|
+
transform: transformParam,
|
|
33
|
+
stringifyDates,
|
|
34
|
+
waitFor,
|
|
35
|
+
waitForSet,
|
|
36
|
+
generateId,
|
|
37
|
+
...rest
|
|
38
|
+
} = props;
|
|
39
|
+
const fieldCreatedAt = fieldCreatedAtParam || (changesSince === "last-sync" ? "created_at" : void 0);
|
|
40
|
+
const fieldUpdatedAt = fieldUpdatedAtParam || (changesSince === "last-sync" ? "updated_at" : void 0);
|
|
41
|
+
const fieldDeleted = fieldDeletedParam || (changesSince === "last-sync" ? "deleted" : void 0);
|
|
42
|
+
const list = !actions || actions.includes("read") ? async (params) => {
|
|
43
|
+
const { lastSync } = params;
|
|
44
|
+
const from = client.from(collection);
|
|
45
|
+
let select = selectFn ? selectFn(from) : from.select();
|
|
46
|
+
if (changesSince === "last-sync" && lastSync) {
|
|
47
|
+
const date = new Date(lastSync).toISOString();
|
|
48
|
+
select = select.gt(fieldUpdatedAt, date);
|
|
120
49
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
50
|
+
if (filter) {
|
|
51
|
+
select = filter(select, params);
|
|
52
|
+
}
|
|
53
|
+
const { data, error } = await select;
|
|
54
|
+
if (error) {
|
|
55
|
+
throw new Error(error == null ? void 0 : error.message);
|
|
56
|
+
}
|
|
57
|
+
return data || [];
|
|
58
|
+
} : void 0;
|
|
59
|
+
const upsert = async (input) => {
|
|
60
|
+
const res = await client.from(collection).upsert(input).select();
|
|
61
|
+
const { data, error } = res;
|
|
62
|
+
if (data) {
|
|
63
|
+
const created = data[0];
|
|
64
|
+
return created;
|
|
65
|
+
} else {
|
|
66
|
+
throw new Error(error == null ? void 0 : error.message);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const create = !actions || actions.includes("create") ? upsert : void 0;
|
|
70
|
+
const update = !actions || actions.includes("update") ? upsert : void 0;
|
|
71
|
+
const deleteFn = !fieldDeleted && (!actions || actions.includes("delete")) ? async (input) => {
|
|
72
|
+
const id = input.id;
|
|
73
|
+
const res = await client.from(collection).delete().eq("id", id).select();
|
|
74
|
+
const { data, error } = res;
|
|
75
|
+
if (data) {
|
|
76
|
+
const created = data[0];
|
|
77
|
+
return created;
|
|
78
|
+
} else {
|
|
79
|
+
throw new Error(error == null ? void 0 : error.message);
|
|
80
|
+
}
|
|
81
|
+
} : void 0;
|
|
82
|
+
const subscribe = realtime ? ({ node, value$, update: update2 }) => {
|
|
83
|
+
const { filter: filter2, schema } = isObject(realtime) ? realtime : {};
|
|
84
|
+
const channel = client.channel(`LS_${node.key || ""}${channelNum++}`).on(
|
|
85
|
+
"postgres_changes",
|
|
86
|
+
{
|
|
87
|
+
event: "*",
|
|
88
|
+
table: collection,
|
|
89
|
+
schema: schema || "public",
|
|
90
|
+
filter: filter2 || void 0
|
|
91
|
+
},
|
|
92
|
+
(payload) => {
|
|
93
|
+
var _a;
|
|
94
|
+
const { eventType, new: value, old } = payload;
|
|
95
|
+
if (eventType === "INSERT" || eventType === "UPDATE") {
|
|
96
|
+
const cur = (_a = value$.peek()) == null ? void 0 : _a[value.id];
|
|
97
|
+
const curDateStr = cur && (fieldUpdatedAt && cur[fieldUpdatedAt] || fieldCreatedAt || cur[fieldCreatedAt]);
|
|
98
|
+
const valueDateStr = fieldUpdatedAt && value[fieldUpdatedAt] || fieldCreatedAt && value[fieldCreatedAt];
|
|
99
|
+
const valueDate = +new Date(valueDateStr);
|
|
100
|
+
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
101
|
+
update2({
|
|
102
|
+
value: { [value.id]: value },
|
|
103
|
+
lastSync: valueDate,
|
|
104
|
+
mode: "merge"
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
} else if (eventType === "DELETE") {
|
|
108
|
+
const { id } = old;
|
|
109
|
+
update2({
|
|
110
|
+
value: { [id]: symbolDelete }
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
).subscribe();
|
|
115
|
+
return channel.unsubscribe;
|
|
116
|
+
} : void 0;
|
|
117
|
+
let transform = transformParam;
|
|
118
|
+
if (stringifyDates) {
|
|
119
|
+
const stringifier = transformStringifyDates();
|
|
120
|
+
transform = transform ? combineTransforms(stringifier, transform) : stringifier;
|
|
121
|
+
}
|
|
122
|
+
return syncedCrud({
|
|
123
|
+
...rest,
|
|
124
|
+
list,
|
|
125
|
+
create,
|
|
126
|
+
update,
|
|
127
|
+
delete: deleteFn,
|
|
128
|
+
subscribe,
|
|
129
|
+
fieldCreatedAt,
|
|
130
|
+
fieldUpdatedAt,
|
|
131
|
+
fieldDeleted,
|
|
132
|
+
updatePartial: false,
|
|
133
|
+
onSavedUpdate: "createdUpdatedAt",
|
|
134
|
+
transform,
|
|
135
|
+
generateId,
|
|
136
|
+
waitFor: () => isEnabled$.get() && (waitFor ? computeSelector(waitFor) : true),
|
|
137
|
+
waitForSet
|
|
138
|
+
});
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
export { configureSyncedSupabase, getSyncedSupabaseConfiguration, syncedSupabase };
|
|
141
|
-
//# sourceMappingURL=supabase.mjs.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SyncedOptions } from '@legendapp/state/sync';
|
|
2
|
+
import { QueryKey, QueryObserverOptions, QueryClient, MutationObserverOptions, DefaultError } from '@tanstack/query-core';
|
|
3
|
+
|
|
4
|
+
interface ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey'> {
|
|
5
|
+
queryKey?: TQueryKey | (() => TQueryKey);
|
|
6
|
+
}
|
|
7
|
+
interface SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends SyncedOptions<TData> {
|
|
8
|
+
queryClient: QueryClient;
|
|
9
|
+
query: ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey>;
|
|
10
|
+
mutation?: MutationObserverOptions<TData, TError, void>;
|
|
11
|
+
}
|
|
12
|
+
declare function syncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): NonNullable<TData>;
|
|
13
|
+
|
|
14
|
+
export { type ObservableQueryOptions, type SyncedQueryParams, syncedQuery };
|