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

Function createCustomPersister

src/persisters/common/create.ts:100–392  ·  view source on GitHub ↗
(
  store: PersistedStore<Persist>,
  getPersisted: () => Promise<PersistedContent<Persist> | undefined>,
  setPersisted: (
    getContent: () => PersistedContent<Persist>,
    changes?: PersistedChanges<
      Persist,
      IsSynchronizer extends 1 ? false : true
    >,
  ) => Promise<void>,
  addPersisterListener: (
    listener: PersisterListener<Persist>,
  ) => ListenerHandle | Promise<ListenerHandle>,
  delPersisterListener: (
    listenerHandle: ListenerHandle,
  ) => void | Promise<void>,
  onIgnoredError?: (error: any) => void,
  persist?: Persist,
  // undocumented:
  extra: {[methodName: string]: (...params: any[]) => any} = {},
  isSynchronizer: IsSynchronizer = 0 as IsSynchronizer,
  scheduleId = [],
)

Source from the content-addressed store, hash-verified

98 : errorNew('Store type not supported by this Persister');
99
100export const createCustomPersister = <
101 ListenerHandle,
102 Persist extends PersistsEnum = PersistsEnum.StoreOnly,
103 IsSynchronizer extends 0 | 1 = 0,
104>(
105 store: PersistedStore<Persist>,
106 getPersisted: () => Promise<PersistedContent<Persist> | undefined>,
107 setPersisted: (
108 getContent: () => PersistedContent<Persist>,
109 changes?: PersistedChanges<
110 Persist,
111 IsSynchronizer extends 1 ? false : true
112 >,
113 ) => Promise<void>,
114 addPersisterListener: (
115 listener: PersisterListener<Persist>,
116 ) => ListenerHandle | Promise<ListenerHandle>,
117 delPersisterListener: (
118 listenerHandle: ListenerHandle,
119 ) => void | Promise<void>,
120 onIgnoredError?: (error: any) => void,
121 persist?: Persist,
122 // undocumented:
123 extra: {[methodName: string]: (...params: any[]) => any} = {},
124 isSynchronizer: IsSynchronizer = 0 as IsSynchronizer,
125 scheduleId = [],
126): Persister<Persist> => {
127 let status: StatusValues = StatusValues.Idle;
128 let loads = 0;
129 let saves = 0;
130 let action;
131 let autoLoadHandle: ListenerHandle | undefined;
132 let autoSaveListenerId: Id | undefined;
133
134 mapEnsure(scheduleRunning, scheduleId, () => 0);
135 mapEnsure(scheduleActions, scheduleId, () => []);
136
137 const statusListeners: IdSet2 = mapNew();
138
139 const [
140 isMergeableStore,
141 getContent,
142 getChanges,
143 hasChanges,
144 setDefaultContent,
145 ] = getStoreFunctions(persist, store, isSynchronizer);
146
147 const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
148 () => persister,
149 );
150
151 const setStatus = (newStatus: StatusValues): void => {
152 if (newStatus != status) {
153 status = newStatus;
154 callListeners(statusListeners, undefined, status);
155 }
156 };
157

Callers 15

persisters.test.tsFile · 0.90
mergeable.test.tsFile · 0.90
getMockedCustomFunction · 0.90
createStoragePersisterFunction · 0.90
index.tsFile · 0.90
index.tsFile · 0.90
index.tsFile · 0.90
index.tsFile · 0.90
index.tsFile · 0.90
index.tsFile · 0.90
index.tsFile · 0.90

Calls 4

mapEnsureFunction · 0.90
mapNewFunction · 0.90
getListenerFunctionsFunction · 0.90
getStoreFunctionsFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…