@legendapp/state 3.0.0-alpha.1 → 3.0.0-alpha.3
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/.DS_Store +0 -0
- package/CHANGELOG.md +1 -831
- package/LICENSE +1 -21
- package/README.md +1 -141
- package/as/arrayAsRecord.d.mts +5 -0
- package/as/arrayAsRecord.d.ts +5 -0
- package/as/arrayAsRecord.js +28 -0
- package/as/arrayAsRecord.mjs +26 -0
- package/as/arrayAsSet.d.mts +5 -0
- package/as/arrayAsSet.d.ts +5 -0
- package/as/arrayAsSet.js +13 -0
- package/as/arrayAsSet.mjs +11 -0
- package/as/arrayAsString.d.mts +5 -0
- package/as/arrayAsString.d.ts +5 -0
- package/as/arrayAsString.js +13 -0
- package/as/arrayAsString.mjs +11 -0
- package/as/numberAsString.d.mts +5 -0
- package/as/numberAsString.d.ts +5 -0
- package/as/numberAsString.js +13 -0
- package/as/numberAsString.mjs +11 -0
- package/as/recordAsArray.d.mts +5 -0
- package/as/recordAsArray.d.ts +5 -0
- package/as/recordAsArray.js +25 -0
- package/as/recordAsArray.mjs +23 -0
- package/as/recordAsString.d.mts +5 -0
- package/as/recordAsString.d.ts +5 -0
- package/as/recordAsString.js +13 -0
- package/as/recordAsString.mjs +11 -0
- package/as/setAsArray.d.mts +5 -0
- package/as/setAsArray.d.ts +5 -0
- package/as/setAsArray.js +13 -0
- package/as/setAsArray.mjs +11 -0
- package/as/setAsString.d.mts +5 -0
- package/as/setAsString.d.ts +5 -0
- package/as/setAsString.js +13 -0
- package/as/setAsString.mjs +11 -0
- package/as/stringAsArray.d.mts +5 -0
- package/as/stringAsArray.d.ts +5 -0
- package/as/stringAsArray.js +13 -0
- package/as/stringAsArray.mjs +11 -0
- package/as/stringAsNumber.d.mts +5 -0
- package/as/stringAsNumber.d.ts +5 -0
- package/as/stringAsNumber.js +16 -0
- package/as/stringAsNumber.mjs +14 -0
- package/as/stringAsRecord.d.mts +5 -0
- package/as/stringAsRecord.d.ts +5 -0
- package/as/stringAsRecord.js +15 -0
- package/as/stringAsRecord.mjs +13 -0
- package/as/stringAsSet.d.mts +5 -0
- package/as/stringAsSet.d.ts +5 -0
- package/as/stringAsSet.js +13 -0
- package/as/stringAsSet.mjs +11 -0
- package/babel.d.mts +21 -0
- package/babel.d.ts +21 -2
- package/babel.js +57 -53
- package/babel.mjs +65 -0
- package/config/enable$GetSet.js +13 -14
- package/config/enable$GetSet.mjs +13 -14
- package/config/enableReactComponents.d.mts +9 -0
- package/config/enableReactComponents.d.ts +4 -2
- package/config/enableReactComponents.js +13 -10
- package/config/enableReactComponents.mjs +13 -10
- package/config/enableReactNativeComponents.d.mts +22 -0
- package/config/enableReactNativeComponents.d.ts +6 -4
- package/config/enableReactNativeComponents.js +43 -47
- package/config/enableReactNativeComponents.mjs +43 -47
- package/config/enableReactTracking.d.mts +7 -0
- package/config/enableReactTracking.d.ts +3 -2
- package/config/enableReactTracking.js +33 -38
- package/config/enableReactTracking.mjs +33 -38
- package/config/enableReactUse.d.mts +10 -0
- package/config/enableReactUse.d.ts +4 -1
- package/config/enableReactUse.js +15 -14
- package/config/enableReactUse.mjs +15 -14
- package/config/{enable$GetSet.d.ts → enable_GetSet.d.mts} +4 -2
- package/config/enable_GetSet.d.ts +10 -0
- package/config/enable_PeekAssign.d.mts +10 -0
- package/config/enable_PeekAssign.d.ts +4 -2
- package/config/enable_PeekAssign.js +13 -14
- package/config/enable_PeekAssign.mjs +13 -14
- package/helpers/pageHash.d.mts +9 -0
- package/helpers/pageHash.d.ts +2 -0
- package/helpers/pageHash.js +25 -30
- package/helpers/pageHash.mjs +25 -30
- package/helpers/pageHashParams.d.mts +9 -0
- package/helpers/pageHashParams.d.ts +2 -0
- package/helpers/pageHashParams.js +34 -37
- package/helpers/pageHashParams.mjs +34 -37
- package/helpers/time.d.mts +6 -0
- package/helpers/time.d.ts +6 -3
- package/helpers/time.js +17 -17
- package/helpers/time.mjs +17 -17
- package/helpers/trackHistory.d.mts +6 -0
- package/helpers/trackHistory.d.ts +4 -2
- package/helpers/trackHistory.js +13 -16
- package/helpers/trackHistory.mjs +13 -16
- package/helpers/undoRedo.d.mts +37 -0
- package/helpers/undoRedo.d.ts +5 -3
- package/helpers/undoRedo.js +59 -94
- package/helpers/undoRedo.mjs +59 -94
- package/index.d.mts +404 -0
- package/index.d.ts +371 -28
- package/index.js +2015 -2166
- package/index.mjs +2015 -2166
- package/package.json +254 -195
- package/persist-plugins/async-storage.d.mts +18 -0
- package/persist-plugins/async-storage.d.ts +6 -3
- package/persist-plugins/async-storage.js +79 -86
- package/persist-plugins/async-storage.mjs +79 -86
- package/persist-plugins/indexeddb.d.mts +29 -0
- package/persist-plugins/indexeddb.d.ts +6 -3
- package/persist-plugins/indexeddb.js +331 -352
- package/persist-plugins/indexeddb.mjs +331 -352
- package/persist-plugins/local-storage.d.mts +23 -0
- package/persist-plugins/local-storage.d.ts +8 -5
- package/persist-plugins/local-storage.js +74 -76
- package/persist-plugins/local-storage.mjs +74 -76
- package/persist-plugins/mmkv.d.mts +18 -0
- package/persist-plugins/mmkv.d.ts +6 -3
- package/persist-plugins/mmkv.js +82 -86
- package/persist-plugins/mmkv.mjs +82 -86
- package/react-hooks/createObservableHook.d.mts +5 -0
- package/react-hooks/createObservableHook.d.ts +4 -1
- package/react-hooks/createObservableHook.js +29 -30
- package/react-hooks/createObservableHook.mjs +25 -30
- package/react-hooks/useHover.d.mts +5 -0
- package/react-hooks/useHover.d.ts +5 -3
- package/react-hooks/useHover.js +29 -29
- package/react-hooks/useHover.mjs +29 -29
- package/react-hooks/useMeasure.d.mts +9 -0
- package/react-hooks/useMeasure.d.ts +5 -2
- package/react-hooks/useMeasure.js +30 -32
- package/react-hooks/useMeasure.mjs +30 -32
- package/react-hooks/useObservableNextRouter.d.mts +35 -0
- package/react-hooks/useObservableNextRouter.d.ts +9 -7
- package/react-hooks/useObservableNextRouter.js +64 -77
- package/react-hooks/useObservableNextRouter.mjs +60 -77
- package/react.d.mts +157 -0
- package/react.d.ts +157 -21
- package/react.js +458 -749
- package/react.mjs +457 -752
- package/sync-plugins/crud.d.mts +54 -0
- package/sync-plugins/crud.d.ts +12 -10
- package/sync-plugins/crud.js +253 -270
- package/sync-plugins/crud.mjs +253 -270
- package/sync-plugins/fetch.d.mts +21 -0
- package/sync-plugins/fetch.d.ts +7 -4
- package/sync-plugins/fetch.js +50 -37
- package/sync-plugins/fetch.mjs +50 -37
- package/sync-plugins/keel.d.mts +108 -0
- package/sync-plugins/keel.d.ts +17 -15
- package/sync-plugins/keel.js +229 -462
- package/sync-plugins/keel.mjs +227 -464
- package/sync-plugins/supabase.d.mts +39 -0
- package/sync-plugins/supabase.d.ts +16 -14
- package/sync-plugins/supabase.js +128 -128
- package/sync-plugins/supabase.mjs +128 -128
- package/sync-plugins/tanstack-query.d.mts +14 -0
- package/sync-plugins/tanstack-query.d.ts +7 -4
- package/sync-plugins/tanstack-query.js +51 -57
- package/sync-plugins/tanstack-query.mjs +51 -57
- package/sync-plugins/tanstack-react-query.d.mts +8 -0
- package/sync-plugins/tanstack-react-query.d.ts +6 -1
- package/sync-plugins/tanstack-react-query.js +2 -2
- package/sync-plugins/tanstack-react-query.mjs +2 -2
- package/sync.d.mts +351 -0
- package/sync.d.ts +349 -9
- package/sync.js +910 -964
- package/sync.mjs +920 -974
- package/trace.d.mts +9 -0
- package/trace.d.ts +9 -4
- package/trace.js +72 -62
- package/trace.mjs +72 -62
- package/types/babel.d.ts +1 -12
- package/babel.js.map +0 -1
- package/config/enable$GetSet.js.map +0 -1
- package/config/enable$GetSet.mjs.map +0 -1
- package/config/enableReactComponents.js.map +0 -1
- package/config/enableReactComponents.mjs.map +0 -1
- package/config/enableReactNativeComponents.js.map +0 -1
- package/config/enableReactNativeComponents.mjs.map +0 -1
- package/config/enableReactTracking.js.map +0 -1
- package/config/enableReactTracking.mjs.map +0 -1
- package/config/enableReactUse.js.map +0 -1
- package/config/enableReactUse.mjs.map +0 -1
- package/config/enable_PeekAssign.js.map +0 -1
- package/config/enable_PeekAssign.mjs.map +0 -1
- package/helpers/pageHash.js.map +0 -1
- package/helpers/pageHash.mjs.map +0 -1
- package/helpers/pageHashParams.js.map +0 -1
- package/helpers/pageHashParams.mjs.map +0 -1
- package/helpers/time.js.map +0 -1
- package/helpers/time.mjs.map +0 -1
- package/helpers/trackHistory.js.map +0 -1
- package/helpers/trackHistory.mjs.map +0 -1
- package/helpers/undoRedo.js.map +0 -1
- package/helpers/undoRedo.mjs.map +0 -1
- package/history.d.ts +0 -1
- package/history.js +0 -24
- package/history.js.map +0 -1
- package/history.mjs +0 -22
- package/history.mjs.map +0 -1
- package/index.js.map +0 -1
- package/index.mjs.map +0 -1
- package/persist-plugins/async-storage.js.map +0 -1
- package/persist-plugins/async-storage.mjs.map +0 -1
- package/persist-plugins/indexeddb.js.map +0 -1
- package/persist-plugins/indexeddb.mjs.map +0 -1
- package/persist-plugins/local-storage.js.map +0 -1
- package/persist-plugins/local-storage.mjs.map +0 -1
- package/persist-plugins/mmkv.js.map +0 -1
- package/persist-plugins/mmkv.mjs.map +0 -1
- package/react-hooks/createObservableHook.js.map +0 -1
- package/react-hooks/createObservableHook.mjs.map +0 -1
- package/react-hooks/useHover.js.map +0 -1
- package/react-hooks/useHover.mjs.map +0 -1
- package/react-hooks/useMeasure.js.map +0 -1
- package/react-hooks/useMeasure.mjs.map +0 -1
- package/react-hooks/useObservableNextRouter.js.map +0 -1
- package/react-hooks/useObservableNextRouter.mjs.map +0 -1
- package/react.js.map +0 -1
- package/react.mjs.map +0 -1
- package/src/ObservableObject.ts +0 -1350
- package/src/ObservablePrimitive.ts +0 -62
- package/src/babel/index.ts +0 -83
- package/src/batching.ts +0 -357
- package/src/computed.ts +0 -18
- package/src/config/enable$GetSet.ts +0 -30
- package/src/config/enableReactComponents.ts +0 -26
- package/src/config/enableReactNativeComponents.ts +0 -102
- package/src/config/enableReactTracking.ts +0 -62
- package/src/config/enableReactUse.ts +0 -32
- package/src/config/enable_PeekAssign.ts +0 -31
- package/src/config.ts +0 -47
- package/src/createObservable.ts +0 -47
- package/src/event.ts +0 -26
- package/src/globals.ts +0 -235
- package/src/helpers/pageHash.ts +0 -41
- package/src/helpers/pageHashParams.ts +0 -55
- package/src/helpers/time.ts +0 -30
- package/src/helpers/trackHistory.ts +0 -29
- package/src/helpers/undoRedo.ts +0 -111
- package/src/helpers.ts +0 -231
- package/src/is.ts +0 -63
- package/src/linked.ts +0 -17
- package/src/observable.ts +0 -32
- package/src/observableInterfaces.ts +0 -151
- package/src/observableTypes.ts +0 -232
- package/src/observe.ts +0 -89
- package/src/old-plugins/firebase.ts +0 -1053
- package/src/onChange.ts +0 -146
- package/src/persist/configureObservablePersistence.ts +0 -7
- package/src/persist/fieldTransformer.ts +0 -149
- package/src/persist/observablePersistRemoteFunctionsAdapter.ts +0 -39
- package/src/persist/persistObservable.ts +0 -1034
- package/src/persist-plugins/async-storage.ts +0 -99
- package/src/persist-plugins/indexeddb.ts +0 -439
- package/src/persist-plugins/local-storage.ts +0 -86
- package/src/persist-plugins/mmkv.ts +0 -91
- package/src/proxy.ts +0 -28
- package/src/react/Computed.tsx +0 -8
- package/src/react/For.tsx +0 -116
- package/src/react/Memo.tsx +0 -4
- package/src/react/Reactive.tsx +0 -53
- package/src/react/Show.tsx +0 -33
- package/src/react/Switch.tsx +0 -43
- package/src/react/react-globals.ts +0 -3
- package/src/react/reactInterfaces.ts +0 -32
- package/src/react/reactive-observer.tsx +0 -210
- package/src/react/useComputed.ts +0 -36
- package/src/react/useEffectOnce.ts +0 -41
- package/src/react/useIsMounted.ts +0 -16
- package/src/react/useMount.ts +0 -15
- package/src/react/useObservable.ts +0 -24
- package/src/react/useObservableReducer.ts +0 -52
- package/src/react/useObservableState.ts +0 -30
- package/src/react/useObserve.ts +0 -54
- package/src/react/useObserveEffect.ts +0 -40
- package/src/react/usePauseProvider.tsx +0 -16
- package/src/react/useSelector.ts +0 -167
- package/src/react/useUnmount.ts +0 -8
- package/src/react/useWhen.ts +0 -9
- package/src/react-hooks/createObservableHook.ts +0 -53
- package/src/react-hooks/useHover.ts +0 -40
- package/src/react-hooks/useMeasure.ts +0 -48
- package/src/react-hooks/useObservableNextRouter.ts +0 -137
- package/src/retry.ts +0 -71
- package/src/setupTracking.ts +0 -26
- package/src/sync/activateSyncedNode.ts +0 -128
- package/src/sync/configureObservableSync.ts +0 -7
- package/src/sync/persistTypes.ts +0 -216
- package/src/sync/syncHelpers.ts +0 -180
- package/src/sync/syncObservable.ts +0 -1056
- package/src/sync/syncObservableAdapter.ts +0 -31
- package/src/sync/syncTypes.ts +0 -189
- package/src/sync/synced.ts +0 -21
- package/src/sync-plugins/crud.ts +0 -412
- package/src/sync-plugins/fetch.ts +0 -80
- package/src/sync-plugins/keel.ts +0 -495
- package/src/sync-plugins/supabase.ts +0 -249
- package/src/sync-plugins/tanstack-query.ts +0 -113
- package/src/sync-plugins/tanstack-react-query.ts +0 -12
- package/src/trace/traceHelpers.ts +0 -11
- package/src/trace/useTraceListeners.ts +0 -34
- package/src/trace/useTraceUpdates.ts +0 -24
- package/src/trace/useVerifyNotTracking.ts +0 -33
- package/src/trace/useVerifyOneRender.ts +0 -10
- package/src/trackSelector.ts +0 -52
- package/src/tracking.ts +0 -43
- package/src/types/babel.d.ts +0 -12
- package/src/when.ts +0 -75
- package/sync-plugins/crud.js.map +0 -1
- package/sync-plugins/crud.mjs.map +0 -1
- package/sync-plugins/fetch.js.map +0 -1
- package/sync-plugins/fetch.mjs.map +0 -1
- package/sync-plugins/keel.js.map +0 -1
- package/sync-plugins/keel.mjs.map +0 -1
- package/sync-plugins/supabase.js.map +0 -1
- package/sync-plugins/supabase.mjs.map +0 -1
- package/sync-plugins/tanstack-query.js.map +0 -1
- package/sync-plugins/tanstack-query.mjs.map +0 -1
- package/sync-plugins/tanstack-react-query.js.map +0 -1
- package/sync-plugins/tanstack-react-query.mjs.map +0 -1
- package/sync.js.map +0 -1
- package/sync.mjs.map +0 -1
- package/trace.js.map +0 -1
- package/trace.mjs.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Change } from '@legendapp/state';
|
|
2
|
+
import { ObservablePersistPlugin, PersistMetadata } from '@legendapp/state/sync';
|
|
3
|
+
|
|
4
|
+
declare class ObservablePersistLocalStorageBase implements ObservablePersistPlugin {
|
|
5
|
+
private data;
|
|
6
|
+
private storage;
|
|
7
|
+
constructor(storage: Storage | undefined);
|
|
8
|
+
getTable(table: string, init: any): any;
|
|
9
|
+
getMetadata(table: string): PersistMetadata;
|
|
10
|
+
set(table: string, changes: Change[]): void;
|
|
11
|
+
setMetadata(table: string, metadata: PersistMetadata): void;
|
|
12
|
+
deleteTable(table: string): undefined;
|
|
13
|
+
deleteMetadata(table: string): void;
|
|
14
|
+
private save;
|
|
15
|
+
}
|
|
16
|
+
declare class ObservablePersistLocalStorage extends ObservablePersistLocalStorageBase {
|
|
17
|
+
constructor();
|
|
18
|
+
}
|
|
19
|
+
declare class ObservablePersistSessionStorage extends ObservablePersistLocalStorageBase {
|
|
20
|
+
constructor();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { ObservablePersistLocalStorage, ObservablePersistLocalStorageBase, ObservablePersistSessionStorage };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { Change } from '@legendapp/state';
|
|
2
|
+
import { ObservablePersistPlugin, PersistMetadata } from '@legendapp/state/sync';
|
|
3
|
+
|
|
4
|
+
declare class ObservablePersistLocalStorageBase implements ObservablePersistPlugin {
|
|
4
5
|
private data;
|
|
5
6
|
private storage;
|
|
6
7
|
constructor(storage: Storage | undefined);
|
|
@@ -12,9 +13,11 @@ export declare class ObservablePersistLocalStorageBase implements ObservablePers
|
|
|
12
13
|
deleteMetadata(table: string): void;
|
|
13
14
|
private save;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
+
declare class ObservablePersistLocalStorage extends ObservablePersistLocalStorageBase {
|
|
16
17
|
constructor();
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
+
declare class ObservablePersistSessionStorage extends ObservablePersistLocalStorageBase {
|
|
19
20
|
constructor();
|
|
20
21
|
}
|
|
22
|
+
|
|
23
|
+
export { ObservablePersistLocalStorage, ObservablePersistLocalStorageBase, ObservablePersistSessionStorage };
|
|
@@ -2,86 +2,84 @@
|
|
|
2
2
|
|
|
3
3
|
var state = require('@legendapp/state');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
// src/persist-plugins/local-storage.ts
|
|
6
|
+
var { safeParse, safeStringify } = state.internal;
|
|
7
|
+
var MetadataSuffix = "__m";
|
|
8
|
+
var ObservablePersistLocalStorageBase = class {
|
|
9
|
+
constructor(storage) {
|
|
10
|
+
this.data = {};
|
|
11
|
+
this.storage = storage;
|
|
12
|
+
}
|
|
13
|
+
getTable(table, init) {
|
|
14
|
+
if (!this.storage)
|
|
15
|
+
return void 0;
|
|
16
|
+
if (this.data[table] === void 0) {
|
|
17
|
+
try {
|
|
18
|
+
const value = this.storage.getItem(table);
|
|
19
|
+
this.data[table] = value ? safeParse(value) : init;
|
|
20
|
+
} catch (e) {
|
|
21
|
+
console.error("[legend-state] ObservablePersistLocalStorageBase failed to parse", table);
|
|
22
|
+
}
|
|
11
23
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
catch (_a) {
|
|
21
|
-
console.error('[legend-state] ObservablePersistLocalStorageBase failed to parse', table);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return this.data[table];
|
|
24
|
+
return this.data[table];
|
|
25
|
+
}
|
|
26
|
+
getMetadata(table) {
|
|
27
|
+
return this.getTable(table + MetadataSuffix, {});
|
|
28
|
+
}
|
|
29
|
+
set(table, changes) {
|
|
30
|
+
if (!this.data[table]) {
|
|
31
|
+
this.data[table] = {};
|
|
25
32
|
}
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
this.data[table] = state.applyChanges(this.data[table], changes);
|
|
34
|
+
this.save(table);
|
|
35
|
+
}
|
|
36
|
+
setMetadata(table, metadata) {
|
|
37
|
+
table = table + MetadataSuffix;
|
|
38
|
+
this.data[table] = metadata;
|
|
39
|
+
this.save(table);
|
|
40
|
+
}
|
|
41
|
+
deleteTable(table) {
|
|
42
|
+
if (!this.storage)
|
|
43
|
+
return void 0;
|
|
44
|
+
delete this.data[table];
|
|
45
|
+
this.storage.removeItem(table);
|
|
46
|
+
}
|
|
47
|
+
deleteMetadata(table) {
|
|
48
|
+
this.deleteTable(table + MetadataSuffix);
|
|
49
|
+
}
|
|
50
|
+
// Private
|
|
51
|
+
save(table) {
|
|
52
|
+
if (!this.storage)
|
|
53
|
+
return void 0;
|
|
54
|
+
const v = this.data[table];
|
|
55
|
+
if (v !== void 0 && v !== null) {
|
|
56
|
+
this.storage.setItem(table, safeStringify(v));
|
|
57
|
+
} else {
|
|
58
|
+
this.storage.removeItem(table);
|
|
28
59
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
save(table) {
|
|
52
|
-
if (!this.storage)
|
|
53
|
-
return undefined;
|
|
54
|
-
const v = this.data[table];
|
|
55
|
-
if (v !== undefined && v !== null) {
|
|
56
|
-
this.storage.setItem(table, safeStringify(v));
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
this.storage.removeItem(table);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
class ObservablePersistLocalStorage extends ObservablePersistLocalStorageBase {
|
|
64
|
-
constructor() {
|
|
65
|
-
super(typeof localStorage !== 'undefined'
|
|
66
|
-
? localStorage
|
|
67
|
-
: process.env.NODE_ENV === 'test'
|
|
68
|
-
? // @ts-expect-error This is ok to do in jest
|
|
69
|
-
globalThis._testlocalStorage
|
|
70
|
-
: undefined);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
class ObservablePersistSessionStorage extends ObservablePersistLocalStorageBase {
|
|
74
|
-
constructor() {
|
|
75
|
-
super(typeof sessionStorage !== 'undefined'
|
|
76
|
-
? sessionStorage
|
|
77
|
-
: process.env.NODE_ENV === 'test'
|
|
78
|
-
? // @ts-expect-error This is ok to do in jest
|
|
79
|
-
globalThis._testlocalStorage
|
|
80
|
-
: undefined);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
var ObservablePersistLocalStorage = class extends ObservablePersistLocalStorageBase {
|
|
63
|
+
constructor() {
|
|
64
|
+
super(
|
|
65
|
+
typeof localStorage !== "undefined" ? localStorage : process.env.NODE_ENV === "test" ? (
|
|
66
|
+
// @ts-expect-error This is ok to do in jest
|
|
67
|
+
globalThis._testlocalStorage
|
|
68
|
+
) : void 0
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
var ObservablePersistSessionStorage = class extends ObservablePersistLocalStorageBase {
|
|
73
|
+
constructor() {
|
|
74
|
+
super(
|
|
75
|
+
typeof sessionStorage !== "undefined" ? sessionStorage : process.env.NODE_ENV === "test" ? (
|
|
76
|
+
// @ts-expect-error This is ok to do in jest
|
|
77
|
+
globalThis._testlocalStorage
|
|
78
|
+
) : void 0
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
83
82
|
|
|
84
83
|
exports.ObservablePersistLocalStorage = ObservablePersistLocalStorage;
|
|
85
84
|
exports.ObservablePersistLocalStorageBase = ObservablePersistLocalStorageBase;
|
|
86
85
|
exports.ObservablePersistSessionStorage = ObservablePersistSessionStorage;
|
|
87
|
-
//# sourceMappingURL=local-storage.js.map
|
|
@@ -1,83 +1,81 @@
|
|
|
1
1
|
import { applyChanges, internal } from '@legendapp/state';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
// src/persist-plugins/local-storage.ts
|
|
4
|
+
var { safeParse, safeStringify } = internal;
|
|
5
|
+
var MetadataSuffix = "__m";
|
|
6
|
+
var ObservablePersistLocalStorageBase = class {
|
|
7
|
+
constructor(storage) {
|
|
8
|
+
this.data = {};
|
|
9
|
+
this.storage = storage;
|
|
10
|
+
}
|
|
11
|
+
getTable(table, init) {
|
|
12
|
+
if (!this.storage)
|
|
13
|
+
return void 0;
|
|
14
|
+
if (this.data[table] === void 0) {
|
|
15
|
+
try {
|
|
16
|
+
const value = this.storage.getItem(table);
|
|
17
|
+
this.data[table] = value ? safeParse(value) : init;
|
|
18
|
+
} catch (e) {
|
|
19
|
+
console.error("[legend-state] ObservablePersistLocalStorageBase failed to parse", table);
|
|
20
|
+
}
|
|
9
21
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
catch (_a) {
|
|
19
|
-
console.error('[legend-state] ObservablePersistLocalStorageBase failed to parse', table);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return this.data[table];
|
|
22
|
+
return this.data[table];
|
|
23
|
+
}
|
|
24
|
+
getMetadata(table) {
|
|
25
|
+
return this.getTable(table + MetadataSuffix, {});
|
|
26
|
+
}
|
|
27
|
+
set(table, changes) {
|
|
28
|
+
if (!this.data[table]) {
|
|
29
|
+
this.data[table] = {};
|
|
23
30
|
}
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
this.data[table] = applyChanges(this.data[table], changes);
|
|
32
|
+
this.save(table);
|
|
33
|
+
}
|
|
34
|
+
setMetadata(table, metadata) {
|
|
35
|
+
table = table + MetadataSuffix;
|
|
36
|
+
this.data[table] = metadata;
|
|
37
|
+
this.save(table);
|
|
38
|
+
}
|
|
39
|
+
deleteTable(table) {
|
|
40
|
+
if (!this.storage)
|
|
41
|
+
return void 0;
|
|
42
|
+
delete this.data[table];
|
|
43
|
+
this.storage.removeItem(table);
|
|
44
|
+
}
|
|
45
|
+
deleteMetadata(table) {
|
|
46
|
+
this.deleteTable(table + MetadataSuffix);
|
|
47
|
+
}
|
|
48
|
+
// Private
|
|
49
|
+
save(table) {
|
|
50
|
+
if (!this.storage)
|
|
51
|
+
return void 0;
|
|
52
|
+
const v = this.data[table];
|
|
53
|
+
if (v !== void 0 && v !== null) {
|
|
54
|
+
this.storage.setItem(table, safeStringify(v));
|
|
55
|
+
} else {
|
|
56
|
+
this.storage.removeItem(table);
|
|
26
57
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
save(table) {
|
|
50
|
-
if (!this.storage)
|
|
51
|
-
return undefined;
|
|
52
|
-
const v = this.data[table];
|
|
53
|
-
if (v !== undefined && v !== null) {
|
|
54
|
-
this.storage.setItem(table, safeStringify(v));
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.storage.removeItem(table);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
class ObservablePersistLocalStorage extends ObservablePersistLocalStorageBase {
|
|
62
|
-
constructor() {
|
|
63
|
-
super(typeof localStorage !== 'undefined'
|
|
64
|
-
? localStorage
|
|
65
|
-
: process.env.NODE_ENV === 'test'
|
|
66
|
-
? // @ts-expect-error This is ok to do in jest
|
|
67
|
-
globalThis._testlocalStorage
|
|
68
|
-
: undefined);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
class ObservablePersistSessionStorage extends ObservablePersistLocalStorageBase {
|
|
72
|
-
constructor() {
|
|
73
|
-
super(typeof sessionStorage !== 'undefined'
|
|
74
|
-
? sessionStorage
|
|
75
|
-
: process.env.NODE_ENV === 'test'
|
|
76
|
-
? // @ts-expect-error This is ok to do in jest
|
|
77
|
-
globalThis._testlocalStorage
|
|
78
|
-
: undefined);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var ObservablePersistLocalStorage = class extends ObservablePersistLocalStorageBase {
|
|
61
|
+
constructor() {
|
|
62
|
+
super(
|
|
63
|
+
typeof localStorage !== "undefined" ? localStorage : process.env.NODE_ENV === "test" ? (
|
|
64
|
+
// @ts-expect-error This is ok to do in jest
|
|
65
|
+
globalThis._testlocalStorage
|
|
66
|
+
) : void 0
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
var ObservablePersistSessionStorage = class extends ObservablePersistLocalStorageBase {
|
|
71
|
+
constructor() {
|
|
72
|
+
super(
|
|
73
|
+
typeof sessionStorage !== "undefined" ? sessionStorage : process.env.NODE_ENV === "test" ? (
|
|
74
|
+
// @ts-expect-error This is ok to do in jest
|
|
75
|
+
globalThis._testlocalStorage
|
|
76
|
+
) : void 0
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
81
80
|
|
|
82
81
|
export { ObservablePersistLocalStorage, ObservablePersistLocalStorageBase, ObservablePersistSessionStorage };
|
|
83
|
-
//# sourceMappingURL=local-storage.mjs.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Change } from '@legendapp/state';
|
|
2
|
+
import { ObservablePersistPlugin, PersistOptions, PersistMetadata } from '@legendapp/state/sync';
|
|
3
|
+
|
|
4
|
+
declare class ObservablePersistMMKV implements ObservablePersistPlugin {
|
|
5
|
+
private data;
|
|
6
|
+
private storages;
|
|
7
|
+
getTable<T = any>(table: string, init: object, config: PersistOptions): T;
|
|
8
|
+
getMetadata(table: string, config: PersistOptions): PersistMetadata;
|
|
9
|
+
set(table: string, changes: Change[], config: PersistOptions): void;
|
|
10
|
+
setMetadata(table: string, metadata: PersistMetadata, config: PersistOptions): Promise<void>;
|
|
11
|
+
deleteTable(table: string, config: PersistOptions): void;
|
|
12
|
+
deleteMetadata(table: string, config: PersistOptions): void;
|
|
13
|
+
private getStorage;
|
|
14
|
+
private setValue;
|
|
15
|
+
private save;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { ObservablePersistMMKV };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { Change } from '@legendapp/state';
|
|
2
|
+
import { ObservablePersistPlugin, PersistOptions, PersistMetadata } from '@legendapp/state/sync';
|
|
3
|
+
|
|
4
|
+
declare class ObservablePersistMMKV implements ObservablePersistPlugin {
|
|
4
5
|
private data;
|
|
5
6
|
private storages;
|
|
6
7
|
getTable<T = any>(table: string, init: object, config: PersistOptions): T;
|
|
@@ -13,3 +14,5 @@ export declare class ObservablePersistMMKV implements ObservablePersistPlugin {
|
|
|
13
14
|
private setValue;
|
|
14
15
|
private save;
|
|
15
16
|
}
|
|
17
|
+
|
|
18
|
+
export { ObservablePersistMMKV };
|
package/persist-plugins/mmkv.js
CHANGED
|
@@ -3,96 +3,92 @@
|
|
|
3
3
|
var state = require('@legendapp/state');
|
|
4
4
|
var reactNativeMmkv = require('react-native-mmkv');
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
// src/persist-plugins/mmkv.ts
|
|
7
|
+
var symbolDefault = Symbol();
|
|
8
|
+
var MetadataSuffix = "__m";
|
|
9
|
+
var { safeParse, safeStringify } = state.internal;
|
|
10
|
+
var ObservablePersistMMKV = class {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.data = {};
|
|
13
|
+
this.storages = /* @__PURE__ */ new Map([
|
|
14
|
+
[
|
|
15
|
+
symbolDefault,
|
|
16
|
+
new reactNativeMmkv.MMKV({
|
|
17
|
+
id: `obsPersist`
|
|
18
|
+
})
|
|
19
|
+
]
|
|
20
|
+
]);
|
|
21
|
+
}
|
|
22
|
+
// Gets
|
|
23
|
+
getTable(table, init, config) {
|
|
24
|
+
const storage = this.getStorage(config);
|
|
25
|
+
if (this.data[table] === void 0) {
|
|
26
|
+
try {
|
|
27
|
+
const value = storage.getString(table);
|
|
28
|
+
this.data[table] = value ? safeParse(value) : init;
|
|
29
|
+
} catch (e) {
|
|
30
|
+
console.error("[legend-state] MMKV failed to parse", table);
|
|
31
|
+
}
|
|
20
32
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
console.error('[legend-state] MMKV failed to parse', table);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return this.data[table];
|
|
33
|
+
return this.data[table];
|
|
34
|
+
}
|
|
35
|
+
getMetadata(table, config) {
|
|
36
|
+
return this.getTable(table + MetadataSuffix, {}, config);
|
|
37
|
+
}
|
|
38
|
+
// Sets
|
|
39
|
+
set(table, changes, config) {
|
|
40
|
+
if (!this.data[table]) {
|
|
41
|
+
this.data[table] = {};
|
|
34
42
|
}
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
for (let i = 0; i < changes.length; i++) {
|
|
44
|
+
const { path, valueAtPath, pathTypes } = changes[i];
|
|
45
|
+
this.data[table] = state.setAtPath(this.data[table], path, pathTypes, valueAtPath);
|
|
37
46
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
this.save(table, config);
|
|
48
|
+
}
|
|
49
|
+
setMetadata(table, metadata, config) {
|
|
50
|
+
return this.setValue(table + MetadataSuffix, metadata, config);
|
|
51
|
+
}
|
|
52
|
+
deleteTable(table, config) {
|
|
53
|
+
const storage = this.getStorage(config);
|
|
54
|
+
delete this.data[table];
|
|
55
|
+
storage.delete(table);
|
|
56
|
+
}
|
|
57
|
+
deleteMetadata(table, config) {
|
|
58
|
+
this.deleteTable(table + MetadataSuffix, config);
|
|
59
|
+
}
|
|
60
|
+
// Private
|
|
61
|
+
getStorage(config) {
|
|
62
|
+
const { mmkv } = config;
|
|
63
|
+
if (mmkv) {
|
|
64
|
+
const key = JSON.stringify(mmkv);
|
|
65
|
+
let storage = this.storages.get(key);
|
|
66
|
+
if (!storage) {
|
|
67
|
+
storage = new reactNativeMmkv.MMKV(mmkv);
|
|
68
|
+
this.storages.set(key, storage);
|
|
69
|
+
}
|
|
70
|
+
return storage;
|
|
71
|
+
} else {
|
|
72
|
+
return this.storages.get(symbolDefault);
|
|
48
73
|
}
|
|
49
|
-
|
|
50
|
-
|
|
74
|
+
}
|
|
75
|
+
async setValue(table, value, config) {
|
|
76
|
+
this.data[table] = value;
|
|
77
|
+
this.save(table, config);
|
|
78
|
+
}
|
|
79
|
+
save(table, config) {
|
|
80
|
+
const storage = this.getStorage(config);
|
|
81
|
+
const v = this.data[table];
|
|
82
|
+
if (v !== void 0) {
|
|
83
|
+
try {
|
|
84
|
+
storage.set(table, safeStringify(v));
|
|
85
|
+
} catch (err) {
|
|
86
|
+
console.error(err);
|
|
87
|
+
}
|
|
88
|
+
} else {
|
|
89
|
+
storage.delete(table);
|
|
51
90
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
delete this.data[table];
|
|
55
|
-
storage.delete(table);
|
|
56
|
-
}
|
|
57
|
-
deleteMetadata(table, config) {
|
|
58
|
-
this.deleteTable(table + MetadataSuffix, config);
|
|
59
|
-
}
|
|
60
|
-
// Private
|
|
61
|
-
getStorage(config) {
|
|
62
|
-
const { mmkv } = config;
|
|
63
|
-
if (mmkv) {
|
|
64
|
-
const key = JSON.stringify(mmkv);
|
|
65
|
-
let storage = this.storages.get(key);
|
|
66
|
-
if (!storage) {
|
|
67
|
-
storage = new reactNativeMmkv.MMKV(mmkv);
|
|
68
|
-
this.storages.set(key, storage);
|
|
69
|
-
}
|
|
70
|
-
return storage;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
return this.storages.get(symbolDefault);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
async setValue(table, value, config) {
|
|
77
|
-
this.data[table] = value;
|
|
78
|
-
this.save(table, config);
|
|
79
|
-
}
|
|
80
|
-
save(table, config) {
|
|
81
|
-
const storage = this.getStorage(config);
|
|
82
|
-
const v = this.data[table];
|
|
83
|
-
if (v !== undefined) {
|
|
84
|
-
try {
|
|
85
|
-
storage.set(table, safeStringify(v));
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
console.error(err);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
storage.delete(table);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
96
93
|
|
|
97
94
|
exports.ObservablePersistMMKV = ObservablePersistMMKV;
|
|
98
|
-
//# sourceMappingURL=mmkv.js.map
|