luri-cursor
TypeScript icon, indicating that this package has built-in type declarations

2.0.2 • Public • Published

luri-cursor

Fetches large data sets in chunks (aka pagination). Maintains state internally.

How it works

In the constructor you must provide a URL with placeholders for data required by your API.

Let's say you are fetching resources from http://myapi.com/posts where each page of content is identified by a GET parameter called page. Then your url parameter will look like http://myapi.com/posts?page=<page>.

The cursor maintains a state object which indicates how far in the data it is. However there are limitless possibilities of required inputs, so continuing the example above, the state object we will need will look like so

{
  page: 1
}

Whenever a new page is fetched the cursor must update its internal state in order to be ready to fetch the next one. For this purpose you need to define a setState method which returns the new state.

How to use

After including luri-cursor in your project you need to extend the abstract class exported in the package and provide your setState implementation. The method receives the current cursor state and the fetched data as parameters. For our posts example the implementation will look like so

const Cursor = require("luri-cursor");

class PostsCursor extends Cursor {

  setState(oldState, posts) {
    return {
      page: oldState.page + 1
    }
  }
}

Now we are ready to start fetching some posts.

let cursor = new PostsCursor("http://myapi.com/posts?page=<page>", { page: 1 });

cursor.fetch().then(posts => console.log("First page", posts)).then(() => {
  cursor.fetch().then(posts => console.log("Second page", posts))
});

By default it is assumed that the returned data will be in JSON format, if that's not the case you can modify the execute method to suit your needs. It is given a URL string (populated with data from your state), it must retrieve the data and return a promise, definition below.

execute(url: string): Promise<any>;

Readme

Keywords

none

Package Sidebar

Install

npm i luri-cursor

Weekly Downloads

3

Version

2.0.2

License

Apache-2.0

Unpacked Size

9.38 kB

Total Files

8

Last publish

Collaborators

  • manix