in src/IndexedDbProvider.ts [1303:1335]
static iterateOverCursorRequest(
req: IDBRequest,
func: (cursor: IDBCursor) => void,
limit?: number,
offset?: number
): Promise<void> {
return new Promise((resolve, reject) => {
let count = 0;
req.onsuccess = (event) => {
const cursor: IDBCursor = (<IDBRequest>event.target).result;
if (cursor) {
if (offset) {
cursor.advance(offset);
offset = 0;
} else {
func(cursor);
count++;
if (limit && count === limit) {
resolve(void 0);
return;
}
cursor["continue"]();
}
} else {
// Nothing else to iterate
resolve(void 0);
}
};
req.onerror = (ev) => {
reject(ev);
};
});
}