@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.
Files changed (327) hide show
  1. package/.DS_Store +0 -0
  2. package/CHANGELOG.md +1 -831
  3. package/LICENSE +1 -21
  4. package/README.md +1 -141
  5. package/as/arrayAsRecord.d.mts +5 -0
  6. package/as/arrayAsRecord.d.ts +5 -0
  7. package/as/arrayAsRecord.js +28 -0
  8. package/as/arrayAsRecord.mjs +26 -0
  9. package/as/arrayAsSet.d.mts +5 -0
  10. package/as/arrayAsSet.d.ts +5 -0
  11. package/as/arrayAsSet.js +13 -0
  12. package/as/arrayAsSet.mjs +11 -0
  13. package/as/arrayAsString.d.mts +5 -0
  14. package/as/arrayAsString.d.ts +5 -0
  15. package/as/arrayAsString.js +13 -0
  16. package/as/arrayAsString.mjs +11 -0
  17. package/as/numberAsString.d.mts +5 -0
  18. package/as/numberAsString.d.ts +5 -0
  19. package/as/numberAsString.js +13 -0
  20. package/as/numberAsString.mjs +11 -0
  21. package/as/recordAsArray.d.mts +5 -0
  22. package/as/recordAsArray.d.ts +5 -0
  23. package/as/recordAsArray.js +25 -0
  24. package/as/recordAsArray.mjs +23 -0
  25. package/as/recordAsString.d.mts +5 -0
  26. package/as/recordAsString.d.ts +5 -0
  27. package/as/recordAsString.js +13 -0
  28. package/as/recordAsString.mjs +11 -0
  29. package/as/setAsArray.d.mts +5 -0
  30. package/as/setAsArray.d.ts +5 -0
  31. package/as/setAsArray.js +13 -0
  32. package/as/setAsArray.mjs +11 -0
  33. package/as/setAsString.d.mts +5 -0
  34. package/as/setAsString.d.ts +5 -0
  35. package/as/setAsString.js +13 -0
  36. package/as/setAsString.mjs +11 -0
  37. package/as/stringAsArray.d.mts +5 -0
  38. package/as/stringAsArray.d.ts +5 -0
  39. package/as/stringAsArray.js +13 -0
  40. package/as/stringAsArray.mjs +11 -0
  41. package/as/stringAsNumber.d.mts +5 -0
  42. package/as/stringAsNumber.d.ts +5 -0
  43. package/as/stringAsNumber.js +16 -0
  44. package/as/stringAsNumber.mjs +14 -0
  45. package/as/stringAsRecord.d.mts +5 -0
  46. package/as/stringAsRecord.d.ts +5 -0
  47. package/as/stringAsRecord.js +15 -0
  48. package/as/stringAsRecord.mjs +13 -0
  49. package/as/stringAsSet.d.mts +5 -0
  50. package/as/stringAsSet.d.ts +5 -0
  51. package/as/stringAsSet.js +13 -0
  52. package/as/stringAsSet.mjs +11 -0
  53. package/babel.d.mts +21 -0
  54. package/babel.d.ts +21 -2
  55. package/babel.js +57 -53
  56. package/babel.mjs +65 -0
  57. package/config/enable$GetSet.js +13 -14
  58. package/config/enable$GetSet.mjs +13 -14
  59. package/config/enableReactComponents.d.mts +9 -0
  60. package/config/enableReactComponents.d.ts +4 -2
  61. package/config/enableReactComponents.js +13 -10
  62. package/config/enableReactComponents.mjs +13 -10
  63. package/config/enableReactNativeComponents.d.mts +22 -0
  64. package/config/enableReactNativeComponents.d.ts +6 -4
  65. package/config/enableReactNativeComponents.js +43 -47
  66. package/config/enableReactNativeComponents.mjs +43 -47
  67. package/config/enableReactTracking.d.mts +7 -0
  68. package/config/enableReactTracking.d.ts +3 -2
  69. package/config/enableReactTracking.js +33 -38
  70. package/config/enableReactTracking.mjs +33 -38
  71. package/config/enableReactUse.d.mts +10 -0
  72. package/config/enableReactUse.d.ts +4 -1
  73. package/config/enableReactUse.js +15 -14
  74. package/config/enableReactUse.mjs +15 -14
  75. package/config/{enable$GetSet.d.ts → enable_GetSet.d.mts} +4 -2
  76. package/config/enable_GetSet.d.ts +10 -0
  77. package/config/enable_PeekAssign.d.mts +10 -0
  78. package/config/enable_PeekAssign.d.ts +4 -2
  79. package/config/enable_PeekAssign.js +13 -14
  80. package/config/enable_PeekAssign.mjs +13 -14
  81. package/helpers/pageHash.d.mts +9 -0
  82. package/helpers/pageHash.d.ts +2 -0
  83. package/helpers/pageHash.js +25 -30
  84. package/helpers/pageHash.mjs +25 -30
  85. package/helpers/pageHashParams.d.mts +9 -0
  86. package/helpers/pageHashParams.d.ts +2 -0
  87. package/helpers/pageHashParams.js +34 -37
  88. package/helpers/pageHashParams.mjs +34 -37
  89. package/helpers/time.d.mts +6 -0
  90. package/helpers/time.d.ts +6 -3
  91. package/helpers/time.js +17 -17
  92. package/helpers/time.mjs +17 -17
  93. package/helpers/trackHistory.d.mts +6 -0
  94. package/helpers/trackHistory.d.ts +4 -2
  95. package/helpers/trackHistory.js +13 -16
  96. package/helpers/trackHistory.mjs +13 -16
  97. package/helpers/undoRedo.d.mts +37 -0
  98. package/helpers/undoRedo.d.ts +5 -3
  99. package/helpers/undoRedo.js +59 -94
  100. package/helpers/undoRedo.mjs +59 -94
  101. package/index.d.mts +404 -0
  102. package/index.d.ts +371 -28
  103. package/index.js +2015 -2166
  104. package/index.mjs +2015 -2166
  105. package/package.json +254 -195
  106. package/persist-plugins/async-storage.d.mts +18 -0
  107. package/persist-plugins/async-storage.d.ts +6 -3
  108. package/persist-plugins/async-storage.js +79 -86
  109. package/persist-plugins/async-storage.mjs +79 -86
  110. package/persist-plugins/indexeddb.d.mts +29 -0
  111. package/persist-plugins/indexeddb.d.ts +6 -3
  112. package/persist-plugins/indexeddb.js +331 -352
  113. package/persist-plugins/indexeddb.mjs +331 -352
  114. package/persist-plugins/local-storage.d.mts +23 -0
  115. package/persist-plugins/local-storage.d.ts +8 -5
  116. package/persist-plugins/local-storage.js +74 -76
  117. package/persist-plugins/local-storage.mjs +74 -76
  118. package/persist-plugins/mmkv.d.mts +18 -0
  119. package/persist-plugins/mmkv.d.ts +6 -3
  120. package/persist-plugins/mmkv.js +82 -86
  121. package/persist-plugins/mmkv.mjs +82 -86
  122. package/react-hooks/createObservableHook.d.mts +5 -0
  123. package/react-hooks/createObservableHook.d.ts +4 -1
  124. package/react-hooks/createObservableHook.js +29 -30
  125. package/react-hooks/createObservableHook.mjs +25 -30
  126. package/react-hooks/useHover.d.mts +5 -0
  127. package/react-hooks/useHover.d.ts +5 -3
  128. package/react-hooks/useHover.js +29 -29
  129. package/react-hooks/useHover.mjs +29 -29
  130. package/react-hooks/useMeasure.d.mts +9 -0
  131. package/react-hooks/useMeasure.d.ts +5 -2
  132. package/react-hooks/useMeasure.js +30 -32
  133. package/react-hooks/useMeasure.mjs +30 -32
  134. package/react-hooks/useObservableNextRouter.d.mts +35 -0
  135. package/react-hooks/useObservableNextRouter.d.ts +9 -7
  136. package/react-hooks/useObservableNextRouter.js +64 -77
  137. package/react-hooks/useObservableNextRouter.mjs +60 -77
  138. package/react.d.mts +157 -0
  139. package/react.d.ts +157 -21
  140. package/react.js +458 -749
  141. package/react.mjs +457 -752
  142. package/sync-plugins/crud.d.mts +54 -0
  143. package/sync-plugins/crud.d.ts +12 -10
  144. package/sync-plugins/crud.js +253 -270
  145. package/sync-plugins/crud.mjs +253 -270
  146. package/sync-plugins/fetch.d.mts +21 -0
  147. package/sync-plugins/fetch.d.ts +7 -4
  148. package/sync-plugins/fetch.js +50 -37
  149. package/sync-plugins/fetch.mjs +50 -37
  150. package/sync-plugins/keel.d.mts +108 -0
  151. package/sync-plugins/keel.d.ts +17 -15
  152. package/sync-plugins/keel.js +229 -462
  153. package/sync-plugins/keel.mjs +227 -464
  154. package/sync-plugins/supabase.d.mts +39 -0
  155. package/sync-plugins/supabase.d.ts +16 -14
  156. package/sync-plugins/supabase.js +128 -128
  157. package/sync-plugins/supabase.mjs +128 -128
  158. package/sync-plugins/tanstack-query.d.mts +14 -0
  159. package/sync-plugins/tanstack-query.d.ts +7 -4
  160. package/sync-plugins/tanstack-query.js +51 -57
  161. package/sync-plugins/tanstack-query.mjs +51 -57
  162. package/sync-plugins/tanstack-react-query.d.mts +8 -0
  163. package/sync-plugins/tanstack-react-query.d.ts +6 -1
  164. package/sync-plugins/tanstack-react-query.js +2 -2
  165. package/sync-plugins/tanstack-react-query.mjs +2 -2
  166. package/sync.d.mts +351 -0
  167. package/sync.d.ts +349 -9
  168. package/sync.js +910 -964
  169. package/sync.mjs +920 -974
  170. package/trace.d.mts +9 -0
  171. package/trace.d.ts +9 -4
  172. package/trace.js +72 -62
  173. package/trace.mjs +72 -62
  174. package/types/babel.d.ts +1 -12
  175. package/babel.js.map +0 -1
  176. package/config/enable$GetSet.js.map +0 -1
  177. package/config/enable$GetSet.mjs.map +0 -1
  178. package/config/enableReactComponents.js.map +0 -1
  179. package/config/enableReactComponents.mjs.map +0 -1
  180. package/config/enableReactNativeComponents.js.map +0 -1
  181. package/config/enableReactNativeComponents.mjs.map +0 -1
  182. package/config/enableReactTracking.js.map +0 -1
  183. package/config/enableReactTracking.mjs.map +0 -1
  184. package/config/enableReactUse.js.map +0 -1
  185. package/config/enableReactUse.mjs.map +0 -1
  186. package/config/enable_PeekAssign.js.map +0 -1
  187. package/config/enable_PeekAssign.mjs.map +0 -1
  188. package/helpers/pageHash.js.map +0 -1
  189. package/helpers/pageHash.mjs.map +0 -1
  190. package/helpers/pageHashParams.js.map +0 -1
  191. package/helpers/pageHashParams.mjs.map +0 -1
  192. package/helpers/time.js.map +0 -1
  193. package/helpers/time.mjs.map +0 -1
  194. package/helpers/trackHistory.js.map +0 -1
  195. package/helpers/trackHistory.mjs.map +0 -1
  196. package/helpers/undoRedo.js.map +0 -1
  197. package/helpers/undoRedo.mjs.map +0 -1
  198. package/history.d.ts +0 -1
  199. package/history.js +0 -24
  200. package/history.js.map +0 -1
  201. package/history.mjs +0 -22
  202. package/history.mjs.map +0 -1
  203. package/index.js.map +0 -1
  204. package/index.mjs.map +0 -1
  205. package/persist-plugins/async-storage.js.map +0 -1
  206. package/persist-plugins/async-storage.mjs.map +0 -1
  207. package/persist-plugins/indexeddb.js.map +0 -1
  208. package/persist-plugins/indexeddb.mjs.map +0 -1
  209. package/persist-plugins/local-storage.js.map +0 -1
  210. package/persist-plugins/local-storage.mjs.map +0 -1
  211. package/persist-plugins/mmkv.js.map +0 -1
  212. package/persist-plugins/mmkv.mjs.map +0 -1
  213. package/react-hooks/createObservableHook.js.map +0 -1
  214. package/react-hooks/createObservableHook.mjs.map +0 -1
  215. package/react-hooks/useHover.js.map +0 -1
  216. package/react-hooks/useHover.mjs.map +0 -1
  217. package/react-hooks/useMeasure.js.map +0 -1
  218. package/react-hooks/useMeasure.mjs.map +0 -1
  219. package/react-hooks/useObservableNextRouter.js.map +0 -1
  220. package/react-hooks/useObservableNextRouter.mjs.map +0 -1
  221. package/react.js.map +0 -1
  222. package/react.mjs.map +0 -1
  223. package/src/ObservableObject.ts +0 -1350
  224. package/src/ObservablePrimitive.ts +0 -62
  225. package/src/babel/index.ts +0 -83
  226. package/src/batching.ts +0 -357
  227. package/src/computed.ts +0 -18
  228. package/src/config/enable$GetSet.ts +0 -30
  229. package/src/config/enableReactComponents.ts +0 -26
  230. package/src/config/enableReactNativeComponents.ts +0 -102
  231. package/src/config/enableReactTracking.ts +0 -62
  232. package/src/config/enableReactUse.ts +0 -32
  233. package/src/config/enable_PeekAssign.ts +0 -31
  234. package/src/config.ts +0 -47
  235. package/src/createObservable.ts +0 -47
  236. package/src/event.ts +0 -26
  237. package/src/globals.ts +0 -235
  238. package/src/helpers/pageHash.ts +0 -41
  239. package/src/helpers/pageHashParams.ts +0 -55
  240. package/src/helpers/time.ts +0 -30
  241. package/src/helpers/trackHistory.ts +0 -29
  242. package/src/helpers/undoRedo.ts +0 -111
  243. package/src/helpers.ts +0 -231
  244. package/src/is.ts +0 -63
  245. package/src/linked.ts +0 -17
  246. package/src/observable.ts +0 -32
  247. package/src/observableInterfaces.ts +0 -151
  248. package/src/observableTypes.ts +0 -232
  249. package/src/observe.ts +0 -89
  250. package/src/old-plugins/firebase.ts +0 -1053
  251. package/src/onChange.ts +0 -146
  252. package/src/persist/configureObservablePersistence.ts +0 -7
  253. package/src/persist/fieldTransformer.ts +0 -149
  254. package/src/persist/observablePersistRemoteFunctionsAdapter.ts +0 -39
  255. package/src/persist/persistObservable.ts +0 -1034
  256. package/src/persist-plugins/async-storage.ts +0 -99
  257. package/src/persist-plugins/indexeddb.ts +0 -439
  258. package/src/persist-plugins/local-storage.ts +0 -86
  259. package/src/persist-plugins/mmkv.ts +0 -91
  260. package/src/proxy.ts +0 -28
  261. package/src/react/Computed.tsx +0 -8
  262. package/src/react/For.tsx +0 -116
  263. package/src/react/Memo.tsx +0 -4
  264. package/src/react/Reactive.tsx +0 -53
  265. package/src/react/Show.tsx +0 -33
  266. package/src/react/Switch.tsx +0 -43
  267. package/src/react/react-globals.ts +0 -3
  268. package/src/react/reactInterfaces.ts +0 -32
  269. package/src/react/reactive-observer.tsx +0 -210
  270. package/src/react/useComputed.ts +0 -36
  271. package/src/react/useEffectOnce.ts +0 -41
  272. package/src/react/useIsMounted.ts +0 -16
  273. package/src/react/useMount.ts +0 -15
  274. package/src/react/useObservable.ts +0 -24
  275. package/src/react/useObservableReducer.ts +0 -52
  276. package/src/react/useObservableState.ts +0 -30
  277. package/src/react/useObserve.ts +0 -54
  278. package/src/react/useObserveEffect.ts +0 -40
  279. package/src/react/usePauseProvider.tsx +0 -16
  280. package/src/react/useSelector.ts +0 -167
  281. package/src/react/useUnmount.ts +0 -8
  282. package/src/react/useWhen.ts +0 -9
  283. package/src/react-hooks/createObservableHook.ts +0 -53
  284. package/src/react-hooks/useHover.ts +0 -40
  285. package/src/react-hooks/useMeasure.ts +0 -48
  286. package/src/react-hooks/useObservableNextRouter.ts +0 -137
  287. package/src/retry.ts +0 -71
  288. package/src/setupTracking.ts +0 -26
  289. package/src/sync/activateSyncedNode.ts +0 -128
  290. package/src/sync/configureObservableSync.ts +0 -7
  291. package/src/sync/persistTypes.ts +0 -216
  292. package/src/sync/syncHelpers.ts +0 -180
  293. package/src/sync/syncObservable.ts +0 -1056
  294. package/src/sync/syncObservableAdapter.ts +0 -31
  295. package/src/sync/syncTypes.ts +0 -189
  296. package/src/sync/synced.ts +0 -21
  297. package/src/sync-plugins/crud.ts +0 -412
  298. package/src/sync-plugins/fetch.ts +0 -80
  299. package/src/sync-plugins/keel.ts +0 -495
  300. package/src/sync-plugins/supabase.ts +0 -249
  301. package/src/sync-plugins/tanstack-query.ts +0 -113
  302. package/src/sync-plugins/tanstack-react-query.ts +0 -12
  303. package/src/trace/traceHelpers.ts +0 -11
  304. package/src/trace/useTraceListeners.ts +0 -34
  305. package/src/trace/useTraceUpdates.ts +0 -24
  306. package/src/trace/useVerifyNotTracking.ts +0 -33
  307. package/src/trace/useVerifyOneRender.ts +0 -10
  308. package/src/trackSelector.ts +0 -52
  309. package/src/tracking.ts +0 -43
  310. package/src/types/babel.d.ts +0 -12
  311. package/src/when.ts +0 -75
  312. package/sync-plugins/crud.js.map +0 -1
  313. package/sync-plugins/crud.mjs.map +0 -1
  314. package/sync-plugins/fetch.js.map +0 -1
  315. package/sync-plugins/fetch.mjs.map +0 -1
  316. package/sync-plugins/keel.js.map +0 -1
  317. package/sync-plugins/keel.mjs.map +0 -1
  318. package/sync-plugins/supabase.js.map +0 -1
  319. package/sync-plugins/supabase.mjs.map +0 -1
  320. package/sync-plugins/tanstack-query.js.map +0 -1
  321. package/sync-plugins/tanstack-query.mjs.map +0 -1
  322. package/sync-plugins/tanstack-react-query.js.map +0 -1
  323. package/sync-plugins/tanstack-react-query.mjs.map +0 -1
  324. package/sync.js.map +0 -1
  325. package/sync.mjs.map +0 -1
  326. package/trace.js.map +0 -1
  327. 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 type { Change } from '@legendapp/state';
2
- import type { ObservablePersistPlugin, PersistMetadata } from '@legendapp/state/sync';
3
- export declare class ObservablePersistLocalStorageBase implements ObservablePersistPlugin {
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
- export declare class ObservablePersistLocalStorage extends ObservablePersistLocalStorageBase {
16
+ declare class ObservablePersistLocalStorage extends ObservablePersistLocalStorageBase {
16
17
  constructor();
17
18
  }
18
- export declare class ObservablePersistSessionStorage extends ObservablePersistLocalStorageBase {
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
- const { safeParse, safeStringify } = state.internal;
6
- const MetadataSuffix = '__m';
7
- class ObservablePersistLocalStorageBase {
8
- constructor(storage) {
9
- this.data = {};
10
- this.storage = storage;
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
- getTable(table, init) {
13
- if (!this.storage)
14
- return undefined;
15
- if (this.data[table] === undefined) {
16
- try {
17
- const value = this.storage.getItem(table);
18
- this.data[table] = value ? safeParse(value) : init;
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
- getMetadata(table) {
27
- return this.getTable(table + MetadataSuffix, {});
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
- set(table, changes) {
30
- if (!this.data[table]) {
31
- this.data[table] = {};
32
- }
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 undefined;
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 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
- const { safeParse, safeStringify } = internal;
4
- const MetadataSuffix = '__m';
5
- class ObservablePersistLocalStorageBase {
6
- constructor(storage) {
7
- this.data = {};
8
- this.storage = storage;
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
- getTable(table, init) {
11
- if (!this.storage)
12
- return undefined;
13
- if (this.data[table] === undefined) {
14
- try {
15
- const value = this.storage.getItem(table);
16
- this.data[table] = value ? safeParse(value) : init;
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
- getMetadata(table) {
25
- return this.getTable(table + MetadataSuffix, {});
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
- set(table, changes) {
28
- if (!this.data[table]) {
29
- this.data[table] = {};
30
- }
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 undefined;
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 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 type { Change } from '@legendapp/state';
2
- import type { ObservablePersistPlugin, PersistMetadata, PersistOptions } from '@legendapp/state/sync';
3
- export declare class ObservablePersistMMKV implements ObservablePersistPlugin {
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 };
@@ -3,96 +3,92 @@
3
3
  var state = require('@legendapp/state');
4
4
  var reactNativeMmkv = require('react-native-mmkv');
5
5
 
6
- const symbolDefault = Symbol();
7
- const MetadataSuffix = '__m';
8
- const { safeParse, safeStringify } = state.internal;
9
- class ObservablePersistMMKV {
10
- constructor() {
11
- this.data = {};
12
- this.storages = new Map([
13
- [
14
- symbolDefault,
15
- new reactNativeMmkv.MMKV({
16
- id: `obsPersist`,
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
- // Gets
22
- getTable(table, init, config) {
23
- const storage = this.getStorage(config);
24
- if (this.data[table] === undefined) {
25
- try {
26
- const value = storage.getString(table);
27
- this.data[table] = value ? safeParse(value) : init;
28
- }
29
- catch (_a) {
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
- getMetadata(table, config) {
36
- return this.getTable(table + MetadataSuffix, {}, config);
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
- // Sets
39
- set(table, changes, config) {
40
- if (!this.data[table]) {
41
- this.data[table] = {};
42
- }
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);
46
- }
47
- this.save(table, config);
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
- setMetadata(table, metadata, config) {
50
- return this.setValue(table + MetadataSuffix, metadata, config);
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
- 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
- }
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