static iterateOverCursorRequest()

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);
      };
    });
  }