@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.
Files changed (74) hide show
  1. package/CHANGELOG.md +831 -1
  2. package/LICENSE +21 -1
  3. package/README.md +141 -1
  4. package/babel.js +0 -2
  5. package/babel.mjs +0 -2
  6. package/config/enable$GetSet.js +2 -1
  7. package/config/enable$GetSet.mjs +2 -1
  8. package/config/enableReactTracking.js +2 -1
  9. package/config/enableReactTracking.mjs +2 -1
  10. package/config/enableReactUse.js +2 -1
  11. package/config/enableReactUse.mjs +2 -1
  12. package/config/enable_PeekAssign.js +2 -1
  13. package/config/enable_PeekAssign.mjs +2 -1
  14. package/config.d.mts +13 -0
  15. package/config.d.ts +13 -0
  16. package/config.js +2066 -0
  17. package/config.mjs +2064 -0
  18. package/helpers/trackHistory.js +2 -2
  19. package/helpers/trackHistory.mjs +2 -2
  20. package/index.d.mts +25 -302
  21. package/index.d.ts +25 -302
  22. package/index.js +293 -322
  23. package/index.mjs +294 -321
  24. package/observableInterfaces-CZR3_8mM.d.mts +283 -0
  25. package/observableInterfaces-CZR3_8mM.d.ts +283 -0
  26. package/package.json +11 -1
  27. package/persist-plugins/async-storage.d.mts +6 -3
  28. package/persist-plugins/async-storage.d.ts +6 -3
  29. package/persist-plugins/async-storage.js +12 -4
  30. package/persist-plugins/async-storage.mjs +12 -5
  31. package/persist-plugins/indexeddb.d.mts +6 -4
  32. package/persist-plugins/indexeddb.d.ts +6 -4
  33. package/persist-plugins/indexeddb.js +16 -6
  34. package/persist-plugins/indexeddb.mjs +16 -7
  35. package/persist-plugins/mmkv.d.mts +5 -1
  36. package/persist-plugins/mmkv.d.ts +5 -1
  37. package/persist-plugins/mmkv.js +14 -5
  38. package/persist-plugins/mmkv.mjs +14 -6
  39. package/react.d.mts +18 -14
  40. package/react.d.ts +18 -14
  41. package/react.js +57 -32
  42. package/react.mjs +58 -33
  43. package/sync-plugins/crud.d.mts +21 -24
  44. package/sync-plugins/crud.d.ts +21 -24
  45. package/sync-plugins/crud.js +240 -139
  46. package/sync-plugins/crud.mjs +242 -141
  47. package/sync-plugins/fetch.js +12 -8
  48. package/sync-plugins/fetch.mjs +13 -9
  49. package/sync-plugins/firebase.d.mts +27 -0
  50. package/sync-plugins/firebase.d.ts +27 -0
  51. package/sync-plugins/firebase.js +373 -0
  52. package/sync-plugins/firebase.mjs +368 -0
  53. package/sync-plugins/keel.d.mts +27 -10
  54. package/sync-plugins/keel.d.ts +27 -10
  55. package/sync-plugins/keel.js +51 -32
  56. package/sync-plugins/keel.mjs +52 -33
  57. package/sync-plugins/supabase.d.mts +12 -7
  58. package/sync-plugins/supabase.d.ts +12 -7
  59. package/sync-plugins/supabase.js +24 -13
  60. package/sync-plugins/supabase.mjs +25 -14
  61. package/sync-plugins/tanstack-query.d.mts +2 -2
  62. package/sync-plugins/tanstack-query.d.ts +2 -2
  63. package/sync-plugins/tanstack-query.js +3 -2
  64. package/sync-plugins/tanstack-query.mjs +3 -2
  65. package/sync-plugins/tanstack-react-query.d.mts +1 -1
  66. package/sync-plugins/tanstack-react-query.d.ts +1 -1
  67. package/sync.d.mts +71 -197
  68. package/sync.d.ts +71 -197
  69. package/sync.js +465 -284
  70. package/sync.mjs +471 -290
  71. package/types/babel.d.ts +12 -1
  72. package/.DS_Store +0 -0
  73. /package/config/{enable_GetSet.d.mts → enable$GetSet.d.mts} +0 -0
  74. /package/config/{enable_GetSet.d.ts → enable$GetSet.d.ts} +0 -0
@@ -5,8 +5,8 @@ var state = require('@legendapp/state');
5
5
  // src/helpers/trackHistory.ts
6
6
  function trackHistory(value$, targetObservable) {
7
7
  const history = targetObservable != null ? targetObservable : state.observable();
8
- value$.onChange(({ loading, remote, changes }) => {
9
- if (!loading && !remote) {
8
+ value$.onChange(({ isFromPersist, isFromSync, changes }) => {
9
+ if (!isFromPersist && !isFromSync) {
10
10
  const time = Date.now().toString();
11
11
  for (let i = 0; i < changes.length; i++) {
12
12
  const { path, prevAtPath, pathTypes } = changes[i];
@@ -3,8 +3,8 @@ import { observable, constructObjectWithPath, mergeIntoObservable } from '@legen
3
3
  // src/helpers/trackHistory.ts
4
4
  function trackHistory(value$, targetObservable) {
5
5
  const history = targetObservable != null ? targetObservable : observable();
6
- value$.onChange(({ loading, remote, changes }) => {
7
- if (!loading && !remote) {
6
+ value$.onChange(({ isFromPersist, isFromSync, changes }) => {
7
+ if (!isFromPersist && !isFromSync) {
8
8
  const time = Date.now().toString();
9
9
  for (let i = 0; i < changes.length; i++) {
10
10
  const { path, prevAtPath, pathTypes } = changes[i];
package/index.d.mts CHANGED
@@ -1,269 +1,12 @@
1
- type Primitive$1 = string | number | boolean | symbol | bigint | undefined | null | Date;
2
- type ArrayOverrideFnNames = 'find' | 'every' | 'some' | 'filter' | 'reduce' | 'reduceRight' | 'forEach' | 'map' | 'sort';
3
- type RemoveIndex<T> = {
4
- [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
5
- };
6
- type BuiltIns = String | Boolean | Number | Date | Error | RegExp | Array<any> | Function | Promise<any>;
7
- type IsUserDefinedObject<T> = T extends Function | BuiltIns | any[] ? false : T extends object ? true : false;
8
- type RemoveObservables<T> = T extends ImmutableObservableBase<infer t> ? t : IsUserDefinedObject<T> extends true ? {
9
- [K in keyof T]: RemoveObservables<T[K]>;
10
- } : T extends ImmutableObservableBase<infer TObs> ? TObs : T extends () => infer TRet ? RemoveObservables<TRet> & T : T extends (key: string) => infer TRet ? Record<string, RemoveObservables<TRet>> & T : T;
11
- interface ObservableArray<T, U> extends ObservablePrimitive<T>, Pick<Array<Observable<U>>, ArrayOverrideFnNames>, Omit<RemoveIndex<Array<U>>, ArrayOverrideFnNames> {
12
- }
13
- interface ObservableObjectFns<T> {
14
- assign(value: Partial<T>): Observable<T>;
15
- }
16
- interface ObservableObjectFunctions<T = Record<string, any>> extends ObservablePrimitive<T>, ObservableObjectFns<T> {
17
- }
18
- type MapKey<T extends Map<any, any> | WeakMap<any, any>> = Parameters<T['has']>[0];
19
- type MapValue<T extends Map<any, any> | WeakMap<any, any>> = Parameters<T['get']>[0];
20
- type ObservableMap<T extends Map<any, any> | WeakMap<any, any>> = Omit<T, 'get' | 'size'> & Omit<ObservablePrimitive<T>, 'get' | 'size'> & {
21
- get(key: Parameters<T['get']>[0]): Observable<Parameters<T['set']>[1]>;
22
- get(): T;
23
- size: ImmutableObservableBase<number>;
24
- assign(value: Record<MapKey<T>, MapValue<T>> | Map<MapKey<T>, MapValue<T>> | WeakMap<MapKey<T>, MapValue<T>>): Observable<T>;
25
- };
26
- type ObservableSet<T extends Set<any> | WeakSet<any>> = Omit<T, 'size'> & Omit<ObservablePrimitive<T>, 'size'> & {
27
- size: ImmutableObservableBase<number>;
28
- };
29
- interface ObservableBoolean extends ObservablePrimitive<boolean> {
30
- toggle(): void;
31
- }
32
- interface ObservablePrimitive<T> extends ImmutableObservableBase<T>, MutableObservableBase<T> {
33
- }
34
- type ObservableAny = Partial<ObservableObjectFns<any>> & ObservablePrimitive<any> & Record<string, any>;
35
- interface ImmutableObservableSimple<T> {
36
- peek(): T;
37
- get(trackingType?: any): any;
38
- onChange(cb: ListenerFn<any>, options?: any): () => void;
39
- }
40
- interface ImmutableObservableBase<T> extends ImmutableObservableSimple<T> {
41
- peek(): RemoveObservables<T>;
42
- peek(): T;
43
- get(trackingType?: TrackingType | GetOptions): RemoveObservables<T>;
44
- onChange(cb: ListenerFn<T>, options?: {
45
- trackingType?: TrackingType;
46
- initial?: boolean;
47
- immediate?: boolean;
48
- noArgs?: boolean;
49
- }): () => void;
50
- }
51
- interface MutableObservableSimple {
52
- set(value: any): void;
53
- delete(): void;
54
- }
55
- interface MutableObservableBase<T> extends MutableObservableSimple {
56
- set(value: (prev: RemoveObservables<T>) => RemoveObservables<T>): void;
57
- set(value: RecursiveValueOrFunction<T>): void;
58
- set(value: Promise<RemoveObservables<T>>): void;
59
- set(value: RemoveObservables<T>): void;
60
- set(value: Observable<RemoveObservables<T>>): void;
61
- delete(): void;
62
- }
63
- type UndefinedIf<T, U> = U extends true ? T | undefined : T;
64
- type IsNullable<T> = undefined extends T ? true : null extends T ? true : false;
65
- type NonObservable = Function | Observable;
66
- type NonObservableKeys<T> = {
67
- [K in keyof T]-?: IsStrictAny<T[K]> extends true ? never : T[K] extends undefined | null ? never : NonNullable<T[K]> extends NonObservable ? K : never;
68
- }[keyof T];
69
- type ObservableProps<T> = NonObservableKeys<NonNullable<T>> extends never ? T : RestoreNullability<T, Omit<NonNullable<T>, NonObservableKeys<NonNullable<T>>>>;
70
- type NonObservableProps<T> = RestoreNullability<T, NullablePropsIf<Pick<NonNullable<T>, NonObservableKeys<NonNullable<T>>>, IsNullable<T>>>;
71
- type NullablePropsIf<T, U> = {
72
- [K in keyof T]: UndefinedIf<T[K], U>;
73
- };
74
- type RestoreNullability<Source, Target> = IsNullable<Source> extends true ? Target | Extract<Source, null | undefined> : Target;
75
- type ObservableChildren<T, Nullable = IsNullable<T>> = {
76
- [K in keyof T]-?: Observable<UndefinedIf<T[K], Nullable>>;
77
- };
78
- type ObservableFunctionChildren<T> = {
79
- [K in keyof T]-?: T[K] extends Observable ? T[K] : T[K] extends (key: infer Key extends string) => Promise<infer t> | infer t ? HasOneStringParam<T[K]> extends true ? Observable<Record<Key, t>> & T[K] : t extends void ? T[K] : t extends Observable ? t : Observable<t> & (() => t) : T[K] & Observable<T[K]>;
80
- };
81
- type IsStrictAny<T> = 0 extends 1 & T ? true : false;
82
- type ObservableObject<T> = ObservableObjectFunctions<ObservableProps<T> & NonObservableProps<T>> & ObservableChildren<ObservableProps<T>> & ObservableFunctionChildren<NonObservableProps<T>>;
83
- type ObservableFunction<T> = T extends () => infer t ? t | (() => t) : T;
84
- type HasOneStringParam<T> = T extends (...args: infer P) => any ? P extends {
85
- length: 1;
86
- } ? P[0] extends string | ObservablePrimitive<string> ? true : false : false : false;
87
- type ObservableNode<T, NT = NonNullable<T>> = [NT] extends [never] ? ObservablePrimitive<T> : IsStrictAny<T> extends true ? ObservableAny : [T] extends [Promise<infer t>] ? ObservableNode<t> : [T] extends [(key: infer K extends string) => infer t] ? [t] extends [ImmutableObservableBase<any>] ? HasOneStringParam<T> extends true ? Observable<Record<K, t>> : t : HasOneStringParam<T> extends true ? Observable<Record<K, t>> & T : Observable<ObservableFunction<t>> : [NT] extends [ImmutableObservableBase<any>] ? NT : [NT] extends [Primitive$1] ? [NT] extends [boolean] ? ObservableBoolean : ObservablePrimitive<T> : NT extends Map<any, any> | WeakMap<any, any> ? ObservableMap<NT> : NT extends Set<infer U> ? ObservableSet<Set<UndefinedIf<U, IsNullable<T>>>> : NT extends WeakSet<any> ? ObservableSet<NT> : NT extends Array<infer U> ? ObservableArray<T, U> & ObservableChildren<T> : ObservableObject<T> & {};
88
- type Observable<T = any> = ObservableNode<T> & {};
89
- type ObservableParam<T = any> = ImmutableObservableSimple<T> & MutableObservableSimple;
90
- type ValueOrFunction<T> = T extends Function ? T : T | ImmutableObservableBase<T> | Promise<T> | (() => T | Promise<T>);
91
- type ValueOrFunctionKeys<T> = {
92
- [K in keyof T]: RecursiveValueOrFunction<T[K]>;
93
- };
94
- type RecursiveValueOrFunction<T> = T extends Function ? T : T extends object ? ((key: string) => any) | Promise<ValueOrFunctionKeys<T>> | ValueOrFunctionKeys<T> | ImmutableObservableBase<T> | (() => T | Promise<T> | ValueOrFunctionKeys<T> | Promise<ValueOrFunctionKeys<T>> | Observable<T>) : ValueOrFunction<T>;
1
+ import { N as NodeInfo, O as Observable, T as TrackingType, G as GetOptions, C as Change, R as RecursiveValueOrFunction, a as ObservableEvent, S as Selector, b as ObserveEvent, c as ObservableParam, d as OpaqueObject, e as TypeAtPath, L as LinkedOptions, f as Linked, g as ObservablePrimitive, h as ObserveOptions, i as ObserveEventCallback, j as ObservableSyncState, k as ListenerParams, l as TrackingNode, m as clone, n as ensureNodeValue, o as findIDKey, p as getNode, q as getNodeValue, r as getPathType, U as UpdateFn, s as safeParse, t as safeStringify, u as setNodeValue, v as TrackingState } from './observableInterfaces-CZR3_8mM.mjs';
2
+ export { A as ArrayValue, J as ChildNodeInfo, B as ClassConstructor, Q as GetMode, a1 as ImmutableObservableBase, x as ListenerFn, H as NodeListener, F as NotPrimitive, a0 as ObservableBoolean, D as ObservableListenerDispose, a2 as ObservableObject, $ as ObservableObjectFns, E as ObservableRoot, Y as ObservableState, X as ObservableSyncStateBase, z as ObservableValue, P as Primitive, y as RecordValue, _ as RemoveObservables, Z as RetryOptions, I as RootNodeInfo, K as SetParams, V as UpdateFnParams, W as WaitForSet, M as WaitForSetFnParams, w as isObservable } from './observableInterfaces-CZR3_8mM.mjs';
95
3
 
96
- declare const symbolOpaque: unique symbol;
97
- declare function getPathType(value: any): TypeAtPath;
98
- declare function safeStringify(value: any): string;
99
- declare function safeParse(value: any): any;
100
- declare function clone<T>(value: T): any;
101
- declare function isObservable(value$: any): value$ is Observable;
102
- declare function getNode(value$: ObservableParam): NodeValue;
103
- declare function setNodeValue(node: NodeValue, newValue: any): {
104
- prevValue: any;
105
- newValue: any;
106
- };
107
- declare function getNodeValue(node: NodeValue): any;
108
- declare function ensureNodeValue(node: NodeValue): any;
109
- declare function findIDKey(obj: unknown | undefined, node: NodeValue): string | ((value: any) => string) | undefined;
110
-
111
- type TrackingType = undefined | true | symbol;
112
- interface GetOptions {
113
- shallow: boolean;
114
- }
115
- type OpaqueObject<T> = T & {
116
- [symbolOpaque]: true;
117
- };
118
- interface ListenerParams<T = any> {
119
- value: T;
120
- getPrevious: () => T;
121
- changes: Change[];
122
- remote: boolean;
123
- }
124
- type ListenerFn<T = any> = (params: ListenerParams<T>) => void;
125
- interface ObservableEvent {
126
- fire(): void;
127
- on(cb?: () => void): ObservableListenerDispose;
128
- get(): void;
129
- }
130
- type TypeAtPath = 'object' | 'array' | 'map' | 'set';
131
- interface Change {
132
- path: string[];
133
- pathTypes: TypeAtPath[];
134
- valueAtPath: any;
135
- prevAtPath: any;
136
- }
137
- type RecordValue<T> = T extends Record<string, infer t> ? t : never;
138
- type ArrayValue<T> = T extends Array<infer t> ? t : never;
139
- type ObservableValue<T> = T extends Observable<infer t> ? t : never;
140
- type Selector<T> = ObservableParam<T> | ObservableEvent | (() => T) | T;
141
- type ClassConstructor<I, Args extends any[] = any[]> = new (...args: Args) => I;
142
- type ObservableListenerDispose = () => void;
143
- interface ObservableRoot {
144
- _: any;
145
- set?: (value: any) => void;
146
- }
147
- type Primitive = boolean | string | number | Date;
148
- type NotPrimitive<T> = T extends Primitive ? never : T;
149
- interface NodeValueListener {
150
- track: TrackingType;
151
- noArgs?: boolean;
152
- listener: ListenerFn;
153
- }
154
- interface TrackingState {
155
- nodes?: Map<NodeValue, TrackingNode>;
156
- traceListeners?: (nodes: Map<NodeValue, TrackingNode>) => void;
157
- traceUpdates?: (fn: Function) => Function;
158
- }
159
- interface BaseNodeValue {
160
- children?: Map<string, ChildNodeValue>;
161
- proxy?: object;
162
- root: ObservableRoot;
163
- listeners?: Set<NodeValueListener>;
164
- listenersImmediate?: Set<NodeValueListener>;
165
- isEvent?: boolean;
166
- linkedToNode?: NodeValue;
167
- linkedToNodeDispose?: () => void;
168
- activatedObserveDispose?: () => void;
169
- linkedFromNodes?: Set<NodeValue>;
170
- isSetting?: number;
171
- isAssigning?: number;
172
- isComputing?: boolean;
173
- parentOther?: NodeValue;
174
- functions?: Map<string, Function | Observable<any>>;
175
- lazy?: boolean;
176
- lazyFn?: Function;
177
- needsExtract?: boolean;
178
- numListenersRecursive: number;
179
- state?: Observable<ObservableSyncState>;
180
- activated?: boolean;
181
- activationState?: LinkedOptions & {
182
- onError?: () => void;
183
- persistedRetry?: boolean;
184
- };
185
- dirtyFn?: () => void;
186
- dirtyChildren?: Set<NodeValue>;
187
- }
188
- interface RootNodeValue extends BaseNodeValue {
189
- parent?: undefined;
190
- key?: undefined;
191
- }
192
- interface ChildNodeValue extends BaseNodeValue {
193
- parent: NodeValue;
194
- key: string;
195
- }
196
- type NodeValue = RootNodeValue | ChildNodeValue;
197
- interface TrackingNode {
198
- node: NodeValue;
199
- track: TrackingType;
200
- num: number;
201
- }
202
- interface ObserveEvent<T> {
203
- num: number;
204
- previous?: T | undefined;
205
- cancel?: boolean;
206
- onCleanup?: () => void;
207
- }
208
- interface ObserveEventCallback<T> {
209
- num: number;
210
- previous?: T | undefined;
211
- value?: T;
212
- cancel: boolean;
213
- nodes: Map<NodeValue, TrackingNode> | undefined;
214
- refresh: () => void;
215
- onCleanup?: () => void;
216
- onCleanupReaction?: () => void;
217
- }
218
- type SetParams<T> = ListenerParams<T extends Promise<infer t> ? t : T>;
219
- interface LinkedOptions<T = any> {
220
- get?: () => Promise<T> | T;
221
- set?: (params: SetParams<T>) => void | Promise<any>;
222
- waitFor?: Selector<any>;
223
- waitForSet?: ((params: WaitForSetFnParams<T>) => any) | Promise<any> | ObservableParam<any> | ObservableEvent;
224
- initial?: (() => T) | T;
225
- activate?: 'auto' | 'lazy';
226
- }
227
- interface WaitForSetFnParams<T = any> {
228
- value: T;
229
- changes: Change[];
230
- }
231
- type GetMode = 'set' | 'assign' | 'merge' | 'append' | 'prepend';
232
- interface UpdateFnParams {
233
- value: unknown;
234
- mode?: GetMode;
235
- lastSync?: number | undefined;
236
- }
237
- type UpdateFn = (params: UpdateFnParams) => void;
238
- type Linked<T> = T;
239
- interface ObserveOptions {
240
- immediate?: boolean;
241
- }
242
- interface ObservableSyncStateBase {
243
- isPersistLoaded: boolean;
244
- isPersistEnabled: boolean;
245
- isSyncEnabled: boolean;
246
- lastSync?: number;
247
- syncCount?: number;
248
- clearPersist: () => Promise<void>;
249
- sync: () => Promise<void>;
250
- getPendingChanges: () => Record<string, {
251
- p: any;
252
- v?: any;
253
- }> | undefined;
254
- }
255
- interface ObservableState {
256
- isLoaded: boolean;
257
- error?: Error;
258
- }
259
- type ObservableSyncState = ObservableState & ObservableSyncStateBase;
260
- interface RetryOptions {
261
- infinite?: boolean;
262
- times?: number;
263
- delay?: number;
264
- backoff?: 'constant' | 'exponential';
265
- maxDelay?: number;
266
- }
4
+ declare function getProxy(node: NodeInfo, p?: string, asFunction?: Function): Observable;
5
+ declare function set(node: NodeInfo, newValue?: any): void;
6
+ declare function get(node: NodeInfo, options?: TrackingType | GetOptions): any;
7
+ declare function peek(node: NodeInfo): any;
8
+ declare function isObserved(node: NodeInfo): boolean;
9
+ declare function shouldIgnoreUnobserved(node: NodeInfo, refreshFn: () => void): true | undefined;
267
10
 
268
11
  declare function createPreviousHandler(value: any, changes: Change[]): () => any;
269
12
  declare function batch(fn: () => void): void;
@@ -273,18 +16,6 @@ declare function endBatch(force?: boolean): void;
273
16
  declare function computed<T>(get: () => RecursiveValueOrFunction<T>): Observable<T>;
274
17
  declare function computed<T, T2 = T>(get: (() => RecursiveValueOrFunction<T>) | RecursiveValueOrFunction<T>, set: (value: T2) => void): Observable<T>;
275
18
 
276
- declare function linked<T>(params: LinkedOptions<T> | (() => T), options?: LinkedOptions<T>): Linked<T>;
277
-
278
- declare function configureLegendState({ observableFunctions, observableProperties, jsonReplacer, jsonReviver, }: {
279
- observableFunctions?: Record<string, (node: NodeValue, ...args: any[]) => any>;
280
- observableProperties?: Record<string, {
281
- get: (node: NodeValue) => any;
282
- set: (node: NodeValue, value: any) => any;
283
- }>;
284
- jsonReplacer?: (this: any, key: string, value: any) => any;
285
- jsonReviver?: (this: any, key: string, value: any) => any;
286
- }): void;
287
-
288
19
  declare function event(): ObservableEvent;
289
20
 
290
21
  declare function computeSelector<T>(selector: Selector<T>, e?: ObserveEvent<T>, retainObservable?: boolean): T;
@@ -292,8 +23,7 @@ declare function getObservableIndex(value$: ObservableParam): number;
292
23
  declare function opaqueObject<T extends object>(value: T): OpaqueObject<T>;
293
24
  declare function getValueAtPath(obj: Record<string, any>, path: string[]): any;
294
25
  declare function setAtPath<T extends object>(obj: T, path: string[], pathTypes: TypeAtPath[], value: any, mode?: 'set' | 'merge', fullObj?: T, restore?: (path: string[], value: any) => void): T;
295
- declare function setInObservableAtPath(value$: ObservableParam, path: string[], pathTypes: TypeAtPath[], value: any, mode: 'assign' | 'set' | 'merge'): void;
296
- declare function mergeIntoObservable<T extends ObservableParam<Record<string, any>> | object>(target: T, ...sources: any[]): T;
26
+ declare function mergeIntoObservable<T extends ObservableParam<any>>(target: T, ...sources: any[]): T;
297
27
  declare function constructObjectWithPath(path: string[], pathTypes: TypeAtPath[], value: any): object;
298
28
  declare function deconstructObjectWithPath(path: string[], pathTypes: TypeAtPath[], value: any): object;
299
29
  declare function isObservableValueReady(value: any): boolean;
@@ -301,6 +31,7 @@ declare function setSilently(value$: ObservableParam, newValue: any): any;
301
31
  declare function initializePathType(pathType: TypeAtPath): any;
302
32
  declare function applyChange<T extends object>(value: T, change: Change, applyPrevious?: boolean): T;
303
33
  declare function applyChanges<T extends object>(value: T, changes: Change[], applyPrevious?: boolean): T;
34
+ declare function deepMerge<T>(target: T, ...sources: any[]): T;
304
35
 
305
36
  declare const hasOwnProperty: (v: PropertyKey) => boolean;
306
37
  declare function isArray(obj: unknown): obj is Array<any>;
@@ -317,12 +48,13 @@ declare function isNumber(obj: unknown): obj is number;
317
48
  declare function isEmpty(obj: object): boolean;
318
49
  declare function isNullOrUndefined(value: any): value is undefined | null;
319
50
 
51
+ declare function linked<T>(params: LinkedOptions<T> | (() => T), options?: LinkedOptions<T>): Linked<T>;
52
+
320
53
  declare function observable<T>(): Observable<T | undefined>;
321
54
  declare function observable<T>(value: Promise<RecursiveValueOrFunction<T>> | (() => RecursiveValueOrFunction<T>) | RecursiveValueOrFunction<T>): Observable<T>;
322
55
  declare function observable<T>(value: T): Observable<T>;
323
56
  declare function observablePrimitive<T>(value: Promise<T>): ObservablePrimitive<T>;
324
57
  declare function observablePrimitive<T>(value?: T): ObservablePrimitive<T>;
325
- declare function syncState(obs: ObservableParam): Observable<ObservableSyncState>;
326
58
 
327
59
  declare function observe<T>(run: (e: ObserveEvent<T>) => T | void, options?: ObserveOptions): () => void;
328
60
  declare function observe<T>(selector: Selector<T> | ((e: ObserveEvent<T>) => any), reaction?: (e: ObserveEventCallback<T>) => any, options?: ObserveOptions): () => void;
@@ -332,37 +64,30 @@ declare function proxy<T extends Record<string, any>>(get: <K extends keyof T>(k
332
64
  declare function proxy<T>(get: (key: string) => ObservableParam<T>): Observable<Record<string, T>>;
333
65
  declare function proxy<T>(get: (key: string) => T): Observable<Record<string, T>>;
334
66
 
67
+ declare function syncState(obs: ObservableParam): Observable<ObservableSyncState>;
68
+
335
69
  declare function trackSelector<T>(selector: Selector<T>, update: (params: ListenerParams) => void, observeEvent?: ObserveEvent<T>, observeOptions?: ObserveOptions, createResubscribe?: boolean): {
336
- nodes: Map<NodeValue, TrackingNode> | undefined;
70
+ nodes: Map<NodeInfo, TrackingNode> | undefined;
337
71
  value: T;
338
72
  dispose: (() => void) | undefined;
339
73
  resubscribe: (() => () => void) | undefined;
340
74
  };
341
75
 
342
76
  declare function when<T, T2>(predicate: Promise<T>, effect: (value: T) => T2): Promise<T2>;
77
+ declare function when<T, T2>(predicate: Selector<T>[], effect: (value: T[]) => T2): Promise<T2>;
343
78
  declare function when<T, T2>(predicate: Selector<T>, effect: (value: T) => T2): Promise<T2>;
79
+ declare function when<T>(predicate: Selector<T>[]): Promise<T[]>;
344
80
  declare function when<T>(predicate: Selector<T>): Promise<T>;
345
81
  declare function whenReady<T, T2>(predicate: Promise<T>, effect: (value: T) => T2): Promise<T2>;
82
+ declare function whenReady<T, T2>(predicate: Selector<T>[], effect: (value: T[]) => T2): Promise<T2[]>;
346
83
  declare function whenReady<T, T2>(predicate: Selector<T>, effect: (value: T) => T2): Promise<T2>;
84
+ declare function whenReady<T>(predicate: Selector<T>[]): Promise<T[]>;
347
85
  declare function whenReady<T>(predicate: Selector<T>): Promise<T>;
348
86
 
349
- declare function getProxy(node: NodeValue, p?: string, asFunction?: Function): Observable;
350
- declare function set(node: NodeValue, newValue?: any): void;
351
- declare function get(node: NodeValue, options?: TrackingType | GetOptions): any;
352
- declare function peek(node: NodeValue): any;
353
- declare function isObserved(node: NodeValue): boolean;
354
- declare function shouldIgnoreUnobserved(node: NodeValue, refreshFn: () => void): true | undefined;
355
-
356
- declare function runWithRetry<T>(node: NodeValue, state: {
357
- attemptNum: number;
358
- retry: RetryOptions | undefined;
359
- }, fn: (e: {
360
- cancel?: boolean;
361
- }) => T | Promise<T>): T | Promise<T>;
362
-
363
87
  declare const internal: {
364
88
  createPreviousHandler: typeof createPreviousHandler;
365
89
  clone: typeof clone;
90
+ deepMerge: typeof deepMerge;
366
91
  ensureNodeValue: typeof ensureNodeValue;
367
92
  findIDKey: typeof findIDKey;
368
93
  get: typeof get;
@@ -373,22 +98,20 @@ declare const internal: {
373
98
  getValueAtPath: typeof getValueAtPath;
374
99
  globalState: {
375
100
  isLoadingLocal: boolean;
376
- isMerging: boolean;
377
101
  isLoadingRemote: boolean;
378
- activateSyncedNode: (node: NodeValue, newValue: any) => {
102
+ activateSyncedNode: (node: NodeInfo, newValue: any) => {
379
103
  update: UpdateFn;
380
104
  value: any;
381
105
  };
382
- pendingNodes: Map<NodeValue, () => void>;
383
- dirtyNodes: Set<NodeValue>;
106
+ pendingNodes: Map<NodeInfo, () => void>;
107
+ dirtyNodes: Set<NodeInfo>;
384
108
  replacer: ((this: any, key: string, value: any) => any) | undefined;
385
109
  reviver: ((this: any, key: string, value: any) => any) | undefined;
386
110
  };
387
111
  initializePathType: typeof initializePathType;
388
- observableFns: Map<string, (node: NodeValue, ...args: any[]) => any>;
112
+ observableFns: Map<string, (node: NodeInfo, ...args: any[]) => any>;
389
113
  optimized: symbol;
390
114
  peek: typeof peek;
391
- runWithRetry: typeof runWithRetry;
392
115
  safeParse: typeof safeParse;
393
116
  safeStringify: typeof safeStringify;
394
117
  set: typeof set;
@@ -401,4 +124,4 @@ declare const internal: {
401
124
  };
402
125
  };
403
126
 
404
- export { type ArrayValue, type Change, type ChildNodeValue, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeValue, type NodeValueListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, type ObservableListenerDispose, type ObservableObject, type ObservableParam, type ObservablePrimitive, type ObservableRoot, type ObservableState, type ObservableSyncState, type ObservableSyncStateBase, type ObservableValue, type ObserveEvent, type ObserveEventCallback, type ObserveOptions, type OpaqueObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeValue, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, configureLegendState, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPrimitive, isPromise, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setInObservableAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
127
+ export { Change, GetOptions, Linked, LinkedOptions, ListenerParams, NodeInfo, Observable, ObservableEvent, ObservableParam, ObservablePrimitive, ObservableSyncState, ObserveEvent, ObserveEventCallback, ObserveOptions, OpaqueObject, RecursiveValueOrFunction, Selector, TrackingNode, TrackingState, TrackingType, TypeAtPath, UpdateFn, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservableValueReady, isObserved, isPrimitive, isPromise, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };