@legendapp/state 3.0.0-alpha.2 → 3.0.0-alpha.20
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/helpers/trackHistory.js +2 -2
- package/helpers/trackHistory.mjs +2 -2
- package/index.d.mts +45 -32
- package/index.d.ts +45 -32
- package/index.js +234 -156
- package/index.mjs +234 -156
- package/package.json +6 -1
- package/persist-plugins/async-storage.d.mts +2 -2
- package/persist-plugins/async-storage.d.ts +2 -2
- package/persist-plugins/indexeddb.js +1 -1
- package/persist-plugins/indexeddb.mjs +1 -1
- package/react.d.mts +17 -14
- package/react.d.ts +17 -14
- package/react.js +55 -30
- package/react.mjs +56 -31
- package/sync-plugins/_transformObjectFields.d.mts +31 -0
- package/sync-plugins/_transformObjectFields.d.ts +31 -0
- package/sync-plugins/_transformObjectFields.js +114 -0
- package/sync-plugins/_transformObjectFields.mjs +110 -0
- package/sync-plugins/crud.d.mts +14 -23
- package/sync-plugins/crud.d.ts +14 -23
- package/sync-plugins/crud.js +194 -129
- package/sync-plugins/crud.mjs +195 -130
- package/sync-plugins/firebase.d.mts +26 -0
- package/sync-plugins/firebase.d.ts +26 -0
- package/sync-plugins/firebase.js +365 -0
- package/sync-plugins/firebase.mjs +360 -0
- package/sync-plugins/keel.d.mts +24 -8
- package/sync-plugins/keel.d.ts +24 -8
- package/sync-plugins/keel.js +32 -16
- package/sync-plugins/keel.mjs +32 -16
- package/sync-plugins/supabase.d.mts +1 -1
- package/sync-plugins/supabase.d.ts +1 -1
- package/sync-plugins/supabase.js +5 -4
- package/sync-plugins/supabase.mjs +6 -5
- 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 +38 -185
- package/sync.d.ts +38 -185
- package/sync.js +354 -296
- package/sync.mjs +356 -297
- 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
package/sync.d.ts
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, NodeValue, ObservableParam, GetMode, SetParams, UpdateFn, LinkedOptions, RetryOptions, Change, Observable, ObservableSyncState, TypeAtPath, RecordValue, ArrayValue } 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,34 @@ interface PersistOptions<T = any> {
|
|
|
17
16
|
};
|
|
18
17
|
options?: any;
|
|
19
18
|
}
|
|
20
|
-
interface
|
|
19
|
+
interface SyncedGetSetSubscribeBaseParams<T = any> {
|
|
20
|
+
node: NodeValue;
|
|
21
|
+
value$: ObservableParam<T>;
|
|
22
|
+
refresh: () => void;
|
|
23
|
+
}
|
|
24
|
+
interface SyncedGetParams<T> extends SyncedGetSetSubscribeBaseParams<T> {
|
|
21
25
|
value: any;
|
|
22
26
|
lastSync: number | undefined;
|
|
23
27
|
updateLastSync: (lastSync: number) => void;
|
|
24
28
|
mode: GetMode;
|
|
25
|
-
|
|
29
|
+
retryNum: number;
|
|
30
|
+
cancelRetry: () => void;
|
|
31
|
+
onError: (error: Error) => void;
|
|
32
|
+
options: SyncedOptions;
|
|
26
33
|
}
|
|
27
|
-
interface SyncedSetParams<T> extends SetParams<T> {
|
|
28
|
-
|
|
29
|
-
valuePrevious: T;
|
|
30
|
-
update: UpdateFn;
|
|
31
|
-
refresh: () => void;
|
|
34
|
+
interface SyncedSetParams<T> extends Pick<SetParams<T>, 'changes' | 'value'>, SyncedGetSetSubscribeBaseParams<T> {
|
|
35
|
+
update: UpdateFn<T>;
|
|
32
36
|
cancelRetry: () => void;
|
|
33
37
|
retryNum: number;
|
|
34
|
-
|
|
38
|
+
onError: (error: Error) => void;
|
|
35
39
|
}
|
|
36
|
-
interface SyncedSubscribeParams<T = any> {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
refresh: () => void;
|
|
40
|
+
interface SyncedSubscribeParams<T = any> extends SyncedGetSetSubscribeBaseParams<T> {
|
|
41
|
+
lastSync: number | undefined;
|
|
42
|
+
update: UpdateFn<T>;
|
|
43
|
+
onError: (error: Error) => void;
|
|
41
44
|
}
|
|
42
45
|
interface SyncedOptions<TRemote = any, TLocal = TRemote> extends Omit<LinkedOptions<TRemote>, 'get' | 'set'> {
|
|
43
|
-
get?: (params: SyncedGetParams) => Promise<TRemote> | TRemote;
|
|
46
|
+
get?: (params: SyncedGetParams<TRemote>) => Promise<TRemote> | TRemote;
|
|
44
47
|
set?: (params: SyncedSetParams<TRemote>) => void | Promise<any>;
|
|
45
48
|
subscribe?: (params: SyncedSubscribeParams<TRemote>) => (() => void) | void;
|
|
46
49
|
retry?: RetryOptions;
|
|
@@ -49,13 +52,18 @@ interface SyncedOptions<TRemote = any, TLocal = TRemote> extends Omit<LinkedOpti
|
|
|
49
52
|
syncMode?: 'auto' | 'manual';
|
|
50
53
|
mode?: GetMode;
|
|
51
54
|
transform?: SyncTransform<TLocal, TRemote>;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
onGetError?: (error: Error, getParams: SyncedGetParams<TRemote> | undefined, source: 'get' | 'subscribe') => void;
|
|
56
|
+
onSetError?: (error: Error, setParams: SyncedSetParams<TRemote>) => void;
|
|
57
|
+
onBeforeGet?: (params: {
|
|
58
|
+
value: TRemote;
|
|
59
|
+
lastSync: number | undefined;
|
|
60
|
+
pendingChanges: PendingChanges | undefined;
|
|
61
|
+
clearPendingChanges: () => Promise<void>;
|
|
62
|
+
resetCache: () => Promise<void>;
|
|
63
|
+
}) => void;
|
|
56
64
|
onBeforeSet?: () => void;
|
|
57
65
|
onAfterSet?: () => void;
|
|
58
|
-
|
|
66
|
+
log?: (message?: any, ...optionalParams: any[]) => void;
|
|
59
67
|
}
|
|
60
68
|
interface SyncedOptionsGlobal<T = any> extends Omit<SyncedOptions<T>, 'get' | 'set' | 'persist' | 'initial' | 'waitForSet' | 'waitFor' | 'transform' | 'subscribe'> {
|
|
61
69
|
persist?: ObservablePersistPluginOptions & Omit<PersistOptions, 'name' | 'transform' | 'options'>;
|
|
@@ -99,31 +107,9 @@ interface ObservableSyncSetParams<T> {
|
|
|
99
107
|
options: SyncedOptions<T>;
|
|
100
108
|
changes: Change[];
|
|
101
109
|
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
110
|
}
|
|
125
111
|
interface ObservableSyncFunctions<T = any> {
|
|
126
|
-
get?(params:
|
|
112
|
+
get?(params: SyncedGetParams<T>): T | Promise<T>;
|
|
127
113
|
set?(params: ObservableSyncSetParams<T>): void | Promise<void | {
|
|
128
114
|
changes?: object | undefined;
|
|
129
115
|
dateModified?: number;
|
|
@@ -136,146 +122,14 @@ interface SubscribeOptions {
|
|
|
136
122
|
refresh: () => void;
|
|
137
123
|
}
|
|
138
124
|
type Synced<T> = T;
|
|
125
|
+
type PendingChanges = Record<string, {
|
|
126
|
+
p: any;
|
|
127
|
+
v?: any;
|
|
128
|
+
t: TypeAtPath[];
|
|
129
|
+
}>;
|
|
139
130
|
|
|
140
131
|
declare function configureObservableSync(options?: SyncedOptionsGlobal$1): void;
|
|
141
132
|
|
|
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
133
|
declare type ObjectKeys<T> = Pick<T, {
|
|
280
134
|
[K in keyof T]-?: K extends string ? T[K] extends Record<string, any> ? T[K] extends any[] ? never : K : never : never;
|
|
281
135
|
}[keyof T]>;
|
|
@@ -333,8 +187,8 @@ declare function transformStringifyDates<TRemote extends Record<string, any>, TL
|
|
|
333
187
|
declare function transformStringifyDates<TRemote extends Record<string, any>, Keys extends keyof TRemote = keyof TRemote>(...args: Keys[]): SyncTransform<TransformStringsToDates<TRemote, Keys>, TRemote>;
|
|
334
188
|
declare function transformStringifyDates<TRemote extends Record<string, any>, TLocal extends Record<string, any> = TRemote>(...args: (keyof TRemote)[]): SyncTransform<TRemote, TLocal>;
|
|
335
189
|
|
|
336
|
-
declare const mapSyncPlugins: WeakMap<ClassConstructor<ObservablePersistPlugin
|
|
337
|
-
plugin: ObservablePersistPlugin
|
|
190
|
+
declare const mapSyncPlugins: WeakMap<ClassConstructor<ObservablePersistPlugin>, {
|
|
191
|
+
plugin: ObservablePersistPlugin;
|
|
338
192
|
initialized: Observable<boolean>;
|
|
339
193
|
}>;
|
|
340
194
|
declare function onChangeRemote(cb: () => void): void;
|
|
@@ -343,9 +197,8 @@ declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: Synced
|
|
|
343
197
|
|
|
344
198
|
declare function synced<TRemote, TLocal = TRemote>(params: SyncedOptions<TRemote, TLocal> | (() => TRemote)): Synced<TLocal>;
|
|
345
199
|
|
|
346
|
-
declare function isInRemoteChange(): boolean;
|
|
347
200
|
declare const internal: {
|
|
348
201
|
observableSyncConfiguration: SyncedOptionsGlobal;
|
|
349
202
|
};
|
|
350
203
|
|
|
351
|
-
export { type FieldTransforms, type FieldTransformsInner, type
|
|
204
|
+
export { type FieldTransforms, type FieldTransformsInner, type ObservablePersistPlugin, type ObservablePersistPluginOptions, type ObservableSyncFunctions, type ObservableSyncSetParams, type PendingChanges, type PersistMetadata, type PersistOptions, type QueryByModified, type StringToDate, type SubscribeOptions, type SyncTransform, type SyncTransformMethod, type Synced, type SyncedGetParams, type SyncedGetSetSubscribeBaseParams, type SyncedOptions, type SyncedOptionsGlobal, type SyncedSetParams, type SyncedSubscribeParams, type TransformStringifyKeys, type TransformStringifyOptions, type TransformStringsToDates, combineTransforms, configureObservableSync, deepEqual, diffObjects, internal, mapSyncPlugins, onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|