You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP

@parameter1/mongodb-pagination

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@parameter1/mongodb-pagination - npm Package Compare versions

Comparing version

to
2.2.0

{
"name": "@parameter1/mongodb-pagination",
"version": "2.1.0",
"version": "2.2.0",
"type": "module",

@@ -46,3 +46,3 @@ "description": "Cursor, offset, and embedded object pagination for MongoDB queries.",

},
"gitHead": "e3b272f07896d98d5c9271982d3bdaa043e7eb0a"
"gitHead": "4452f02765026eff268f0ee4555048068c9b90ef"
}

@@ -149,2 +149,11 @@ import { EJSON } from '@parameter1/mongodb-bson';

let positionPromise;
const getPositionCount = async () => {
const [search, replace] = sort.order === 1 ? [/"\$gt":/g, '"$lte":'] : [/"\$lt":/g, '"$gte":'];
const stringified = EJSON.stringify(cursorQuery).replace(search, replace);
const pageQuery = EJSON.parse(stringified);
if (!positionPromise) positionPromise = collection.countDocuments({ $and: [pageQuery, query] });
return positionPromise;
};
return {

@@ -176,2 +185,11 @@ // use the base query, not the cursor query, to count all docs

},
startingPosition: async () => {
const { results } = await runQuery();
const inc = results.length ? 1 : 0;
if (!cursor) return inc;
const count = await getPositionCount();
if (direction === 'AFTER') return count + inc;
return (count - results.length) + inc;
},
endCursor: async () => {

@@ -182,4 +200,12 @@ const { results } = await runQuery();

},
endingPosition: async () => {
const { results } = await runQuery();
if (!cursor) return results.length;
const count = await getPositionCount();
if (direction === 'AFTER') return count + results.length;
return count;
},
},
};
}

@@ -98,2 +98,6 @@ import Joi from 'joi';

startOffset: offset,
startingPosition: async () => {
const { results } = await runQuery();
return offset + results.length ? 1 : 0;
},
endOffset: async () => {

@@ -113,4 +117,8 @@ const { results } = await runQuery();

},
endingPosition: async () => {
const { results } = await runQuery();
return offset + results.length;
},
},
};
}