@legendapp/state 3.0.0-alpha.29 → 3.0.0-alpha.30
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/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 +2052 -0
- package/config.mjs +2050 -0
- package/index.d.mts +5 -302
- package/index.d.ts +5 -302
- package/index.js +27 -142
- package/index.mjs +28 -141
- package/observableInterfaces-Dilj6F92.d.mts +282 -0
- package/observableInterfaces-Dilj6F92.d.ts +282 -0
- package/package.json +6 -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 +15 -5
- package/persist-plugins/indexeddb.mjs +15 -6
- 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 +1 -0
- package/react.d.ts +1 -0
- package/react.js +2 -2
- package/react.mjs +2 -2
- package/sync-plugins/crud.d.mts +1 -1
- package/sync-plugins/crud.d.ts +1 -1
- package/sync-plugins/fetch.js +12 -8
- package/sync-plugins/fetch.mjs +13 -9
- package/sync-plugins/keel.d.mts +2 -2
- package/sync-plugins/keel.d.ts +2 -2
- package/sync-plugins/keel.js +6 -6
- package/sync-plugins/keel.mjs +6 -6
- package/sync.d.mts +37 -19
- package/sync.d.ts +37 -19
- package/sync.js +143 -41
- package/sync.mjs +151 -50
package/index.d.ts
CHANGED
|
@@ -1,282 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 : 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: infer TKey extends string | number) => infer TRet ? Record<TKey, 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>> = ReturnType<T['get']>;
|
|
20
|
-
type ObservableMap<T extends Map<any, any> | WeakMap<any, any>> = Omit<T, 'get' | 'size' | 'set'> & Omit<ObservablePrimitive<T>, 'get' | 'size'> & {
|
|
21
|
-
get(key: Parameters<T['get']>[0]): Observable<Parameters<T['set']>[1]>;
|
|
22
|
-
get(): T;
|
|
23
|
-
size: number;
|
|
24
|
-
set(key: MapKey<T>, value: MapValue<T>): Observable<T>;
|
|
25
|
-
assign(value: Record<MapKey<T>, MapValue<T>> | Map<MapKey<T>, MapValue<T>> | WeakMap<MapKey<T>, MapValue<T>>): Observable<T>;
|
|
26
|
-
};
|
|
27
|
-
type SetValue<T extends Set<any> | WeakSet<any>> = Parameters<T['has']>[0];
|
|
28
|
-
type ObservableSet<T extends Set<any> | WeakSet<any>> = Omit<T, 'size' | 'add'> & Omit<ObservablePrimitive<T>, 'size'> & {
|
|
29
|
-
size: number;
|
|
30
|
-
add: (value: SetValue<T>) => Observable<T>;
|
|
31
|
-
};
|
|
32
|
-
interface ObservableBoolean extends ObservablePrimitive<boolean> {
|
|
33
|
-
toggle(): void;
|
|
34
|
-
}
|
|
35
|
-
interface ObservablePrimitive<T> extends ImmutableObservableBase<T>, MutableObservableBase<T> {
|
|
36
|
-
}
|
|
37
|
-
type ObservableAny = Partial<ObservableObjectFns<any>> & ObservablePrimitive<any> & Record<string, any>;
|
|
38
|
-
interface ImmutableObservableSimple<T> {
|
|
39
|
-
peek(): T;
|
|
40
|
-
get(trackingType?: any): any;
|
|
41
|
-
onChange(cb: ListenerFn<any>, options?: any): () => void;
|
|
42
|
-
}
|
|
43
|
-
interface ImmutableObservableBase<T> extends ImmutableObservableSimple<T> {
|
|
44
|
-
peek(): RemoveObservables<T>;
|
|
45
|
-
peek(): T;
|
|
46
|
-
get(trackingType?: TrackingType | GetOptions): RemoveObservables<T>;
|
|
47
|
-
onChange(cb: ListenerFn<T>, options?: {
|
|
48
|
-
trackingType?: TrackingType;
|
|
49
|
-
initial?: boolean;
|
|
50
|
-
immediate?: boolean;
|
|
51
|
-
noArgs?: boolean;
|
|
52
|
-
}): () => void;
|
|
53
|
-
}
|
|
54
|
-
interface MutableObservableSimple {
|
|
55
|
-
set(value: any): void;
|
|
56
|
-
delete(): void;
|
|
57
|
-
}
|
|
58
|
-
interface MutableObservableBase<T> extends MutableObservableSimple {
|
|
59
|
-
set(value: (prev: RemoveObservables<T>) => RemoveObservables<T>): void;
|
|
60
|
-
set(value: RecursiveValueOrFunction<T>): void;
|
|
61
|
-
set(value: Promise<RemoveObservables<T>>): void;
|
|
62
|
-
set(value: RemoveObservables<T>): void;
|
|
63
|
-
set(value: Observable<RemoveObservables<T>>): void;
|
|
64
|
-
delete(): void;
|
|
65
|
-
}
|
|
66
|
-
type UndefinedIf<T, U> = U extends true ? T | undefined : T;
|
|
67
|
-
type IsNullable<T> = undefined extends T ? true : null extends T ? true : false;
|
|
68
|
-
type NonObservable = Function | Observable;
|
|
69
|
-
type NonObservableKeys<T> = {
|
|
70
|
-
[K in keyof T]-?: IsStrictAny<T[K]> extends true ? never : T[K] extends undefined | null ? never : NonNullable<T[K]> extends NonObservable ? K : never;
|
|
71
|
-
}[keyof T];
|
|
72
|
-
type ObservableProps<T> = NonObservableKeys<NonNullable<T>> extends never ? T : RestoreNullability<T, Omit<NonNullable<T>, NonObservableKeys<NonNullable<T>>>>;
|
|
73
|
-
type NonObservableProps<T> = RestoreNullability<T, NullablePropsIf<Pick<NonNullable<T>, NonObservableKeys<NonNullable<T>>>, IsNullable<T>>>;
|
|
74
|
-
type NullablePropsIf<T, U> = {
|
|
75
|
-
[K in keyof T]: UndefinedIf<T[K], U>;
|
|
76
|
-
};
|
|
77
|
-
type RestoreNullability<Source, Target> = IsNullable<Source> extends true ? Target | Extract<Source, null | undefined> : Target;
|
|
78
|
-
type ObservableChildren<T, Nullable = IsNullable<T>> = {
|
|
79
|
-
[K in keyof T]-?: Observable<UndefinedIf<T[K], Nullable>>;
|
|
80
|
-
};
|
|
81
|
-
type ObservableFunctionChildren<T> = {
|
|
82
|
-
[K in keyof T]-?: T[K] extends Observable ? T[K] : T[K] extends (key: infer Key extends string | number) => Promise<infer t> | infer t ? IsLookupFunction<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]>;
|
|
83
|
-
};
|
|
84
|
-
type IsStrictAny<T> = 0 extends 1 & T ? true : false;
|
|
85
|
-
type ObservableObject<T> = ObservableObjectFunctions<ObservableProps<T> & NonObservableProps<T>> & ObservableChildren<ObservableProps<T>> & ObservableFunctionChildren<NonObservableProps<T>>;
|
|
86
|
-
type ObservableFunction<T> = T extends () => infer t ? t | (() => t) : T;
|
|
87
|
-
type IsLookupFunction<T> = T extends (...args: infer P) => any ? P extends {
|
|
88
|
-
length: 1;
|
|
89
|
-
} ? P[0] extends string | ObservablePrimitive<string> | number | ObservablePrimitive<number> ? true : false : false : false;
|
|
90
|
-
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>] ? IsLookupFunction<T> extends true ? Observable<Record<K, t>> : t : IsLookupFunction<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> & {};
|
|
91
|
-
type Observable<T = any> = ObservableNode<T> & {};
|
|
92
|
-
type ObservableParam<T = any> = ImmutableObservableSimple<T> & MutableObservableSimple;
|
|
93
|
-
type FixExpanded<T> = [T] extends [boolean] ? boolean : T;
|
|
94
|
-
type ValueOrFunction<T> = [T] extends [Function] ? T : T | ImmutableObservableBase<FixExpanded<T> | T> | Promise<FixExpanded<T> | T> | (() => FixExpanded<T> | T | Promise<FixExpanded<T> | T> | ImmutableObservableBase<FixExpanded<T> | T>);
|
|
95
|
-
type ValueOrFunctionKeys<T> = {
|
|
96
|
-
[K in keyof T]: RecursiveValueOrFunction<T[K]>;
|
|
97
|
-
};
|
|
98
|
-
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>;
|
|
99
|
-
|
|
100
|
-
declare const symbolOpaque: unique symbol;
|
|
101
|
-
declare function getPathType(value: any): TypeAtPath;
|
|
102
|
-
declare function safeStringify(value: any): any;
|
|
103
|
-
declare function safeParse(value: any): any;
|
|
104
|
-
declare function clone<T>(value: T): any;
|
|
105
|
-
declare function isObservable(value$: any): value$ is Observable;
|
|
106
|
-
declare function getNode(value$: ObservableParam): NodeInfo;
|
|
107
|
-
declare function setNodeValue(node: NodeInfo, newValue: any): {
|
|
108
|
-
prevValue: any;
|
|
109
|
-
newValue: any;
|
|
110
|
-
};
|
|
111
|
-
declare function getNodeValue(node: NodeInfo): any;
|
|
112
|
-
declare function ensureNodeValue(node: NodeInfo): any;
|
|
113
|
-
declare function findIDKey(obj: unknown | undefined, node: NodeInfo): string | ((value: any) => string) | undefined;
|
|
114
|
-
|
|
115
|
-
type TrackingType = undefined | true | symbol;
|
|
116
|
-
interface GetOptions {
|
|
117
|
-
shallow: boolean;
|
|
118
|
-
}
|
|
119
|
-
type OpaqueObject<T> = T & {
|
|
120
|
-
[symbolOpaque]: true;
|
|
121
|
-
};
|
|
122
|
-
interface ListenerParams<T = any> {
|
|
123
|
-
value: T;
|
|
124
|
-
getPrevious: () => T;
|
|
125
|
-
changes: Change[];
|
|
126
|
-
isFromSync: boolean;
|
|
127
|
-
isFromPersist: boolean;
|
|
128
|
-
}
|
|
129
|
-
type ListenerFn<T = any> = (params: ListenerParams<T>) => void;
|
|
130
|
-
interface ObservableEvent {
|
|
131
|
-
fire(): void;
|
|
132
|
-
on(cb?: () => void): ObservableListenerDispose;
|
|
133
|
-
get(): void;
|
|
134
|
-
}
|
|
135
|
-
type TypeAtPath = 'object' | 'array' | 'map' | 'set';
|
|
136
|
-
interface Change {
|
|
137
|
-
path: string[];
|
|
138
|
-
pathTypes: TypeAtPath[];
|
|
139
|
-
valueAtPath: any;
|
|
140
|
-
prevAtPath: any;
|
|
141
|
-
}
|
|
142
|
-
type RecordValue<T> = T extends Record<string, infer t> ? t : never;
|
|
143
|
-
type ArrayValue<T> = T extends Array<infer t> ? t : never;
|
|
144
|
-
type ObservableValue<T> = T extends Observable<infer t> ? t : never;
|
|
145
|
-
type Selector<T> = ObservableParam<T> | ObservableEvent | (() => T) | T;
|
|
146
|
-
type ClassConstructor<I, Args extends any[] = any[]> = new (...args: Args) => I;
|
|
147
|
-
type ObservableListenerDispose = () => void;
|
|
148
|
-
interface ObservableRoot {
|
|
149
|
-
_: any;
|
|
150
|
-
set?: (value: any) => void;
|
|
151
|
-
}
|
|
152
|
-
type Primitive = boolean | string | number | Date;
|
|
153
|
-
type NotPrimitive<T> = T extends Primitive ? never : T;
|
|
154
|
-
interface NodeListener {
|
|
155
|
-
track: TrackingType;
|
|
156
|
-
noArgs?: boolean;
|
|
157
|
-
listener: ListenerFn;
|
|
158
|
-
}
|
|
159
|
-
interface TrackingState {
|
|
160
|
-
nodes?: Map<NodeInfo, TrackingNode>;
|
|
161
|
-
traceListeners?: (nodes: Map<NodeInfo, TrackingNode>) => void;
|
|
162
|
-
traceUpdates?: (fn: Function) => Function;
|
|
163
|
-
}
|
|
164
|
-
interface BaseNodeInfo {
|
|
165
|
-
children?: Map<string, ChildNodeInfo>;
|
|
166
|
-
proxy?: object;
|
|
167
|
-
root: ObservableRoot;
|
|
168
|
-
listeners?: Set<NodeListener>;
|
|
169
|
-
listenersImmediate?: Set<NodeListener>;
|
|
170
|
-
isEvent?: boolean;
|
|
171
|
-
linkedToNode?: NodeInfo;
|
|
172
|
-
linkedToNodeDispose?: () => void;
|
|
173
|
-
activatedObserveDispose?: () => void;
|
|
174
|
-
linkedFromNodes?: Set<NodeInfo>;
|
|
175
|
-
isSetting?: number;
|
|
176
|
-
isAssigning?: number;
|
|
177
|
-
isComputing?: boolean;
|
|
178
|
-
parentOther?: NodeInfo;
|
|
179
|
-
functions?: Map<string, Function | Observable<any>>;
|
|
180
|
-
lazy?: boolean;
|
|
181
|
-
lazyFn?: Function;
|
|
182
|
-
needsExtract?: boolean;
|
|
183
|
-
numListenersRecursive: number;
|
|
184
|
-
state?: Observable<ObservableSyncState>;
|
|
185
|
-
activated?: boolean;
|
|
186
|
-
recursivelyAutoActivated?: boolean;
|
|
187
|
-
activationState?: LinkedOptions & {
|
|
188
|
-
onError?: () => void;
|
|
189
|
-
onChange: (params: UpdateFnParams) => void | Promise<void>;
|
|
190
|
-
};
|
|
191
|
-
dirtyFn?: () => void;
|
|
192
|
-
dirtyChildren?: Set<NodeInfo>;
|
|
193
|
-
numGets?: number;
|
|
194
|
-
getNumResolved?: number;
|
|
195
|
-
}
|
|
196
|
-
interface RootNodeInfo extends BaseNodeInfo {
|
|
197
|
-
parent?: undefined;
|
|
198
|
-
key?: undefined;
|
|
199
|
-
}
|
|
200
|
-
interface ChildNodeInfo extends BaseNodeInfo {
|
|
201
|
-
parent: NodeInfo;
|
|
202
|
-
key: string;
|
|
203
|
-
}
|
|
204
|
-
type NodeInfo = RootNodeInfo | ChildNodeInfo;
|
|
205
|
-
interface TrackingNode {
|
|
206
|
-
node: NodeInfo;
|
|
207
|
-
track: TrackingType;
|
|
208
|
-
num: number;
|
|
209
|
-
}
|
|
210
|
-
interface ObserveEvent<T> {
|
|
211
|
-
num: number;
|
|
212
|
-
previous?: T | undefined;
|
|
213
|
-
cancel?: boolean;
|
|
214
|
-
onCleanup?: () => void;
|
|
215
|
-
}
|
|
216
|
-
interface ObserveEventCallback<T> {
|
|
217
|
-
num: number;
|
|
218
|
-
previous?: T | undefined;
|
|
219
|
-
value?: T;
|
|
220
|
-
cancel: boolean;
|
|
221
|
-
nodes: Map<NodeInfo, TrackingNode> | undefined;
|
|
222
|
-
refresh: () => void;
|
|
223
|
-
onCleanup?: () => void;
|
|
224
|
-
onCleanupReaction?: () => void;
|
|
225
|
-
}
|
|
226
|
-
type SetParams<T> = ListenerParams<T extends Promise<infer t> ? t : T>;
|
|
227
|
-
interface LinkedOptions<T = any> {
|
|
228
|
-
get?: () => Promise<T> | T;
|
|
229
|
-
set?: (params: SetParams<T>) => void | Promise<any>;
|
|
230
|
-
waitFor?: Selector<any>;
|
|
231
|
-
waitForSet?: ((params: WaitForSetFnParams<T>) => any) | Promise<any> | ObservableParam<any> | ObservableEvent;
|
|
232
|
-
initial?: (() => T) | T;
|
|
233
|
-
activate?: 'auto' | 'lazy';
|
|
234
|
-
}
|
|
235
|
-
interface WaitForSetFnParams<T = any> {
|
|
236
|
-
value: T;
|
|
237
|
-
changes: Change[];
|
|
238
|
-
}
|
|
239
|
-
type GetMode = 'set' | 'assign' | 'merge' | 'append' | 'prepend';
|
|
240
|
-
interface UpdateFnParams<T = any> {
|
|
241
|
-
value: T;
|
|
242
|
-
mode?: GetMode;
|
|
243
|
-
lastSync?: number | undefined;
|
|
244
|
-
}
|
|
245
|
-
type UpdateFn<T = any> = (params: UpdateFnParams<T>) => void;
|
|
246
|
-
type Linked<T> = T;
|
|
247
|
-
interface ObserveOptions {
|
|
248
|
-
immediate?: boolean;
|
|
249
|
-
}
|
|
250
|
-
interface ObservableSyncStateBase {
|
|
251
|
-
isPersistLoaded: boolean;
|
|
252
|
-
isPersistEnabled: boolean;
|
|
253
|
-
isSyncEnabled: boolean;
|
|
254
|
-
lastSync?: number;
|
|
255
|
-
syncCount?: number;
|
|
256
|
-
isGetting?: boolean;
|
|
257
|
-
numPendingGets?: number;
|
|
258
|
-
numPendingSets?: number;
|
|
259
|
-
isSetting?: boolean;
|
|
260
|
-
clearPersist: () => Promise<void>;
|
|
261
|
-
sync: () => Promise<void>;
|
|
262
|
-
getPendingChanges: () => Record<string, {
|
|
263
|
-
p: any;
|
|
264
|
-
v?: any;
|
|
265
|
-
}> | undefined;
|
|
266
|
-
numPendingRemoteLoads?: number;
|
|
267
|
-
}
|
|
268
|
-
interface ObservableState {
|
|
269
|
-
isLoaded: boolean;
|
|
270
|
-
error?: Error;
|
|
271
|
-
}
|
|
272
|
-
type ObservableSyncState = ObservableState & ObservableSyncStateBase;
|
|
273
|
-
interface RetryOptions {
|
|
274
|
-
infinite?: boolean;
|
|
275
|
-
times?: number;
|
|
276
|
-
delay?: number;
|
|
277
|
-
backoff?: 'constant' | 'exponential';
|
|
278
|
-
maxDelay?: number;
|
|
279
|
-
}
|
|
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-Dilj6F92.js';
|
|
2
|
+
export { A as ArrayValue, J as ChildNodeInfo, B as ClassConstructor, M as GetMode, a0 as ImmutableObservableBase, x as ListenerFn, H as NodeListener, F as NotPrimitive, $ as ObservableBoolean, D as ObservableListenerDispose, a1 as ObservableObject, _ as ObservableObjectFns, E as ObservableRoot, X as ObservableState, V as ObservableSyncStateBase, z as ObservableValue, P as Primitive, y as RecordValue, Z as RemoveObservables, Y as RetryOptions, I as RootNodeInfo, K as SetParams, Q as UpdateFnParams, W as WaitForSetFnParams, w as isObservable } from './observableInterfaces-Dilj6F92.js';
|
|
280
3
|
|
|
281
4
|
declare function getProxy(node: NodeInfo, p?: string, asFunction?: Function): Observable;
|
|
282
5
|
declare function set(node: NodeInfo, newValue?: any): void;
|
|
@@ -293,16 +16,6 @@ declare function endBatch(force?: boolean): void;
|
|
|
293
16
|
declare function computed<T>(get: () => RecursiveValueOrFunction<T>): Observable<T>;
|
|
294
17
|
declare function computed<T, T2 = T>(get: (() => RecursiveValueOrFunction<T>) | RecursiveValueOrFunction<T>, set: (value: T2) => void): Observable<T>;
|
|
295
18
|
|
|
296
|
-
declare function configureLegendState({ observableFunctions, observableProperties, jsonReplacer, jsonReviver, }: {
|
|
297
|
-
observableFunctions?: Record<string, (node: NodeInfo, ...args: any[]) => any>;
|
|
298
|
-
observableProperties?: Record<string, {
|
|
299
|
-
get: (node: NodeInfo) => any;
|
|
300
|
-
set: (node: NodeInfo, value: any) => any;
|
|
301
|
-
}>;
|
|
302
|
-
jsonReplacer?: (this: any, key: string, value: any) => any;
|
|
303
|
-
jsonReviver?: (this: any, key: string, value: any) => any;
|
|
304
|
-
}): void;
|
|
305
|
-
|
|
306
19
|
declare function event(): ObservableEvent;
|
|
307
20
|
|
|
308
21
|
declare function computeSelector<T>(selector: Selector<T>, e?: ObserveEvent<T>, retainObservable?: boolean): T;
|
|
@@ -310,7 +23,6 @@ declare function getObservableIndex(value$: ObservableParam): number;
|
|
|
310
23
|
declare function opaqueObject<T extends object>(value: T): OpaqueObject<T>;
|
|
311
24
|
declare function getValueAtPath(obj: Record<string, any>, path: string[]): any;
|
|
312
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;
|
|
313
|
-
declare function setInObservableAtPath(value$: ObservableParam, path: string[], pathTypes: TypeAtPath[], value: any, mode: 'assign' | 'set' | 'merge'): void;
|
|
314
26
|
declare function mergeIntoObservable<T extends ObservableParam<any>>(target: T, ...sources: any[]): T;
|
|
315
27
|
declare function constructObjectWithPath(path: string[], pathTypes: TypeAtPath[], value: any): object;
|
|
316
28
|
declare function deconstructObjectWithPath(path: string[], pathTypes: TypeAtPath[], value: any): object;
|
|
@@ -368,14 +80,6 @@ declare function whenReady<T, T2>(predicate: Promise<T>, effect: (value: T) => T
|
|
|
368
80
|
declare function whenReady<T, T2>(predicate: Selector<T>, effect: (value: T) => T2): Promise<T2>;
|
|
369
81
|
declare function whenReady<T>(predicate: Selector<T>): Promise<T>;
|
|
370
82
|
|
|
371
|
-
declare function runWithRetry<T>(state: {
|
|
372
|
-
retryNum: number;
|
|
373
|
-
retry: RetryOptions | undefined;
|
|
374
|
-
}, fn: (e: {
|
|
375
|
-
retryNum: number;
|
|
376
|
-
cancelRetry: () => void;
|
|
377
|
-
}) => T | Promise<T>): T | Promise<T>;
|
|
378
|
-
|
|
379
83
|
declare const internal: {
|
|
380
84
|
createPreviousHandler: typeof createPreviousHandler;
|
|
381
85
|
clone: typeof clone;
|
|
@@ -397,14 +101,13 @@ declare const internal: {
|
|
|
397
101
|
};
|
|
398
102
|
pendingNodes: Map<NodeInfo, () => void>;
|
|
399
103
|
dirtyNodes: Set<NodeInfo>;
|
|
400
|
-
replacer:
|
|
401
|
-
reviver:
|
|
104
|
+
replacer: ((this: any, key: string, value: any) => any) | undefined;
|
|
105
|
+
reviver: ((this: any, key: string, value: any) => any) | undefined;
|
|
402
106
|
};
|
|
403
107
|
initializePathType: typeof initializePathType;
|
|
404
108
|
observableFns: Map<string, (node: NodeInfo, ...args: any[]) => any>;
|
|
405
109
|
optimized: symbol;
|
|
406
110
|
peek: typeof peek;
|
|
407
|
-
runWithRetry: typeof runWithRetry;
|
|
408
111
|
safeParse: typeof safeParse;
|
|
409
112
|
safeStringify: typeof safeStringify;
|
|
410
113
|
set: typeof set;
|
|
@@ -417,4 +120,4 @@ declare const internal: {
|
|
|
417
120
|
};
|
|
418
121
|
};
|
|
419
122
|
|
|
420
|
-
export {
|
|
123
|
+
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 };
|
package/index.js
CHANGED
|
@@ -74,13 +74,8 @@ var symbolOpaque = Symbol("opaque");
|
|
|
74
74
|
var optimized = Symbol("optimized");
|
|
75
75
|
var symbolLinked = Symbol("linked");
|
|
76
76
|
var globalState = {
|
|
77
|
-
isLoadingLocal: false,
|
|
78
|
-
isLoadingRemote: false,
|
|
79
|
-
activateSyncedNode: void 0,
|
|
80
77
|
pendingNodes: /* @__PURE__ */ new Map(),
|
|
81
|
-
dirtyNodes: /* @__PURE__ */ new Set()
|
|
82
|
-
replacer: void 0,
|
|
83
|
-
reviver: void 0
|
|
78
|
+
dirtyNodes: /* @__PURE__ */ new Set()
|
|
84
79
|
};
|
|
85
80
|
function isOpaqueObject(value) {
|
|
86
81
|
return value && (value[symbolOpaque] || value["$$typeof"]);
|
|
@@ -294,7 +289,7 @@ function setAtPath(obj, path, pathTypes, value, mode, fullObj, restore) {
|
|
|
294
289
|
return obj;
|
|
295
290
|
} else if (o[p] === void 0 && value === void 0 && i === path.length - 1) {
|
|
296
291
|
return obj;
|
|
297
|
-
} else if (o[p] === void 0 || o[p] === null) {
|
|
292
|
+
} else if (i < path.length - 1 && (o[p] === void 0 || o[p] === null)) {
|
|
298
293
|
const child = initializePathType(pathTypes[i]);
|
|
299
294
|
if (isMap(o)) {
|
|
300
295
|
o.set(p, child);
|
|
@@ -327,27 +322,6 @@ function setAtPath(obj, path, pathTypes, value, mode, fullObj, restore) {
|
|
|
327
322
|
}
|
|
328
323
|
return obj;
|
|
329
324
|
}
|
|
330
|
-
function setInObservableAtPath(value$, path, pathTypes, value, mode) {
|
|
331
|
-
let o = value$;
|
|
332
|
-
let v = value;
|
|
333
|
-
for (let i = 0; i < path.length; i++) {
|
|
334
|
-
const p = path[i];
|
|
335
|
-
if (!o.peek()[p]) {
|
|
336
|
-
o[p].set(initializePathType(pathTypes[i]));
|
|
337
|
-
}
|
|
338
|
-
o = o[p];
|
|
339
|
-
v = v[p];
|
|
340
|
-
}
|
|
341
|
-
if (v === symbolDelete) {
|
|
342
|
-
o.delete();
|
|
343
|
-
} else if (mode === "assign" && o.assign && isObject(o.peek())) {
|
|
344
|
-
o.assign(v);
|
|
345
|
-
} else if (mode === "merge") {
|
|
346
|
-
mergeIntoObservable(o, v);
|
|
347
|
-
} else {
|
|
348
|
-
o.set(v);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
325
|
function mergeIntoObservable(target, ...sources) {
|
|
352
326
|
if (process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") {
|
|
353
327
|
if (!isObservable(target)) {
|
|
@@ -437,12 +411,13 @@ function initializePathType(pathType) {
|
|
|
437
411
|
switch (pathType) {
|
|
438
412
|
case "array":
|
|
439
413
|
return [];
|
|
440
|
-
case "object":
|
|
441
|
-
return {};
|
|
442
414
|
case "map":
|
|
443
415
|
return /* @__PURE__ */ new Map();
|
|
444
416
|
case "set":
|
|
445
417
|
return /* @__PURE__ */ new Set();
|
|
418
|
+
case "object":
|
|
419
|
+
default:
|
|
420
|
+
return {};
|
|
446
421
|
}
|
|
447
422
|
}
|
|
448
423
|
function applyChange(value, change, applyPrevious) {
|
|
@@ -459,20 +434,25 @@ function deepMerge(target, ...sources) {
|
|
|
459
434
|
if (isPrimitive(target)) {
|
|
460
435
|
return sources[sources.length - 1];
|
|
461
436
|
}
|
|
462
|
-
|
|
437
|
+
let result = isArray(target) ? [...target] : { ...target };
|
|
463
438
|
for (let i = 0; i < sources.length; i++) {
|
|
464
439
|
const obj2 = sources[i];
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
440
|
+
if (isObject(obj2) || isArray(obj2)) {
|
|
441
|
+
const objTarget = obj2;
|
|
442
|
+
for (const key in objTarget) {
|
|
443
|
+
if (hasOwnProperty.call(objTarget, key)) {
|
|
444
|
+
if (objTarget[key] instanceof Object && !isObservable(objTarget[key]) && Object.keys(objTarget[key]).length > 0) {
|
|
445
|
+
result[key] = deepMerge(
|
|
446
|
+
result[key] || (isArray(objTarget[key]) ? [] : {}),
|
|
447
|
+
objTarget[key]
|
|
448
|
+
);
|
|
449
|
+
} else {
|
|
450
|
+
result[key] = objTarget[key];
|
|
451
|
+
}
|
|
474
452
|
}
|
|
475
453
|
}
|
|
454
|
+
} else {
|
|
455
|
+
result = obj2;
|
|
476
456
|
}
|
|
477
457
|
}
|
|
478
458
|
return result;
|
|
@@ -523,9 +503,9 @@ function notify(node, value, prev, level, whenOptimizedOnlyIf) {
|
|
|
523
503
|
changesInBatch,
|
|
524
504
|
node,
|
|
525
505
|
/*loading*/
|
|
526
|
-
globalState.isLoadingLocal,
|
|
506
|
+
!!globalState.isLoadingLocal,
|
|
527
507
|
/*remote*/
|
|
528
|
-
globalState.isLoadingRemote,
|
|
508
|
+
!!globalState.isLoadingRemote,
|
|
529
509
|
value,
|
|
530
510
|
[],
|
|
531
511
|
[],
|
|
@@ -549,8 +529,8 @@ function notify(node, value, prev, level, whenOptimizedOnlyIf) {
|
|
|
549
529
|
prev,
|
|
550
530
|
level,
|
|
551
531
|
whenOptimizedOnlyIf,
|
|
552
|
-
isFromSync: globalState.isLoadingRemote,
|
|
553
|
-
isFromPersist: globalState.isLoadingLocal
|
|
532
|
+
isFromSync: !!globalState.isLoadingRemote,
|
|
533
|
+
isFromPersist: !!globalState.isLoadingLocal
|
|
554
534
|
});
|
|
555
535
|
}
|
|
556
536
|
if (changesInBatch.size) {
|
|
@@ -880,9 +860,9 @@ function onChange(node, callback, options = {}, fromLinks) {
|
|
|
880
860
|
};
|
|
881
861
|
}
|
|
882
862
|
function createCb(linkedFromNode, path, callback) {
|
|
883
|
-
let
|
|
863
|
+
let prevAtPath = deconstructObjectWithPath(path, [], getNodeValue(linkedFromNode));
|
|
884
864
|
return function({ value: valueA, isFromPersist, isFromSync }) {
|
|
885
|
-
const
|
|
865
|
+
const valueAtPath = deconstructObjectWithPath(path, [], valueA);
|
|
886
866
|
if (valueAtPath !== prevAtPath) {
|
|
887
867
|
callback({
|
|
888
868
|
value: valueAtPath,
|
|
@@ -902,16 +882,6 @@ function createCb(linkedFromNode, path, callback) {
|
|
|
902
882
|
prevAtPath = valueAtPath;
|
|
903
883
|
};
|
|
904
884
|
}
|
|
905
|
-
function getValueAtPath2(obj, path) {
|
|
906
|
-
let o = obj;
|
|
907
|
-
const pathTypes = [];
|
|
908
|
-
for (let i = 0; o && i < path.length; i++) {
|
|
909
|
-
pathTypes.push(isArray(o) ? "array" : "object");
|
|
910
|
-
const p = path[i];
|
|
911
|
-
o = o[p];
|
|
912
|
-
}
|
|
913
|
-
return { valueAtPath: o, pathTypes };
|
|
914
|
-
}
|
|
915
885
|
|
|
916
886
|
// src/setupTracking.ts
|
|
917
887
|
function setupTracking(nodes, update, noArgs, immediate) {
|
|
@@ -2211,45 +2181,6 @@ function computed(get2, set2) {
|
|
|
2211
2181
|
);
|
|
2212
2182
|
}
|
|
2213
2183
|
|
|
2214
|
-
// src/config.ts
|
|
2215
|
-
function configureLegendState({
|
|
2216
|
-
observableFunctions,
|
|
2217
|
-
observableProperties: observableProperties2,
|
|
2218
|
-
jsonReplacer,
|
|
2219
|
-
jsonReviver
|
|
2220
|
-
}) {
|
|
2221
|
-
if (observableFunctions) {
|
|
2222
|
-
for (const key in observableFunctions) {
|
|
2223
|
-
const fn = observableFunctions[key];
|
|
2224
|
-
observableFns.set(key, fn);
|
|
2225
|
-
ObservablePrimitiveClass.prototype[key] = function(...args) {
|
|
2226
|
-
return fn.call(this, this._node, ...args);
|
|
2227
|
-
};
|
|
2228
|
-
}
|
|
2229
|
-
}
|
|
2230
|
-
if (observableProperties2) {
|
|
2231
|
-
for (const key in observableProperties2) {
|
|
2232
|
-
const fns2 = observableProperties2[key];
|
|
2233
|
-
observableProperties.set(key, fns2);
|
|
2234
|
-
Object.defineProperty(ObservablePrimitiveClass.prototype, key, {
|
|
2235
|
-
configurable: true,
|
|
2236
|
-
get() {
|
|
2237
|
-
return fns2.get.call(this, this._node);
|
|
2238
|
-
},
|
|
2239
|
-
set(value) {
|
|
2240
|
-
return fns2.set.call(this, this._node, value);
|
|
2241
|
-
}
|
|
2242
|
-
});
|
|
2243
|
-
}
|
|
2244
|
-
}
|
|
2245
|
-
if (jsonReplacer) {
|
|
2246
|
-
globalState.replacer = jsonReplacer;
|
|
2247
|
-
}
|
|
2248
|
-
if (jsonReviver) {
|
|
2249
|
-
globalState.reviver = jsonReviver;
|
|
2250
|
-
}
|
|
2251
|
-
}
|
|
2252
|
-
|
|
2253
2184
|
// src/event.ts
|
|
2254
2185
|
function event() {
|
|
2255
2186
|
const obs = observable(0);
|
|
@@ -2294,6 +2225,7 @@ function syncState(obs) {
|
|
|
2294
2225
|
numPendingSets: 0,
|
|
2295
2226
|
syncCount: 0,
|
|
2296
2227
|
clearPersist: void 0,
|
|
2228
|
+
reset: () => Promise.resolve(),
|
|
2297
2229
|
sync: () => Promise.resolve(),
|
|
2298
2230
|
getPendingChanges: () => ({})
|
|
2299
2231
|
});
|
|
@@ -2301,50 +2233,6 @@ function syncState(obs) {
|
|
|
2301
2233
|
return node.state;
|
|
2302
2234
|
}
|
|
2303
2235
|
|
|
2304
|
-
// src/retry.ts
|
|
2305
|
-
function calculateRetryDelay(retryOptions, retryNum) {
|
|
2306
|
-
const { backoff, delay = 1e3, infinite, times = 3, maxDelay = 3e4 } = retryOptions;
|
|
2307
|
-
if (infinite || retryNum < times) {
|
|
2308
|
-
const delayTime = Math.min(delay * (backoff === "constant" ? 1 : 2 ** retryNum), maxDelay);
|
|
2309
|
-
return delayTime;
|
|
2310
|
-
}
|
|
2311
|
-
return null;
|
|
2312
|
-
}
|
|
2313
|
-
function createRetryTimeout(retryOptions, retryNum, fn) {
|
|
2314
|
-
const delayTime = calculateRetryDelay(retryOptions, retryNum);
|
|
2315
|
-
if (delayTime) {
|
|
2316
|
-
return setTimeout(fn, delayTime);
|
|
2317
|
-
}
|
|
2318
|
-
}
|
|
2319
|
-
function runWithRetry(state, fn) {
|
|
2320
|
-
const { retry } = state;
|
|
2321
|
-
const e = Object.assign(state, { cancel: false, cancelRetry: () => e.cancel = false });
|
|
2322
|
-
let value = fn(e);
|
|
2323
|
-
if (isPromise(value) && retry) {
|
|
2324
|
-
let timeoutRetry;
|
|
2325
|
-
return new Promise((resolve) => {
|
|
2326
|
-
const run = () => {
|
|
2327
|
-
value.then((val) => {
|
|
2328
|
-
resolve(val);
|
|
2329
|
-
}).catch(() => {
|
|
2330
|
-
state.retryNum++;
|
|
2331
|
-
if (timeoutRetry) {
|
|
2332
|
-
clearTimeout(timeoutRetry);
|
|
2333
|
-
}
|
|
2334
|
-
if (!e.cancel) {
|
|
2335
|
-
timeoutRetry = createRetryTimeout(retry, state.retryNum, () => {
|
|
2336
|
-
value = fn(e);
|
|
2337
|
-
run();
|
|
2338
|
-
});
|
|
2339
|
-
}
|
|
2340
|
-
});
|
|
2341
|
-
};
|
|
2342
|
-
run();
|
|
2343
|
-
});
|
|
2344
|
-
}
|
|
2345
|
-
return value;
|
|
2346
|
-
}
|
|
2347
|
-
|
|
2348
2236
|
// index.ts
|
|
2349
2237
|
var internal = {
|
|
2350
2238
|
createPreviousHandler,
|
|
@@ -2363,7 +2251,6 @@ var internal = {
|
|
|
2363
2251
|
observableFns,
|
|
2364
2252
|
optimized,
|
|
2365
2253
|
peek,
|
|
2366
|
-
runWithRetry,
|
|
2367
2254
|
safeParse,
|
|
2368
2255
|
safeStringify,
|
|
2369
2256
|
set,
|
|
@@ -2382,7 +2269,6 @@ exports.beginBatch = beginBatch;
|
|
|
2382
2269
|
exports.beginTracking = beginTracking;
|
|
2383
2270
|
exports.computeSelector = computeSelector;
|
|
2384
2271
|
exports.computed = computed;
|
|
2385
|
-
exports.configureLegendState = configureLegendState;
|
|
2386
2272
|
exports.constructObjectWithPath = constructObjectWithPath;
|
|
2387
2273
|
exports.deconstructObjectWithPath = deconstructObjectWithPath;
|
|
2388
2274
|
exports.endBatch = endBatch;
|
|
@@ -2419,7 +2305,6 @@ exports.opaqueObject = opaqueObject;
|
|
|
2419
2305
|
exports.optimized = optimized;
|
|
2420
2306
|
exports.proxy = proxy;
|
|
2421
2307
|
exports.setAtPath = setAtPath;
|
|
2422
|
-
exports.setInObservableAtPath = setInObservableAtPath;
|
|
2423
2308
|
exports.setSilently = setSilently;
|
|
2424
2309
|
exports.setupTracking = setupTracking;
|
|
2425
2310
|
exports.shouldIgnoreUnobserved = shouldIgnoreUnobserved;
|