redux-paginator-immutable 19.0.2 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/actions.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { EndPointCb, Action } from "./types";
2
2
  type RequestPageArgsTypes = {
3
+ key: string;
3
4
  endpoint: string;
4
5
  endpointCb: EndPointCb;
5
6
  manageEntity: any;
@@ -7,6 +8,8 @@ type RequestPageArgsTypes = {
7
8
  totalKey: string;
8
9
  pageArgName: string;
9
10
  idKey: string;
11
+ cursorKey?: string;
12
+ cursorArgName: string;
10
13
  page: number;
11
14
  token: string;
12
15
  };
@@ -21,6 +24,7 @@ type ReceivePageArgsTypes = {
21
24
  items: Array<any>;
22
25
  total: number;
23
26
  error: boolean;
27
+ cursor?: string;
24
28
  };
25
29
  type FetchDataItem = {
26
30
  dataItemURL: string;
@@ -31,8 +35,8 @@ type FetchDataItem = {
31
35
  export declare const fetchItem: (things: FetchDataItem) => any;
32
36
  declare const _default: {
33
37
  clearData: (endpoint: string) => Action;
34
- requestPage: ({ endpoint, endpointCb, manageEntity, resultsKey, totalKey, pageArgName, idKey, page, token, }: RequestPageArgsTypes) => Action;
35
- receivePage: ({ endpoint, endpointCb, manageEntity, pageArgName, idKey, page, token, items, error, total, }: ReceivePageArgsTypes) => Action;
38
+ requestPage: ({ key, endpoint, endpointCb, manageEntity, resultsKey, totalKey, pageArgName, idKey, cursorKey, cursorArgName, page, token, }: RequestPageArgsTypes) => Action;
39
+ receivePage: ({ endpoint, endpointCb, manageEntity, pageArgName, idKey, page, token, items, error, total, cursor, }: ReceivePageArgsTypes) => Action;
36
40
  resetView: (endpoint: string, token: string) => Action;
37
41
  changeView: (endpoint: string, { token, view, }: {
38
42
  token: string;
package/actions.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import agent from "superagent";
2
- const requestPage = ({ endpoint, endpointCb, manageEntity, resultsKey, totalKey, pageArgName, idKey, page, token, }) => ({
2
+ const requestPage = ({ key, endpoint, endpointCb, manageEntity, resultsKey, totalKey, pageArgName, idKey, cursorKey, cursorArgName, page, token, }) => ({
3
3
  type: "@@redux-paginator-immutable/REQUEST_PAGE",
4
4
  meta: {
5
+ key,
5
6
  endpoint,
6
7
  endpointCb,
7
8
  manageEntity,
@@ -9,12 +10,14 @@ const requestPage = ({ endpoint, endpointCb, manageEntity, resultsKey, totalKey,
9
10
  totalKey,
10
11
  pageArgName,
11
12
  idKey,
13
+ cursorKey,
14
+ cursorArgName,
12
15
  },
13
16
  payload: {
14
17
  page,
15
18
  token,
16
19
  },
17
- }), receivePage = ({ endpoint, endpointCb, manageEntity, pageArgName, idKey, page, token, items, error, total, }) => ({
20
+ }), receivePage = ({ endpoint, endpointCb, manageEntity, pageArgName, idKey, page, token, items, error, total, cursor, }) => ({
18
21
  type: "@@redux-paginator-immutable/RECEIVE_PAGE",
19
22
  meta: {
20
23
  endpoint,
@@ -29,6 +32,7 @@ const requestPage = ({ endpoint, endpointCb, manageEntity, resultsKey, totalKey,
29
32
  items,
30
33
  error,
31
34
  total,
35
+ cursor,
32
36
  },
33
37
  }), resetView = (endpoint, token) => ({
34
38
  type: "@@redux-paginator-immutable/RESET_VIEW",
package/actions.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AA4B/B,MAAM,WAAW,GAAG,CAAC,EACjB,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,KAAK,EACL,IAAI,EACJ,KAAK,GACgB,EAAU,EAAE,CAAC,CAAC;IACnC,IAAI,EAAG,0CAA0C;IACjD,IAAI,EAAG;QACL,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,WAAW;QACX,KAAK;KACN;IACD,OAAO,EAAE;QACP,IAAI;QACJ,KAAK;KACN;CACF,CAAC,EAEF,WAAW,GAAG,CAAC,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,EACX,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GACgB,EAAU,EAAE,CAAC,CAAC;IACnC,IAAI,EAAG,0CAA0C;IACjD,IAAI,EAAG;QACL,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,WAAW;QACX,KAAK;KACN;IACD,OAAO,EAAE;QACP,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;KACN;CACF,CAAC,EAEF,SAAS,GAAG,CAAC,QAAgB,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC;IACxD,IAAI,EAAG,wCAAwC;IAC/C,IAAI,EAAG;QACL,QAAQ;KACT;IACD,OAAO,EAAE;QACP,KAAK;KACN;CACF,CAAC,EAEF,UAAU,GAAG,CAAC,QAAgB,EAAE,EAC9B,KAAK,EACL,IAAI,GAIL,EAAU,EAAE,CAAC,CAAC;IACb,IAAI,EAAG,yCAAyC;IAChD,IAAI,EAAG;QACL,QAAQ;KACT;IACD,OAAO,EAAE;QACP,KAAK;QACL,IAAI;KACL;CACF,CAAC,EAEF,SAAS,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,CAAC;IACzC,IAAI,EAAG,wCAAwC;IAC/C,IAAI,EAAG;QACL,QAAQ;KACT;CACF,CAAC,CAAC;AAUL,MAAM,oBAAoB,GAAG,CAAC,EAC5B,WAAW,EACX,iBAAiB,EACjB,EAAE,GACY,EAAgB,EAAE,CAChC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAC/B,KAAK;IACH,GAAG,CAAC,GAAG,WAAW,IAAI,EAAE,EAAE,CAAC;IAC3B,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACjC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAC1C,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAqB,EAAO,EAAE,CAAC,CAAC;IACxD,IAAI,EAAM,6CAA6C;IACvD,OAAO,EAAG,oBAAoB,CAAC,MAAM,CAAC;IACtC,IAAI,EAAM;QACR,EAAE,EAAS,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAG,MAAM,CAAC,QAAQ;KAC3B;CACF,CAAC,CAAC;AAEH,eAAe;IACb,SAAS;IACT,WAAW;IACX,WAAW;IACX,SAAS;IACT,UAAU;CACX,CAAC"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAgC/B,MAAM,WAAW,GAAG,CAAC,EACjB,GAAG,EACH,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,KAAK,EACL,SAAS,EACT,aAAa,EACb,IAAI,EACJ,KAAK,GACgB,EAAU,EAAE,CAAC,CAAC;IACnC,IAAI,EAAG,0CAA0C;IACjD,IAAI,EAAG;QACL,GAAG;QACH,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,WAAW;QACX,KAAK;QACL,SAAS;QACT,aAAa;KACd;IACD,OAAO,EAAE;QACP,IAAI;QACJ,KAAK;KACN;CACF,CAAC,EAEF,WAAW,GAAG,CAAC,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,EACX,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,GACe,EAAU,EAAE,CAAC,CAAC;IACnC,IAAI,EAAG,0CAA0C;IACjD,IAAI,EAAG;QACL,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,WAAW;QACX,KAAK;KACN;IACD,OAAO,EAAE;QACP,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;KACP;CACF,CAAC,EAEF,SAAS,GAAG,CAAC,QAAgB,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC;IACxD,IAAI,EAAG,wCAAwC;IAC/C,IAAI,EAAG;QACL,QAAQ;KACT;IACD,OAAO,EAAE;QACP,KAAK;KACN;CACF,CAAC,EAEF,UAAU,GAAG,CAAC,QAAgB,EAAE,EAC9B,KAAK,EACL,IAAI,GAIL,EAAU,EAAE,CAAC,CAAC;IACb,IAAI,EAAG,yCAAyC;IAChD,IAAI,EAAG;QACL,QAAQ;KACT;IACD,OAAO,EAAE;QACP,KAAK;QACL,IAAI;KACL;CACF,CAAC,EAEF,SAAS,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,CAAC;IACzC,IAAI,EAAG,wCAAwC;IAC/C,IAAI,EAAG;QACL,QAAQ;KACT;CACF,CAAC,CAAC;AAUL,MAAM,oBAAoB,GAAG,CAAC,EAC5B,WAAW,EACX,iBAAiB,EACjB,EAAE,GACY,EAAgB,EAAE,CAChC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAC/B,KAAK;IACH,GAAG,CAAC,GAAG,WAAW,IAAI,EAAE,EAAE,CAAC;IAC3B,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACjC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAC1C,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAqB,EAAO,EAAE,CAAC,CAAC;IACxD,IAAI,EAAM,6CAA6C;IACvD,OAAO,EAAG,oBAAoB,CAAC,MAAM,CAAC;IACtC,IAAI,EAAM;QACR,EAAE,EAAS,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAG,MAAM,CAAC,QAAQ;KAC3B;CACF,CAAC,CAAC;AAEH,eAAe;IACb,SAAS;IACT,WAAW;IACX,WAAW;IACX,SAAS;IACT,UAAU;CACX,CAAC"}
package/agent.d.ts CHANGED
@@ -3,6 +3,8 @@ type FetchPageArgs = {
3
3
  pageArgName: string;
4
4
  page: number;
5
5
  token: string;
6
+ cursorArgName: string;
7
+ cursor?: string;
6
8
  };
7
- export declare const buildSuffix: (pageArgName: string, page: number, params: string) => string, fetchPage: ({ endpoint, pageArgName, page, token, }: FetchPageArgs) => any;
9
+ export declare const fetchPage: ({ endpoint, pageArgName, page, token, cursorArgName, cursor, }: FetchPageArgs) => any;
8
10
  export {};
package/agent.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable no-bitwise*/
2
2
  import qs from "query-string";
3
3
  import agent from "superagent";
4
- export const buildSuffix = (pageArgName, page, params) => {
5
- const parsedParams = qs.parse(params);
4
+ const buildSuffix = (options) => {
5
+ const { pageArgName, page, params, cursorArgName, cursor } = options, parsedParams = qs.parse(params), cursorParams = typeof cursor === "undefined" ? {} : { [cursorArgName]: cursor };
6
6
  let finalParsedParams = {}, startString = "";
7
7
  for (const key of Object.keys(parsedParams)) {
8
8
  if (parsedParams[key] === null) {
@@ -16,11 +16,12 @@ export const buildSuffix = (pageArgName, page, params) => {
16
16
  if (Object.keys(finalParsedParams).length > 0 && qs.extract(params) !== "") {
17
17
  startString = params.replace(qs.extract(params), "");
18
18
  }
19
- return startString + qs.stringify(Object.assign(Object.assign({}, finalParsedParams), { [pageArgName]: page }), {
19
+ return startString + qs.stringify(Object.assign(Object.assign(Object.assign({}, finalParsedParams), { [pageArgName]: page }), cursorParams), {
20
20
  encode: false,
21
21
  }).replace(startString, "");
22
- }, fetchPage = ({ endpoint, pageArgName, page, token, }) => {
23
- const suffix = buildSuffix(pageArgName, page, token), url = endpoint + suffix, promise = new Promise((resolve, reject) => (agent.
22
+ };
23
+ export const fetchPage = ({ endpoint, pageArgName, page, token, cursorArgName, cursor, }) => {
24
+ const suffix = buildSuffix({ pageArgName, page, params: token, cursorArgName, cursor }), url = endpoint + suffix, promise = new Promise((resolve, reject) => (agent.
24
25
  get(url).
25
26
  end((err, res) => err ? reject(err) : resolve(res))));
26
27
  return promise.then((res) => ({
package/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAS9B,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,MACL,WAAW,GAAG,CAAC,WAAmB,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE;IAClE,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,iBAAiB,GAAG,EAAE,EACxB,WAAW,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5C,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,WAAW,IAAI,GAAG,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,iBAAiB,mCAAQ,iBAAiB,KACxC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,GACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,WAAW,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC;IAE3D,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3E,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,WAAW,GAAG,EAAE,CAAC,SAAS,iCAAM,iBAAiB,KACtD,CAAC,WAAW,CAAC,EAAE,IAAI,KAClB;QACD,MAAM,EAAE,KAAK;KACd,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC,EACD,SAAS,GAAG,CAAC,EACX,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,KAAK,GACS,EAAE,EAAE;IAClB,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,EAClD,GAAG,GAAG,QAAQ,GAAG,MAAM,EACvB,OAAO,GAAQ,IAAI,OAAO,CACxB,CAAC,OAAY,EAAE,MAAW,EAAE,EAAE,CAAC,CAC7B,KAAK;QACH,GAAG,CAAC,GAAG,CAAC;QACR,GAAG,CAAC,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAChE,CACF,CAAC;IAEJ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAEpB,EAAE,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,GAAG,CAAC,IAAI;KACnB,CAAC,CAAC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAmB9B,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MACE,WAAW,GAAG,CAAC,OAA2B,EAAE,EAAE;IAC5C,MACE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,EAC9D,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAC/B,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAClF,IAAI,iBAAiB,GAAG,EAAE,EACxB,WAAW,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5C,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,WAAW,IAAI,GAAG,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,iBAAiB,mCAAQ,iBAAiB,KACxC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,GACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,WAAW,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC;IAE3D,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3E,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,WAAW,GAAG,EAAE,CAAC,SAAS,+CAAM,iBAAiB,KACtD,CAAC,WAAW,CAAC,EAAE,IAAI,KAChB,YAAY,GACd;QACD,MAAM,EAAE,KAAK;KACd,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEJ,MAAM,CAAC,MACL,SAAS,GAAG,CAAC,EACX,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,KAAK,EACL,aAAa,EACb,MAAM,GACQ,EAAE,EAAE;IAClB,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EACrF,GAAG,GAAG,QAAQ,GAAG,MAAM,EACvB,OAAO,GAAQ,IAAI,OAAO,CACxB,CAAC,OAAY,EAAE,MAAW,EAAE,EAAE,CAAC,CAC7B,KAAK;QACH,GAAG,CAAC,GAAG,CAAC;QACR,GAAG,CAAC,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAChE,CACF,CAAC;IAEJ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAEpB,EAAE,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,GAAG,CAAC,IAAI;KACnB,CAAC,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  const defaultRowsPerLoad = 25;
2
2
  import * as Immutable from "immutable";
3
3
  import actions from "./actions.js";
4
+ import { registerFetcher } from "./fetcherRegistry.js";
4
5
  import { dataItems as dataItemsReducer, items as itemsReducer, pages as pagesReducer } from "./reducers.js";
5
6
  const getEndpoint = (data) => {
6
7
  if (typeof data === "object") {
@@ -20,8 +21,9 @@ const getEndpoint = (data) => {
20
21
  return reducer(state, action);
21
22
  };
22
23
  export const createPaginator = (endpointData, settings) => {
23
- const { path: endpoint, cb: endpointCb, } = getEndpoint(endpointData), { key, normalizeDataItem, dataItemURL, manageEntity, resultsKey, totalKey = "Total", pageArgName = "page", idKey = "ID", rowsPerLoad = defaultRowsPerLoad, manipulateItems = (items) => items, } = settings, endpointedActions = {
24
+ const { path: endpoint, cb: endpointCb, } = getEndpoint(endpointData), { key, normalizeDataItem, dataItemURL, manageEntity, resultsKey, totalKey = "Total", pageArgName = "page", idKey = "ID", cursorKey, cursorArgName = "cursor", rowsPerLoad = defaultRowsPerLoad, manipulateItems = (items) => items, fetcher, } = settings, endpointedActions = {
24
25
  requestPage: (page, token) => actions.requestPage({
26
+ key,
25
27
  endpoint,
26
28
  endpointCb,
27
29
  manageEntity,
@@ -29,6 +31,8 @@ export const createPaginator = (endpointData, settings) => {
29
31
  totalKey,
30
32
  pageArgName,
31
33
  idKey,
34
+ cursorKey,
35
+ cursorArgName,
32
36
  page,
33
37
  token,
34
38
  }),
@@ -45,6 +49,9 @@ export const createPaginator = (endpointData, settings) => {
45
49
  return actions.clearData(endpoint);
46
50
  },
47
51
  };
52
+ if (typeof fetcher === "function") {
53
+ registerFetcher(endpoint, fetcher);
54
+ }
48
55
  return Object.assign({ key,
49
56
  normalizeDataItem,
50
57
  dataItemURL,
@@ -1 +1 @@
1
- {"version":3,"file":"createPaginator.js","sourceRoot":"","sources":["../src/createPaginator.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAgBzG,MAAM,WAAW,GAAG,CAAC,IAAc,EAAE,EAAE;IACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAG,IAAI,CAAC,IAAI;YAChB,EAAE,EAAK,IAAI,CAAC,EAAE;SACf,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAG,IAAI;QACX,EAAE,EAAK,IAAI;KACZ,CAAC;AACJ,CAAC,EACD,eAAe,GAAG,CAAC,QAAiB,EAAE,OAAa,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,EAAE,MAAe,EAAE,EAAE;IACnG,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC;AAEJ,MAAM,CAAC,MACL,eAAe,GAAG,CAAC,YAAsB,EAAE,QAA2B,EAAE,EAAE;IACxE,MACE,EACE,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,UAAU,GACf,GAAG,WAAW,CAAC,YAAY,CAAC,EAC7B,EACE,GAAG,EACH,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,GAAG,OAAO,EAClB,WAAW,GAAG,MAAM,EACpB,KAAK,GAAG,IAAI,EACZ,WAAW,GAAG,kBAAkB,EAChC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GACnC,GAAG,QAAQ,EACZ,iBAAiB,GAAG;QAClB,WAAW,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;YAChE,QAAQ;YACR,UAAU;YACV,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,WAAW;YACX,KAAK;YACL,IAAI;YACJ,KAAK;SACN,CAAC;QAEF,SAAS,CAAE,KAAW;YACpB,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,UAAU,CAAE,EAAE,IAAI,EAAE,KAAK,EAAoC;YAC3D,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAClC,IAAI;gBACJ,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,SAAS;YACP,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;IAEJ,uBACE,GAAG;QACH,iBAAiB;QACjB,WAAW;QACX,eAAe;QACf,WAAW;QACX,YAAY;QACZ,UAAU;QACV,QAAQ,EACR,YAAY,EAAO,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,EAC1D,YAAY,EAAO,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,EAC1D,gBAAgB,EAAG,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAC3D,iBAAiB,EACpB;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"createPaginator.js","sourceRoot":"","sources":["../src/createPaginator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Fetcher } from "./types";
2
+ export declare const registerFetcher: (endpoint: string, fetcher: Fetcher) => void, getFetcher: (endpoint: string) => Fetcher | undefined;
@@ -0,0 +1,10 @@
1
+ // Endpoint → custom fetcher. A paginator created with a `fetcher` setting
2
+ // registers it here; paginatorMiddleware uses it instead of the built-in
3
+ // superagent HTTP call. Lets non-HTTP transports (e.g. Wails IPC) plug in
4
+ // without replacing the middleware. Endpoints without a registered fetcher
5
+ // keep the original superagent behaviour unchanged.
6
+ const registry = new Map();
7
+ export const registerFetcher = (endpoint, fetcher) => {
8
+ registry.set(endpoint, fetcher);
9
+ }, getFetcher = (endpoint) => registry.get(endpoint);
10
+ //# sourceMappingURL=fetcherRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcherRegistry.js","sourceRoot":"","sources":["../src/fetcherRegistry.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,oDAAoD;AAEpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE5C,MAAM,CAAC,MACL,eAAe,GAAG,CAAC,QAAgB,EAAE,OAAgB,EAAQ,EAAE;IAC7D,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC,EACD,UAAU,GAAG,CAAC,QAAgB,EAAuB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC"}
package/index.d.ts CHANGED
@@ -9,3 +9,4 @@ export { default as paginatorMiddleware } from "./paginatorMiddleware";
9
9
  export { default as reducerOperations } from "./reducerOperations";
10
10
  export { default as paginatorSelectors } from "./selectors";
11
11
  export { manageDataEntity, manageEntity, manipulateDataItems, manipulateItems } from "./util";
12
+ export type { Fetcher, PaginatorSettings } from "./types";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "redux-paginator-immutable",
3
- "version": "19.0.2",
3
+ "version": "19.2.0",
4
4
  "type": "module",
5
5
  "description": "redux-paginator-immutable",
6
6
  "main": "./index.js",
@@ -1,5 +1,6 @@
1
1
  import { Action, Dispatch } from "./types";
2
- declare const paginatorMiddleware: ({ dispatch }: {
2
+ declare const paginatorMiddleware: ({ dispatch, getState }: {
3
3
  dispatch: Dispatch;
4
+ getState: () => any;
4
5
  }) => (next: any) => (action: Action) => any;
5
6
  export default paginatorMiddleware;
@@ -1,33 +1,61 @@
1
1
  /* eslint-disable no-console, max-lines-per-function */
2
- import { REQUEST_PAGE } from "./actionTypes.js";
2
+ import { CLEAR_DATA, REQUEST_PAGE } from "./actionTypes.js";
3
3
  import actions from "./actions.js";
4
4
  import { fetchPage } from "./agent.js";
5
- const { receivePage } = actions, paginatorMiddleware = ({ dispatch }) => (next) => (action) => {
5
+ import { getFetcher } from "./fetcherRegistry.js";
6
+ const { receivePage } = actions, readSlice = (container, name) => (typeof (container === null || container === void 0 ? void 0 : container.get) === "function" ? container.get(name) : container === null || container === void 0 ? void 0 : container[name]), readStoredCursor = (storeState, address) => {
7
+ var _a;
8
+ const pages = address.page > 1 ? readSlice(readSlice(storeState, "paginations"), address.key) : null;
9
+ return (_a = pages === null || pages === void 0 ? void 0 : pages.getIn) === null || _a === void 0 ? void 0 : _a.call(pages, [address.token, "cursor"]);
10
+ },
11
+ // (endpoint|page|token) of fetches currently in flight. Guards against a
12
+ // remount / fast-nav race firing the same fetch twice (the pages reducer
13
+ // concats ids on RECEIVE_PAGE → duplicate rows). Transparent on the happy
14
+ // path: a single REQUEST_PAGE adds then removes its own key.
15
+ inFlight = new Set(),
16
+ // Per-endpoint generation. CLEAR_DATA bumps it; a fetch started before the
17
+ // clear is discarded on resolve, so a stale response cannot refill a list
18
+ // the caller just cleared (and the post-clear refetch is free to run).
19
+ epochs = new Map(), epochOf = (endpoint) => epochs.get(endpoint) || 0, clearEndpoint = (endpoint) => {
20
+ epochs.set(endpoint, epochOf(endpoint) + 1);
21
+ Array.from(inFlight).forEach((key) => {
22
+ if (key.startsWith(`${endpoint}|`)) {
23
+ inFlight.delete(key);
24
+ }
25
+ });
26
+ }, paginatorMiddleware = ({ dispatch, getState }) => (next) => (action) => {
27
+ if (action.type === CLEAR_DATA) {
28
+ if (action.meta && typeof action.meta.endpoint === "string") {
29
+ clearEndpoint(action.meta.endpoint);
30
+ }
31
+ return next(action);
32
+ }
6
33
  if (action.type === REQUEST_PAGE) {
7
- const { meta: { endpoint, endpointCb, manageEntity, resultsKey, totalKey, pageArgName, idKey, }, payload: { page, token, }, } = action;
8
- dispatch((dispatch2) => {
9
- const markAsError = () => {
10
- dispatch2(receivePage({
11
- endpoint,
12
- endpointCb,
13
- manageEntity,
14
- pageArgName,
15
- idKey,
16
- page,
17
- error: true,
18
- token,
19
- items: [],
20
- total: 0,
21
- }));
22
- }, rawPath = typeof endpointCb === "function" ? endpointCb(token) : endpoint, path = rawPath === null ? "" : rawPath;
23
- try {
24
- fetchPage({
25
- endpoint: path,
26
- pageArgName,
27
- page,
28
- token,
29
- }).then((res) => {
30
- const { response } = res;
34
+ const { meta: { key, endpoint, endpointCb, manageEntity, resultsKey, totalKey, pageArgName, idKey, cursorKey, cursorArgName, }, payload: { page, token, }, } = action, dedupeKey = `${endpoint}|${page}|${token}`, storedCursor = readStoredCursor(getState(), { key, token, page });
35
+ if (!inFlight.has(dedupeKey)) {
36
+ inFlight.add(dedupeKey);
37
+ const requestEpoch = epochOf(endpoint);
38
+ dispatch((dispatch2) => {
39
+ const isStale = () => epochOf(endpoint) !== requestEpoch, markAsError = () => {
40
+ if (isStale()) {
41
+ return;
42
+ }
43
+ dispatch2(receivePage({
44
+ endpoint,
45
+ endpointCb,
46
+ manageEntity,
47
+ pageArgName,
48
+ idKey,
49
+ page,
50
+ error: true,
51
+ token,
52
+ items: [],
53
+ total: 0,
54
+ }));
55
+ }, onResponse = (response) => {
56
+ if (isStale()) {
57
+ return;
58
+ }
31
59
  let results = [], total = 0;
32
60
  if (typeof resultsKey === "undefined") {
33
61
  results = response;
@@ -36,26 +64,38 @@ const { receivePage } = actions, paginatorMiddleware = ({ dispatch }) => (next)
36
64
  results = response[resultsKey];
37
65
  total = response[totalKey];
38
66
  }
39
- dispatch2(receivePage({
40
- endpoint,
67
+ const cursorArgs = typeof cursorKey === "string" ? { cursor: response[cursorKey] } : {};
68
+ dispatch2(receivePage(Object.assign({ endpoint,
41
69
  endpointCb,
42
70
  manageEntity,
43
71
  pageArgName,
44
72
  idKey,
45
- page,
46
- error: false,
47
- token,
48
- items: results,
49
- total,
50
- }));
51
- }).catch(() => {
73
+ page, error: false, token, items: results, total }, cursorArgs)));
74
+ }, settle = () => {
75
+ inFlight.delete(dedupeKey);
76
+ }, fetcher = getFetcher(endpoint), rawPath = typeof endpointCb === "function" ? endpointCb(token) : endpoint, path = rawPath === null ? "" : rawPath;
77
+ try {
78
+ const run = typeof fetcher === "function"
79
+ ? fetcher(token, page, storedCursor)
80
+ : fetchPage({
81
+ endpoint: path,
82
+ pageArgName,
83
+ page,
84
+ token,
85
+ cursorArgName,
86
+ cursor: storedCursor,
87
+ }).then((res) => res.response);
88
+ run.
89
+ then(onResponse).
90
+ catch(markAsError).
91
+ finally(settle);
92
+ }
93
+ catch (err) {
94
+ settle();
52
95
  markAsError();
53
- });
54
- }
55
- catch (err) {
56
- markAsError();
57
- }
58
- });
96
+ }
97
+ });
98
+ }
59
99
  }
60
100
  return next(action);
61
101
  };
@@ -1 +1 @@
1
- {"version":3,"file":"paginatorMiddleware.js","sourceRoot":"","sources":["../src/paginatorMiddleware.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,MACE,EAAE,WAAW,EAAE,GAAG,OAAO,EAEzB,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAA0B,EAAE,EAAE,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;IAChG,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjC,MAAM,EACJ,IAAI,EAAE,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,KAAK,GACN,EACD,OAAO,EAAE,EACP,IAAI,EACJ,KAAK,GACN,GACF,GAAG,MAAM,CAAC;QAEX,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE;YACrB,MACE,WAAW,GAAG,GAAG,EAAE;gBACjB,SAAS,CAAC,WAAW,CAAC;oBACpB,QAAQ;oBACR,UAAU;oBACV,YAAY;oBACZ,WAAW;oBACX,KAAK;oBACL,IAAI;oBACJ,KAAK,EAAG,IAAI;oBACZ,KAAK;oBACL,KAAK,EAAG,EAAE;oBACV,KAAK,EAAG,CAAC;iBACV,CAAC,CAAC,CAAC;YACN,CAAC,EAED,OAAO,GAAG,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EACzE,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAEzC,IAAI,CAAC;gBACH,SAAS,CAAC;oBACR,QAAQ,EAAE,IAAI;oBACd,WAAW;oBACX,IAAI;oBACJ,KAAK;iBACN,CAAC,CAAC,IAAI,CAAC,CAAC,GAAuB,EAAE,EAAE;oBAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;oBAEzB,IACE,OAAO,GAAG,EAAE,EACZ,KAAK,GAAG,CAAC,CAAC;oBAEZ,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;wBACtC,OAAO,GAAG,QAAQ,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC/B,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC7B,CAAC;oBAED,SAAS,CAAC,WAAW,CAAC;wBACpB,QAAQ;wBACR,UAAU;wBACV,YAAY;wBACZ,WAAW;wBACX,KAAK;wBACL,IAAI;wBACJ,KAAK,EAAG,KAAK;wBACb,KAAK;wBACL,KAAK,EAAG,OAAO;wBACf,KAAK;qBACN,CAAC,CAAC,CAAC;gBACN,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBACZ,WAAW,EAAE,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,CAAC;AAEJ,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"paginatorMiddleware.js","sourceRoot":"","sources":["../src/paginatorMiddleware.ts"],"names":[],"mappings":"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"}
@@ -18,11 +18,12 @@ const requestPage = (state, action) => {
18
18
  });
19
19
  return state.set(token, init);
20
20
  }, receivePage = (state, action) => {
21
- const { meta: { idKey, }, payload: { token, items, total, error, }, } = action;
21
+ const { meta: { idKey, }, payload: { token, items, total, error, cursor, }, } = action;
22
22
  if (state.has(token)) {
23
- const hasError = error === true;
23
+ const hasError = error === true, keepsCursor = hasError || typeof cursor === "undefined", receivedIds = Immutable.List(items.map((pageMember) => String(pageMember[idKey]))), mergeIds = (page) => page.get("ids").concat(receivedIds).toOrderedSet().toList(), pickCursor = (page) => (keepsCursor ? page.get("cursor") : cursor);
24
24
  return state.update(token, ((current) => current.update((page) => current.merge(Immutable.Map({
25
- ids: page.get("ids").concat(Immutable.List(items.map((item) => String(item[idKey])))),
25
+ ids: mergeIds(page),
26
+ cursor: pickCursor(page),
26
27
  fetching: false,
27
28
  error: hasError,
28
29
  fetched: true,
@@ -1 +1 @@
1
- {"version":3,"file":"reducerOperations.js","sourceRoot":"","sources":["../src/reducerOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reducerOperations.js","sourceRoot":"","sources":["../src/reducerOperations.ts"],"names":[],"mappings":"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"}
package/types.d.ts CHANGED
@@ -9,21 +9,26 @@ type PromiseAction = Promise<Action>;
9
9
  type ThunkAction = (dispatch: Dispatch, getState: GetState) => any;
10
10
  export type Dispatch = (action: Action | ThunkAction | PromiseAction | Array<Action>) => any;
11
11
  export type EndPointCb = ((token?: string) => string) | null;
12
+ export type Fetcher = (token: string, page: number, cursor?: string) => Promise<any>;
12
13
  export type PaginatorSettings = {
13
14
  key: string;
14
15
  manageEntity: any;
15
16
  resultsKey: string;
17
+ fetcher?: Fetcher;
16
18
  rowsPerLoad?: number;
17
19
  manipulateItems?: (items: any) => any;
18
20
  totalKey?: string;
19
21
  pageArgName?: string;
20
22
  idKey?: string;
23
+ cursorKey?: string;
24
+ cursorArgName?: string;
21
25
  dataItemURL?: string;
22
26
  normalizeDataItem?: any;
23
27
  };
24
28
  export type RequestPageAction = {
25
29
  type: "@@redux-paginator-immutable/REQUEST_PAGE";
26
30
  meta: {
31
+ key: string;
27
32
  endpoint: string;
28
33
  endpointCb: EndPointCb;
29
34
  manageEntity: any;
@@ -31,6 +36,8 @@ export type RequestPageAction = {
31
36
  totalKey: string;
32
37
  pageArgName: string;
33
38
  idKey: string;
39
+ cursorKey?: string;
40
+ cursorArgName: string;
34
41
  };
35
42
  payload: {
36
43
  page: number;
@@ -52,6 +59,7 @@ export type ReceivePageAction = {
52
59
  items: Array<any>;
53
60
  total: number;
54
61
  error: boolean;
62
+ cursor?: string;
55
63
  raw?: string;
56
64
  };
57
65
  };