@graphql-box/connection-resolver 0.1.3 → 0.1.7
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/lib/browser/index.js +1 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/production.analysis.txt +29 -29
- package/lib/main/__testUtils__/generateCursorCache.js +2 -1
- package/lib/main/__testUtils__/generateCursorCache.js.map +1 -1
- package/lib/main/helpers/isCursorSupplied.js.map +1 -1
- package/lib/main/helpers/requestAndCachePages.js +2 -1
- package/lib/main/helpers/requestAndCachePages.js.map +1 -1
- package/lib/main/helpers/resolveConnection.js +2 -1
- package/lib/main/helpers/resolveConnection.js.map +1 -1
- package/lib/main/main/index.js +3 -2
- package/lib/main/main/index.js.map +1 -1
- package/lib/module/__testUtils__/generateCursorCache.js +2 -1
- package/lib/module/__testUtils__/generateCursorCache.js.map +1 -1
- package/lib/module/helpers/isCursorSupplied.js.map +1 -1
- package/lib/module/helpers/requestAndCachePages.js +5 -2
- package/lib/module/helpers/requestAndCachePages.js.map +1 -1
- package/lib/module/helpers/resolveConnection.js +5 -2
- package/lib/module/helpers/resolveConnection.js.map +1 -1
- package/lib/module/main/index.js +6 -3
- package/lib/module/main/index.js.map +1 -1
- package/lib/types/__testUtils__/generateCursorCache.d.ts.map +1 -1
- package/lib/types/defs/index.d.ts +25 -22
- package/lib/types/defs/index.d.ts.map +1 -1
- package/lib/types/helpers/extractNodes.d.ts +1 -1
- package/lib/types/helpers/isCursorSupplied.d.ts +2 -2
- package/lib/types/helpers/isCursorSupplied.d.ts.map +1 -1
- package/lib/types/helpers/requestAndCachePages.d.ts +7 -7
- package/lib/types/helpers/requestAndCachePages.d.ts.map +1 -1
- package/lib/types/helpers/resolveConnection.d.ts +7 -7
- package/lib/types/helpers/resolveConnection.d.ts.map +1 -1
- package/lib/types/main/index.d.ts +3 -3
- package/lib/types/main/index.d.ts.map +1 -1
- package/package-lock.json +18 -0
- package/package.json +1 -1
- package/src/__testUtils__/generateCursorCache.ts +1 -0
- package/src/defs/index.ts +43 -31
- package/src/helpers/getPageNumbersToRequest.test.ts +2 -2
- package/src/helpers/getStartAndEndIndexes.test.ts +10 -10
- package/src/helpers/isCursorSupplied.ts +2 -2
- package/src/helpers/requestAndCachePages.ts +8 -6
- package/src/helpers/resolveConnection.ts +17 -8
- package/src/helpers/retrieveCachedConnection.test.ts +32 -32
- package/src/helpers/validateCursor.test.ts +1 -0
- package/src/main/index.test.ts +37 -59
- package/src/main/index.ts +16 -8
package/lib/browser/index.js
CHANGED
@@ -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 a 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 n 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(a,n){var s,u,o,c,i,l,p,d;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=n.edges,u=n.group,o=n.headers,c=n.page,i=n.totalPages,l=n.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,n){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",a.set(s,{node:o,index:n,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,a.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(n,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(n.map(function(){var e=r(t.mark((function e(r){var n,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(n=e.sent,s=n.data,f=n.errors,m=n.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,a(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(a(e),a(r.edges))}),[])},b=function(e){return e.map((function(e){return e.node}))},P=function(e,r){var t=r.endIndex,a=r.resultsPerPage,n=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:n,pageIndex:u}),c=function(e){var r=e.endIndex,t=e.pageIndex,a=e.resultsPerPage;return t===e.totalCachedPages-1?r.relative:a-1}({endIndex:t,pageIndex:u,resultsPerPage:a,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].edges[0].cursor},v=function(e){var r=e[e.length-1];return r.edges[r.edges.length-1].cursor},x=function(e,r){return e.reduce((function(e,t){if(!t.edges.length){var n=r.find((function(e){return e.pageNumber===t.pageNumber}));if(n)return[].concat(a(e),[n])}return[].concat(a(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,a=r.startIndex,n=r.resultsPerPage;if("forward"===w(e.last)||a.absolute>=0)return t;var s=t-Math.ceil(Math.abs(a.absolute)/n);return s<=1?1:s}(e,{page:s,startIndex:r.startIndex,resultsPerPage:o}),i=function(e,r){var t=r.endIndex,a=r.metadata.totalPages,n=r.page,s=r.resultsPerPage,u=s-1;if("backward"===w(e.last)||C({page:n,totalPages:a})||t.absolute<=u)return n;var o=n+Math.ceil((t.absolute-u)/s);return o>=a?a:o}(e,{endIndex:t,metadata:u,page:s,resultsPerPage:o});return c===i?[s]:[].concat(a(n(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,a=t.index,n=t.page,s=r.resultsPerPage,u=I(e);return"forward"===w(e.last)?{absolute:a+1,relative:a+1}:function(e){return 1===e}(n)&&a-u<0?{absolute:0,relative:0}:function(){var e=a-u;if(e>=0)return{absolute:e,relative:e};var r=Math.abs(e),t=r%s;return{absolute:e,relative:0===t||n-(r/s+1)<0?0:s-t}}()},O=function(e,r){var t=r.entry,a=t.index,n=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:a-1,relative:a-1}:C({page:n,totalPages:u})&&a+i>l?{absolute:l,relative:l}:function(){var e=a+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:n+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,a=e.metadata,n=a.totalPages,s=a.totalResults,u=e.resultsPerPage;return r[r.length-1].pageNumber!==n||t.relative<R({resultsPerPage:u,totalResults:s})},T=function(e,r){var t=r.metadata,a=t.totalPages,n=t.totalResults,s=r.resultsPerPage;return"backward"===w(e.last)?{index:R({resultsPerPage:s,totalResults:n})+1,page:a}:{index:-1,page:1}},B=function(){var e=r(t.mark((function e(r,a){var n,u,o,c,i;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=a.groupCursor,u=a.pageNumber,e.next=3,r.export({filterByValue:[{keyChain:"page",comparator:u},{keyChain:"group",comparator:n}]});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),a=t[0],n=t[1],u=n.index,o=n.node;return i[u].cacheability.checkTTL()&&(e[u]={cursor:a,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,a){var n,s,u,o,c,i,l,p,d,g,f;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=a.cursorCache,s=a.groupCursor,u=a.resultsPerPage,e.next=3,n.get("".concat(s,"-metadata"));case 3:if(o=e.sent,!(c=y(r))){e.next=11;break}return e.next=8,n.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(n,{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,a){var n,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 n=a.cursorCache,s=a.getters,u=a.groupCursor,o=a.makeIDCursor,c=a.resourceResolver,i=a.resultsPerPage,e.next=3,M(r,{cursorCache:n,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(p),hasNextPage:d,hasPreviousPage:g,startCursor:h(p)},totalCount:C});case 13:return e.next=15,f(w,{cursorCache:n,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(N),hasNextPage:d,hasPreviousPage:g,startCursor:h(N)},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,a=t.index,n=t.page;return"backward"===r&&1===n&&0===a},S=function(e){var r=e.direction,t=e.entry,a=t.index,n=t.page,s=e.resultsPerPage,u=e.totalPages,o=e.totalResults;return"forward"===r&&n===u&&a===R({resultsPerPage:s,totalResults:o})};function q(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}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,a,n){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=a.fieldNodes,p=n.cursorCache,d=n.groupCursor,g=n.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 a=e.cursorCache,n=e.createMakeCursors,s=e.createResourceResolver,u=e.getters,o=e.resolver,c=e.resultsPerPage;return function(){var e=r(t.mark((function e(r,i,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=n(r,i,l,d),m=g.makeGroupCursor,b=g.makeIDCursor,P=s(r,i,l,d),h=m(),!p(i)){e.next=15;break}return e.next=7,V(i,d,{cursorCache:a,groupCursor:h,resultsPerPage:c});case 7:if(!(v=e.sent)){e.next=10;break}return e.abrupt("return",o({edges:[],errors:[v],nodes:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1},totalCount:0}));case 10:return e.t0=o,e.next=13,A(i,{cursorCache:a,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:c});case 13:return e.t1=e.sent,e.abrupt("return",(0,e.t0)(e.t1));case 15:return e.next=17,a.has("".concat(h,"-metadata"));case 17:if(!e.sent){e.next=23;break}return e.t2=o,e.next=21,A(i,{cursorCache:a,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:c});case 21:return e.t3=e.sent,e.abrupt("return",(0,e.t2)(e.t3));case 23:return e.next=25,f([1],{cursorCache:a,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P});case 25:return e.t4=o,e.next=28,A(i,{cursorCache:a,getters:u,groupCursor:h,makeIDCursor:b,resourceResolver:P,resultsPerPage:c});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,a,n){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){return e[0].edges[0].cursor},v=function(e){var r=e[e.length-1];return r.edges[r.edges.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(p),hasNextPage:d,hasPreviousPage:g,startCursor:h(p)},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(N),hasNextPage:d,hasPreviousPage:g,startCursor:h(N)},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
|
package/lib/browser/index.js.map
CHANGED
@@ -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 } from \"../defs\";\n\nexport default ({ after, before }: Record<string, any> & 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, ResourceResolver } from \"../defs\";\nimport cacheCursors from \"./cacheCursors\";\nimport makeEdges from \"./makeEdges\";\n\nexport type Context = {\n cursorCache: Cachemap;\n getters: Getters;\n groupCursor: string;\n makeIDCursor: (id: string | number) => string;\n resourceResolver: ResourceResolver;\n};\n\nexport default async (\n pages: number[],\n { cursorCache, getters, groupCursor, makeIDCursor, resourceResolver }: Context,\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","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 { CachedEdges } from \"../defs\";\n\nexport const getStartCursor = (cachedEdges: CachedEdges[]) => cachedEdges[0].edges[0].cursor;\n\nexport const getEndCursor = (cachedEdges: CachedEdges[]) => {\n const lastCachedEdges = cachedEdges[cachedEdges.length - 1];\n const lastCachedEdge = lastCachedEdges.edges[lastCachedEdges.edges.length - 1];\n return lastCachedEdge.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, 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 = {\n cursorCache: Cachemap;\n getters: Getters;\n groupCursor: string;\n makeIDCursor: (id: string | number) => string;\n resourceResolver: ResourceResolver;\n resultsPerPage: number;\n};\n\nexport default async (\n args: Record<string, any> & ConnectionInputOptions,\n { cursorCache, getters, groupCursor, makeIDCursor, resourceResolver, resultsPerPage }: Context,\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(cachedEdges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(cachedEdges),\n },\n totalCount: totalResults,\n };\n }\n\n const { cachedEdges: missingCachedEdges, errors } = await requestAndCachePages(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(mergedCachedEdges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(mergedCachedEdges),\n },\n totalCount: totalResults,\n };\n};\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 } from \"../defs\";\nimport isCursorSupplied from \"../helpers/isCursorSupplied\";\nimport requestAndCachePages from \"../helpers/requestAndCachePages\";\nimport resolveConnection from \"../helpers/resolveConnection\";\nimport validateCursor from \"../helpers/validateCursor\";\n\nexport default ({\n cursorCache,\n createMakeCursors,\n createResourceResolver,\n getters,\n resolver,\n resultsPerPage,\n}: ConnectionResolverUserOptions) => async (\n source: Record<string, any>,\n args: Record<string, any> & ConnectionInputOptions,\n context: Record<string, any>,\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([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"],"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","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","lastCachedEdges","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","retrieveCachedConnection","extractEdges","extractNodes","pageInfo","endCursor","startCursor","totalCount","requestAndCachePages","mergeCachedEdges","direction","fieldNodes","GraphQLError","isCursorLast","isCursorFirst","createMakeCursors","createResourceResolver","resolver","source","context","info","makeGroupCursor","isCursorSupplied","validateCursor","cursorError","resolveConnection","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 { CachedEdges } from \"../defs\";\n\nexport const getStartCursor = (cachedEdges: CachedEdges[]) => cachedEdges[0].edges[0].cursor;\n\nexport const getEndCursor = (cachedEdges: CachedEdges[]) => {\n const lastCachedEdges = cachedEdges[cachedEdges.length - 1];\n const lastCachedEdge = lastCachedEdges.edges[lastCachedEdges.edges.length - 1];\n return lastCachedEdge.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(cachedEdges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(cachedEdges),\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(mergedCachedEdges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(mergedCachedEdges),\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,\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","lastCachedEdges","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.
|
5
|
-
original size:
|
4
|
+
bundle size: 34.405 KB
|
5
|
+
original size: 26.476 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.
|
11
|
+
bundle space: 13.84 %
|
12
12
|
rendered size: 4.761 KB
|
13
13
|
original size: 2.3 KB
|
14
14
|
code reduction: 0 %
|
@@ -17,9 +17,9 @@ dependents: 1
|
|
17
17
|
|
18
18
|
██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
19
19
|
file: /src/main/index.ts
|
20
|
-
bundle space: 13.
|
21
|
-
rendered size: 4.
|
22
|
-
original size: 2.
|
20
|
+
bundle space: 13.54 %
|
21
|
+
rendered size: 4.66 KB
|
22
|
+
original size: 2.544 KB
|
23
23
|
code reduction: 0 %
|
24
24
|
dependents: 1
|
25
25
|
- /src/index.ts
|
@@ -27,8 +27,8 @@ dependents: 1
|
|
27
27
|
█████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
28
28
|
file: /src/helpers/requestAndCachePages.ts
|
29
29
|
bundle space: 11.04 %
|
30
|
-
rendered size: 3.
|
31
|
-
original size: 1.
|
30
|
+
rendered size: 3.799 KB
|
31
|
+
original size: 1.643 KB
|
32
32
|
code reduction: 0 %
|
33
33
|
dependents: 2
|
34
34
|
- /src/helpers/resolveConnection.ts
|
@@ -37,15 +37,15 @@ dependents: 2
|
|
37
37
|
█████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
38
38
|
file: /src/helpers/resolveConnection.ts
|
39
39
|
bundle space: 10.27 %
|
40
|
-
rendered size: 3.
|
41
|
-
original size: 2.
|
40
|
+
rendered size: 3.533 KB
|
41
|
+
original size: 2.473 KB
|
42
42
|
code reduction: 0 %
|
43
43
|
dependents: 1
|
44
44
|
- /src/main/index.ts
|
45
45
|
|
46
46
|
████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
47
47
|
file: /src/helpers/retrieveCachedConnection.ts
|
48
|
-
bundle space: 9.
|
48
|
+
bundle space: 9.94 %
|
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.
|
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.
|
66
|
+
bundle space: 6.55 %
|
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.
|
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.
|
84
|
+
bundle space: 2.93 %
|
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.
|
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.
|
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:
|
112
|
+
bundle space: 1.99 %
|
113
113
|
rendered size: 685 Bytes
|
114
114
|
original size: 772 Bytes
|
115
115
|
code reduction: 11.27 %
|
@@ -154,7 +154,7 @@ dependents: 1
|
|
154
154
|
|
155
155
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
156
156
|
file: /src/helpers/getStartAndEndCursors.ts
|
157
|
-
bundle space: 0.
|
157
|
+
bundle space: 0.97 %
|
158
158
|
rendered size: 335 Bytes
|
159
159
|
original size: 377 Bytes
|
160
160
|
code reduction: 11.14 %
|
@@ -172,7 +172,7 @@ dependents: 1
|
|
172
172
|
|
173
173
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
174
174
|
file: /src/helpers/getIndexesOnLastPage.ts
|
175
|
-
bundle space: 0.
|
175
|
+
bundle space: 0.7 %
|
176
176
|
rendered size: 242 Bytes
|
177
177
|
original size: 193 Bytes
|
178
178
|
code reduction: 0 %
|
@@ -202,7 +202,7 @@ dependents: 1
|
|
202
202
|
|
203
203
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
204
204
|
file: /src/helpers/removeConnectionInputOptions.ts
|
205
|
-
bundle space: 0.
|
205
|
+
bundle space: 0.66 %
|
206
206
|
rendered size: 228 Bytes
|
207
207
|
original size: 220 Bytes
|
208
208
|
code reduction: 0 %
|
@@ -211,7 +211,7 @@ dependents: 1
|
|
211
211
|
|
212
212
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
213
213
|
file: /src/helpers/extractEdges.ts
|
214
|
-
bundle space: 0.
|
214
|
+
bundle space: 0.59 %
|
215
215
|
rendered size: 204 Bytes
|
216
216
|
original size: 185 Bytes
|
217
217
|
code reduction: 0 %
|
@@ -220,7 +220,7 @@ dependents: 1
|
|
220
220
|
|
221
221
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
222
222
|
file: /src/helpers/makeEdges.ts
|
223
|
-
bundle space: 0.
|
223
|
+
bundle space: 0.47 %
|
224
224
|
rendered size: 163 Bytes
|
225
225
|
original size: 162 Bytes
|
226
226
|
code reduction: 0 %
|
@@ -229,16 +229,16 @@ dependents: 1
|
|
229
229
|
|
230
230
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
231
231
|
file: /src/helpers/isCursorSupplied.ts
|
232
|
-
bundle space: 0.
|
232
|
+
bundle space: 0.37 %
|
233
233
|
rendered size: 129 Bytes
|
234
|
-
original size:
|
235
|
-
code reduction:
|
234
|
+
original size: 161 Bytes
|
235
|
+
code reduction: 19.88 %
|
236
236
|
dependents: 1
|
237
237
|
- /src/main/index.ts
|
238
238
|
|
239
239
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
240
240
|
file: /src/helpers/isLastPage.ts
|
241
|
-
bundle space: 0.
|
241
|
+
bundle space: 0.37 %
|
242
242
|
rendered size: 129 Bytes
|
243
243
|
original size: 135 Bytes
|
244
244
|
code reduction: 4.44 %
|
@@ -299,7 +299,7 @@ dependents: 1
|
|
299
299
|
file: /src/defs/index.ts
|
300
300
|
bundle space: 0 %
|
301
301
|
rendered size: 0 Byte
|
302
|
-
original size: 2.
|
302
|
+
original size: 2.687 KB
|
303
303
|
code reduction: 100 %
|
304
304
|
dependents: 1
|
305
305
|
- /src/index.ts
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/__testUtils__/generateCursorCache.ts"],"names":["group","pageRanges","resultsPerPage","totalPages","totalResults","cursorCache","Cachemap","name","store","headers","Headers","length","pages","Promise","all","map","page","isLastPage","resultsOnCurrentPage","remainder","edges","Array","from","_v","i","index","id","cursor","node","set","cacheHeaders","cacheControl","get","undefined"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;eAUe,OAAO;AAAEA,EAAAA,KAAF;AAASC,EAAAA,UAAU,GAAG,EAAtB;AAA0BC,EAAAA,cAA1B;AAA0CC,EAAAA,UAA1C;AAAsDC,EAAAA;AAAtD,CAAP,KAAwF;AACrG,QAAMC,WAAW,GAAG,IAAIC,aAAJ,CAAa;AAC/BC,IAAAA,IAAI,EAAE,aADyB;AAE/BC,IAAAA,KAAK,EAAE;
|
1
|
+
{"version":3,"sources":["../../../src/__testUtils__/generateCursorCache.ts"],"names":["group","pageRanges","resultsPerPage","totalPages","totalResults","cursorCache","Cachemap","name","store","type","headers","Headers","length","pages","Promise","all","map","page","isLastPage","resultsOnCurrentPage","remainder","edges","Array","from","_v","i","index","id","cursor","node","set","cacheHeaders","cacheControl","get","undefined"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;eAUe,OAAO;AAAEA,EAAAA,KAAF;AAASC,EAAAA,UAAU,GAAG,EAAtB;AAA0BC,EAAAA,cAA1B;AAA0CC,EAAAA,UAA1C;AAAsDC,EAAAA;AAAtD,CAAP,KAAwF;AACrG,QAAMC,WAAW,GAAG,IAAIC,aAAJ,CAAa;AAC/BC,IAAAA,IAAI,EAAE,aADyB;AAE/BC,IAAAA,KAAK,EAAE,mBAFwB;AAG/BC,IAAAA,IAAI,EAAE;AAHyB,GAAb,CAApB;AAMA,QAAMC,OAAO,GAAG,IAAIC,OAAJ,CAAY;AAAE,qBAAiB;AAAnB,GAAZ,CAAhB;;AAEA,MAAIV,UAAU,CAACW,MAAX,IAAqBV,cAAzB,EAAyC;AACvC,UAAMW,KAAK,GAAG,4BAAcZ,UAAd,CAAd;AAEA,UAAMa,OAAO,CAACC,GAAR,CACJF,KAAK,CAACG,GAAN,CAAU,MAAMC,IAAN,IAAc;AACtB,YAAMC,UAAU,GAAGD,IAAI,KAAKJ,KAAK,CAACA,KAAK,CAACD,MAAN,GAAe,CAAhB,CAAjC;AACA,UAAIO,oBAAJ;;AAEA,UAAID,UAAJ,EAAgB;AACd,cAAME,SAAS,GAAGhB,YAAY,GAAGF,cAAjC;AACAiB,QAAAA,oBAAoB,GAAGC,SAAS,KAAK,CAAd,GAAkBlB,cAAlB,GAAmCkB,SAA1D;AACD,OAHD,MAGO;AACLD,QAAAA,oBAAoB,GAAGjB,cAAvB;AACD;;AAED,YAAMmB,KAAK,GAAGC,KAAK,CAACC,IAAN,CAAW;AAAEX,QAAAA,MAAM,EAAEO;AAAV,OAAX,EAA6C,CAACK,EAAD,EAAKC,CAAL,KAAWA,CAAxD,EAA2DT,GAA3D,CAA+DU,KAAK,IAAI;AACpF,cAAMC,EAAE,GAAG,oBAAQ,GAAED,KAAM,KAAIT,IAAK,EAAzB,CAAX;AACA,eAAO;AAAEW,UAAAA,MAAM,EAAG,GAAED,EAAG,KAAI3B,KAAM,EAA1B;AAA6B6B,UAAAA,IAAI,EAAE;AAAEF,YAAAA;AAAF;AAAnC,SAAP;AACD,OAHa,CAAd;AAKA,YAAM,2BAAatB,WAAb,EAA0B;AAAEgB,QAAAA,KAAF;AAASrB,QAAAA,KAAT;AAAgBU,QAAAA,OAAhB;AAAyBO,QAAAA,IAAzB;AAA+Bd,QAAAA,UAA/B;AAA2CC,QAAAA;AAA3C,OAA1B,CAAN;AACD,KAjBD,CADI,CAAN;AAoBD,GAvBD,MAuBO;AAAA;;AACL,UAAMC,WAAW,CAACyB,GAAZ,CACH,GAAE9B,KAAM,WADL,EAEJ;AAAEG,MAAAA,UAAF;AAAcC,MAAAA;AAAd,KAFI,EAGJ;AAAE2B,MAAAA,YAAY,EAAE;AAAEC,QAAAA,YAAY,kBAAEtB,OAAO,CAACuB,GAAR,CAAY,eAAZ,CAAF,uDAAkCC;AAAhD;AAAhB,KAHI,CAAN;AAKD;;AAED,SAAO7B,WAAP;AACD,C","sourcesContent":["import Cachemap from \"@cachemap/core\";\nimport map from \"@cachemap/map\";\nimport { encode } from \"js-base64\";\nimport cacheCursors from \"../helpers/cacheCursors\";\nimport generatePages from \"./generatePages\";\n\nexport type Params = {\n group: string;\n pageRanges?: string[];\n resultsPerPage?: number;\n totalPages: number;\n totalResults: number;\n};\n\nexport default async ({ group, pageRanges = [], resultsPerPage, totalPages, totalResults }: Params) => {\n const cursorCache = new Cachemap({\n name: \"cursorCache\",\n store: map(),\n type: \"someType\",\n });\n\n const headers = new Headers({ \"Cache-Control\": \"max-age=60\" });\n\n if (pageRanges.length && resultsPerPage) {\n const pages = generatePages(pageRanges);\n\n await Promise.all(\n pages.map(async page => {\n const isLastPage = page === pages[pages.length - 1];\n let resultsOnCurrentPage: number;\n\n if (isLastPage) {\n const remainder = totalResults % resultsPerPage;\n resultsOnCurrentPage = remainder === 0 ? resultsPerPage : remainder;\n } else {\n resultsOnCurrentPage = resultsPerPage;\n }\n\n const edges = Array.from({ length: resultsOnCurrentPage }, (_v, i) => i).map(index => {\n const id = encode(`${index}::${page}`);\n return { cursor: `${id}::${group}`, node: { id } };\n });\n\n await cacheCursors(cursorCache, { edges, group, headers, page, totalPages, totalResults });\n }),\n );\n } else {\n await cursorCache.set(\n `${group}-metadata`,\n { totalPages, totalResults },\n { cacheHeaders: { cacheControl: headers.get(\"cache-control\") ?? undefined } },\n );\n }\n\n return cursorCache;\n};\n"],"file":"generateCursorCache.js"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/helpers/isCursorSupplied.ts"],"names":["after","before"],"mappings":";;;;;;;eAEe,CAAC;AAAEA,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAD,
|
1
|
+
{"version":3,"sources":["../../../src/helpers/isCursorSupplied.ts"],"names":["after","before"],"mappings":";;;;;;;eAEe,CAAC;AAAEA,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAD,KAA6D,CAAC,EAAED,KAAK,IAAIC,MAAX,C","sourcesContent":["import { ConnectionInputOptions, PlainObject } from \"../defs\";\n\nexport default ({ after, before }: PlainObject & ConnectionInputOptions) => !!(after || before);\n"],"file":"isCursorSupplied.js"}
|
@@ -13,7 +13,7 @@ var _cacheCursors = _interopRequireDefault(require("./cacheCursors"));
|
|
13
13
|
|
14
14
|
var _makeEdges = _interopRequireDefault(require("./makeEdges"));
|
15
15
|
|
16
|
-
|
16
|
+
const requestAndCachePages = async (pages, {
|
17
17
|
cursorCache,
|
18
18
|
getters,
|
19
19
|
groupCursor,
|
@@ -61,5 +61,6 @@ var _default = async (pages, {
|
|
61
61
|
};
|
62
62
|
};
|
63
63
|
|
64
|
+
var _default = requestAndCachePages;
|
64
65
|
exports.default = _default;
|
65
66
|
//# sourceMappingURL=requestAndCachePages.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/helpers/requestAndCachePages.ts"],"names":["pages","cursorCache","getters","groupCursor","makeIDCursor","resourceResolver","errors","cachedEdges","Promise","all","map","page","data","pageResultData","pageResultErrors","headers","pageResultHeaders","length","edges","nodes","node","id","group","totalPages","totalResults","pageNumber","push"],"mappings":";;;;;;;;;;;AAEA;;AACA;;
|
1
|
+
{"version":3,"sources":["../../../src/helpers/requestAndCachePages.ts"],"names":["requestAndCachePages","pages","cursorCache","getters","groupCursor","makeIDCursor","resourceResolver","errors","cachedEdges","Promise","all","map","page","data","pageResultData","pageResultErrors","headers","pageResultHeaders","length","edges","nodes","node","id","group","totalPages","totalResults","pageNumber","push"],"mappings":";;;;;;;;;;;AAEA;;AACA;;AAUA,MAAMA,oBAAoB,GAAG,OAC3BC,KAD2B,EAE3B;AAAEC,EAAAA,WAAF;AAAeC,EAAAA,OAAf;AAAwBC,EAAAA,WAAxB;AAAqCC,EAAAA,YAArC;AAAmDC,EAAAA;AAAnD,CAF2B,KAGxB;AACH,QAAMC,MAAe,GAAG,EAAxB;AAEA,QAAMC,WAAW,GAAG,MAAMC,OAAO,CAACC,GAAR,CACxBT,KAAK,CAACU,GAAN,CAAU,MAAMC,IAAN,IAAc;AACtB,UAAM;AAAEC,MAAAA,IAAI,EAAEC,cAAR;AAAwBP,MAAAA,MAAM,EAAEQ,gBAAhC;AAAkDC,MAAAA,OAAO,EAAEC;AAA3D,QAAiF,MAAMX,gBAAgB,CAAC;AAC5GM,MAAAA;AAD4G,KAAD,CAA7G;;AAIA,QAAIE,cAAc,IAAI,EAACC,gBAAD,aAACA,gBAAD,eAACA,gBAAgB,CAAEG,MAAnB,CAAtB,EAAiD;AAC/C,YAAMC,KAAK,GAAG,wBAAUhB,OAAO,CAACiB,KAAR,CAAcN,cAAd,CAAV,EAAyCO,IAAI,IAAIhB,YAAY,CAACgB,IAAI,CAACC,EAAN,CAA7D,CAAd;AAEA,YAAM,2BAAapB,WAAb,EAA0B;AAC9BiB,QAAAA,KAD8B;AAE9BI,QAAAA,KAAK,EAAEnB,WAFuB;AAG9BY,QAAAA,OAAO,EAAEC,iBAHqB;AAI9BL,QAAAA,IAJ8B;AAK9BY,QAAAA,UAAU,EAAErB,OAAO,CAACqB,UAAR,CAAmBV,cAAnB,CALkB;AAM9BW,QAAAA,YAAY,EAAEtB,OAAO,CAACsB,YAAR,CAAqBX,cAArB;AANgB,OAA1B,CAAN;AASA,aAAO;AAAEK,QAAAA,KAAF;AAASO,QAAAA,UAAU,EAAEd;AAArB,OAAP;AACD;;AAED,QAAIG,gBAAJ,aAAIA,gBAAJ,eAAIA,gBAAgB,CAAEG,MAAtB,EAA8B;AAC5BX,MAAAA,MAAM,CAACoB,IAAP,CAAY,GAAGZ,gBAAf;AACD;;AAED,WAAO;AAAEI,MAAAA,KAAK,EAAE,EAAT;AAAaO,MAAAA,UAAU,EAAEd;AAAzB,KAAP;AACD,GAzBD,CADwB,CAA1B;AA6BA,SAAO;AAAEJ,IAAAA,WAAF;AAAeD,IAAAA;AAAf,GAAP;AACD,CApCD;;eAsCeP,oB","sourcesContent":["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"],"file":"requestAndCachePages.js"}
|
@@ -23,7 +23,7 @@ var _requestAndCachePages = _interopRequireDefault(require("./requestAndCachePag
|
|
23
23
|
|
24
24
|
var _retrieveCachedConnection = _interopRequireDefault(require("./retrieveCachedConnection"));
|
25
25
|
|
26
|
-
|
26
|
+
const resolveConnection = async (args, {
|
27
27
|
cursorCache,
|
28
28
|
getters,
|
29
29
|
groupCursor,
|
@@ -90,5 +90,6 @@ var _default = async (args, {
|
|
90
90
|
};
|
91
91
|
};
|
92
92
|
|
93
|
+
var _default = resolveConnection;
|
93
94
|
exports.default = _default;
|
94
95
|
//# sourceMappingURL=resolveConnection.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/helpers/resolveConnection.ts"],"names":["args","cursorCache","getters","groupCursor","makeIDCursor","resourceResolver","resultsPerPage","cachedEdges","hasNextPage","hasPreviousPage","indexes","missingPages","totalResults","length","edges","errors","nodes","pageInfo","endCursor","startCursor","totalCount","missingCachedEdges","mergedCachedEdges","endIndex","end","startIndex","start"],"mappings":";;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;
|
1
|
+
{"version":3,"sources":["../../../src/helpers/resolveConnection.ts"],"names":["resolveConnection","args","cursorCache","getters","groupCursor","makeIDCursor","resourceResolver","resultsPerPage","cachedEdges","hasNextPage","hasPreviousPage","indexes","missingPages","totalResults","length","edges","errors","nodes","pageInfo","endCursor","startCursor","totalCount","missingCachedEdges","mergedCachedEdges","endIndex","end","startIndex","start"],"mappings":";;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAWA,MAAMA,iBAAiB,GAAG,OACxBC,IADwB,EAExB;AACEC,EAAAA,WADF;AAEEC,EAAAA,OAFF;AAGEC,EAAAA,WAHF;AAIEC,EAAAA,YAJF;AAKEC,EAAAA,gBALF;AAMEC,EAAAA;AANF,CAFwB,KAUrB;AACH,QAAM;AACJC,IAAAA,WADI;AAEJC,IAAAA,WAFI;AAGJC,IAAAA,eAHI;AAIJC,IAAAA,OAJI;AAKJC,IAAAA,YALI;AAMJC,IAAAA;AANI,MAOF,MAAM,uCAAyBZ,IAAzB,EAA+B;AACvCC,IAAAA,WADuC;AAEvCE,IAAAA,WAFuC;AAGvCG,IAAAA;AAHuC,GAA/B,CAPV;;AAaA,MAAI,CAACK,YAAY,CAACE,MAAlB,EAA0B;AACxB,UAAMC,KAAK,GAAG,2BAAaP,WAAb,CAAd;AAEA,WAAO;AACLO,MAAAA,KADK;AAELC,MAAAA,MAAM,EAAE,EAFH;AAGLC,MAAAA,KAAK,EAAE,2BAAaF,KAAb,CAHF;AAILG,MAAAA,QAAQ,EAAE;AACRC,QAAAA,SAAS,EAAE,yCAAaX,WAAb,CADH;AAERC,QAAAA,WAFQ;AAGRC,QAAAA,eAHQ;AAIRU,QAAAA,WAAW,EAAE,2CAAeZ,WAAf;AAJL,OAJL;AAULa,MAAAA,UAAU,EAAER;AAVP,KAAP;AAYD;;AAED,QAAM;AAAEL,IAAAA,WAAW,EAAEc,kBAAf;AAAmCN,IAAAA;AAAnC,MAA8C,MAAM,mCAA6CJ,YAA7C,EAA2D;AACnHV,IAAAA,WADmH;AAEnHC,IAAAA,OAFmH;AAGnHC,IAAAA,WAHmH;AAInHC,IAAAA,YAJmH;AAKnHC,IAAAA;AALmH,GAA3D,CAA1D;AAQA,QAAMiB,iBAAiB,GAAG,oCAAsB,+BAAiBf,WAAjB,EAA8Bc,kBAA9B,CAAtB,EAAyE;AACjGE,IAAAA,QAAQ,EAAEb,OAAO,CAACc,GAD+E;AAEjGlB,IAAAA,cAFiG;AAGjGmB,IAAAA,UAAU,EAAEf,OAAO,CAACgB;AAH6E,GAAzE,CAA1B;AAMA,QAAMZ,KAAK,GAAG,2BAAaQ,iBAAb,CAAd;AAEA,SAAO;AACLR,IAAAA,KADK;AAELC,IAAAA,MAFK;AAGLC,IAAAA,KAAK,EAAE,2BAAaF,KAAb,CAHF;AAILG,IAAAA,QAAQ,EAAE;AACRC,MAAAA,SAAS,EAAE,yCAAaI,iBAAb,CADH;AAERd,MAAAA,WAFQ;AAGRC,MAAAA,eAHQ;AAIRU,MAAAA,WAAW,EAAE,2CAAeG,iBAAf;AAJL,KAJL;AAULF,IAAAA,UAAU,EAAER;AAVP,GAAP;AAYD,CArED;;eAuEeb,iB","sourcesContent":["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(cachedEdges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(cachedEdges),\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(mergedCachedEdges),\n hasNextPage,\n hasPreviousPage,\n startCursor: getStartCursor(mergedCachedEdges),\n },\n totalCount: totalResults,\n };\n};\n\nexport default resolveConnection;\n"],"file":"resolveConnection.js"}
|
package/lib/main/main/index.js
CHANGED
@@ -17,12 +17,12 @@ var _resolveConnection = _interopRequireDefault(require("../helpers/resolveConne
|
|
17
17
|
|
18
18
|
var _validateCursor = _interopRequireDefault(require("../helpers/validateCursor"));
|
19
19
|
|
20
|
-
|
20
|
+
const main = ({
|
21
21
|
cursorCache,
|
22
22
|
createMakeCursors,
|
23
23
|
createResourceResolver,
|
24
24
|
getters,
|
25
|
-
resolver,
|
25
|
+
resolver = result => result,
|
26
26
|
resultsPerPage
|
27
27
|
}) => async (source, args, context, info) => {
|
28
28
|
try {
|
@@ -94,5 +94,6 @@ var _default = ({
|
|
94
94
|
}
|
95
95
|
};
|
96
96
|
|
97
|
+
var _default = main;
|
97
98
|
exports.default = _default;
|
98
99
|
//# sourceMappingURL=index.js.map
|