@graphql-box/connection-resolver 3.1.0 → 4.0.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/README.md CHANGED
@@ -11,10 +11,6 @@ The GraphQL Box connection resolver module.
11
11
  yarn add @graphql-box/connection-resolver
12
12
  ```
13
13
 
14
- ## Usage
15
-
16
- Read the GraphQL Box [usage guide](../../README.md#usage).
17
-
18
14
  ## Documentation
19
15
 
20
16
  Read the module API [documentation](docs/README.md).
@@ -1,2 +1,2 @@
1
- import e from"lodash/pickBy";import"core-js/modules/es.array.includes.js";import r from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/regenerator";import n from"@babel/runtime/helpers/toConsumableArray";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.promise.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.array.map.js";import"core-js/modules/es.array.concat.js";import"core-js/modules/es.array.slice.js";import"core-js/modules/es.array.find.js";import"core-js/modules/web.dom-collections.for-each.js";import a from"lodash/range";import s from"@babel/runtime/helpers/slicedToArray";import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/es.object.get-own-property-descriptor.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import u from"@babel/runtime/helpers/defineProperty";import{GraphQLError as o}from"graphql";var c,i=["after","before","first","last"],l=function(r){return e(r,(function(e,r){return!i.includes(r)}))},p=function(e){var r=e.after,t=e.before;return!(!r&&!t)},d=(c=r(t.mark((function e(n,a){var s,u,o,c,i,l,p,d;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=a.edges,u=a.group,o=a.headers,c=a.page,i=a.totalPages,l=a.totalResults,p=o.get("cache-control"),d=p?{cacheHeaders:{cacheControl:p}}:void 0,e.next=5,Promise.all(s.map(function(){var e=r(t.mark((function e(r,a){var s,o;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=r.cursor,o=r.node,e.abrupt("return",n.set(s,{node:o,index:a,group:u,page:c},d));case 2:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}()));case 5:return e.next=7,n.set("".concat(u,"-metadata"),{totalPages:i,totalResults:l},d);case 7:case"end":return e.stop()}}),e)}))),function(e,r){return c.apply(this,arguments)}),g=function(e,r){return e.map((function(e){return{node:e,cursor:r(e)}}))},f=function(){var e=r(t.mark((function e(a,s){var u,o,c,i,l,p,f;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=s.cursorCache,o=s.getters,c=s.groupCursor,i=s.makeIDCursor,l=s.resourceResolver,p=[],e.next=4,Promise.all(a.map(function(){var e=r(t.mark((function e(r){var a,s,f,m,b;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l({page:r});case 2:if(a=e.sent,s=a.data,f=a.errors,m=a.headers,!s||null!=f&&f.length){e.next=11;break}return b=g(o.nodes(s),(function(e){return i(e.id)})),e.next=10,d(u,{edges:b,group:c,headers:m,page:r,totalPages:o.totalPages(s),totalResults:o.totalResults(s)});case 10:return e.abrupt("return",{edges:b,pageNumber:r});case 11:return null!=f&&f.length&&p.push.apply(p,n(f)),e.abrupt("return",{edges:[],pageNumber:r});case 13:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}()));case 4:return f=e.sent,e.abrupt("return",{cachedEdges:f,errors:p});case 6:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),m=function(e){return e.reduce((function(e,r){return[].concat(n(e),n(r.edges))}),[])},b=function(e){return e.map((function(e){return e.node}))},P=function(e,r){var t=r.endIndex,n=r.resultsPerPage,a=r.startIndex;return e.reduce((function(r,s,u){var o=function(e){var r=e.pageIndex,t=e.startIndex;return 0===r?t.relative:0}({startIndex:a,pageIndex:u}),c=function(e){var r=e.endIndex,t=e.pageIndex,n=e.resultsPerPage;return t===e.totalCachedPages-1?r.relative:n-1}({endIndex:t,pageIndex:u,resultsPerPage:n,totalCachedPages:e.length}),i=s.edges.slice(o,c+1);return r.push({edges:i,pageNumber:s.pageNumber}),r}),[])},h=function(e){return e[0].cursor},v=function(e){return e[e.length-1].cursor},x=function(e,r){return e.reduce((function(e,t){if(!t.edges.length){var a=r.find((function(e){return e.pageNumber===t.pageNumber}));if(a)return[].concat(n(e),[a])}return[].concat(n(e),[t])}),[])},y=function(e){var r=e.after;return e.before||r},w=function(e){return e?"backward":"forward"},C=function(e){return e.page===e.totalPages},j=function(e,r){var t=r.endIndex,s=r.entry.page,u=r.metadata,o=r.resultsPerPage,c=function(e,r){var t=r.page,n=r.startIndex,a=r.resultsPerPage;if("forward"===w(e.last)||n.absolute>=0)return t;var s=t-Math.ceil(Math.abs(n.absolute)/a);return s<=1?1:s}(e,{page:s,startIndex:r.startIndex,resultsPerPage:o}),i=function(e,r){var t=r.endIndex,n=r.metadata.totalPages,a=r.page,s=r.resultsPerPage,u=s-1;if("backward"===w(e.last)||C({page:a,totalPages:n})||t.absolute<=u)return a;var o=a+Math.ceil((t.absolute-u)/s);return o>=n?n:o}(e,{endIndex:t,metadata:u,page:s,resultsPerPage:o});return c===i?[s]:[].concat(n(a(c,i)),[i])},k=function(e){return e.reduce((function(e,r){return r.edges.length||e.push(r.pageNumber),e}),[])},I=function(e){var r=e.first,t=e.last;return r||t},R=function(e){return function(e){var r=e.resultsPerPage,t=e.totalResults%r;return 0===t?r:t}({resultsPerPage:e.resultsPerPage,totalResults:e.totalResults})-1},N=function(e,r){var t=r.entry,n=t.index,a=t.page,s=r.resultsPerPage,u=I(e);return"forward"===w(e.last)?{absolute:n+1,relative:n+1}:function(e){return 1===e}(a)&&n-u<0?{absolute:0,relative:0}:function(){var e=n-u;if(e>=0)return{absolute:e,relative:e};var r=Math.abs(e),t=r%s;return{absolute:e,relative:0===t||a-(r/s+1)<0?0:s-t}}()},O=function(e,r){var t=r.entry,n=t.index,a=t.page,s=r.metadata,u=s.totalPages,o=s.totalResults,c=r.resultsPerPage,i=I(e),l=R({resultsPerPage:c,totalResults:o});return"backward"===w(e.last)?{absolute:n-1,relative:n-1}:C({page:a,totalPages:u})&&n+i>l?{absolute:l,relative:l}:function(){var e=n+i,r=c-1;if(e<=r)return{absolute:e,relative:e};var t=e-r,s=t%c;return{absolute:e,relative:0===s?r:a+t/c>u?l:s-1}}()},D=function(e){var r=e.cachedEdgesByPage,t=e.startIndex;return 1!==r[0].pageNumber||t.relative>0},E=function(e){var r=e.cachedEdgesByPage,t=e.endIndex,n=e.metadata,a=n.totalPages,s=n.totalResults,u=e.resultsPerPage;return r[r.length-1].pageNumber!==a||t.relative<R({resultsPerPage:u,totalResults:s})},T=function(e,r){var t=r.metadata,n=t.totalPages,a=t.totalResults,s=r.resultsPerPage;return"backward"===w(e.last)?{index:R({resultsPerPage:s,totalResults:a})+1,page:n}:{index:-1,page:1}},B=function(){var e=r(t.mark((function e(r,n){var a,u,o,c,i;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.groupCursor,u=n.pageNumber,e.next=3,r.export({filterByValue:[{keyChain:"page",comparator:u},{keyChain:"group",comparator:a}]});case 3:return o=e.sent,c=o.entries,i=o.metadata,e.abrupt("return",{edges:c.reduce((function(e,r){var t=s(r,2),n=t[0],a=t[1],u=a.index,o=a.node;return i[u].cacheability.checkTTL()&&(e[u]={cursor:n,node:o}),e}),[]),pageNumber:u});case 7:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),M=function(){var e=r(t.mark((function e(r,n){var a,s,u,o,c,i,l,p,d,g,f;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.cursorCache,s=n.groupCursor,u=n.resultsPerPage,e.next=3,a.get("".concat(s,"-metadata"));case 3:if(o=e.sent,!(c=y(r))){e.next=11;break}return e.next=8,a.get(c);case 8:e.t0=e.sent,e.next=12;break;case 11:e.t0=T(r,{metadata:o,resultsPerPage:u});case 12:return i=e.t0,l=N(r,{entry:i,resultsPerPage:u}),p=O(r,{entry:i,metadata:o,resultsPerPage:u}),d=[],j(r,{endIndex:p,entry:i,metadata:o,resultsPerPage:u,startIndex:l}).forEach((function(e){d.push(B(a,{groupCursor:s,pageNumber:e}))})),e.next=20,Promise.all(d);case 20:return g=e.sent,f=k(g),e.abrupt("return",{cachedEdges:f.length?g:P(g,{endIndex:p,resultsPerPage:u,startIndex:l}),hasNextPage:E({cachedEdgesByPage:g,endIndex:p,metadata:o,resultsPerPage:u}),hasPreviousPage:D({cachedEdgesByPage:g,startIndex:l}),indexes:{end:p,start:l},missingPages:f,totalResults:o.totalResults});case 23:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),A=function(){var e=r(t.mark((function e(r,n){var a,s,u,o,c,i,l,p,d,g,y,w,C,j,k,I,R,N,O;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.cursorCache,s=n.getters,u=n.groupCursor,o=n.makeIDCursor,c=n.resourceResolver,i=n.resultsPerPage,e.next=3,M(r,{cursorCache:a,groupCursor:u,resultsPerPage:i});case 3:if(l=e.sent,p=l.cachedEdges,d=l.hasNextPage,g=l.hasPreviousPage,y=l.indexes,w=l.missingPages,C=l.totalResults,w.length){e.next=13;break}return j=m(p),e.abrupt("return",{edges:j,errors:[],nodes:b(j),pageInfo:{endCursor:v(j),hasNextPage:d,hasPreviousPage:g,startCursor:h(j)},totalCount:C});case 13:return e.next=15,f(w,{cursorCache:a,getters:s,groupCursor:u,makeIDCursor:o,resourceResolver:c});case 15:return k=e.sent,I=k.cachedEdges,R=k.errors,N=P(x(p,I),{endIndex:y.end,resultsPerPage:i,startIndex:y.start}),O=m(N),e.abrupt("return",{edges:O,errors:R,nodes:b(O),pageInfo:{endCursor:v(O),hasNextPage:d,hasPreviousPage:g,startCursor:h(O)},totalCount:C});case 21:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),G=function(e){var r=e.direction,t=e.entry,n=t.index,a=t.page;return"backward"===r&&1===a&&0===n},S=function(e){var r=e.direction,t=e.entry,n=t.index,a=t.page,s=e.resultsPerPage,u=e.totalPages,o=e.totalResults;return"forward"===r&&a===u&&n===R({resultsPerPage:s,totalResults:o})};function q(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function H(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?q(Object(t),!0).forEach((function(r){u(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):q(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var L,V=(L=r(t.mark((function e(r,n,a){var s,u,c,i,l,p,d,g,f,m,b,P;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.after,u=r.before,c=r.first,i=r.last,l=n.fieldNodes,p=a.cursorCache,d=a.groupCursor,g=a.resultsPerPage,!s||c||i){e.next=5;break}return e.abrupt("return",new o("Invalid connection argument combination. `after` must be used in combination with `first`.",l));case 5:if(!s||!i){e.next=7;break}return e.abrupt("return",new o("Invalid connection argument combination. `after` cannot be used in combination with `last`.",l));case 7:if(!u||i||c){e.next=9;break}return e.abrupt("return",new o("Invalid connection argument combination. `before` must be used in combination with `last`.",l));case 9:if(!u||!c){e.next=11;break}return e.abrupt("return",new o("Invalid connection argument combination. `before` cannot be used in combination with `first`.",l));case 11:return e.next=13,p.get("".concat(d,"-metadata"));case 13:if(f=e.sent){e.next=16;break}return e.abrupt("return",new o("Curser cannot be supplied without previously being provided.",l));case 16:return m=y({after:s,before:u}),e.next=19,p.get(m);case 19:if(b=e.sent){e.next=22;break}return e.abrupt("return",new o("The cursor ".concat(m," could not be found."),l));case 22:if(P=w(i),!S(H({direction:P,entry:b,resultsPerPage:g},f))){e.next=25;break}return e.abrupt("return",new o("The cursor ".concat(m," is the last, you cannot go forward any further."),l));case 25:if(!G({direction:P,entry:b})){e.next=27;break}return e.abrupt("return",new o("The cursor ".concat(m," is the first, you cannot go backward any further."),l));case 27:return e.abrupt("return",void 0);case 28:case"end":return e.stop()}}),e)}))),function(e,r,t){return L.apply(this,arguments)});export default function(e){var n=e.cursorCache,a=e.createMakeCursors,s=e.createResourceResolver,u=e.getters,o=e.resolver,c=void 0===o?function(e){return e}:o,i=e.resultsPerPage;return function(){var e=r(t.mark((function e(r,o,l,d){var g,m,b,P,h,v;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,g=a(r,o,l,d),m=g.makeGroupCursor,b=g.makeIDCursor,P=s(r,o,l,d),h=m(),!p(o)){e.next=15;break}return e.next=7,V(o,d,{cursorCache:n,groupCursor:h,resultsPerPage:i});case 7:if(!(v=e.sent)){e.next=10;break}return e.abrupt("return",c({edges:[],errors:[v],nodes:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1},totalCount:0}));case 10:return e.t0=c,e.next=13,A(o,{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:i});case 13:return e.t1=e.sent,e.abrupt("return",(0,e.t0)(e.t1));case 15:return e.next=17,n.has("".concat(h,"-metadata"));case 17:if(!e.sent){e.next=23;break}return e.t2=c,e.next=21,A(o,{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:i});case 21:return e.t3=e.sent,e.abrupt("return",(0,e.t2)(e.t3));case 23:return e.next=25,f([1],{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P});case 25:return e.t4=c,e.next=28,A(o,{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:i});case 28:return e.t5=e.sent,e.abrupt("return",(0,e.t4)(e.t5));case 32:throw e.prev=32,e.t6=e.catch(0),e.t6;case 35:case"end":return e.stop()}}),e,null,[[0,32]])})));return function(r,t,n,a){return e.apply(this,arguments)}}()}export{l as removeConnectionInputOptions};
1
+ import e from"lodash/pickBy";import"core-js/modules/es.array.includes.js";import r from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/regenerator";import n from"@babel/runtime/helpers/toConsumableArray";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.promise.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.array.map.js";import"core-js/modules/es.array.concat.js";import"core-js/modules/es.array.slice.js";import"core-js/modules/es.array.find.js";import"core-js/modules/web.dom-collections.for-each.js";import a from"lodash/range";import s from"@babel/runtime/helpers/slicedToArray";import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/es.object.get-own-property-descriptor.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import u from"@babel/runtime/helpers/defineProperty";import{GraphQLError as o}from"graphql";var c,i=["after","before","first","last"],l=function(r){return e(r,(function(e,r){return!i.includes(r)}))},p=function(e){var r=e.after,t=e.before;return!(!r&&!t)},d=(c=r(t.mark((function e(n,a){var s,u,o,c,i,l,p,d;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=a.edges,u=a.group,o=a.headers,c=a.page,i=a.totalPages,l=a.totalResults,p=o.get("cache-control"),d=p?{cacheHeaders:{cacheControl:p}}:void 0,e.next=5,Promise.all(s.map(function(){var e=r(t.mark((function e(r,a){var s,o;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=r.cursor,o=r.node,e.abrupt("return",n.set(s,{node:o,index:a,group:u,page:c},d));case 2:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}()));case 5:return e.next=7,n.set("".concat(u,"-metadata"),{totalPages:i,totalResults:l},d);case 7:case"end":return e.stop()}}),e)}))),function(e,r){return c.apply(this,arguments)}),g=function(e,r){return e.map((function(e){return{node:e,cursor:r(e)}}))},f=function(){var e=r(t.mark((function e(a,s){var u,o,c,i,l,p,f;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=s.cursorCache,o=s.getters,c=s.groupCursor,i=s.makeIDCursor,l=s.resourceResolver,p=[],e.next=4,Promise.all(a.map(function(){var e=r(t.mark((function e(r){var a,s,f,m,b;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l({page:r});case 2:if(a=e.sent,s=a.data,f=a.errors,m=a.headers,!s||null!=f&&f.length){e.next=11;break}return b=g(o.nodes(s),(function(e){return i(e.id)})),e.next=10,d(u,{edges:b,group:c,headers:m,page:r,totalPages:o.totalPages(s),totalResults:o.totalResults(s)});case 10:return e.abrupt("return",{edges:b,pageNumber:r});case 11:return null!=f&&f.length&&p.push.apply(p,n(f)),e.abrupt("return",{edges:[],pageNumber:r});case 13:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}()));case 4:return f=e.sent,e.abrupt("return",{cachedEdges:f,errors:p});case 6:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),m=function(e){return e.reduce((function(e,r){return[].concat(n(e),n(r.edges))}),[])},b=function(e){return e.map((function(e){return e.node}))},P=function(e,r){var t=r.endIndex,n=r.resultsPerPage,a=r.startIndex;return e.reduce((function(r,s,u){var o=function(e){var r=e.pageIndex,t=e.startIndex;return 0===r?t.relative:0}({startIndex:a,pageIndex:u}),c=function(e){var r=e.endIndex,t=e.pageIndex,n=e.resultsPerPage;return t===e.totalCachedPages-1?r.relative:n-1}({endIndex:t,pageIndex:u,resultsPerPage:n,totalCachedPages:e.length}),i=s.edges.slice(o,c+1);return r.push({edges:i,pageNumber:s.pageNumber}),r}),[])},h=function(e){var r;return null===(r=e[0])||void 0===r?void 0:r.cursor},v=function(e){var r=e[e.length-1];return null==r?void 0:r.cursor},x=function(e,r){return e.reduce((function(e,t){if(!t.edges.length){var a=r.find((function(e){return e.pageNumber===t.pageNumber}));if(a)return[].concat(n(e),[a])}return[].concat(n(e),[t])}),[])},y=function(e){var r=e.after;return e.before||r},w=function(e){return e?"backward":"forward"},C=function(e){return e.page===e.totalPages},j=function(e,r){var t=r.endIndex,s=r.entry.page,u=r.metadata,o=r.resultsPerPage,c=function(e,r){var t=r.page,n=r.startIndex,a=r.resultsPerPage;if("forward"===w(e.last)||n.absolute>=0)return t;var s=t-Math.ceil(Math.abs(n.absolute)/a);return s<=1?1:s}(e,{page:s,startIndex:r.startIndex,resultsPerPage:o}),i=function(e,r){var t=r.endIndex,n=r.metadata.totalPages,a=r.page,s=r.resultsPerPage,u=s-1;if("backward"===w(e.last)||C({page:a,totalPages:n})||t.absolute<=u)return a;var o=a+Math.ceil((t.absolute-u)/s);return o>=n?n:o}(e,{endIndex:t,metadata:u,page:s,resultsPerPage:o});return c===i?[s]:[].concat(n(a(c,i)),[i])},k=function(e){return e.reduce((function(e,r){return r.edges.length||e.push(r.pageNumber),e}),[])},I=function(e){var r=e.first,t=e.last;return r||t},R=function(e){return function(e){var r=e.resultsPerPage,t=e.totalResults%r;return 0===t?r:t}({resultsPerPage:e.resultsPerPage,totalResults:e.totalResults})-1},N=function(e,r){var t=r.entry,n=t.index,a=t.page,s=r.resultsPerPage,u=I(e);return"forward"===w(e.last)?{absolute:n+1,relative:n+1}:function(e){return 1===e}(a)&&n-u<0?{absolute:0,relative:0}:function(){var e=n-u;if(e>=0)return{absolute:e,relative:e};var r=Math.abs(e),t=r%s;return{absolute:e,relative:0===t||a-(r/s+1)<0?0:s-t}}()},O=function(e,r){var t=r.entry,n=t.index,a=t.page,s=r.metadata,u=s.totalPages,o=s.totalResults,c=r.resultsPerPage,i=I(e),l=R({resultsPerPage:c,totalResults:o});return"backward"===w(e.last)?{absolute:n-1,relative:n-1}:C({page:a,totalPages:u})&&n+i>l?{absolute:l,relative:l}:function(){var e=n+i,r=c-1;if(e<=r)return{absolute:e,relative:e};var t=e-r,s=t%c;return{absolute:e,relative:0===s?r:a+t/c>u?l:s-1}}()},D=function(e){var r=e.cachedEdgesByPage,t=e.startIndex;return 1!==r[0].pageNumber||t.relative>0},E=function(e){var r=e.cachedEdgesByPage,t=e.endIndex,n=e.metadata,a=n.totalPages,s=n.totalResults,u=e.resultsPerPage;return r[r.length-1].pageNumber!==a||t.relative<R({resultsPerPage:u,totalResults:s})},T=function(e,r){var t=r.metadata,n=t.totalPages,a=t.totalResults,s=r.resultsPerPage;return"backward"===w(e.last)?{index:R({resultsPerPage:s,totalResults:a})+1,page:n}:{index:-1,page:1}},B=function(){var e=r(t.mark((function e(r,n){var a,u,o,c,i;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.groupCursor,u=n.pageNumber,e.next=3,r.export({filterByValue:[{keyChain:"page",comparator:u},{keyChain:"group",comparator:a}]});case 3:return o=e.sent,c=o.entries,i=o.metadata,e.abrupt("return",{edges:c.reduce((function(e,r){var t=s(r,2),n=t[0],a=t[1],u=a.index,o=a.node;return i[u].cacheability.checkTTL()&&(e[u]={cursor:n,node:o}),e}),[]),pageNumber:u});case 7:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),M=function(){var e=r(t.mark((function e(r,n){var a,s,u,o,c,i,l,p,d,g,f;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.cursorCache,s=n.groupCursor,u=n.resultsPerPage,e.next=3,a.get("".concat(s,"-metadata"));case 3:if(o=e.sent,!(c=y(r))){e.next=11;break}return e.next=8,a.get(c);case 8:e.t0=e.sent,e.next=12;break;case 11:e.t0=T(r,{metadata:o,resultsPerPage:u});case 12:return i=e.t0,l=N(r,{entry:i,resultsPerPage:u}),p=O(r,{entry:i,metadata:o,resultsPerPage:u}),d=[],j(r,{endIndex:p,entry:i,metadata:o,resultsPerPage:u,startIndex:l}).forEach((function(e){d.push(B(a,{groupCursor:s,pageNumber:e}))})),e.next=20,Promise.all(d);case 20:return g=e.sent,f=k(g),e.abrupt("return",{cachedEdges:f.length?g:P(g,{endIndex:p,resultsPerPage:u,startIndex:l}),hasNextPage:E({cachedEdgesByPage:g,endIndex:p,metadata:o,resultsPerPage:u}),hasPreviousPage:D({cachedEdgesByPage:g,startIndex:l}),indexes:{end:p,start:l},missingPages:f,totalResults:o.totalResults});case 23:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),A=function(){var e=r(t.mark((function e(r,n){var a,s,u,o,c,i,l,p,d,g,y,w,C,j,k,I,R,N,O;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.cursorCache,s=n.getters,u=n.groupCursor,o=n.makeIDCursor,c=n.resourceResolver,i=n.resultsPerPage,e.next=3,M(r,{cursorCache:a,groupCursor:u,resultsPerPage:i});case 3:if(l=e.sent,p=l.cachedEdges,d=l.hasNextPage,g=l.hasPreviousPage,y=l.indexes,w=l.missingPages,C=l.totalResults,w.length){e.next=13;break}return j=m(p),e.abrupt("return",{edges:j,errors:[],nodes:b(j),pageInfo:{endCursor:v(j),hasNextPage:d,hasPreviousPage:g,startCursor:h(j)},totalCount:C});case 13:return e.next=15,f(w,{cursorCache:a,getters:s,groupCursor:u,makeIDCursor:o,resourceResolver:c});case 15:return k=e.sent,I=k.cachedEdges,R=k.errors,N=P(x(p,I),{endIndex:y.end,resultsPerPage:i,startIndex:y.start}),O=m(N),e.abrupt("return",{edges:O,errors:R,nodes:b(O),pageInfo:{endCursor:v(O),hasNextPage:d,hasPreviousPage:g,startCursor:h(O)},totalCount:C});case 21:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),G=function(e){var r=e.direction,t=e.entry,n=t.index,a=t.page;return"backward"===r&&1===a&&0===n},S=function(e){var r=e.direction,t=e.entry,n=t.index,a=t.page,s=e.resultsPerPage,u=e.totalPages,o=e.totalResults;return"forward"===r&&a===u&&n===R({resultsPerPage:s,totalResults:o})};function q(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function H(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?q(Object(t),!0).forEach((function(r){u(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):q(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var L,V=(L=r(t.mark((function e(r,n,a){var s,u,c,i,l,p,d,g,f,m,b,P;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.after,u=r.before,c=r.first,i=r.last,l=n.fieldNodes,p=a.cursorCache,d=a.groupCursor,g=a.resultsPerPage,!s||c||i){e.next=5;break}return e.abrupt("return",new o("Invalid connection argument combination. `after` must be used in combination with `first`.",l));case 5:if(!s||!i){e.next=7;break}return e.abrupt("return",new o("Invalid connection argument combination. `after` cannot be used in combination with `last`.",l));case 7:if(!u||i||c){e.next=9;break}return e.abrupt("return",new o("Invalid connection argument combination. `before` must be used in combination with `last`.",l));case 9:if(!u||!c){e.next=11;break}return e.abrupt("return",new o("Invalid connection argument combination. `before` cannot be used in combination with `first`.",l));case 11:return e.next=13,p.get("".concat(d,"-metadata"));case 13:if(f=e.sent){e.next=16;break}return e.abrupt("return",new o("Curser cannot be supplied without previously being provided.",l));case 16:return m=y({after:s,before:u}),e.next=19,p.get(m);case 19:if(b=e.sent){e.next=22;break}return e.abrupt("return",new o("The cursor ".concat(m," could not be found."),l));case 22:if(P=w(i),!S(H({direction:P,entry:b,resultsPerPage:g},f))){e.next=25;break}return e.abrupt("return",new o("The cursor ".concat(m," is the last, you cannot go forward any further."),l));case 25:if(!G({direction:P,entry:b})){e.next=27;break}return e.abrupt("return",new o("The cursor ".concat(m," is the first, you cannot go backward any further."),l));case 27:return e.abrupt("return",void 0);case 28:case"end":return e.stop()}}),e)}))),function(e,r,t){return L.apply(this,arguments)});export default function(e){var n=e.cursorCache,a=e.createMakeCursors,s=e.createResourceResolver,u=e.getters,o=e.resolver,c=void 0===o?function(e){return e}:o,i=e.resultsPerPage;return function(){var e=r(t.mark((function e(r,o,l,d){var g,m,b,P,h,v;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,g=a(r,o,l,d),m=g.makeGroupCursor,b=g.makeIDCursor,P=s(r,o,l,d),h=m(),!p(o)){e.next=15;break}return e.next=7,V(o,d,{cursorCache:n,groupCursor:h,resultsPerPage:i});case 7:if(!(v=e.sent)){e.next=10;break}return e.abrupt("return",c({edges:[],errors:[v],nodes:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1},totalCount:0}));case 10:return e.t0=c,e.next=13,A(o,{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:i});case 13:return e.t1=e.sent,e.abrupt("return",(0,e.t0)(e.t1));case 15:return e.next=17,n.has("".concat(h,"-metadata"));case 17:if(!e.sent){e.next=23;break}return e.t2=c,e.next=21,A(o,{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:i});case 21:return e.t3=e.sent,e.abrupt("return",(0,e.t2)(e.t3));case 23:return e.next=25,f([1],{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P});case 25:return e.t4=c,e.next=28,A(o,{cursorCache:n,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:i});case 28:return e.t5=e.sent,e.abrupt("return",(0,e.t4)(e.t5));case 32:throw e.prev=32,e.t6=e.catch(0),e.t6;case 35:case"end":return e.stop()}}),e,null,[[0,32]])})));return function(r,t,n,a){return e.apply(this,arguments)}}()}export{l as removeConnectionInputOptions};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../connection-resolver/src/helpers/removeConnectionInputOptions.ts","../connection-resolver/src/helpers/isCursorSupplied.ts","../connection-resolver/src/helpers/cacheCursors.ts","../connection-resolver/src/helpers/makeEdges.ts","../connection-resolver/src/helpers/requestAndCachePages.ts","../connection-resolver/src/helpers/extractEdges.ts","../connection-resolver/src/helpers/extractNodes.ts","../connection-resolver/src/helpers/getInRangeCachedEdges.ts","../connection-resolver/src/helpers/getCurrentPageStartAndEndIndexes.ts","../connection-resolver/src/helpers/getStartAndEndCursors.ts","../connection-resolver/src/helpers/mergeCachedEdges.ts","../connection-resolver/src/helpers/getCursor.ts","../connection-resolver/src/helpers/getDirection.ts","../connection-resolver/src/helpers/isLastPage.ts","../connection-resolver/src/helpers/getPageNumbersToRequest.ts","../connection-resolver/src/helpers/getStartAndEndPageNumbers.ts","../connection-resolver/src/helpers/getPagesMissingFromCache.ts","../connection-resolver/src/helpers/getCount.ts","../connection-resolver/src/helpers/getResultsOnLastPage.ts","../connection-resolver/src/helpers/getIndexesOnLastPage.ts","../connection-resolver/src/helpers/getStartAndEndIndexes.ts","../connection-resolver/src/helpers/isFirstPage.ts","../connection-resolver/src/helpers/hasPreviousNextPage.ts","../connection-resolver/src/helpers/makeEntry.ts","../connection-resolver/src/helpers/retrieveCachedEdgesByPage.ts","../connection-resolver/src/helpers/retrieveCachedConnection.ts","../connection-resolver/src/helpers/resolveConnection.ts","../connection-resolver/src/helpers/isCursorFirst.ts","../connection-resolver/src/helpers/isCursorLast.ts","../connection-resolver/src/helpers/validateCursor.ts","../connection-resolver/src/main/index.ts"],"sourcesContent":["import { pickBy } from \"lodash\";\n\nconst connectionInputOptions = [\"after\", \"before\", \"first\", \"last\"];\n\nexport default <O extends object>(args: O) => pickBy(args, (_value, key) => !connectionInputOptions.includes(key));\n","import { ConnectionInputOptions, PlainObject } from \"../defs\";\n\nexport default ({ after, before }: PlainObject & ConnectionInputOptions) => !!(after || before);\n","import Cachemap from \"@cachemap/core\";\nimport { Edge } from \"../defs\";\n\nexport type Params = {\n edges: Edge[];\n group: string;\n headers: Headers;\n page: number;\n totalPages: number;\n totalResults: number;\n};\n\nexport default async (cursorCache: Cachemap, { edges, group, headers, page, totalPages, totalResults }: Params) => {\n const cacheControl = headers.get(\"cache-control\");\n const opts = cacheControl ? { cacheHeaders: { cacheControl } } : undefined;\n\n await Promise.all(\n edges.map(async ({ cursor, node }, index) => cursorCache.set(cursor, { node, index, group, page }, opts)),\n );\n\n await cursorCache.set(`${group}-metadata`, { totalPages, totalResults }, opts);\n};\n","import { Node } from \"../defs\";\n\nexport default (nodes: Node[], makeCursor: (node: Node) => string) =>\n nodes.map(node => ({ node, cursor: makeCursor(node) }));\n","import Cachemap from \"@cachemap/core\";\nimport { Getters, Node, PlainObject, ResourceResolver } from \"../defs\";\nimport cacheCursors from \"./cacheCursors\";\nimport makeEdges from \"./makeEdges\";\n\nexport type Context<Resource extends PlainObject, ResourceNode extends Node> = {\n cursorCache: Cachemap;\n getters: Getters<Resource, ResourceNode>;\n groupCursor: string;\n makeIDCursor: (id: string | number) => string;\n resourceResolver: ResourceResolver<Resource>;\n};\n\nconst requestAndCachePages = async <Resource extends PlainObject, ResourceNode extends Node>(\n pages: number[],\n { cursorCache, getters, groupCursor, makeIDCursor, resourceResolver }: Context<Resource, ResourceNode>,\n) => {\n const errors: Error[] = [];\n\n const cachedEdges = await Promise.all(\n pages.map(async page => {\n const { data: pageResultData, errors: pageResultErrors, headers: pageResultHeaders } = await resourceResolver({\n page,\n });\n\n if (pageResultData && !pageResultErrors?.length) {\n const edges = makeEdges(getters.nodes(pageResultData), node => makeIDCursor(node.id));\n\n await cacheCursors(cursorCache, {\n edges,\n group: groupCursor,\n headers: pageResultHeaders,\n page,\n totalPages: getters.totalPages(pageResultData),\n totalResults: getters.totalResults(pageResultData),\n });\n\n return { edges, pageNumber: page };\n }\n\n if (pageResultErrors?.length) {\n errors.push(...pageResultErrors);\n }\n\n return { edges: [], pageNumber: page };\n }),\n );\n\n return { cachedEdges, errors };\n};\n\nexport default requestAndCachePages;\n","import { CachedEdges, Edge } from \"../defs\";\n\nexport default (cachedEdges: CachedEdges[]) =>\n cachedEdges.reduce((edges, cachedEdge) => [...edges, ...cachedEdge.edges], [] as Edge[]);\n","import { Edge } from \"../defs\";\n\nexport default (edges: Edge[]) => edges.map(edge => edge.node);\n","import { CachedEdges, Indexes } from \"../defs\";\nimport { getCurrentPageEndIndex, getCurrentPageStartIndex } from \"./getCurrentPageStartAndEndIndexes\";\n\nexport type Context = {\n endIndex: Indexes;\n resultsPerPage: number;\n startIndex: Indexes;\n};\n\nexport default (cachedEdgesByPage: CachedEdges[], { endIndex, resultsPerPage, startIndex }: Context) => {\n return cachedEdgesByPage.reduce((inRange, cachedEdgesPage, i) => {\n const currentPageStartIndex = getCurrentPageStartIndex({ startIndex, pageIndex: i });\n\n const currentPageEndIndex = getCurrentPageEndIndex({\n endIndex,\n pageIndex: i,\n resultsPerPage,\n totalCachedPages: cachedEdgesByPage.length,\n });\n\n const cachedEdges = cachedEdgesPage.edges.slice(currentPageStartIndex, currentPageEndIndex + 1);\n inRange.push({ edges: cachedEdges, pageNumber: cachedEdgesPage.pageNumber });\n return inRange;\n }, [] as CachedEdges[]);\n};\n","import { Indexes } from \"../defs\";\n\nexport type StartIndexContext = {\n pageIndex: number;\n startIndex: Indexes;\n};\n\nexport const getCurrentPageStartIndex = ({ pageIndex, startIndex }: StartIndexContext) =>\n pageIndex === 0 ? startIndex.relative : 0;\n\nexport type EndIndexContext = {\n endIndex: Indexes;\n pageIndex: number;\n resultsPerPage: number;\n totalCachedPages: number;\n};\n\nexport const getCurrentPageEndIndex = ({ endIndex, pageIndex, resultsPerPage, totalCachedPages }: EndIndexContext) =>\n pageIndex === totalCachedPages - 1 ? endIndex.relative : resultsPerPage - 1;\n","import { Edge } from \"../defs\";\n\nexport const getStartCursor = (edges: Edge[]) => edges[0].cursor;\n\nexport const getEndCursor = (edges: Edge[]) => {\n const lastEdge = edges[edges.length - 1];\n return lastEdge.cursor;\n};\n","import { CachedEdges } from \"../defs\";\n\nexport default (cachedEdges: CachedEdges[], missingCachedEdges: CachedEdges[]) =>\n cachedEdges.reduce((mergedCachedEdges, cachedEdge) => {\n if (!cachedEdge.edges.length) {\n const missingCachedEdge = missingCachedEdges.find(missing => missing.pageNumber === cachedEdge.pageNumber);\n\n if (missingCachedEdge) {\n return [...mergedCachedEdges, missingCachedEdge];\n }\n }\n\n return [...mergedCachedEdges, cachedEdge];\n }, [] as CachedEdges[]);\n","import { ConnectionInputOptions } from \"../defs\";\n\nexport default ({ after, before }: ConnectionInputOptions) => before || after;\n","export default (last: number | undefined) => (last ? \"backward\" : \"forward\");\n","export type Params = {\n page: number;\n totalPages: number;\n};\n\nexport default ({ page, totalPages }: Params) => page === totalPages;\n","import { range } from \"lodash\";\nimport { ConnectionInputOptions, Context, Indexes } from \"../defs\";\nimport { getEndPageNumber, getStartPageNumber } from \"./getStartAndEndPageNumbers\";\n\nexport type GetPageNumbersToRequestContext = {\n endIndex: Indexes;\n startIndex: Indexes;\n};\n\nexport default (\n args: ConnectionInputOptions,\n { endIndex, entry: { page }, metadata, resultsPerPage, startIndex }: GetPageNumbersToRequestContext & Context,\n) => {\n const startPageNumber = getStartPageNumber(args, { page, startIndex, resultsPerPage });\n const endPageNumber = getEndPageNumber(args, { endIndex, metadata, page, resultsPerPage });\n\n if (startPageNumber === endPageNumber) {\n return [page];\n }\n\n return [...range(startPageNumber, endPageNumber), endPageNumber];\n};\n","import { ConnectionInputOptions, Context, Indexes } from \"../defs\";\nimport getDirection from \"./getDirection\";\nimport isLastPage from \"./isLastPage\";\n\nexport type PageNumberContext = {\n endIndex: Indexes;\n page: number;\n startIndex: Indexes;\n};\n\nexport const getStartPageNumber = (\n args: ConnectionInputOptions,\n { page, startIndex, resultsPerPage }: Omit<PageNumberContext, \"endIndex\"> & Omit<Context, \"entry\" | \"metadata\">,\n) => {\n if (getDirection(args.last) === \"forward\" || startIndex.absolute >= 0) {\n return page;\n }\n\n const startPageNumber = page - Math.ceil(Math.abs(startIndex.absolute) / resultsPerPage);\n return startPageNumber <= 1 ? 1 : startPageNumber;\n};\n\nexport const getEndPageNumber = (\n args: ConnectionInputOptions,\n {\n endIndex,\n metadata: { totalPages },\n page,\n resultsPerPage,\n }: Omit<PageNumberContext, \"startIndex\"> & Omit<Context, \"entry\">,\n) => {\n const indexesPerPage = resultsPerPage - 1;\n\n if (\n getDirection(args.last) === \"backward\" ||\n isLastPage({ page, totalPages }) ||\n endIndex.absolute <= indexesPerPage\n ) {\n return page;\n }\n\n const endPageNumber = page + Math.ceil((endIndex.absolute - indexesPerPage) / resultsPerPage);\n return endPageNumber >= totalPages ? totalPages : endPageNumber;\n};\n","import { CachedEdges } from \"../defs\";\n\nexport default (cachedEdgesByPage: CachedEdges[]) => {\n return cachedEdgesByPage.reduce((missing, cachedEdgesPage) => {\n if (!cachedEdgesPage.edges.length) {\n missing.push(cachedEdgesPage.pageNumber);\n }\n\n return missing;\n }, [] as number[]);\n};\n","import { ConnectionInputOptions } from \"../defs\";\n\nexport default ({ first, last }: ConnectionInputOptions) => (first || last) as number;\n","export type Params = {\n resultsPerPage: number;\n totalResults: number;\n};\n\nexport default ({ resultsPerPage, totalResults }: Params) => {\n const remainder = totalResults % resultsPerPage;\n return remainder === 0 ? resultsPerPage : remainder;\n};\n","import getResultsOnLastPage, { Params } from \"./getResultsOnLastPage\";\n\nexport default ({ resultsPerPage, totalResults }: Params) => getResultsOnLastPage({ resultsPerPage, totalResults }) - 1;\n","import { ConnectionInputOptions, Context } from \"../defs\";\nimport getCount from \"./getCount\";\nimport getDirection from \"./getDirection\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\nimport isFirstPage from \"./isFirstPage\";\nimport isLastPage from \"./isLastPage\";\n\nexport const getStartIndex = (\n args: ConnectionInputOptions,\n { entry: { index, page }, resultsPerPage }: Pick<Context, \"entry\" | \"resultsPerPage\">,\n) => {\n const count = getCount(args);\n\n return getDirection(args.last) === \"forward\"\n ? { absolute: index + 1, relative: index + 1 }\n : isFirstPage(page) && index - count < 0\n ? { absolute: 0, relative: 0 }\n : (() => {\n const absStartIndex = index - count;\n\n if (absStartIndex >= 0) {\n return { absolute: absStartIndex, relative: absStartIndex };\n }\n\n const indexesRemainingAfterLastPage = Math.abs(absStartIndex);\n const pagesRemaining = indexesRemainingAfterLastPage / resultsPerPage + 1;\n const remainder = indexesRemainingAfterLastPage % resultsPerPage;\n const relStartIndex = remainder === 0 ? 0 : page - pagesRemaining < 0 ? 0 : resultsPerPage - remainder;\n return { absolute: absStartIndex, relative: relStartIndex };\n })();\n};\n\nexport const getEndIndex = (\n args: ConnectionInputOptions,\n { entry: { index, page }, metadata: { totalPages, totalResults }, resultsPerPage }: Context,\n) => {\n const count = getCount(args);\n const indexesOnLastPage = getIndexesOnLastPage({ resultsPerPage, totalResults });\n\n return getDirection(args.last) === \"backward\"\n ? { absolute: index - 1, relative: index - 1 }\n : isLastPage({ page, totalPages }) && index + count > indexesOnLastPage\n ? { absolute: indexesOnLastPage, relative: indexesOnLastPage }\n : (() => {\n const absEndIndex = index + count;\n const indexesPerPage = resultsPerPage - 1;\n\n if (absEndIndex <= indexesPerPage) {\n return { absolute: absEndIndex, relative: absEndIndex };\n }\n\n const indexesRemainingAfterFirstPage = absEndIndex - indexesPerPage;\n const pagesRemaining = indexesRemainingAfterFirstPage / resultsPerPage;\n const remainder = indexesRemainingAfterFirstPage % resultsPerPage;\n\n const relEndIndex =\n remainder === 0 ? indexesPerPage : page + pagesRemaining > totalPages ? indexesOnLastPage : remainder - 1;\n\n return { absolute: absEndIndex, relative: relEndIndex };\n })();\n};\n","export default (page: number) => page === 1;\n","import { CachedEdges, CursorGroupMetadata, Indexes } from \"../defs\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\n\nexport type HasPreviousPageParams = {\n cachedEdgesByPage: CachedEdges[];\n startIndex: Indexes;\n};\n\nexport type HasNextPageParams = {\n cachedEdgesByPage: CachedEdges[];\n endIndex: Indexes;\n metadata: CursorGroupMetadata;\n resultsPerPage: number;\n};\n\nexport const hasPreviousPage = ({ cachedEdgesByPage, startIndex }: HasPreviousPageParams) =>\n cachedEdgesByPage[0].pageNumber !== 1 || startIndex.relative > 0;\n\nexport const hasNextPage = ({\n cachedEdgesByPage,\n endIndex,\n metadata: { totalPages, totalResults },\n resultsPerPage,\n}: HasNextPageParams) =>\n cachedEdgesByPage[cachedEdgesByPage.length - 1].pageNumber !== totalPages ||\n endIndex.relative < getIndexesOnLastPage({ resultsPerPage, totalResults });\n","import { ConnectionInputOptions, CursorGroupMetadata } from \"..\";\nimport getDirection from \"./getDirection\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\n\nexport type Context = {\n metadata: CursorGroupMetadata;\n resultsPerPage: number;\n};\n\nexport default (args: ConnectionInputOptions, { metadata: { totalPages, totalResults }, resultsPerPage }: Context) => {\n if (getDirection(args.last) === \"backward\") {\n return { index: getIndexesOnLastPage({ resultsPerPage, totalResults }) + 1, page: totalPages };\n }\n\n return { index: -1, page: 1 };\n};\n","import Cachemap, { ExportResult } from \"@cachemap/core\";\nimport { Edge } from \"../defs\";\n\nexport type Context = {\n groupCursor: string;\n pageNumber: number;\n};\n\nexport default async (cursorCache: Cachemap, { groupCursor, pageNumber }: Context) => {\n const { entries, metadata } = (await cursorCache.export({\n filterByValue: [\n { keyChain: \"page\", comparator: pageNumber },\n { keyChain: \"group\", comparator: groupCursor },\n ],\n })) as ExportResult;\n\n return {\n edges: entries.reduce((cached, [key, { index, node }]) => {\n if (metadata[index].cacheability.checkTTL()) {\n cached[index] = { cursor: key, node };\n }\n\n return cached;\n }, [] as Edge[]),\n pageNumber,\n };\n};\n","import Cachemap from \"@cachemap/core\";\nimport { CachedEdges, ConnectionInputOptions, CursorGroupMetadata } from \"../defs\";\nimport getCursor from \"./getCursor\";\nimport getInRangeCachedEdges from \"./getInRangeCachedEdges\";\nimport getPageNumbersToRequest from \"./getPageNumbersToRequest\";\nimport getPagesMissingFromCache from \"./getPagesMissingFromCache\";\nimport { getEndIndex, getStartIndex } from \"./getStartAndEndIndexes\";\nimport { hasNextPage, hasPreviousPage } from \"./hasPreviousNextPage\";\nimport makeEntry from \"./makeEntry\";\nimport retrieveCachedEdgesByPage from \"./retrieveCachedEdgesByPage\";\n\nexport type Context = {\n cursorCache: Cachemap;\n groupCursor: string;\n resultsPerPage: number;\n};\n\nexport default async (args: ConnectionInputOptions, { cursorCache, groupCursor, resultsPerPage }: Context) => {\n const metadata = (await cursorCache.get(`${groupCursor}-metadata`)) as CursorGroupMetadata;\n const cursor = getCursor(args);\n const entry = cursor ? await cursorCache.get(cursor) : makeEntry(args, { metadata, resultsPerPage });\n const startIndex = getStartIndex(args, { entry, resultsPerPage });\n const endIndex = getEndIndex(args, { entry, metadata, resultsPerPage });\n const promises: Promise<CachedEdges>[] = [];\n const pageNumbersToRequest = getPageNumbersToRequest(args, { endIndex, entry, metadata, resultsPerPage, startIndex });\n\n pageNumbersToRequest.forEach(pageNumber => {\n promises.push(retrieveCachedEdgesByPage(cursorCache, { groupCursor, pageNumber }));\n });\n\n const cachedEdgesByPage = await Promise.all(promises);\n const missingPages = getPagesMissingFromCache(cachedEdgesByPage);\n\n return {\n cachedEdges: !missingPages.length\n ? getInRangeCachedEdges(cachedEdgesByPage, { endIndex, resultsPerPage, startIndex })\n : cachedEdgesByPage,\n hasNextPage: hasNextPage({\n cachedEdgesByPage,\n endIndex,\n metadata,\n resultsPerPage,\n }),\n hasPreviousPage: hasPreviousPage({ cachedEdgesByPage, startIndex }),\n indexes: { end: endIndex, start: startIndex },\n missingPages,\n totalResults: metadata.totalResults,\n };\n};\n","import Cachemap from \"@cachemap/core\";\nimport { ConnectionInputOptions, Getters, Node, PlainObject, ResourceResolver } from \"../defs\";\nimport extractEdges from \"./extractEdges\";\nimport extractNodes from \"./extractNodes\";\nimport getInRangeCachedEdges from \"./getInRangeCachedEdges\";\nimport { getEndCursor, getStartCursor } from \"./getStartAndEndCursors\";\nimport mergeCachedEdges from \"./mergeCachedEdges\";\nimport requestAndCachePages from \"./requestAndCachePages\";\nimport retrieveCachedConnection from \"./retrieveCachedConnection\";\n\nexport type Context<Resource extends PlainObject, ResourceNode extends Node> = {\n cursorCache: Cachemap;\n getters: Getters<Resource, ResourceNode>;\n groupCursor: string;\n makeIDCursor: (id: string | number) => string;\n resourceResolver: ResourceResolver<Resource>;\n resultsPerPage: number;\n};\n\nconst resolveConnection = async <Resource extends PlainObject, ResourceNode extends Node>(\n args: PlainObject & ConnectionInputOptions,\n {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }: Context<Resource, ResourceNode>,\n) => {\n const {\n cachedEdges,\n hasNextPage,\n hasPreviousPage,\n indexes,\n missingPages,\n totalResults,\n } = await retrieveCachedConnection(args, {\n cursorCache,\n groupCursor,\n resultsPerPage,\n });\n\n if (!missingPages.length) {\n const edges = extractEdges(cachedEdges);\n\n return {\n edges,\n errors: [],\n nodes: extractNodes(edges),\n pageInfo: {\n endCursor: getEndCursor(edges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(edges),\n },\n totalCount: totalResults,\n };\n }\n\n const { cachedEdges: missingCachedEdges, errors } = await requestAndCachePages<Resource, ResourceNode>(missingPages, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n });\n\n const mergedCachedEdges = getInRangeCachedEdges(mergeCachedEdges(cachedEdges, missingCachedEdges), {\n endIndex: indexes.end,\n resultsPerPage,\n startIndex: indexes.start,\n });\n\n const edges = extractEdges(mergedCachedEdges);\n\n return {\n edges,\n errors,\n nodes: extractNodes(edges),\n pageInfo: {\n endCursor: getEndCursor(edges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(edges),\n },\n totalCount: totalResults,\n };\n};\n\nexport default resolveConnection;\n","import { CursorCacheEntry, Direction } from \"../defs\";\n\nexport type Params = {\n direction: Direction;\n entry: CursorCacheEntry;\n};\n\nexport default ({ direction, entry: { index, page } }: Params) => direction === \"backward\" && page === 1 && index === 0;\n","import { CursorCacheEntry, Direction } from \"../defs\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\n\nexport type Params = {\n direction: Direction;\n entry: CursorCacheEntry;\n resultsPerPage: number;\n totalPages: number;\n totalResults: number;\n};\n\nexport default ({ direction, entry: { index, page }, resultsPerPage, totalPages, totalResults }: Params) =>\n direction === \"forward\" && page === totalPages && index === getIndexesOnLastPage({ resultsPerPage, totalResults });\n","import Cachemap from \"@cachemap/core\";\nimport { GraphQLError, GraphQLResolveInfo } from \"graphql\";\nimport { ConnectionInputOptions, CursorCacheEntry, CursorGroupMetadata } from \"../defs\";\nimport getCursor from \"./getCursor\";\nimport getDirection from \"./getDirection\";\nimport isCursorFirst from \"./isCursorFirst\";\nimport isCursorLast from \"./isCursorLast\";\n\nexport type Context = {\n cursorCache: Cachemap;\n groupCursor: string;\n resultsPerPage: number;\n};\n\nexport default async (\n { after, before, first, last }: ConnectionInputOptions,\n { fieldNodes }: GraphQLResolveInfo,\n { cursorCache, groupCursor, resultsPerPage }: Context,\n) => {\n if (after && !first && !last) {\n return new GraphQLError(\n \"Invalid connection argument combination. `after` must be used in combination with `first`.\",\n fieldNodes,\n );\n }\n\n if (after && last) {\n return new GraphQLError(\n \"Invalid connection argument combination. `after` cannot be used in combination with `last`.\",\n fieldNodes,\n );\n }\n\n if (before && !last && !first) {\n return new GraphQLError(\n \"Invalid connection argument combination. `before` must be used in combination with `last`.\",\n fieldNodes,\n );\n }\n\n if (before && first) {\n return new GraphQLError(\n \"Invalid connection argument combination. `before` cannot be used in combination with `first`.\",\n fieldNodes,\n );\n }\n\n const metadata = (await cursorCache.get(`${groupCursor}-metadata`)) as CursorGroupMetadata | undefined;\n\n if (!metadata) {\n return new GraphQLError(\"Curser cannot be supplied without previously being provided.\", fieldNodes);\n }\n\n const cursor = getCursor({ after, before }) as string;\n const entry = (await cursorCache.get(cursor)) as CursorCacheEntry | undefined;\n\n if (!entry) {\n return new GraphQLError(`The cursor ${cursor} could not be found.`, fieldNodes);\n }\n\n const direction = getDirection(last);\n\n if (isCursorLast({ direction, entry, resultsPerPage, ...metadata })) {\n return new GraphQLError(`The cursor ${cursor} is the last, you cannot go forward any further.`, fieldNodes);\n }\n\n if (isCursorFirst({ direction, entry })) {\n return new GraphQLError(`The cursor ${cursor} is the first, you cannot go backward any further.`, fieldNodes);\n }\n\n return undefined;\n};\n","import { GraphQLResolveInfo } from \"graphql\";\nimport { Connection, ConnectionInputOptions, ConnectionResolverUserOptions, Node, PlainObject } from \"../defs\";\nimport isCursorSupplied from \"../helpers/isCursorSupplied\";\nimport requestAndCachePages from \"../helpers/requestAndCachePages\";\nimport resolveConnection from \"../helpers/resolveConnection\";\nimport validateCursor from \"../helpers/validateCursor\";\n\nconst main = <\n Source extends PlainObject | undefined,\n Args extends PlainObject,\n Ctx extends PlainObject,\n Resource extends PlainObject,\n ResourceNode extends Node\n>({\n cursorCache,\n createMakeCursors,\n createResourceResolver,\n getters,\n resolver = result => result,\n resultsPerPage,\n}: ConnectionResolverUserOptions<Source, Args, Ctx, Resource, ResourceNode>) => async (\n source: Source,\n args: Args & ConnectionInputOptions,\n context: Ctx,\n info: GraphQLResolveInfo,\n): Promise<Connection> => {\n try {\n const { makeGroupCursor, makeIDCursor } = createMakeCursors(source, args, context, info);\n const resourceResolver = createResourceResolver(source, args, context, info);\n const groupCursor = makeGroupCursor();\n\n if (isCursorSupplied(args)) {\n const cursorError = await validateCursor(args, info, {\n cursorCache,\n groupCursor,\n resultsPerPage,\n });\n\n if (cursorError) {\n return resolver({\n edges: [],\n errors: [cursorError],\n nodes: [],\n pageInfo: {\n hasNextPage: false,\n hasPreviousPage: false,\n },\n totalCount: 0,\n });\n }\n\n return resolver(\n await resolveConnection(args, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }),\n );\n }\n\n if (await cursorCache.has(`${groupCursor}-metadata`)) {\n return resolver(\n await resolveConnection(args, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }),\n );\n }\n\n await requestAndCachePages<Resource, ResourceNode>([1], {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n });\n\n return resolver(\n await resolveConnection(args, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }),\n );\n } catch (e) {\n throw e;\n }\n};\n\nexport default main;\n"],"names":["connectionInputOptions","args","_pickBy","_value","key","includes","after","before","cursorCache","edges","group","headers","page","totalPages","totalResults","cacheControl","get","opts","cacheHeaders","undefined","Promise","all","map","index","cursor","node","set","nodes","makeCursor","requestAndCachePages","pages","getters","groupCursor","makeIDCursor","resourceResolver","errors","pageResultData","data","pageResultErrors","pageResultHeaders","length","makeEdges","id","cacheCursors","pageNumber","push","cachedEdges","reduce","cachedEdge","edge","cachedEdgesByPage","endIndex","resultsPerPage","startIndex","inRange","cachedEdgesPage","i","currentPageStartIndex","pageIndex","relative","getCurrentPageStartIndex","currentPageEndIndex","totalCachedPages","getCurrentPageEndIndex","slice","getStartCursor","getEndCursor","missingCachedEdges","mergedCachedEdges","missingCachedEdge","find","missing","last","entry","metadata","startPageNumber","getDirection","absolute","Math","ceil","abs","getStartPageNumber","endPageNumber","indexesPerPage","isLastPage","getEndPageNumber","_range","first","remainder","getResultsOnLastPage","getStartIndex","count","getCount","isFirstPage","absStartIndex","indexesRemainingAfterLastPage","getEndIndex","indexesOnLastPage","getIndexesOnLastPage","absEndIndex","indexesRemainingAfterFirstPage","hasPreviousPage","hasNextPage","export","filterByValue","keyChain","comparator","entries","cached","cacheability","checkTTL","getCursor","makeEntry","promises","getPageNumbersToRequest","forEach","retrieveCachedEdgesByPage","missingPages","getPagesMissingFromCache","getInRangeCachedEdges","indexes","end","start","resolveConnection","retrieveCachedConnection","extractEdges","extractNodes","pageInfo","endCursor","startCursor","totalCount","mergeCachedEdges","direction","fieldNodes","GraphQLError","isCursorLast","isCursorFirst","createMakeCursors","createResourceResolver","resolver","result","source","context","info","makeGroupCursor","isCursorSupplied","validateCursor","cursorError","has"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../connection-resolver/src/helpers/removeConnectionInputOptions.ts","../connection-resolver/src/helpers/isCursorSupplied.ts","../connection-resolver/src/helpers/cacheCursors.ts","../connection-resolver/src/helpers/makeEdges.ts","../connection-resolver/src/helpers/requestAndCachePages.ts","../connection-resolver/src/helpers/extractEdges.ts","../connection-resolver/src/helpers/extractNodes.ts","../connection-resolver/src/helpers/getInRangeCachedEdges.ts","../connection-resolver/src/helpers/getCurrentPageStartAndEndIndexes.ts","../connection-resolver/src/helpers/getStartAndEndCursors.ts","../connection-resolver/src/helpers/mergeCachedEdges.ts","../connection-resolver/src/helpers/getCursor.ts","../connection-resolver/src/helpers/getDirection.ts","../connection-resolver/src/helpers/isLastPage.ts","../connection-resolver/src/helpers/getPageNumbersToRequest.ts","../connection-resolver/src/helpers/getStartAndEndPageNumbers.ts","../connection-resolver/src/helpers/getPagesMissingFromCache.ts","../connection-resolver/src/helpers/getCount.ts","../connection-resolver/src/helpers/getResultsOnLastPage.ts","../connection-resolver/src/helpers/getIndexesOnLastPage.ts","../connection-resolver/src/helpers/getStartAndEndIndexes.ts","../connection-resolver/src/helpers/isFirstPage.ts","../connection-resolver/src/helpers/hasPreviousNextPage.ts","../connection-resolver/src/helpers/makeEntry.ts","../connection-resolver/src/helpers/retrieveCachedEdgesByPage.ts","../connection-resolver/src/helpers/retrieveCachedConnection.ts","../connection-resolver/src/helpers/resolveConnection.ts","../connection-resolver/src/helpers/isCursorFirst.ts","../connection-resolver/src/helpers/isCursorLast.ts","../connection-resolver/src/helpers/validateCursor.ts","../connection-resolver/src/main/index.ts"],"sourcesContent":["import { pickBy } from \"lodash\";\n\nconst connectionInputOptions = [\"after\", \"before\", \"first\", \"last\"];\n\nexport default <O extends object>(args: O) => pickBy(args, (_value, key) => !connectionInputOptions.includes(key));\n","import { ConnectionInputOptions, PlainObject } from \"../defs\";\n\nexport default ({ after, before }: PlainObject & ConnectionInputOptions) => !!(after || before);\n","import Cachemap from \"@cachemap/core\";\nimport { Edge } from \"../defs\";\n\nexport type Params = {\n edges: Edge[];\n group: string;\n headers: Headers;\n page: number;\n totalPages: number;\n totalResults: number;\n};\n\nexport default async (cursorCache: Cachemap, { edges, group, headers, page, totalPages, totalResults }: Params) => {\n const cacheControl = headers.get(\"cache-control\");\n const opts = cacheControl ? { cacheHeaders: { cacheControl } } : undefined;\n\n await Promise.all(\n edges.map(async ({ cursor, node }, index) => cursorCache.set(cursor, { node, index, group, page }, opts)),\n );\n\n await cursorCache.set(`${group}-metadata`, { totalPages, totalResults }, opts);\n};\n","import { Node } from \"../defs\";\n\nexport default (nodes: Node[], makeCursor: (node: Node) => string) =>\n nodes.map(node => ({ node, cursor: makeCursor(node) }));\n","import Cachemap from \"@cachemap/core\";\nimport { Getters, Node, PlainObject, ResourceResolver } from \"../defs\";\nimport cacheCursors from \"./cacheCursors\";\nimport makeEdges from \"./makeEdges\";\n\nexport type Context<Resource extends PlainObject, ResourceNode extends Node> = {\n cursorCache: Cachemap;\n getters: Getters<Resource, ResourceNode>;\n groupCursor: string;\n makeIDCursor: (id: string | number) => string;\n resourceResolver: ResourceResolver<Resource>;\n};\n\nconst requestAndCachePages = async <Resource extends PlainObject, ResourceNode extends Node>(\n pages: number[],\n { cursorCache, getters, groupCursor, makeIDCursor, resourceResolver }: Context<Resource, ResourceNode>,\n) => {\n const errors: Error[] = [];\n\n const cachedEdges = await Promise.all(\n pages.map(async page => {\n const { data: pageResultData, errors: pageResultErrors, headers: pageResultHeaders } = await resourceResolver({\n page,\n });\n\n if (pageResultData && !pageResultErrors?.length) {\n const edges = makeEdges(getters.nodes(pageResultData), node => makeIDCursor(node.id));\n\n await cacheCursors(cursorCache, {\n edges,\n group: groupCursor,\n headers: pageResultHeaders,\n page,\n totalPages: getters.totalPages(pageResultData),\n totalResults: getters.totalResults(pageResultData),\n });\n\n return { edges, pageNumber: page };\n }\n\n if (pageResultErrors?.length) {\n errors.push(...pageResultErrors);\n }\n\n return { edges: [], pageNumber: page };\n }),\n );\n\n return { cachedEdges, errors };\n};\n\nexport default requestAndCachePages;\n","import { CachedEdges, Edge } from \"../defs\";\n\nexport default (cachedEdges: CachedEdges[]) =>\n cachedEdges.reduce((edges, cachedEdge) => [...edges, ...cachedEdge.edges], [] as Edge[]);\n","import { Edge } from \"../defs\";\n\nexport default (edges: Edge[]) => edges.map(edge => edge.node);\n","import { CachedEdges, Indexes } from \"../defs\";\nimport { getCurrentPageEndIndex, getCurrentPageStartIndex } from \"./getCurrentPageStartAndEndIndexes\";\n\nexport type Context = {\n endIndex: Indexes;\n resultsPerPage: number;\n startIndex: Indexes;\n};\n\nexport default (cachedEdgesByPage: CachedEdges[], { endIndex, resultsPerPage, startIndex }: Context) => {\n return cachedEdgesByPage.reduce((inRange, cachedEdgesPage, i) => {\n const currentPageStartIndex = getCurrentPageStartIndex({ startIndex, pageIndex: i });\n\n const currentPageEndIndex = getCurrentPageEndIndex({\n endIndex,\n pageIndex: i,\n resultsPerPage,\n totalCachedPages: cachedEdgesByPage.length,\n });\n\n const cachedEdges = cachedEdgesPage.edges.slice(currentPageStartIndex, currentPageEndIndex + 1);\n inRange.push({ edges: cachedEdges, pageNumber: cachedEdgesPage.pageNumber });\n return inRange;\n }, [] as CachedEdges[]);\n};\n","import { Indexes } from \"../defs\";\n\nexport type StartIndexContext = {\n pageIndex: number;\n startIndex: Indexes;\n};\n\nexport const getCurrentPageStartIndex = ({ pageIndex, startIndex }: StartIndexContext) =>\n pageIndex === 0 ? startIndex.relative : 0;\n\nexport type EndIndexContext = {\n endIndex: Indexes;\n pageIndex: number;\n resultsPerPage: number;\n totalCachedPages: number;\n};\n\nexport const getCurrentPageEndIndex = ({ endIndex, pageIndex, resultsPerPage, totalCachedPages }: EndIndexContext) =>\n pageIndex === totalCachedPages - 1 ? endIndex.relative : resultsPerPage - 1;\n","import { Edge } from \"../defs\";\n\nexport const getStartCursor = (edges: Edge[]) => edges[0]?.cursor;\n\nexport const getEndCursor = (edges: Edge[]) => {\n const lastEdge = edges[edges.length - 1];\n return lastEdge?.cursor;\n};\n","import { CachedEdges } from \"../defs\";\n\nexport default (cachedEdges: CachedEdges[], missingCachedEdges: CachedEdges[]) =>\n cachedEdges.reduce((mergedCachedEdges, cachedEdge) => {\n if (!cachedEdge.edges.length) {\n const missingCachedEdge = missingCachedEdges.find(missing => missing.pageNumber === cachedEdge.pageNumber);\n\n if (missingCachedEdge) {\n return [...mergedCachedEdges, missingCachedEdge];\n }\n }\n\n return [...mergedCachedEdges, cachedEdge];\n }, [] as CachedEdges[]);\n","import { ConnectionInputOptions } from \"../defs\";\n\nexport default ({ after, before }: ConnectionInputOptions) => before || after;\n","export default (last: number | undefined) => (last ? \"backward\" : \"forward\");\n","export type Params = {\n page: number;\n totalPages: number;\n};\n\nexport default ({ page, totalPages }: Params) => page === totalPages;\n","import { range } from \"lodash\";\nimport { ConnectionInputOptions, Context, Indexes } from \"../defs\";\nimport { getEndPageNumber, getStartPageNumber } from \"./getStartAndEndPageNumbers\";\n\nexport type GetPageNumbersToRequestContext = {\n endIndex: Indexes;\n startIndex: Indexes;\n};\n\nexport default (\n args: ConnectionInputOptions,\n { endIndex, entry: { page }, metadata, resultsPerPage, startIndex }: GetPageNumbersToRequestContext & Context,\n) => {\n const startPageNumber = getStartPageNumber(args, { page, startIndex, resultsPerPage });\n const endPageNumber = getEndPageNumber(args, { endIndex, metadata, page, resultsPerPage });\n\n if (startPageNumber === endPageNumber) {\n return [page];\n }\n\n return [...range(startPageNumber, endPageNumber), endPageNumber];\n};\n","import { ConnectionInputOptions, Context, Indexes } from \"../defs\";\nimport getDirection from \"./getDirection\";\nimport isLastPage from \"./isLastPage\";\n\nexport type PageNumberContext = {\n endIndex: Indexes;\n page: number;\n startIndex: Indexes;\n};\n\nexport const getStartPageNumber = (\n args: ConnectionInputOptions,\n { page, startIndex, resultsPerPage }: Omit<PageNumberContext, \"endIndex\"> & Omit<Context, \"entry\" | \"metadata\">,\n) => {\n if (getDirection(args.last) === \"forward\" || startIndex.absolute >= 0) {\n return page;\n }\n\n const startPageNumber = page - Math.ceil(Math.abs(startIndex.absolute) / resultsPerPage);\n return startPageNumber <= 1 ? 1 : startPageNumber;\n};\n\nexport const getEndPageNumber = (\n args: ConnectionInputOptions,\n {\n endIndex,\n metadata: { totalPages },\n page,\n resultsPerPage,\n }: Omit<PageNumberContext, \"startIndex\"> & Omit<Context, \"entry\">,\n) => {\n const indexesPerPage = resultsPerPage - 1;\n\n if (\n getDirection(args.last) === \"backward\" ||\n isLastPage({ page, totalPages }) ||\n endIndex.absolute <= indexesPerPage\n ) {\n return page;\n }\n\n const endPageNumber = page + Math.ceil((endIndex.absolute - indexesPerPage) / resultsPerPage);\n return endPageNumber >= totalPages ? totalPages : endPageNumber;\n};\n","import { CachedEdges } from \"../defs\";\n\nexport default (cachedEdgesByPage: CachedEdges[]) => {\n return cachedEdgesByPage.reduce((missing, cachedEdgesPage) => {\n if (!cachedEdgesPage.edges.length) {\n missing.push(cachedEdgesPage.pageNumber);\n }\n\n return missing;\n }, [] as number[]);\n};\n","import { ConnectionInputOptions } from \"../defs\";\n\nexport default ({ first, last }: ConnectionInputOptions) => (first || last) as number;\n","export type Params = {\n resultsPerPage: number;\n totalResults: number;\n};\n\nexport default ({ resultsPerPage, totalResults }: Params) => {\n const remainder = totalResults % resultsPerPage;\n return remainder === 0 ? resultsPerPage : remainder;\n};\n","import getResultsOnLastPage, { Params } from \"./getResultsOnLastPage\";\n\nexport default ({ resultsPerPage, totalResults }: Params) => getResultsOnLastPage({ resultsPerPage, totalResults }) - 1;\n","import { ConnectionInputOptions, Context } from \"../defs\";\nimport getCount from \"./getCount\";\nimport getDirection from \"./getDirection\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\nimport isFirstPage from \"./isFirstPage\";\nimport isLastPage from \"./isLastPage\";\n\nexport const getStartIndex = (\n args: ConnectionInputOptions,\n { entry: { index, page }, resultsPerPage }: Pick<Context, \"entry\" | \"resultsPerPage\">,\n) => {\n const count = getCount(args);\n\n return getDirection(args.last) === \"forward\"\n ? { absolute: index + 1, relative: index + 1 }\n : isFirstPage(page) && index - count < 0\n ? { absolute: 0, relative: 0 }\n : (() => {\n const absStartIndex = index - count;\n\n if (absStartIndex >= 0) {\n return { absolute: absStartIndex, relative: absStartIndex };\n }\n\n const indexesRemainingAfterLastPage = Math.abs(absStartIndex);\n const pagesRemaining = indexesRemainingAfterLastPage / resultsPerPage + 1;\n const remainder = indexesRemainingAfterLastPage % resultsPerPage;\n const relStartIndex = remainder === 0 ? 0 : page - pagesRemaining < 0 ? 0 : resultsPerPage - remainder;\n return { absolute: absStartIndex, relative: relStartIndex };\n })();\n};\n\nexport const getEndIndex = (\n args: ConnectionInputOptions,\n { entry: { index, page }, metadata: { totalPages, totalResults }, resultsPerPage }: Context,\n) => {\n const count = getCount(args);\n const indexesOnLastPage = getIndexesOnLastPage({ resultsPerPage, totalResults });\n\n return getDirection(args.last) === \"backward\"\n ? { absolute: index - 1, relative: index - 1 }\n : isLastPage({ page, totalPages }) && index + count > indexesOnLastPage\n ? { absolute: indexesOnLastPage, relative: indexesOnLastPage }\n : (() => {\n const absEndIndex = index + count;\n const indexesPerPage = resultsPerPage - 1;\n\n if (absEndIndex <= indexesPerPage) {\n return { absolute: absEndIndex, relative: absEndIndex };\n }\n\n const indexesRemainingAfterFirstPage = absEndIndex - indexesPerPage;\n const pagesRemaining = indexesRemainingAfterFirstPage / resultsPerPage;\n const remainder = indexesRemainingAfterFirstPage % resultsPerPage;\n\n const relEndIndex =\n remainder === 0 ? indexesPerPage : page + pagesRemaining > totalPages ? indexesOnLastPage : remainder - 1;\n\n return { absolute: absEndIndex, relative: relEndIndex };\n })();\n};\n","export default (page: number) => page === 1;\n","import { CachedEdges, CursorGroupMetadata, Indexes } from \"../defs\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\n\nexport type HasPreviousPageParams = {\n cachedEdgesByPage: CachedEdges[];\n startIndex: Indexes;\n};\n\nexport type HasNextPageParams = {\n cachedEdgesByPage: CachedEdges[];\n endIndex: Indexes;\n metadata: CursorGroupMetadata;\n resultsPerPage: number;\n};\n\nexport const hasPreviousPage = ({ cachedEdgesByPage, startIndex }: HasPreviousPageParams) =>\n cachedEdgesByPage[0].pageNumber !== 1 || startIndex.relative > 0;\n\nexport const hasNextPage = ({\n cachedEdgesByPage,\n endIndex,\n metadata: { totalPages, totalResults },\n resultsPerPage,\n}: HasNextPageParams) =>\n cachedEdgesByPage[cachedEdgesByPage.length - 1].pageNumber !== totalPages ||\n endIndex.relative < getIndexesOnLastPage({ resultsPerPage, totalResults });\n","import { ConnectionInputOptions, CursorGroupMetadata } from \"..\";\nimport getDirection from \"./getDirection\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\n\nexport type Context = {\n metadata: CursorGroupMetadata;\n resultsPerPage: number;\n};\n\nexport default (args: ConnectionInputOptions, { metadata: { totalPages, totalResults }, resultsPerPage }: Context) => {\n if (getDirection(args.last) === \"backward\") {\n return { index: getIndexesOnLastPage({ resultsPerPage, totalResults }) + 1, page: totalPages };\n }\n\n return { index: -1, page: 1 };\n};\n","import Cachemap, { ExportResult } from \"@cachemap/core\";\nimport { Edge } from \"../defs\";\n\nexport type Context = {\n groupCursor: string;\n pageNumber: number;\n};\n\nexport default async (cursorCache: Cachemap, { groupCursor, pageNumber }: Context) => {\n const { entries, metadata } = (await cursorCache.export({\n filterByValue: [\n { keyChain: \"page\", comparator: pageNumber },\n { keyChain: \"group\", comparator: groupCursor },\n ],\n })) as ExportResult;\n\n return {\n edges: entries.reduce((cached, [key, { index, node }]) => {\n if (metadata[index].cacheability.checkTTL()) {\n cached[index] = { cursor: key, node };\n }\n\n return cached;\n }, [] as Edge[]),\n pageNumber,\n };\n};\n","import Cachemap from \"@cachemap/core\";\nimport { CachedEdges, ConnectionInputOptions, CursorGroupMetadata } from \"../defs\";\nimport getCursor from \"./getCursor\";\nimport getInRangeCachedEdges from \"./getInRangeCachedEdges\";\nimport getPageNumbersToRequest from \"./getPageNumbersToRequest\";\nimport getPagesMissingFromCache from \"./getPagesMissingFromCache\";\nimport { getEndIndex, getStartIndex } from \"./getStartAndEndIndexes\";\nimport { hasNextPage, hasPreviousPage } from \"./hasPreviousNextPage\";\nimport makeEntry from \"./makeEntry\";\nimport retrieveCachedEdgesByPage from \"./retrieveCachedEdgesByPage\";\n\nexport type Context = {\n cursorCache: Cachemap;\n groupCursor: string;\n resultsPerPage: number;\n};\n\nexport default async (args: ConnectionInputOptions, { cursorCache, groupCursor, resultsPerPage }: Context) => {\n const metadata = (await cursorCache.get(`${groupCursor}-metadata`)) as CursorGroupMetadata;\n const cursor = getCursor(args);\n const entry = cursor ? await cursorCache.get(cursor) : makeEntry(args, { metadata, resultsPerPage });\n const startIndex = getStartIndex(args, { entry, resultsPerPage });\n const endIndex = getEndIndex(args, { entry, metadata, resultsPerPage });\n const promises: Promise<CachedEdges>[] = [];\n const pageNumbersToRequest = getPageNumbersToRequest(args, { endIndex, entry, metadata, resultsPerPage, startIndex });\n\n pageNumbersToRequest.forEach(pageNumber => {\n promises.push(retrieveCachedEdgesByPage(cursorCache, { groupCursor, pageNumber }));\n });\n\n const cachedEdgesByPage = await Promise.all(promises);\n const missingPages = getPagesMissingFromCache(cachedEdgesByPage);\n\n return {\n cachedEdges: !missingPages.length\n ? getInRangeCachedEdges(cachedEdgesByPage, { endIndex, resultsPerPage, startIndex })\n : cachedEdgesByPage,\n hasNextPage: hasNextPage({\n cachedEdgesByPage,\n endIndex,\n metadata,\n resultsPerPage,\n }),\n hasPreviousPage: hasPreviousPage({ cachedEdgesByPage, startIndex }),\n indexes: { end: endIndex, start: startIndex },\n missingPages,\n totalResults: metadata.totalResults,\n };\n};\n","import Cachemap from \"@cachemap/core\";\nimport { ConnectionInputOptions, Getters, Node, PlainObject, ResourceResolver } from \"../defs\";\nimport extractEdges from \"./extractEdges\";\nimport extractNodes from \"./extractNodes\";\nimport getInRangeCachedEdges from \"./getInRangeCachedEdges\";\nimport { getEndCursor, getStartCursor } from \"./getStartAndEndCursors\";\nimport mergeCachedEdges from \"./mergeCachedEdges\";\nimport requestAndCachePages from \"./requestAndCachePages\";\nimport retrieveCachedConnection from \"./retrieveCachedConnection\";\n\nexport type Context<Resource extends PlainObject, ResourceNode extends Node> = {\n cursorCache: Cachemap;\n getters: Getters<Resource, ResourceNode>;\n groupCursor: string;\n makeIDCursor: (id: string | number) => string;\n resourceResolver: ResourceResolver<Resource>;\n resultsPerPage: number;\n};\n\nconst resolveConnection = async <Resource extends PlainObject, ResourceNode extends Node>(\n args: PlainObject & ConnectionInputOptions,\n {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }: Context<Resource, ResourceNode>,\n) => {\n const {\n cachedEdges,\n hasNextPage,\n hasPreviousPage,\n indexes,\n missingPages,\n totalResults,\n } = await retrieveCachedConnection(args, {\n cursorCache,\n groupCursor,\n resultsPerPage,\n });\n\n if (!missingPages.length) {\n const edges = extractEdges(cachedEdges);\n\n return {\n edges,\n errors: [],\n nodes: extractNodes(edges),\n pageInfo: {\n endCursor: getEndCursor(edges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(edges),\n },\n totalCount: totalResults,\n };\n }\n\n const { cachedEdges: missingCachedEdges, errors } = await requestAndCachePages<Resource, ResourceNode>(missingPages, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n });\n\n const mergedCachedEdges = getInRangeCachedEdges(mergeCachedEdges(cachedEdges, missingCachedEdges), {\n endIndex: indexes.end,\n resultsPerPage,\n startIndex: indexes.start,\n });\n\n const edges = extractEdges(mergedCachedEdges);\n\n return {\n edges,\n errors,\n nodes: extractNodes(edges),\n pageInfo: {\n endCursor: getEndCursor(edges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(edges),\n },\n totalCount: totalResults,\n };\n};\n\nexport default resolveConnection;\n","import { CursorCacheEntry, Direction } from \"../defs\";\n\nexport type Params = {\n direction: Direction;\n entry: CursorCacheEntry;\n};\n\nexport default ({ direction, entry: { index, page } }: Params) => direction === \"backward\" && page === 1 && index === 0;\n","import { CursorCacheEntry, Direction } from \"../defs\";\nimport getIndexesOnLastPage from \"./getIndexesOnLastPage\";\n\nexport type Params = {\n direction: Direction;\n entry: CursorCacheEntry;\n resultsPerPage: number;\n totalPages: number;\n totalResults: number;\n};\n\nexport default ({ direction, entry: { index, page }, resultsPerPage, totalPages, totalResults }: Params) =>\n direction === \"forward\" && page === totalPages && index === getIndexesOnLastPage({ resultsPerPage, totalResults });\n","import Cachemap from \"@cachemap/core\";\nimport { GraphQLError, GraphQLResolveInfo } from \"graphql\";\nimport { ConnectionInputOptions, CursorCacheEntry, CursorGroupMetadata } from \"../defs\";\nimport getCursor from \"./getCursor\";\nimport getDirection from \"./getDirection\";\nimport isCursorFirst from \"./isCursorFirst\";\nimport isCursorLast from \"./isCursorLast\";\n\nexport type Context = {\n cursorCache: Cachemap;\n groupCursor: string;\n resultsPerPage: number;\n};\n\nexport default async (\n { after, before, first, last }: ConnectionInputOptions,\n { fieldNodes }: GraphQLResolveInfo,\n { cursorCache, groupCursor, resultsPerPage }: Context,\n) => {\n if (after && !first && !last) {\n return new GraphQLError(\n \"Invalid connection argument combination. `after` must be used in combination with `first`.\",\n fieldNodes,\n );\n }\n\n if (after && last) {\n return new GraphQLError(\n \"Invalid connection argument combination. `after` cannot be used in combination with `last`.\",\n fieldNodes,\n );\n }\n\n if (before && !last && !first) {\n return new GraphQLError(\n \"Invalid connection argument combination. `before` must be used in combination with `last`.\",\n fieldNodes,\n );\n }\n\n if (before && first) {\n return new GraphQLError(\n \"Invalid connection argument combination. `before` cannot be used in combination with `first`.\",\n fieldNodes,\n );\n }\n\n const metadata = (await cursorCache.get(`${groupCursor}-metadata`)) as CursorGroupMetadata | undefined;\n\n if (!metadata) {\n return new GraphQLError(\"Curser cannot be supplied without previously being provided.\", fieldNodes);\n }\n\n const cursor = getCursor({ after, before }) as string;\n const entry = (await cursorCache.get(cursor)) as CursorCacheEntry | undefined;\n\n if (!entry) {\n return new GraphQLError(`The cursor ${cursor} could not be found.`, fieldNodes);\n }\n\n const direction = getDirection(last);\n\n if (isCursorLast({ direction, entry, resultsPerPage, ...metadata })) {\n return new GraphQLError(`The cursor ${cursor} is the last, you cannot go forward any further.`, fieldNodes);\n }\n\n if (isCursorFirst({ direction, entry })) {\n return new GraphQLError(`The cursor ${cursor} is the first, you cannot go backward any further.`, fieldNodes);\n }\n\n return undefined;\n};\n","import { GraphQLResolveInfo } from \"graphql\";\nimport { Connection, ConnectionInputOptions, ConnectionResolverUserOptions, Node, PlainObject } from \"../defs\";\nimport isCursorSupplied from \"../helpers/isCursorSupplied\";\nimport requestAndCachePages from \"../helpers/requestAndCachePages\";\nimport resolveConnection from \"../helpers/resolveConnection\";\nimport validateCursor from \"../helpers/validateCursor\";\n\nconst main = <\n Source extends PlainObject | undefined,\n Args extends PlainObject,\n Ctx extends PlainObject,\n Resource extends PlainObject,\n ResourceNode extends Node\n>({\n cursorCache,\n createMakeCursors,\n createResourceResolver,\n getters,\n resolver = result => result,\n resultsPerPage,\n}: ConnectionResolverUserOptions<Source, Args, Ctx, Resource, ResourceNode>) => async (\n source: Source,\n args: Args & ConnectionInputOptions,\n context: Ctx,\n info: GraphQLResolveInfo,\n): Promise<Connection> => {\n try {\n const { makeGroupCursor, makeIDCursor } = createMakeCursors(source, args, context, info);\n const resourceResolver = createResourceResolver(source, args, context, info);\n const groupCursor = makeGroupCursor();\n\n if (isCursorSupplied(args)) {\n const cursorError = await validateCursor(args, info, {\n cursorCache,\n groupCursor,\n resultsPerPage,\n });\n\n if (cursorError) {\n return resolver({\n edges: [],\n errors: [cursorError],\n nodes: [],\n pageInfo: {\n hasNextPage: false,\n hasPreviousPage: false,\n },\n totalCount: 0,\n });\n }\n\n return resolver(\n await resolveConnection(args, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }),\n );\n }\n\n if (await cursorCache.has(`${groupCursor}-metadata`)) {\n return resolver(\n await resolveConnection(args, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }),\n );\n }\n\n await requestAndCachePages<Resource, ResourceNode>([1], {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n });\n\n return resolver(\n await resolveConnection(args, {\n cursorCache,\n getters,\n groupCursor,\n makeIDCursor,\n resourceResolver,\n resultsPerPage,\n }),\n );\n } catch (e) {\n throw e;\n }\n};\n\nexport default main;\n"],"names":["connectionInputOptions","args","_pickBy","_value","key","includes","after","before","cursorCache","edges","group","headers","page","totalPages","totalResults","cacheControl","get","opts","cacheHeaders","undefined","Promise","all","map","index","cursor","node","set","nodes","makeCursor","requestAndCachePages","pages","getters","groupCursor","makeIDCursor","resourceResolver","errors","pageResultData","data","pageResultErrors","pageResultHeaders","length","makeEdges","id","cacheCursors","pageNumber","push","cachedEdges","reduce","cachedEdge","edge","cachedEdgesByPage","endIndex","resultsPerPage","startIndex","inRange","cachedEdgesPage","i","currentPageStartIndex","pageIndex","relative","getCurrentPageStartIndex","currentPageEndIndex","totalCachedPages","getCurrentPageEndIndex","slice","getStartCursor","_edges$","getEndCursor","lastEdge","missingCachedEdges","mergedCachedEdges","missingCachedEdge","find","missing","last","entry","metadata","startPageNumber","getDirection","absolute","Math","ceil","abs","getStartPageNumber","endPageNumber","indexesPerPage","isLastPage","getEndPageNumber","_range","first","remainder","getResultsOnLastPage","getStartIndex","count","getCount","isFirstPage","absStartIndex","indexesRemainingAfterLastPage","getEndIndex","indexesOnLastPage","getIndexesOnLastPage","absEndIndex","indexesRemainingAfterFirstPage","hasPreviousPage","hasNextPage","export","filterByValue","keyChain","comparator","entries","cached","cacheability","checkTTL","getCursor","makeEntry","promises","getPageNumbersToRequest","forEach","retrieveCachedEdgesByPage","missingPages","getPagesMissingFromCache","getInRangeCachedEdges","indexes","end","start","resolveConnection","retrieveCachedConnection","extractEdges","extractNodes","pageInfo","endCursor","startCursor","totalCount","mergeCachedEdges","direction","fieldNodes","GraphQLError","isCursorLast","isCursorFirst","createMakeCursors","createResourceResolver","resolver","result","source","context","info","makeGroupCursor","isCursorSupplied","validateCursor","cursorError","has"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  -----------------------------
2
2
  Rollup File Analysis
3
3
  -----------------------------
4
- bundle size: 34.239 KB
5
- original size: 26.321 KB
4
+ bundle size: 34.369 KB
5
+ original size: 26.323 KB
6
6
  code reduction: 0 %
7
7
  module count: 33
8
8
 
9
9
  ██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
10
10
  file: /src/helpers/validateCursor.ts
11
- bundle space: 13.91 %
11
+ bundle space: 13.85 %
12
12
  rendered size: 4.761 KB
13
13
  original size: 2.3 KB
14
14
  code reduction: 0 %
@@ -17,7 +17,7 @@ dependents: 1
17
17
 
18
18
  ██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
19
19
  file: /src/main/index.ts
20
- bundle space: 13.61 %
20
+ bundle space: 13.56 %
21
21
  rendered size: 4.66 KB
22
22
  original size: 2.556 KB
23
23
  code reduction: 0 %
@@ -26,7 +26,7 @@ dependents: 1
26
26
 
27
27
  █████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
28
28
  file: /src/helpers/requestAndCachePages.ts
29
- bundle space: 11.1 %
29
+ bundle space: 11.05 %
30
30
  rendered size: 3.799 KB
31
31
  original size: 1.643 KB
32
32
  code reduction: 0 %
@@ -36,7 +36,7 @@ dependents: 2
36
36
 
37
37
  █████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
38
38
  file: /src/helpers/resolveConnection.ts
39
- bundle space: 10.22 %
39
+ bundle space: 10.18 %
40
40
  rendered size: 3.499 KB
41
41
  original size: 2.437 KB
42
42
  code reduction: 0 %
@@ -45,7 +45,7 @@ dependents: 1
45
45
 
46
46
  ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
47
47
  file: /src/helpers/retrieveCachedConnection.ts
48
- bundle space: 9.99 %
48
+ bundle space: 9.95 %
49
49
  rendered size: 3.42 KB
50
50
  original size: 2.103 KB
51
51
  code reduction: 0 %
@@ -54,7 +54,7 @@ dependents: 1
54
54
 
55
55
  ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
56
56
  file: /src/helpers/getStartAndEndIndexes.ts
57
- bundle space: 7.07 %
57
+ bundle space: 7.04 %
58
58
  rendered size: 2.421 KB
59
59
  original size: 2.463 KB
60
60
  code reduction: 1.71 %
@@ -63,7 +63,7 @@ dependents: 1
63
63
 
64
64
  ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
65
65
  file: /src/helpers/cacheCursors.ts
66
- bundle space: 6.59 %
66
+ bundle space: 6.56 %
67
67
  rendered size: 2.255 KB
68
68
  original size: 687 Bytes
69
69
  code reduction: 0 %
@@ -72,7 +72,7 @@ dependents: 1
72
72
 
73
73
  ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
74
74
  file: /src/helpers/retrieveCachedEdgesByPage.ts
75
- bundle space: 4.94 %
75
+ bundle space: 4.92 %
76
76
  rendered size: 1.692 KB
77
77
  original size: 720 Bytes
78
78
  code reduction: 0 %
@@ -81,7 +81,7 @@ dependents: 1
81
81
 
82
82
  █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
83
83
  file: /src/helpers/getStartAndEndPageNumbers.ts
84
- bundle space: 2.95 %
84
+ bundle space: 2.94 %
85
85
  rendered size: 1.009 KB
86
86
  original size: 1.279 KB
87
87
  code reduction: 21.11 %
@@ -90,7 +90,7 @@ dependents: 1
90
90
 
91
91
  █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
92
92
  file: /src/helpers/getInRangeCachedEdges.ts
93
- bundle space: 2.32 %
93
+ bundle space: 2.31 %
94
94
  rendered size: 795 Bytes
95
95
  original size: 923 Bytes
96
96
  code reduction: 13.87 %
@@ -100,16 +100,16 @@ dependents: 2
100
100
 
101
101
  █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
102
102
  file: /src/helpers/hasPreviousNextPage.ts
103
- bundle space: 2.15 %
103
+ bundle space: 2.14 %
104
104
  rendered size: 735 Bytes
105
105
  original size: 851 Bytes
106
106
  code reduction: 13.63 %
107
107
  dependents: 1
108
108
  - /src/helpers/retrieveCachedConnection.ts
109
109
 
110
- █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
110
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
111
111
  file: /src/helpers/getPageNumbersToRequest.ts
112
- bundle space: 2 %
112
+ bundle space: 1.99 %
113
113
  rendered size: 685 Bytes
114
114
  original size: 772 Bytes
115
115
  code reduction: 11.27 %
@@ -118,7 +118,7 @@ dependents: 1
118
118
 
119
119
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
120
120
  file: /src/helpers/mergeCachedEdges.ts
121
- bundle space: 1.59 %
121
+ bundle space: 1.58 %
122
122
  rendered size: 543 Bytes
123
123
  original size: 509 Bytes
124
124
  code reduction: 0 %
@@ -152,6 +152,15 @@ code reduction: 7.74 %
152
152
  dependents: 1
153
153
  - /src/helpers/validateCursor.ts
154
154
 
155
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
156
+ file: /src/helpers/getStartAndEndCursors.ts
157
+ bundle space: 0.97 %
158
+ rendered size: 333 Bytes
159
+ original size: 224 Bytes
160
+ code reduction: 0 %
161
+ dependents: 1
162
+ - /src/helpers/resolveConnection.ts
163
+
155
164
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
156
165
  file: /src/helpers/getPagesMissingFromCache.ts
157
166
  bundle space: 0.77 %
@@ -163,7 +172,7 @@ dependents: 1
163
172
 
164
173
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
165
174
  file: /src/helpers/getIndexesOnLastPage.ts
166
- bundle space: 0.71 %
175
+ bundle space: 0.7 %
167
176
  rendered size: 242 Bytes
168
177
  original size: 193 Bytes
169
178
  code reduction: 0 %
@@ -193,7 +202,7 @@ dependents: 1
193
202
 
194
203
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
195
204
  file: /src/helpers/removeConnectionInputOptions.ts
196
- bundle space: 0.67 %
205
+ bundle space: 0.66 %
197
206
  rendered size: 228 Bytes
198
207
  original size: 220 Bytes
199
208
  code reduction: 0 %
@@ -202,25 +211,16 @@ dependents: 1
202
211
 
203
212
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
204
213
  file: /src/helpers/extractEdges.ts
205
- bundle space: 0.6 %
214
+ bundle space: 0.59 %
206
215
  rendered size: 204 Bytes
207
216
  original size: 185 Bytes
208
217
  code reduction: 0 %
209
218
  dependents: 1
210
219
  - /src/helpers/resolveConnection.ts
211
220
 
212
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
213
- file: /src/helpers/getStartAndEndCursors.ts
214
- bundle space: 0.59 %
215
- rendered size: 203 Bytes
216
- original size: 222 Bytes
217
- code reduction: 8.56 %
218
- dependents: 1
219
- - /src/helpers/resolveConnection.ts
220
-
221
221
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
222
222
  file: /src/helpers/makeEdges.ts
223
- bundle space: 0.48 %
223
+ bundle space: 0.47 %
224
224
  rendered size: 163 Bytes
225
225
  original size: 162 Bytes
226
226
  code reduction: 0 %
@@ -5,13 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getEndCursor = exports.getStartCursor = void 0;
7
7
 
8
- const getStartCursor = edges => edges[0].cursor;
8
+ const getStartCursor = edges => {
9
+ var _edges$;
10
+
11
+ return (_edges$ = edges[0]) === null || _edges$ === void 0 ? void 0 : _edges$.cursor;
12
+ };
9
13
 
10
14
  exports.getStartCursor = getStartCursor;
11
15
 
12
16
  const getEndCursor = edges => {
13
17
  const lastEdge = edges[edges.length - 1];
14
- return lastEdge.cursor;
18
+ return lastEdge === null || lastEdge === void 0 ? void 0 : lastEdge.cursor;
15
19
  };
16
20
 
17
21
  exports.getEndCursor = getEndCursor;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/getStartAndEndCursors.ts"],"names":["getStartCursor","edges","cursor","getEndCursor","lastEdge","length"],"mappings":";;;;;;;AAEO,MAAMA,cAAc,GAAIC,KAAD,IAAmBA,KAAK,CAAC,CAAD,CAAL,CAASC,MAAnD;;;;AAEA,MAAMC,YAAY,GAAIF,KAAD,IAAmB;AAC7C,QAAMG,QAAQ,GAAGH,KAAK,CAACA,KAAK,CAACI,MAAN,GAAe,CAAhB,CAAtB;AACA,SAAOD,QAAQ,CAACF,MAAhB;AACD,CAHM","sourcesContent":["import { Edge } from \"../defs\";\n\nexport const getStartCursor = (edges: Edge[]) => edges[0].cursor;\n\nexport const getEndCursor = (edges: Edge[]) => {\n const lastEdge = edges[edges.length - 1];\n return lastEdge.cursor;\n};\n"],"file":"getStartAndEndCursors.js"}
1
+ {"version":3,"sources":["../../../src/helpers/getStartAndEndCursors.ts"],"names":["getStartCursor","edges","cursor","getEndCursor","lastEdge","length"],"mappings":";;;;;;;AAEO,MAAMA,cAAc,GAAIC,KAAD;AAAA;;AAAA,oBAAmBA,KAAK,CAAC,CAAD,CAAxB,4CAAmB,QAAUC,MAA7B;AAAA,CAAvB;;;;AAEA,MAAMC,YAAY,GAAIF,KAAD,IAAmB;AAC7C,QAAMG,QAAQ,GAAGH,KAAK,CAACA,KAAK,CAACI,MAAN,GAAe,CAAhB,CAAtB;AACA,SAAOD,QAAP,aAAOA,QAAP,uBAAOA,QAAQ,CAAEF,MAAjB;AACD,CAHM","sourcesContent":["import { Edge } from \"../defs\";\n\nexport const getStartCursor = (edges: Edge[]) => edges[0]?.cursor;\n\nexport const getEndCursor = (edges: Edge[]) => {\n const lastEdge = edges[edges.length - 1];\n return lastEdge?.cursor;\n};\n"],"file":"getStartAndEndCursors.js"}
@@ -1,6 +1,10 @@
1
- export const getStartCursor = edges => edges[0].cursor;
1
+ export const getStartCursor = edges => {
2
+ var _edges$;
3
+
4
+ return (_edges$ = edges[0]) === null || _edges$ === void 0 ? void 0 : _edges$.cursor;
5
+ };
2
6
  export const getEndCursor = edges => {
3
7
  const lastEdge = edges[edges.length - 1];
4
- return lastEdge.cursor;
8
+ return lastEdge === null || lastEdge === void 0 ? void 0 : lastEdge.cursor;
5
9
  };
6
10
  //# sourceMappingURL=getStartAndEndCursors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/getStartAndEndCursors.ts"],"names":["getStartCursor","edges","cursor","getEndCursor","lastEdge","length"],"mappings":"AAEA,OAAO,MAAMA,cAAc,GAAIC,KAAD,IAAmBA,KAAK,CAAC,CAAD,CAAL,CAASC,MAAnD;AAEP,OAAO,MAAMC,YAAY,GAAIF,KAAD,IAAmB;AAC7C,QAAMG,QAAQ,GAAGH,KAAK,CAACA,KAAK,CAACI,MAAN,GAAe,CAAhB,CAAtB;AACA,SAAOD,QAAQ,CAACF,MAAhB;AACD,CAHM","sourcesContent":["import { Edge } from \"../defs\";\n\nexport const getStartCursor = (edges: Edge[]) => edges[0].cursor;\n\nexport const getEndCursor = (edges: Edge[]) => {\n const lastEdge = edges[edges.length - 1];\n return lastEdge.cursor;\n};\n"],"file":"getStartAndEndCursors.js"}
1
+ {"version":3,"sources":["../../../src/helpers/getStartAndEndCursors.ts"],"names":["getStartCursor","edges","cursor","getEndCursor","lastEdge","length"],"mappings":"AAEA,OAAO,MAAMA,cAAc,GAAIC,KAAD;AAAA;;AAAA,oBAAmBA,KAAK,CAAC,CAAD,CAAxB,4CAAmB,QAAUC,MAA7B;AAAA,CAAvB;AAEP,OAAO,MAAMC,YAAY,GAAIF,KAAD,IAAmB;AAC7C,QAAMG,QAAQ,GAAGH,KAAK,CAACA,KAAK,CAACI,MAAN,GAAe,CAAhB,CAAtB;AACA,SAAOD,QAAP,aAAOA,QAAP,uBAAOA,QAAQ,CAAEF,MAAjB;AACD,CAHM","sourcesContent":["import { Edge } from \"../defs\";\n\nexport const getStartCursor = (edges: Edge[]) => edges[0]?.cursor;\n\nexport const getEndCursor = (edges: Edge[]) => {\n const lastEdge = edges[edges.length - 1];\n return lastEdge?.cursor;\n};\n"],"file":"getStartAndEndCursors.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"getStartAndEndCursors.d.ts","sourceRoot":"","sources":["../../../src/helpers/getStartAndEndCursors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,eAAO,MAAM,cAAc,UAAW,IAAI,EAAE,WAAoB,CAAC;AAEjE,eAAO,MAAM,YAAY,UAAW,IAAI,EAAE,WAGzC,CAAC"}
1
+ {"version":3,"file":"getStartAndEndCursors.d.ts","sourceRoot":"","sources":["../../../src/helpers/getStartAndEndCursors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,eAAO,MAAM,cAAc,UAAW,IAAI,EAAE,WAAqB,CAAC;AAElE,eAAO,MAAM,YAAY,UAAW,IAAI,EAAE,WAGzC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-box/connection-resolver",
3
- "version": "3.1.0",
3
+ "version": "4.0.0",
4
4
  "description": "The GraphQL Box connection manager module.",
5
5
  "keywords": [
6
6
  "graphql-box",
@@ -1,8 +1,8 @@
1
1
  import { Edge } from "../defs";
2
2
 
3
- export const getStartCursor = (edges: Edge[]) => edges[0].cursor;
3
+ export const getStartCursor = (edges: Edge[]) => edges[0]?.cursor;
4
4
 
5
5
  export const getEndCursor = (edges: Edge[]) => {
6
6
  const lastEdge = edges[edges.length - 1];
7
- return lastEdge.cursor;
7
+ return lastEdge?.cursor;
8
8
  };