MCPcopy Index your code
hub / github.com/tinyplex/tinybase / createStoragePersister

Function createStoragePersister

src/persisters/persister-browser/index.ts:32–75  ·  view source on GitHub ↗
(
  store: Store | MergeableStore,
  storageName: string,
  storage: Storage,
  onIgnoredError?: (error: any) => void,
)

Source from the content-addressed store, hash-verified

30const STORAGE = 'storage';
31
32const createStoragePersister = (
33 store: Store | MergeableStore,
34 storageName: string,
35 storage: Storage,
36 onIgnoredError?: (error: any) => void,
37): Persister<PersistsType.StoreOrMergeableStore> => {
38 const getPersisted = async (): Promise<
39 PersistedContent<PersistsType.StoreOrMergeableStore>
40 > => jsonParseWithUndefined(storage.getItem(storageName) as string);
41
42 const setPersisted = async (
43 getContent: () => PersistedContent<PersistsType.StoreOrMergeableStore>,
44 ): Promise<void> =>
45 storage.setItem(storageName, jsonStringWithUndefined(getContent()));
46
47 const addPersisterListener = (
48 listener: PersisterListener<PersistsType.StoreOrMergeableStore>,
49 ): StorageListener => {
50 const storageListener = (event: StorageEvent): void => {
51 if (event.storageArea === storage && event.key === storageName) {
52 tryCatch(
53 () => listener(jsonParseWithUndefined(event.newValue as string)),
54 listener,
55 );
56 }
57 };
58 WINDOW.addEventListener(STORAGE, storageListener);
59 return storageListener;
60 };
61
62 const delPersisterListener = (storageListener: StorageListener): void =>
63 WINDOW.removeEventListener(STORAGE, storageListener);
64
65 return createCustomPersister(
66 store,
67 getPersisted,
68 setPersisted,
69 addPersisterListener,
70 delPersisterListener,
71 onIgnoredError,
72 3, // StoreOrMergeableStore,
73 {getStorageName: () => storageName},
74 );
75};
76
77export const createLocalPersister = ((
78 store: Store | MergeableStore,

Callers 1

index.tsFile · 0.70

Calls 1

createCustomPersisterFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…