@legendapp/state 3.0.0-alpha.22 → 3.0.0-alpha.24
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/index.d.mts +2 -2
- package/index.d.ts +2 -2
- package/index.js +6 -3
- package/index.mjs +6 -3
- package/package.json +1 -1
- package/sync-plugins/firebase.js +3 -0
- package/sync-plugins/firebase.mjs +3 -0
- package/sync.js +23 -15
- package/sync.mjs +23 -15
package/index.d.mts
CHANGED
|
@@ -16,7 +16,7 @@ interface ObservableObjectFns<T> {
|
|
|
16
16
|
interface ObservableObjectFunctions<T = Record<string, any>> extends ObservablePrimitive<T>, ObservableObjectFns<T> {
|
|
17
17
|
}
|
|
18
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>> =
|
|
19
|
+
type MapValue<T extends Map<any, any> | WeakMap<any, any>> = ReturnType<T['get']>;
|
|
20
20
|
type ObservableMap<T extends Map<any, any> | WeakMap<any, any>> = Omit<T, 'get' | 'size' | 'set'> & Omit<ObservablePrimitive<T>, 'get' | 'size'> & {
|
|
21
21
|
get(key: Parameters<T['get']>[0]): Observable<Parameters<T['set']>[1]>;
|
|
22
22
|
get(): T;
|
|
@@ -319,7 +319,7 @@ declare function setSilently(value$: ObservableParam, newValue: any): any;
|
|
|
319
319
|
declare function initializePathType(pathType: TypeAtPath): any;
|
|
320
320
|
declare function applyChange<T extends object>(value: T, change: Change, applyPrevious?: boolean): T;
|
|
321
321
|
declare function applyChanges<T extends object>(value: T, changes: Change[], applyPrevious?: boolean): T;
|
|
322
|
-
declare function deepMerge<T
|
|
322
|
+
declare function deepMerge<T>(target: T, ...sources: any[]): T;
|
|
323
323
|
|
|
324
324
|
declare const hasOwnProperty: (v: PropertyKey) => boolean;
|
|
325
325
|
declare function isArray(obj: unknown): obj is Array<any>;
|
package/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ interface ObservableObjectFns<T> {
|
|
|
16
16
|
interface ObservableObjectFunctions<T = Record<string, any>> extends ObservablePrimitive<T>, ObservableObjectFns<T> {
|
|
17
17
|
}
|
|
18
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>> =
|
|
19
|
+
type MapValue<T extends Map<any, any> | WeakMap<any, any>> = ReturnType<T['get']>;
|
|
20
20
|
type ObservableMap<T extends Map<any, any> | WeakMap<any, any>> = Omit<T, 'get' | 'size' | 'set'> & Omit<ObservablePrimitive<T>, 'get' | 'size'> & {
|
|
21
21
|
get(key: Parameters<T['get']>[0]): Observable<Parameters<T['set']>[1]>;
|
|
22
22
|
get(): T;
|
|
@@ -319,7 +319,7 @@ declare function setSilently(value$: ObservableParam, newValue: any): any;
|
|
|
319
319
|
declare function initializePathType(pathType: TypeAtPath): any;
|
|
320
320
|
declare function applyChange<T extends object>(value: T, change: Change, applyPrevious?: boolean): T;
|
|
321
321
|
declare function applyChanges<T extends object>(value: T, changes: Change[], applyPrevious?: boolean): T;
|
|
322
|
-
declare function deepMerge<T
|
|
322
|
+
declare function deepMerge<T>(target: T, ...sources: any[]): T;
|
|
323
323
|
|
|
324
324
|
declare const hasOwnProperty: (v: PropertyKey) => boolean;
|
|
325
325
|
declare function isArray(obj: unknown): obj is Array<any>;
|
package/index.js
CHANGED
|
@@ -312,13 +312,13 @@ function setAtPath(obj, path, pathTypes, value, mode, fullObj, restore) {
|
|
|
312
312
|
}
|
|
313
313
|
if (p === void 0) {
|
|
314
314
|
if (mode === "merge") {
|
|
315
|
-
obj = deepMerge(obj, value
|
|
315
|
+
obj = deepMerge(obj, value);
|
|
316
316
|
} else {
|
|
317
317
|
obj = value;
|
|
318
318
|
}
|
|
319
319
|
} else {
|
|
320
320
|
if (mode === "merge") {
|
|
321
|
-
o[p] = deepMerge(o[p], value
|
|
321
|
+
o[p] = deepMerge(o[p], value);
|
|
322
322
|
} else if (isMap(o)) {
|
|
323
323
|
o.set(p, value);
|
|
324
324
|
} else {
|
|
@@ -456,7 +456,10 @@ function applyChanges(value, changes, applyPrevious) {
|
|
|
456
456
|
return value;
|
|
457
457
|
}
|
|
458
458
|
function deepMerge(target, ...sources) {
|
|
459
|
-
|
|
459
|
+
if (isPrimitive(target)) {
|
|
460
|
+
return sources[sources.length - 1];
|
|
461
|
+
}
|
|
462
|
+
const result = isArray(target) ? [...target] : { ...target };
|
|
460
463
|
for (let i = 0; i < sources.length; i++) {
|
|
461
464
|
const obj2 = sources[i];
|
|
462
465
|
for (const key in obj2) {
|
package/index.mjs
CHANGED
|
@@ -310,13 +310,13 @@ function setAtPath(obj, path, pathTypes, value, mode, fullObj, restore) {
|
|
|
310
310
|
}
|
|
311
311
|
if (p === void 0) {
|
|
312
312
|
if (mode === "merge") {
|
|
313
|
-
obj = deepMerge(obj, value
|
|
313
|
+
obj = deepMerge(obj, value);
|
|
314
314
|
} else {
|
|
315
315
|
obj = value;
|
|
316
316
|
}
|
|
317
317
|
} else {
|
|
318
318
|
if (mode === "merge") {
|
|
319
|
-
o[p] = deepMerge(o[p], value
|
|
319
|
+
o[p] = deepMerge(o[p], value);
|
|
320
320
|
} else if (isMap(o)) {
|
|
321
321
|
o.set(p, value);
|
|
322
322
|
} else {
|
|
@@ -454,7 +454,10 @@ function applyChanges(value, changes, applyPrevious) {
|
|
|
454
454
|
return value;
|
|
455
455
|
}
|
|
456
456
|
function deepMerge(target, ...sources) {
|
|
457
|
-
|
|
457
|
+
if (isPrimitive(target)) {
|
|
458
|
+
return sources[sources.length - 1];
|
|
459
|
+
}
|
|
460
|
+
const result = isArray(target) ? [...target] : { ...target };
|
|
458
461
|
for (let i = 0; i < sources.length; i++) {
|
|
459
462
|
const obj2 = sources[i];
|
|
460
463
|
for (const key in obj2) {
|
package/package.json
CHANGED
package/sync-plugins/firebase.js
CHANGED
package/sync.js
CHANGED
|
@@ -777,6 +777,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
777
777
|
const pending = localState.pendingChanges;
|
|
778
778
|
const get = syncOptions.get;
|
|
779
779
|
if (get) {
|
|
780
|
+
const { waitFor } = syncOptions;
|
|
780
781
|
const runGet = () => {
|
|
781
782
|
var _a2;
|
|
782
783
|
const onChange = async ({ value, mode, lastSync: lastSync2 }) => {
|
|
@@ -865,22 +866,30 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
865
866
|
node.activationState.onChange = onChange;
|
|
866
867
|
}
|
|
867
868
|
if (!isSubscribed && syncOptions.subscribe) {
|
|
869
|
+
const subscribe = syncOptions.subscribe;
|
|
868
870
|
isSubscribed = true;
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
state.when(
|
|
876
|
-
|
|
877
|
-
|
|
871
|
+
const doSubscribe = () => {
|
|
872
|
+
unsubscribe = subscribe({
|
|
873
|
+
node,
|
|
874
|
+
value$: obs$,
|
|
875
|
+
lastSync,
|
|
876
|
+
update: (params) => {
|
|
877
|
+
state.when(syncState$.isLoaded, () => {
|
|
878
|
+
state.when(waitFor || true, () => {
|
|
879
|
+
params.mode || (params.mode = syncOptions.mode || "merge");
|
|
880
|
+
onChange(params);
|
|
881
|
+
});
|
|
878
882
|
});
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
}
|
|
883
|
+
},
|
|
884
|
+
refresh: () => state.when(syncState$.isLoaded, sync),
|
|
885
|
+
onError: (error) => onError(error, void 0, "subscribe")
|
|
886
|
+
});
|
|
887
|
+
};
|
|
888
|
+
if (waitFor) {
|
|
889
|
+
state.whenReady(waitFor, doSubscribe);
|
|
890
|
+
} else {
|
|
891
|
+
doSubscribe();
|
|
892
|
+
}
|
|
884
893
|
}
|
|
885
894
|
const existingValue = getNodeValue(node);
|
|
886
895
|
const getParams = {
|
|
@@ -953,7 +962,6 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
953
962
|
handle(got);
|
|
954
963
|
}
|
|
955
964
|
};
|
|
956
|
-
const { waitFor } = syncOptions;
|
|
957
965
|
if (waitFor) {
|
|
958
966
|
if (node.activationState) {
|
|
959
967
|
node.activationState.waitFor = void 0;
|
package/sync.mjs
CHANGED
|
@@ -775,6 +775,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
775
775
|
const pending = localState.pendingChanges;
|
|
776
776
|
const get = syncOptions.get;
|
|
777
777
|
if (get) {
|
|
778
|
+
const { waitFor } = syncOptions;
|
|
778
779
|
const runGet = () => {
|
|
779
780
|
var _a2;
|
|
780
781
|
const onChange = async ({ value, mode, lastSync: lastSync2 }) => {
|
|
@@ -863,22 +864,30 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
863
864
|
node.activationState.onChange = onChange;
|
|
864
865
|
}
|
|
865
866
|
if (!isSubscribed && syncOptions.subscribe) {
|
|
867
|
+
const subscribe = syncOptions.subscribe;
|
|
866
868
|
isSubscribed = true;
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
when(
|
|
874
|
-
|
|
875
|
-
|
|
869
|
+
const doSubscribe = () => {
|
|
870
|
+
unsubscribe = subscribe({
|
|
871
|
+
node,
|
|
872
|
+
value$: obs$,
|
|
873
|
+
lastSync,
|
|
874
|
+
update: (params) => {
|
|
875
|
+
when(syncState$.isLoaded, () => {
|
|
876
|
+
when(waitFor || true, () => {
|
|
877
|
+
params.mode || (params.mode = syncOptions.mode || "merge");
|
|
878
|
+
onChange(params);
|
|
879
|
+
});
|
|
876
880
|
});
|
|
877
|
-
}
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
}
|
|
881
|
+
},
|
|
882
|
+
refresh: () => when(syncState$.isLoaded, sync),
|
|
883
|
+
onError: (error) => onError(error, void 0, "subscribe")
|
|
884
|
+
});
|
|
885
|
+
};
|
|
886
|
+
if (waitFor) {
|
|
887
|
+
whenReady(waitFor, doSubscribe);
|
|
888
|
+
} else {
|
|
889
|
+
doSubscribe();
|
|
890
|
+
}
|
|
882
891
|
}
|
|
883
892
|
const existingValue = getNodeValue(node);
|
|
884
893
|
const getParams = {
|
|
@@ -951,7 +960,6 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
951
960
|
handle(got);
|
|
952
961
|
}
|
|
953
962
|
};
|
|
954
|
-
const { waitFor } = syncOptions;
|
|
955
963
|
if (waitFor) {
|
|
956
964
|
if (node.activationState) {
|
|
957
965
|
node.activationState.waitFor = void 0;
|