@legendapp/state 3.0.0-alpha.3 → 3.0.0-alpha.31
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/CHANGELOG.md +831 -1
- package/LICENSE +21 -1
- package/README.md +141 -1
- package/babel.js +0 -2
- package/babel.mjs +0 -2
- package/config/enable$GetSet.js +2 -1
- package/config/enable$GetSet.mjs +2 -1
- package/config/enableReactTracking.js +2 -1
- package/config/enableReactTracking.mjs +2 -1
- package/config/enableReactUse.js +2 -1
- package/config/enableReactUse.mjs +2 -1
- package/config/enable_PeekAssign.js +2 -1
- package/config/enable_PeekAssign.mjs +2 -1
- package/config.d.mts +13 -0
- package/config.d.ts +13 -0
- package/config.js +2066 -0
- package/config.mjs +2064 -0
- package/helpers/trackHistory.js +2 -2
- package/helpers/trackHistory.mjs +2 -2
- package/index.d.mts +25 -302
- package/index.d.ts +25 -302
- package/index.js +293 -322
- package/index.mjs +294 -321
- package/observableInterfaces-CZR3_8mM.d.mts +283 -0
- package/observableInterfaces-CZR3_8mM.d.ts +283 -0
- package/package.json +11 -1
- package/persist-plugins/async-storage.d.mts +6 -3
- package/persist-plugins/async-storage.d.ts +6 -3
- package/persist-plugins/async-storage.js +12 -4
- package/persist-plugins/async-storage.mjs +12 -5
- package/persist-plugins/indexeddb.d.mts +6 -4
- package/persist-plugins/indexeddb.d.ts +6 -4
- package/persist-plugins/indexeddb.js +16 -6
- package/persist-plugins/indexeddb.mjs +16 -7
- package/persist-plugins/mmkv.d.mts +5 -1
- package/persist-plugins/mmkv.d.ts +5 -1
- package/persist-plugins/mmkv.js +14 -5
- package/persist-plugins/mmkv.mjs +14 -6
- package/react.d.mts +18 -14
- package/react.d.ts +18 -14
- package/react.js +57 -32
- package/react.mjs +58 -33
- package/sync-plugins/crud.d.mts +21 -24
- package/sync-plugins/crud.d.ts +21 -24
- package/sync-plugins/crud.js +240 -139
- package/sync-plugins/crud.mjs +242 -141
- package/sync-plugins/fetch.js +12 -8
- package/sync-plugins/fetch.mjs +13 -9
- package/sync-plugins/firebase.d.mts +27 -0
- package/sync-plugins/firebase.d.ts +27 -0
- package/sync-plugins/firebase.js +373 -0
- package/sync-plugins/firebase.mjs +368 -0
- package/sync-plugins/keel.d.mts +27 -10
- package/sync-plugins/keel.d.ts +27 -10
- package/sync-plugins/keel.js +51 -32
- package/sync-plugins/keel.mjs +52 -33
- package/sync-plugins/supabase.d.mts +12 -7
- package/sync-plugins/supabase.d.ts +12 -7
- package/sync-plugins/supabase.js +24 -13
- package/sync-plugins/supabase.mjs +25 -14
- package/sync-plugins/tanstack-query.d.mts +2 -2
- package/sync-plugins/tanstack-query.d.ts +2 -2
- package/sync-plugins/tanstack-query.js +3 -2
- package/sync-plugins/tanstack-query.mjs +3 -2
- package/sync-plugins/tanstack-react-query.d.mts +1 -1
- package/sync-plugins/tanstack-react-query.d.ts +1 -1
- package/sync.d.mts +71 -197
- package/sync.d.ts +71 -197
- package/sync.js +465 -284
- package/sync.mjs +471 -290
- package/types/babel.d.ts +12 -1
- package/.DS_Store +0 -0
- /package/config/{enable_GetSet.d.mts → enable$GetSet.d.mts} +0 -0
- /package/config/{enable_GetSet.d.ts → enable$GetSet.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { observable, computeSelector, isObject, symbolDelete } from '@legendapp/state';
|
|
1
|
+
import { observable, computeSelector, isFunction, isObject, symbolDelete } from '@legendapp/state';
|
|
2
2
|
import { removeNullUndefined, transformStringifyDates, combineTransforms } from '@legendapp/state/sync';
|
|
3
3
|
import { syncedCrud } from '@legendapp/state/sync-plugins/crud';
|
|
4
4
|
|
|
@@ -22,6 +22,7 @@ function syncedSupabase(props) {
|
|
|
22
22
|
supabase: client,
|
|
23
23
|
collection,
|
|
24
24
|
select: selectFn,
|
|
25
|
+
schema,
|
|
25
26
|
filter,
|
|
26
27
|
actions,
|
|
27
28
|
fieldCreatedAt: fieldCreatedAtParam,
|
|
@@ -34,6 +35,7 @@ function syncedSupabase(props) {
|
|
|
34
35
|
waitFor,
|
|
35
36
|
waitForSet,
|
|
36
37
|
generateId,
|
|
38
|
+
mode,
|
|
37
39
|
...rest
|
|
38
40
|
} = props;
|
|
39
41
|
const fieldCreatedAt = fieldCreatedAtParam || (changesSince === "last-sync" ? "created_at" : void 0);
|
|
@@ -41,7 +43,8 @@ function syncedSupabase(props) {
|
|
|
41
43
|
const fieldDeleted = fieldDeletedParam || (changesSince === "last-sync" ? "deleted" : void 0);
|
|
42
44
|
const list = !actions || actions.includes("read") ? async (params) => {
|
|
43
45
|
const { lastSync } = params;
|
|
44
|
-
const
|
|
46
|
+
const clientSchema = schema ? client.schema(schema) : client;
|
|
47
|
+
const from = clientSchema.from(collection);
|
|
45
48
|
let select = selectFn ? selectFn(from) : from.select();
|
|
46
49
|
if (changesSince === "last-sync" && lastSync) {
|
|
47
50
|
const date = new Date(lastSync).toISOString();
|
|
@@ -56,8 +59,8 @@ function syncedSupabase(props) {
|
|
|
56
59
|
}
|
|
57
60
|
return data || [];
|
|
58
61
|
} : void 0;
|
|
59
|
-
const
|
|
60
|
-
const res = await client.from(collection).
|
|
62
|
+
const create = !actions || actions.includes("create") ? async (input) => {
|
|
63
|
+
const res = await client.from(collection).insert(input).select();
|
|
61
64
|
const { data, error } = res;
|
|
62
65
|
if (data) {
|
|
63
66
|
const created = data[0];
|
|
@@ -65,9 +68,17 @@ function syncedSupabase(props) {
|
|
|
65
68
|
} else {
|
|
66
69
|
throw new Error(error == null ? void 0 : error.message);
|
|
67
70
|
}
|
|
68
|
-
};
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
+
} : void 0;
|
|
72
|
+
const update = !actions || actions.includes("update") ? async (input) => {
|
|
73
|
+
const res = await client.from(collection).update(input).eq("id", input.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;
|
|
71
82
|
const deleteFn = !fieldDeleted && (!actions || actions.includes("delete")) ? async (input) => {
|
|
72
83
|
const id = input.id;
|
|
73
84
|
const res = await client.from(collection).delete().eq("id", id).select();
|
|
@@ -80,13 +91,13 @@ function syncedSupabase(props) {
|
|
|
80
91
|
}
|
|
81
92
|
} : void 0;
|
|
82
93
|
const subscribe = realtime ? ({ node, value$, update: update2 }) => {
|
|
83
|
-
const { filter: filter2, schema } = isObject(realtime) ? realtime : {};
|
|
94
|
+
const { filter: filter2, schema: schema2 } = isObject(realtime) ? realtime : {};
|
|
84
95
|
const channel = client.channel(`LS_${node.key || ""}${channelNum++}`).on(
|
|
85
96
|
"postgres_changes",
|
|
86
97
|
{
|
|
87
98
|
event: "*",
|
|
88
99
|
table: collection,
|
|
89
|
-
schema:
|
|
100
|
+
schema: schema2 || "public",
|
|
90
101
|
filter: filter2 || void 0
|
|
91
102
|
},
|
|
92
103
|
(payload) => {
|
|
@@ -99,15 +110,15 @@ function syncedSupabase(props) {
|
|
|
99
110
|
const valueDate = +new Date(valueDateStr);
|
|
100
111
|
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
101
112
|
update2({
|
|
102
|
-
value:
|
|
113
|
+
value: [value],
|
|
103
114
|
lastSync: valueDate,
|
|
104
115
|
mode: "merge"
|
|
105
116
|
});
|
|
106
117
|
}
|
|
107
118
|
} else if (eventType === "DELETE") {
|
|
108
|
-
|
|
119
|
+
old[symbolDelete] = true;
|
|
109
120
|
update2({
|
|
110
|
-
value:
|
|
121
|
+
value: [old]
|
|
111
122
|
});
|
|
112
123
|
}
|
|
113
124
|
}
|
|
@@ -121,6 +132,7 @@ function syncedSupabase(props) {
|
|
|
121
132
|
}
|
|
122
133
|
return syncedCrud({
|
|
123
134
|
...rest,
|
|
135
|
+
mode: mode || "merge",
|
|
124
136
|
list,
|
|
125
137
|
create,
|
|
126
138
|
update,
|
|
@@ -130,11 +142,10 @@ function syncedSupabase(props) {
|
|
|
130
142
|
fieldUpdatedAt,
|
|
131
143
|
fieldDeleted,
|
|
132
144
|
updatePartial: false,
|
|
133
|
-
onSavedUpdate: "createdUpdatedAt",
|
|
134
145
|
transform,
|
|
135
146
|
generateId,
|
|
136
147
|
waitFor: () => isEnabled$.get() && (waitFor ? computeSelector(waitFor) : true),
|
|
137
|
-
waitForSet
|
|
148
|
+
waitForSet: (params) => isEnabled$.get() && (waitForSet ? isFunction(waitForSet) ? waitForSet(params) : waitForSet : true)
|
|
138
149
|
});
|
|
139
150
|
}
|
|
140
151
|
|
|
@@ -4,11 +4,11 @@ import { QueryKey, QueryObserverOptions, QueryClient, MutationObserverOptions, D
|
|
|
4
4
|
interface ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey'> {
|
|
5
5
|
queryKey?: TQueryKey | (() => TQueryKey);
|
|
6
6
|
}
|
|
7
|
-
interface SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends SyncedOptions<TData> {
|
|
7
|
+
interface SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends Omit<SyncedOptions<TData>, 'get' | 'set'> {
|
|
8
8
|
queryClient: QueryClient;
|
|
9
9
|
query: ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey>;
|
|
10
10
|
mutation?: MutationObserverOptions<TData, TError, void>;
|
|
11
11
|
}
|
|
12
|
-
declare function syncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>):
|
|
12
|
+
declare function syncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): TData;
|
|
13
13
|
|
|
14
14
|
export { type ObservableQueryOptions, type SyncedQueryParams, syncedQuery };
|
|
@@ -4,11 +4,11 @@ import { QueryKey, QueryObserverOptions, QueryClient, MutationObserverOptions, D
|
|
|
4
4
|
interface ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey'> {
|
|
5
5
|
queryKey?: TQueryKey | (() => TQueryKey);
|
|
6
6
|
}
|
|
7
|
-
interface SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends SyncedOptions<TData> {
|
|
7
|
+
interface SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends Omit<SyncedOptions<TData>, 'get' | 'set'> {
|
|
8
8
|
queryClient: QueryClient;
|
|
9
9
|
query: ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey>;
|
|
10
10
|
mutation?: MutationObserverOptions<TData, TError, void>;
|
|
11
11
|
}
|
|
12
|
-
declare function syncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>):
|
|
12
|
+
declare function syncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): TData;
|
|
13
13
|
|
|
14
14
|
export { type ObservableQueryOptions, type SyncedQueryParams, syncedQuery };
|
|
@@ -6,7 +6,7 @@ var queryCore = require('@tanstack/query-core');
|
|
|
6
6
|
|
|
7
7
|
// src/sync-plugins/tanstack-query.ts
|
|
8
8
|
function syncedQuery(params) {
|
|
9
|
-
const { query: options, mutation: mutationOptions, queryClient } = params;
|
|
9
|
+
const { query: options, mutation: mutationOptions, queryClient, ...rest } = params;
|
|
10
10
|
const Observer = queryCore.QueryObserver;
|
|
11
11
|
const defaultedOptions = queryClient.defaultQueryOptions(
|
|
12
12
|
options
|
|
@@ -58,7 +58,8 @@ function syncedQuery(params) {
|
|
|
58
58
|
return sync.synced({
|
|
59
59
|
get,
|
|
60
60
|
set,
|
|
61
|
-
subscribe
|
|
61
|
+
subscribe,
|
|
62
|
+
...rest
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -4,7 +4,7 @@ import { MutationObserver, QueryObserver, notifyManager } from '@tanstack/query-
|
|
|
4
4
|
|
|
5
5
|
// src/sync-plugins/tanstack-query.ts
|
|
6
6
|
function syncedQuery(params) {
|
|
7
|
-
const { query: options, mutation: mutationOptions, queryClient } = params;
|
|
7
|
+
const { query: options, mutation: mutationOptions, queryClient, ...rest } = params;
|
|
8
8
|
const Observer = QueryObserver;
|
|
9
9
|
const defaultedOptions = queryClient.defaultQueryOptions(
|
|
10
10
|
options
|
|
@@ -56,7 +56,8 @@ function syncedQuery(params) {
|
|
|
56
56
|
return synced({
|
|
57
57
|
get,
|
|
58
58
|
set,
|
|
59
|
-
subscribe
|
|
59
|
+
subscribe,
|
|
60
|
+
...rest
|
|
60
61
|
});
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -3,6 +3,6 @@ import { DefaultError, QueryKey } from '@tanstack/query-core';
|
|
|
3
3
|
import { Observable } from '@legendapp/state';
|
|
4
4
|
import { Synced } from '@legendapp/state/sync';
|
|
5
5
|
|
|
6
|
-
declare function useObservableSyncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): Observable<
|
|
6
|
+
declare function useObservableSyncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): Observable<Synced<TData>>;
|
|
7
7
|
|
|
8
8
|
export { useObservableSyncedQuery };
|
|
@@ -3,6 +3,6 @@ import { DefaultError, QueryKey } from '@tanstack/query-core';
|
|
|
3
3
|
import { Observable } from '@legendapp/state';
|
|
4
4
|
import { Synced } from '@legendapp/state/sync';
|
|
5
5
|
|
|
6
|
-
declare function useObservableSyncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): Observable<
|
|
6
|
+
declare function useObservableSyncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): Observable<Synced<TData>>;
|
|
7
7
|
|
|
8
8
|
export { useObservableSyncedQuery };
|
package/sync.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { MMKVConfiguration } from 'react-native-mmkv';
|
|
2
2
|
import { AsyncStorageStatic } from '@react-native-async-storage/async-storage';
|
|
3
|
-
import { ClassConstructor,
|
|
3
|
+
import { ClassConstructor, NodeInfo, ObservableParam, GetMode, SetParams, UpdateFn, LinkedOptions, RetryOptions, Change, Observable, ObservableSyncState, TypeAtPath, RecordValue, ArrayValue, WaitForSet } from '@legendapp/state';
|
|
4
4
|
import { SyncedOptionsGlobal as SyncedOptionsGlobal$1 } from '@legendapp/state/sync';
|
|
5
|
-
import { DatabaseReference, Query } from 'firebase/database';
|
|
6
5
|
|
|
7
6
|
interface PersistOptions<T = any> {
|
|
8
7
|
name: string;
|
|
@@ -17,30 +16,43 @@ interface PersistOptions<T = any> {
|
|
|
17
16
|
};
|
|
18
17
|
options?: any;
|
|
19
18
|
}
|
|
20
|
-
interface
|
|
19
|
+
interface SyncedGetSetSubscribeBaseParams<T = any> {
|
|
20
|
+
node: NodeInfo;
|
|
21
|
+
value$: ObservableParam<T>;
|
|
22
|
+
refresh: () => void;
|
|
23
|
+
}
|
|
24
|
+
interface SyncedGetSetBaseParams<T = any> extends SyncedGetSetSubscribeBaseParams<T>, OnErrorRetryParams {
|
|
25
|
+
}
|
|
26
|
+
interface OnErrorRetryParams {
|
|
27
|
+
retryNum: number;
|
|
28
|
+
cancelRetry: boolean;
|
|
29
|
+
}
|
|
30
|
+
interface SyncedGetParams<T> extends SyncedGetSetBaseParams<T> {
|
|
21
31
|
value: any;
|
|
22
32
|
lastSync: number | undefined;
|
|
23
33
|
updateLastSync: (lastSync: number) => void;
|
|
24
34
|
mode: GetMode;
|
|
25
|
-
|
|
35
|
+
onError: (error: Error) => void;
|
|
36
|
+
options: SyncedOptions;
|
|
26
37
|
}
|
|
27
|
-
interface SyncedSetParams<T> extends SetParams<T> {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
update: UpdateFn;
|
|
31
|
-
refresh: () => void;
|
|
32
|
-
cancelRetry: () => void;
|
|
33
|
-
retryNum: number;
|
|
34
|
-
fromSubscribe: boolean | undefined;
|
|
38
|
+
interface SyncedSetParams<T> extends Pick<SetParams<T>, 'changes' | 'value'>, SyncedGetSetBaseParams<T> {
|
|
39
|
+
update: UpdateFn<T>;
|
|
40
|
+
onError: (error: Error, retryParams: OnErrorRetryParams) => void;
|
|
35
41
|
}
|
|
36
|
-
interface SyncedSubscribeParams<T = any> {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
interface SyncedSubscribeParams<T = any> extends SyncedGetSetSubscribeBaseParams<T> {
|
|
43
|
+
lastSync: number | undefined;
|
|
44
|
+
update: UpdateFn<T>;
|
|
45
|
+
onError: (error: Error) => void;
|
|
46
|
+
}
|
|
47
|
+
interface SyncedErrorParams {
|
|
48
|
+
getParams?: SyncedGetParams<any>;
|
|
49
|
+
setParams?: SyncedSetParams<any>;
|
|
50
|
+
subscribeParams?: SyncedSubscribeParams<any>;
|
|
51
|
+
source: 'get' | 'set' | 'subscribe';
|
|
52
|
+
value$: ObservableParam<any>;
|
|
41
53
|
}
|
|
42
54
|
interface SyncedOptions<TRemote = any, TLocal = TRemote> extends Omit<LinkedOptions<TRemote>, 'get' | 'set'> {
|
|
43
|
-
get?: (params: SyncedGetParams) => Promise<TRemote> | TRemote;
|
|
55
|
+
get?: (params: SyncedGetParams<TRemote>) => Promise<TRemote> | TRemote;
|
|
44
56
|
set?: (params: SyncedSetParams<TRemote>) => void | Promise<any>;
|
|
45
57
|
subscribe?: (params: SyncedSubscribeParams<TRemote>) => (() => void) | void;
|
|
46
58
|
retry?: RetryOptions;
|
|
@@ -49,29 +61,36 @@ interface SyncedOptions<TRemote = any, TLocal = TRemote> extends Omit<LinkedOpti
|
|
|
49
61
|
syncMode?: 'auto' | 'manual';
|
|
50
62
|
mode?: GetMode;
|
|
51
63
|
transform?: SyncTransform<TLocal, TRemote>;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
64
|
+
onGetError?: (error: Error, params: SyncedErrorParams) => void;
|
|
65
|
+
onSetError?: (error: Error, params: SyncedErrorParams) => void;
|
|
66
|
+
onBeforeGet?: (params: {
|
|
67
|
+
value: TRemote;
|
|
68
|
+
lastSync: number | undefined;
|
|
69
|
+
pendingChanges: PendingChanges | undefined;
|
|
70
|
+
clearPendingChanges: () => Promise<void>;
|
|
71
|
+
resetCache: () => Promise<void>;
|
|
72
|
+
}) => void;
|
|
56
73
|
onBeforeSet?: () => void;
|
|
57
74
|
onAfterSet?: () => void;
|
|
58
|
-
|
|
75
|
+
log?: (message?: any, ...optionalParams: any[]) => void;
|
|
59
76
|
}
|
|
60
77
|
interface SyncedOptionsGlobal<T = any> extends Omit<SyncedOptions<T>, 'get' | 'set' | 'persist' | 'initial' | 'waitForSet' | 'waitFor' | 'transform' | 'subscribe'> {
|
|
61
78
|
persist?: ObservablePersistPluginOptions & Omit<PersistOptions, 'name' | 'transform' | 'options'>;
|
|
62
79
|
}
|
|
80
|
+
interface ObservablePersistIndexedDBPluginOptions {
|
|
81
|
+
databaseName: string;
|
|
82
|
+
version: number;
|
|
83
|
+
tableNames: string[];
|
|
84
|
+
}
|
|
85
|
+
interface ObservablePersistAsyncStoragePluginOptions {
|
|
86
|
+
AsyncStorage: AsyncStorageStatic;
|
|
87
|
+
preload?: boolean | string[];
|
|
88
|
+
}
|
|
63
89
|
interface ObservablePersistPluginOptions {
|
|
64
90
|
onGetError?: (error: Error) => void;
|
|
65
91
|
onSetError?: (error: Error) => void;
|
|
66
|
-
indexedDB?:
|
|
67
|
-
|
|
68
|
-
version: number;
|
|
69
|
-
tableNames: string[];
|
|
70
|
-
};
|
|
71
|
-
asyncStorage?: {
|
|
72
|
-
AsyncStorage: AsyncStorageStatic;
|
|
73
|
-
preload?: boolean | string[];
|
|
74
|
-
};
|
|
92
|
+
indexedDB?: ObservablePersistIndexedDBPluginOptions;
|
|
93
|
+
asyncStorage?: ObservablePersistAsyncStoragePluginOptions;
|
|
75
94
|
}
|
|
76
95
|
interface ObservablePersistPlugin {
|
|
77
96
|
initialize?(config: ObservablePersistPluginOptions): void | Promise<void>;
|
|
@@ -99,31 +118,9 @@ interface ObservableSyncSetParams<T> {
|
|
|
99
118
|
options: SyncedOptions<T>;
|
|
100
119
|
changes: Change[];
|
|
101
120
|
value: T;
|
|
102
|
-
valuePrevious: T;
|
|
103
|
-
}
|
|
104
|
-
interface ObservableSyncGetParams<T> {
|
|
105
|
-
state: Observable<ObservableSyncState>;
|
|
106
|
-
value$: ObservableParam<T>;
|
|
107
|
-
options: SyncedOptions<T>;
|
|
108
|
-
dateModified?: number;
|
|
109
|
-
lastSync?: number;
|
|
110
|
-
mode?: GetMode;
|
|
111
|
-
onGet: () => void;
|
|
112
|
-
onError: (error: Error) => void;
|
|
113
|
-
onChange: (params: UpdateFnParams) => void | Promise<void>;
|
|
114
|
-
}
|
|
115
|
-
type ObservableSyncRemoteGetFnParams<T> = Omit<ObservableSyncGetParams<T>, 'onGet'>;
|
|
116
|
-
interface ObservableSyncClass {
|
|
117
|
-
get?<T>(params: ObservableSyncGetParams<T>): void;
|
|
118
|
-
set?<T>(params: ObservableSyncSetParams<T>): void | Promise<void | {
|
|
119
|
-
changes?: object;
|
|
120
|
-
dateModified?: number;
|
|
121
|
-
lastSync?: number;
|
|
122
|
-
pathStrs?: string[];
|
|
123
|
-
}>;
|
|
124
121
|
}
|
|
125
122
|
interface ObservableSyncFunctions<T = any> {
|
|
126
|
-
get?(params:
|
|
123
|
+
get?(params: SyncedGetParams<T>): T | Promise<T>;
|
|
127
124
|
set?(params: ObservableSyncSetParams<T>): void | Promise<void | {
|
|
128
125
|
changes?: object | undefined;
|
|
129
126
|
dateModified?: number;
|
|
@@ -131,151 +128,19 @@ interface ObservableSyncFunctions<T = any> {
|
|
|
131
128
|
}>;
|
|
132
129
|
}
|
|
133
130
|
interface SubscribeOptions {
|
|
134
|
-
node:
|
|
131
|
+
node: NodeInfo;
|
|
135
132
|
update: UpdateFn;
|
|
136
133
|
refresh: () => void;
|
|
137
134
|
}
|
|
138
135
|
type Synced<T> = T;
|
|
136
|
+
type PendingChanges = Record<string, {
|
|
137
|
+
p: any;
|
|
138
|
+
v?: any;
|
|
139
|
+
t: TypeAtPath[];
|
|
140
|
+
}>;
|
|
139
141
|
|
|
140
142
|
declare function configureObservableSync(options?: SyncedOptionsGlobal$1): void;
|
|
141
143
|
|
|
142
|
-
interface PersistTransform<TOrig = any, TSaved = TOrig> {
|
|
143
|
-
load?: (value: TSaved) => TOrig | Promise<TOrig>;
|
|
144
|
-
save?: (value: TOrig) => TSaved | Promise<TSaved>;
|
|
145
|
-
}
|
|
146
|
-
interface LegacyPersistOptionsLocal<T = any> {
|
|
147
|
-
name: string;
|
|
148
|
-
transform?: PersistTransform<T>;
|
|
149
|
-
fieldTransforms?: FieldTransforms<T>;
|
|
150
|
-
readonly?: boolean;
|
|
151
|
-
mmkv?: MMKVConfiguration;
|
|
152
|
-
indexedDB?: {
|
|
153
|
-
prefixID?: string;
|
|
154
|
-
itemID?: string;
|
|
155
|
-
};
|
|
156
|
-
options?: any;
|
|
157
|
-
}
|
|
158
|
-
type LegacyPersistOptionsRemote<T = any> = ObservablePersistenceConfigRemoteGlobalOptions & {
|
|
159
|
-
readonly?: boolean;
|
|
160
|
-
waitForGet?: Selector<any>;
|
|
161
|
-
waitForSet?: LinkedOptions['waitForSet'];
|
|
162
|
-
manual?: boolean;
|
|
163
|
-
fieldTransforms?: FieldTransforms<T>;
|
|
164
|
-
allowSetIfError?: boolean;
|
|
165
|
-
transform?: PersistTransform<T>;
|
|
166
|
-
firebase?: {
|
|
167
|
-
refPath: (uid: string | undefined) => string;
|
|
168
|
-
query?: (ref: DatabaseReference) => DatabaseReference | Query;
|
|
169
|
-
queryByModified?: QueryByModified<T>;
|
|
170
|
-
ignoreKeys?: string[];
|
|
171
|
-
requireAuth?: boolean;
|
|
172
|
-
mode?: 'once' | 'realtime';
|
|
173
|
-
};
|
|
174
|
-
offlineBehavior?: false | 'retry';
|
|
175
|
-
changeTimeout?: number;
|
|
176
|
-
metadataTimeout?: number;
|
|
177
|
-
retry?: RetryOptions;
|
|
178
|
-
onGetError?: (error: Error) => void;
|
|
179
|
-
onSetError?: (error: Error) => void;
|
|
180
|
-
log?: (message?: any, ...optionalParams: any[]) => void;
|
|
181
|
-
onBeforeSet?: () => void;
|
|
182
|
-
onSet?: () => void;
|
|
183
|
-
};
|
|
184
|
-
interface ObservablePersistenceConfigLocalGlobalOptions {
|
|
185
|
-
onGetError?: (error: Error) => void;
|
|
186
|
-
onSetError?: (error: Error) => void;
|
|
187
|
-
indexedDB?: {
|
|
188
|
-
databaseName: string;
|
|
189
|
-
version: number;
|
|
190
|
-
tableNames: string[];
|
|
191
|
-
};
|
|
192
|
-
asyncStorage?: {
|
|
193
|
-
AsyncStorage: AsyncStorageStatic;
|
|
194
|
-
preload?: boolean | string[];
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
interface ObservablePersistenceConfigRemoteGlobalOptions {
|
|
198
|
-
debounceSet?: number;
|
|
199
|
-
dateModifiedKey?: string;
|
|
200
|
-
offlineBehavior?: false | 'retry';
|
|
201
|
-
retry?: RetryOptions;
|
|
202
|
-
onGetError?: (error: Error) => void;
|
|
203
|
-
onSetError?: (error: Error) => void;
|
|
204
|
-
log?: (logLevel: 'verbose' | 'warning' | 'error', message: any, ...optionalParams: any[]) => void;
|
|
205
|
-
onBeforeSet?: () => void;
|
|
206
|
-
onAfterSet?: () => void;
|
|
207
|
-
}
|
|
208
|
-
interface ObservablePersistenceConfig {
|
|
209
|
-
pluginLocal?: ClassConstructor<ObservablePersistPlugin>;
|
|
210
|
-
pluginRemote?: ClassConstructor<ObservablePersistRemoteClass> | ObservablePersistRemoteFunctions;
|
|
211
|
-
localOptions?: ObservablePersistenceConfigLocalGlobalOptions;
|
|
212
|
-
remoteOptions?: ObservablePersistenceConfigRemoteGlobalOptions;
|
|
213
|
-
}
|
|
214
|
-
interface LegacyPersistOptions<T = any> {
|
|
215
|
-
local?: string | LegacyPersistOptionsLocal<T>;
|
|
216
|
-
remote?: LegacyPersistOptionsRemote<T>;
|
|
217
|
-
pluginLocal?: ClassConstructor<ObservablePersistPlugin>;
|
|
218
|
-
pluginRemote?: ClassConstructor<ObservablePersistRemoteClass> | ObservablePersistRemoteFunctions<T>;
|
|
219
|
-
}
|
|
220
|
-
interface ObservableOnChangeParams {
|
|
221
|
-
value: unknown;
|
|
222
|
-
path?: string[];
|
|
223
|
-
pathTypes?: TypeAtPath[];
|
|
224
|
-
mode?: GetMode;
|
|
225
|
-
dateModified?: number | undefined;
|
|
226
|
-
lastSync?: number | undefined;
|
|
227
|
-
}
|
|
228
|
-
interface ObservablePersistRemoteSetParams<T> {
|
|
229
|
-
syncState: Observable<ObservablePersistState>;
|
|
230
|
-
obs: ObservableParam<T>;
|
|
231
|
-
options: LegacyPersistOptions<T>;
|
|
232
|
-
changes: Change[];
|
|
233
|
-
value: T;
|
|
234
|
-
}
|
|
235
|
-
interface ObservablePersistRemoteGetParams<T> {
|
|
236
|
-
state: Observable<ObservablePersistState>;
|
|
237
|
-
obs: ObservableParam<T>;
|
|
238
|
-
options: LegacyPersistOptions<T>;
|
|
239
|
-
dateModified?: number;
|
|
240
|
-
lastSync?: number;
|
|
241
|
-
mode?: GetMode;
|
|
242
|
-
onGet: () => void;
|
|
243
|
-
onError: (error: Error) => void;
|
|
244
|
-
onChange: (params: ObservableOnChangeParams) => void | Promise<void>;
|
|
245
|
-
}
|
|
246
|
-
type ObservablePersistRemoteGetFnParams<T> = Omit<ObservablePersistRemoteGetParams<T>, 'onGet'>;
|
|
247
|
-
interface ObservablePersistRemoteClass {
|
|
248
|
-
get?<T>(params: ObservablePersistRemoteGetParams<T>): void;
|
|
249
|
-
set?<T>(params: ObservablePersistRemoteSetParams<T>): void | Promise<void | {
|
|
250
|
-
changes?: object;
|
|
251
|
-
dateModified?: number;
|
|
252
|
-
lastSync?: number;
|
|
253
|
-
pathStrs?: string[];
|
|
254
|
-
}>;
|
|
255
|
-
}
|
|
256
|
-
interface ObservablePersistRemoteFunctions<T = any> {
|
|
257
|
-
get?(params: ObservablePersistRemoteGetFnParams<T>): T | Promise<T>;
|
|
258
|
-
set?(params: ObservablePersistRemoteSetParams<T>): void | Promise<void | {
|
|
259
|
-
changes?: object | undefined;
|
|
260
|
-
dateModified?: number;
|
|
261
|
-
lastSync?: number;
|
|
262
|
-
}>;
|
|
263
|
-
}
|
|
264
|
-
interface ObservablePersistStateBase {
|
|
265
|
-
isLoadedLocal: boolean;
|
|
266
|
-
isEnabledLocal: boolean;
|
|
267
|
-
isEnabledRemote: boolean;
|
|
268
|
-
dateModified?: number;
|
|
269
|
-
lastSync?: number;
|
|
270
|
-
syncCount?: number;
|
|
271
|
-
clearLocal: () => Promise<void>;
|
|
272
|
-
sync: () => Promise<void>;
|
|
273
|
-
getPendingChanges: () => Record<string, {
|
|
274
|
-
p: any;
|
|
275
|
-
v?: any;
|
|
276
|
-
}> | undefined;
|
|
277
|
-
}
|
|
278
|
-
type ObservablePersistState = ObservableState & ObservablePersistStateBase;
|
|
279
144
|
declare type ObjectKeys<T> = Pick<T, {
|
|
280
145
|
[K in keyof T]-?: K extends string ? T[K] extends Record<string, any> ? T[K] extends any[] ? never : K : never : never;
|
|
281
146
|
}[keyof T]>;
|
|
@@ -333,8 +198,8 @@ declare function transformStringifyDates<TRemote extends Record<string, any>, TL
|
|
|
333
198
|
declare function transformStringifyDates<TRemote extends Record<string, any>, Keys extends keyof TRemote = keyof TRemote>(...args: Keys[]): SyncTransform<TransformStringsToDates<TRemote, Keys>, TRemote>;
|
|
334
199
|
declare function transformStringifyDates<TRemote extends Record<string, any>, TLocal extends Record<string, any> = TRemote>(...args: (keyof TRemote)[]): SyncTransform<TRemote, TLocal>;
|
|
335
200
|
|
|
336
|
-
declare const mapSyncPlugins: WeakMap<ClassConstructor<ObservablePersistPlugin
|
|
337
|
-
plugin: ObservablePersistPlugin
|
|
201
|
+
declare const mapSyncPlugins: WeakMap<ClassConstructor<ObservablePersistPlugin>, {
|
|
202
|
+
plugin: ObservablePersistPlugin;
|
|
338
203
|
initialized: Observable<boolean>;
|
|
339
204
|
}>;
|
|
340
205
|
declare function onChangeRemote(cb: () => void): void;
|
|
@@ -343,9 +208,18 @@ declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: Synced
|
|
|
343
208
|
|
|
344
209
|
declare function synced<TRemote, TLocal = TRemote>(params: SyncedOptions<TRemote, TLocal> | (() => TRemote)): Synced<TLocal>;
|
|
345
210
|
|
|
346
|
-
|
|
211
|
+
interface SyncedOptionsConfigure extends Omit<SyncedOptions, 'persist'> {
|
|
212
|
+
persist?: Partial<PersistOptions<any>>;
|
|
213
|
+
}
|
|
214
|
+
type RetType = typeof synced;
|
|
215
|
+
declare function configureSynced<T extends typeof synced>(fn: T, origOptions: SyncedOptionsConfigure): T;
|
|
216
|
+
declare function configureSynced(origOptions: SyncedOptionsConfigure): RetType;
|
|
217
|
+
|
|
218
|
+
declare function waitForSet(waitForSet: WaitForSet<any>, changes: Change[], value: any, params?: Record<string, any>): Promise<void>;
|
|
219
|
+
|
|
347
220
|
declare const internal: {
|
|
348
221
|
observableSyncConfiguration: SyncedOptionsGlobal;
|
|
222
|
+
waitForSet: typeof waitForSet;
|
|
349
223
|
};
|
|
350
224
|
|
|
351
|
-
export { type FieldTransforms, type FieldTransformsInner, type
|
|
225
|
+
export { type FieldTransforms, type FieldTransformsInner, type ObservablePersistAsyncStoragePluginOptions, type ObservablePersistIndexedDBPluginOptions, type ObservablePersistPlugin, type ObservablePersistPluginOptions, type ObservableSyncFunctions, type ObservableSyncSetParams, type OnErrorRetryParams, type PendingChanges, type PersistMetadata, type PersistOptions, type QueryByModified, type StringToDate, type SubscribeOptions, type SyncTransform, type SyncTransformMethod, type Synced, type SyncedErrorParams, type SyncedGetParams, type SyncedGetSetBaseParams, type SyncedGetSetSubscribeBaseParams, type SyncedOptions, type SyncedOptionsGlobal, type SyncedSetParams, type SyncedSubscribeParams, type TransformStringifyKeys, type TransformStringifyOptions, type TransformStringsToDates, combineTransforms, configureObservableSync, configureSynced, deepEqual, diffObjects, internal, mapSyncPlugins, onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|