Skip to content

Commit ba39a45

Browse files
committed
[persisters] onIgnoredError
1 parent 5e326e1 commit ba39a45

14 files changed

+48
-4
lines changed

src/persisters.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export const createCustomPersister = <ListeningHandle>(
2020
) => Promise<void>,
2121
addPersisterListener: (listener: PersisterListener) => ListeningHandle,
2222
delPersisterListener: (listeningHandle: ListeningHandle) => void,
23+
onIgnoredError?: (error: any) => void,
2324
): Persister => {
2425
let listenerId: Id | undefined;
2526
let loadSave = 0;
@@ -39,7 +40,9 @@ export const createCustomPersister = <ListeningHandle>(
3940
while (!isUndefined((action = arrayShift(scheduledActions)))) {
4041
try {
4142
await action();
42-
} catch {}
43+
} catch (error) {
44+
onIgnoredError?.(error);
45+
}
4346
}
4447
running = 0;
4548
}
@@ -91,7 +94,9 @@ export const createCustomPersister = <ListeningHandle>(
9194
getContent?.() ??
9295
((await getPersisted()) as [Tables, Values]),
9396
);
94-
} catch {}
97+
} catch (error) {
98+
onIgnoredError?.(error);
99+
}
95100
}
96101
}),
97102
);
@@ -119,7 +124,9 @@ export const createCustomPersister = <ListeningHandle>(
119124
await persister.schedule(async () => {
120125
try {
121126
await setPersisted(store.getContent, getTransactionChanges);
122-
} catch {}
127+
} catch (error) {
128+
onIgnoredError?.(error);
129+
}
123130
loadSave = 0;
124131
});
125132
}

src/persisters/persister-automerge.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ export const createAutomergePersister = (
129129
store: Store,
130130
docHandle: DocHandle<any>,
131131
docObjName = TINYBASE,
132+
onIgnoredError?: (error: any) => void,
132133
): Persister => {
133134
docHandle.change((doc) => (doc[docObjName] = {}));
134135

@@ -167,5 +168,6 @@ export const createAutomergePersister = (
167168
setPersisted,
168169
addPersisterListener,
169170
delPersisterListener,
171+
onIgnoredError,
170172
);
171173
};

src/persisters/persister-browser.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const getStoragePersister = (
1515
store: Store,
1616
storageName: string,
1717
storage: Storage,
18+
onIgnoredError?: (error: any) => void,
1819
): Persister => {
1920
const getPersisted = async (): Promise<[Tables, Values]> =>
2021
jsonParse(storage.getItem(storageName) as string);
@@ -42,6 +43,7 @@ const getStoragePersister = (
4243
setPersisted,
4344
addPersisterListener,
4445
delPersisterListener,
46+
onIgnoredError,
4547
);
4648
};
4749

src/persisters/persister-cr-sqlite-wasm.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const createCrSqliteWasmPersister = ((
1010
db: DB,
1111
configOrStoreTableName?: DatabasePersisterConfig | string,
1212
logSql?: (sql: string, args?: any[]) => void,
13+
onIgnoredError?: (error: any) => void,
1314
): Persister =>
1415
createSqlitePersister(
1516
store,
@@ -20,4 +21,5 @@ export const createCrSqliteWasmPersister = ((
2021
db.onUpdate((_, _2, tableName) => listener(tableName)),
2122
(removeListener: () => void): void => removeListener(),
2223
logSql,
24+
onIgnoredError,
2325
)) as typeof createCrSqliteWasmPersisterDecl;

src/persisters/persister-expo-sqlite.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export const createExpoSqlitePersister = ((
1212
db: SQLiteDatabase,
1313
configOrStoreTableName?: DatabasePersisterConfig | string,
1414
logSql?: (sql: string, args?: any[]) => void,
15+
onIgnoredError?: (error: any) => void,
1516
): Persister =>
1617
createSqlitePersister(
1718
store,
@@ -22,4 +23,5 @@ export const createExpoSqlitePersister = ((
2223
db.onDatabaseChange(({tableName}) => listener(tableName)),
2324
(subscription: Subscription) => subscription.remove(),
2425
logSql,
26+
onIgnoredError,
2527
)) as typeof createExpoSqlitePersisterDecl;

src/persisters/persister-file.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {createFilePersister as createFilePersisterDecl} from '../types/persister
1010
export const createFilePersister = ((
1111
store: Store,
1212
filePath: string,
13+
onIgnoredError?: (error: any) => void,
1314
): Persister => {
1415
const getPersisted = async (): Promise<[Tables, Values]> =>
1516
jsonParse(await readFile(filePath, UTF8));
@@ -29,5 +30,6 @@ export const createFilePersister = ((
2930
setPersisted,
3031
addPersisterListener,
3132
delPersisterListener,
33+
onIgnoredError,
3234
);
3335
}) as typeof createFilePersisterDecl;

src/persisters/persister-remote.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export const createRemotePersister = ((
1212
loadUrl: string,
1313
saveUrl: string,
1414
autoLoadIntervalSeconds: number,
15+
onIgnoredError?: (error: any) => void,
1516
): Persister => {
1617
let lastEtag: string | null;
1718

@@ -53,5 +54,6 @@ export const createRemotePersister = ((
5354
setPersisted,
5455
addPersisterListener,
5556
delPersisterListener,
57+
onIgnoredError,
5658
);
5759
}) as typeof createRemotePersisterDecl;

src/persisters/persister-sqlite-wasm.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const createSqliteWasmPersister = ((
1010
db: any,
1111
configOrStoreTableName?: DatabasePersisterConfig | string,
1212
logSql?: (sql: string, args?: any[]) => void,
13+
onIgnoredError?: (error: any) => void,
1314
): Persister =>
1415
createSqlitePersister(
1516
store,
@@ -26,4 +27,5 @@ export const createSqliteWasmPersister = ((
2627
),
2728
(): void => sqlite3.capi.sqlite3_update_hook(db, () => 0, 0),
2829
logSql,
30+
onIgnoredError,
2931
)) as typeof createSqliteWasmPersisterDecl;

src/persisters/persister-sqlite3.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const createSqlite3Persister = ((
1515
db: Database,
1616
configOrStoreTableName?: DatabasePersisterConfig | string,
1717
logSql?: (sql: string, args?: any[]) => void,
18+
onIgnoredError?: (error: any) => void,
1819
): Persister =>
1920
createSqlitePersister(
2021
store,
@@ -35,4 +36,5 @@ export const createSqlite3Persister = ((
3536
},
3637
(observer: Observer): any => db.off(CHANGE, observer),
3738
logSql,
39+
onIgnoredError,
3840
)) as typeof createSqlite3PersisterDecl;

src/persisters/persister-yjs.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ export const createYjsPersister = (
192192
store: Store,
193193
yDoc: YDoc,
194194
yMapName = TINYBASE,
195+
onIgnoredError?: (error: any) => void,
195196
): Persister => {
196197
const yContent: YMap<any> = yDoc.getMap(yMapName);
197198

@@ -230,5 +231,6 @@ export const createYjsPersister = (
230231
setPersisted,
231232
addPersisterListener,
232233
delPersisterListener,
234+
onIgnoredError,
233235
);
234236
};

0 commit comments

Comments
 (0)