{"version":3,"sources":["../../src/registries/web3/cursors/paged.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,UAAU,QAAQ;IACd,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEhB,KAAK,EAAE,QAAQ,CAAA;gBAEV,QAAQ,EAAE,EAAE;IAKxB,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE;IAI9B,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IAIjC,QAAQ,CAAC,OAAO,EAAE,QAAQ;IAI1B,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO;IAI7B,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;CASrC","file":"paged.d.ts","sourcesContent":["/**\n * @module \"ethpm/registries/web3\"\n */\n\nimport BN from 'bn.js';\n\ninterface PagedIds {\n    [k: number]: Array<string>;\n}\n\nexport default class Paged<T> {\n  protected pageSize: BN;\n\n  public pages: PagedIds\n\n  constructor(pageSize: BN) {\n    this.pageSize = pageSize.clone();\n    this.pages = {};\n  }\n\n  pointerToPage(pointer: BN): BN {\n    return pointer.div(this.pageSize);\n  }\n\n  setPage(page: BN, value: string[]) {\n    this.pages[page.toNumber()] = value;\n  }\n\n  setPages(pageIds: PagedIds) {\n    this.pages = pageIds;\n  }\n\n  hasPage(pointer: BN): boolean {\n    return typeof this.pages[this.pointerToPage(pointer).toNumber()] !== 'undefined';\n  }\n\n  getDatum(pointer: BN): string | null {\n    if (this.hasPage(pointer)) {\n      const page = this.pages[this.pointerToPage(pointer).toNumber()];\n      const index = pointer.mod(this.pageSize).toNumber();\n      return page[index];\n    }\n\n    return null;\n  }\n}\n"]}