@data-client/rest
Version:
Quickly define typed REST resources and endpoints
24 lines • 3.32 kB
JavaScript
export function paginatedMerge(existing, incoming) {
const existingSet = new Set(existing);
const mergedList = [...existing];
for (const pk of incoming) {
if (!existingSet.has(pk)) mergedList.push(pk);
}
return mergedList;
}
export function createPaginationSchema(removeCursor, collection) {
return Object.create(collection, {
name: {
value: `Pagination(${collection.schema})`
},
merge: {
value: paginatedMerge
},
pk: {
value: function (value, parent, key, args) {
return collection.pk.call(this, value, parent, key, removeCursor(...args));
}
}
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYWdpbmF0ZWRNZXJnZSIsImV4aXN0aW5nIiwiaW5jb21pbmciLCJleGlzdGluZ1NldCIsIlNldCIsIm1lcmdlZExpc3QiLCJwayIsImhhcyIsInB1c2giLCJjcmVhdGVQYWdpbmF0aW9uU2NoZW1hIiwicmVtb3ZlQ3Vyc29yIiwiY29sbGVjdGlvbiIsIk9iamVjdCIsImNyZWF0ZSIsIm5hbWUiLCJ2YWx1ZSIsInNjaGVtYSIsIm1lcmdlIiwicGFyZW50Iiwia2V5IiwiYXJncyIsImNhbGwiXSwic291cmNlcyI6WyIuLi9zcmMvcGFnaW5hdGVkQ29sbGVjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBzY2hlbWEgfSBmcm9tICdAZGF0YS1jbGllbnQvZW5kcG9pbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFnaW5hdGVkTWVyZ2UoZXhpc3Rpbmc6IGFueVtdLCBpbmNvbWluZzogYW55W10pIHtcbiAgY29uc3QgZXhpc3RpbmdTZXQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldChleGlzdGluZyk7XG4gIGNvbnN0IG1lcmdlZExpc3QgPSBbLi4uZXhpc3RpbmddO1xuICBmb3IgKGNvbnN0IHBrIG9mIGluY29taW5nKSB7XG4gICAgaWYgKCFleGlzdGluZ1NldC5oYXMocGspKSBtZXJnZWRMaXN0LnB1c2gocGspO1xuICB9XG4gIHJldHVybiBtZXJnZWRMaXN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvblNjaGVtYShcbiAgcmVtb3ZlQ3Vyc29yOiAoLi4uYXJnczogcmVhZG9ubHkgYW55W10pID0+IGFueVtdLFxuICBjb2xsZWN0aW9uOiBzY2hlbWEuQ29sbGVjdGlvbixcbikge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShjb2xsZWN0aW9uLCB7XG4gICAgbmFtZToge1xuICAgICAgdmFsdWU6IGBQYWdpbmF0aW9uKCR7Y29sbGVjdGlvbi5zY2hlbWF9KWAsXG4gICAgfSxcbiAgICBtZXJnZToge1xuICAgICAgdmFsdWU6IHBhZ2luYXRlZE1lcmdlLFxuICAgIH0sXG4gICAgcGs6IHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiAodmFsdWU6IGFueSwgcGFyZW50OiBhbnksIGtleTogYW55LCBhcmdzOiBhbnlbXSkge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5way5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgcGFyZW50LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICByZW1vdmVDdXJzb3IoLi4uYXJncyksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLFNBQVNBLGNBQWNBLENBQUNDLFFBQWUsRUFBRUMsUUFBZSxFQUFFO0VBQy9ELE1BQU1DLFdBQXdCLEdBQUcsSUFBSUMsR0FBRyxDQUFDSCxRQUFRLENBQUM7RUFDbEQsTUFBTUksVUFBVSxHQUFHLENBQUMsR0FBR0osUUFBUSxDQUFDO0VBQ2hDLEtBQUssTUFBTUssRUFBRSxJQUFJSixRQUFRLEVBQUU7SUFDekIsSUFBSSxDQUFDQyxXQUFXLENBQUNJLEdBQUcsQ0FBQ0QsRUFBRSxDQUFDLEVBQUVELFVBQVUsQ0FBQ0csSUFBSSxDQUFDRixFQUFFLENBQUM7RUFDL0M7RUFDQSxPQUFPRCxVQUFVO0FBQ25CO0FBRUEsT0FBTyxTQUFTSSxzQkFBc0JBLENBQ3BDQyxZQUFnRCxFQUNoREMsVUFBNkIsRUFDN0I7RUFDQSxPQUFPQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0YsVUFBVSxFQUFFO0lBQy9CRyxJQUFJLEVBQUU7TUFDSkMsS0FBSyxFQUFFLGNBQWNKLFVBQVUsQ0FBQ0ssTUFBTTtJQUN4QyxDQUFDO0lBQ0RDLEtBQUssRUFBRTtNQUNMRixLQUFLLEVBQUVmO0lBQ1QsQ0FBQztJQUNETSxFQUFFLEVBQUU7TUFDRlMsS0FBSyxFQUFFLFNBQUFBLENBQVVBLEtBQVUsRUFBRUcsTUFBVyxFQUFFQyxHQUFRLEVBQUVDLElBQVcsRUFBRTtRQUMvRCxPQUFPVCxVQUFVLENBQUNMLEVBQUUsQ0FBQ2UsSUFBSSxDQUN2QixJQUFJLEVBQ0pOLEtBQUssRUFDTEcsTUFBTSxFQUNOQyxHQUFHLEVBQ0hULFlBQVksQ0FBQyxHQUFHVSxJQUFJLENBQ3RCLENBQUM7TUFDSDtJQUNGO0VBQ0YsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=