{"_id":"@aquibahmad/pagination-utils","_rev":"2-522c493980994d5386f8d438ff747eb9","name":"@aquibahmad/pagination-utils","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@aquibahmad/pagination-utils","version":"1.0.0","keywords":["pagination","typescript","mongoose","mongodb"],"license":"MIT","_id":"@aquibahmad/pagination-utils@1.0.0","maintainers":[{"name":"aquibahmad","email":"aquib445488@gmail.com"}],"dist":{"shasum":"2e2420cde57900719077d9a165a7df73caf2853c","tarball":"https://registry.npmjs.org/@aquibahmad/pagination-utils/-/pagination-utils-1.0.0.tgz","fileCount":12,"integrity":"sha512-f2Hq4zEpT0KaZICcLp4ibGLFUhbjITJBF+zpiXIUOhXcNhzvrB5/KJRM4/WfwTzSoj1Xeh0bE9OktfJYQN3qJA==","signatures":[{"sig":"MEYCIQDuyKXhHpC/DhUGJUcv3AWyE0C05CPJS+pbIzGNf+sO8AIhAIF6wOG+LewUpPA/gH3N+n8FPmNA345k3xn49eU37f5p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11421},"main":"dist/index.cjs","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"aquibahmad","email":"aquib445488@gmail.com"},"_npmVersion":"11.8.0","description":"Type-safe pagination utilities for Node.js and MongoDB","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/pagination-utils_1.0.0_1772003795838_0.09654691399825821","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aquibahmad/pagination-utils","version":"1.0.1","description":"Type-safe pagination utilities for Node.js and MongoDB","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"keywords":["pagination","typescript","mongoose","mongodb"],"license":"MIT","dependencies":{"zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.3.0","tsup":"^8.5.1","typescript":"^5.9.3"},"_id":"@aquibahmad/pagination-utils@1.0.1","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-WGrMAFC0zo6l02uaZv6KODmJW/mmwaDAVTUBXamq4ysIYH12UHvPHQYhJtNfnXPdCqb+9hLDDa8uPj7yF/9E0A==","shasum":"054ae2fce69cbb32c828455ffc2e716bf0c76172","tarball":"https://registry.npmjs.org/@aquibahmad/pagination-utils/-/pagination-utils-1.0.1.tgz","fileCount":13,"unpackedSize":15026,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHb5Bd1ca2NpxgcNyU9vjZq5S2RKi+DLUxXiJIZcCWQjAiEA7nrHRyjfxdsWgqvkcUTZBUjXpFiDVG8EDeEmasxfS+o="}]},"_npmUser":{"name":"aquibahmad","email":"aquib445488@gmail.com"},"directories":{},"maintainers":[{"name":"aquibahmad","email":"aquib445488@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pagination-utils_1.0.1_1772009508648_0.372719363030948"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-25T07:16:35.689Z","modified":"2026-02-25T08:51:48.890Z","1.0.0":"2026-02-25T07:16:36.001Z","1.0.1":"2026-02-25T08:51:48.793Z"},"license":"MIT","keywords":["pagination","typescript","mongoose","mongodb"],"description":"Type-safe pagination utilities for Node.js and MongoDB","maintainers":[{"name":"aquibahmad","email":"aquib445488@gmail.com"}],"readme":"# @aquibahmad/pagination-utils\n\nType-safe pagination utilities for Node.js, Express, and MongoDB /\nMongoose.\n\nEliminate repetitive pagination logic, safely parse query parameters,\nand generate consistent pagination metadata.\n\n------------------------------------------------------------------------\n\n##  Features\n\n✔ TypeScript-first design\\\n✔ Zod-powered validation\\\n✔ Safe defaults\\\n✔ MongoDB / Mongoose helpers\\\n✔ Works with CommonJS & ESM\\\n✔ Lightweight & production-ready\n\n------------------------------------------------------------------------\n\n##  Installation\n\n``` bash\nnpm install @aquibahmad/pagination-utils\n```\n\n------------------------------------------------------------------------\n\n##  Usage\n\n### CommonJS\n\n``` js\nconst {\n  getPaginationParams,\n  getPaginationInfo,\n  getMongoosePaginationOptions,\n} = require(\"@aquibahmad/pagination-utils\")\n\nconst { page, limit, skip } = getPaginationParams(req.query)\n```\n\n------------------------------------------------------------------------\n\n### ES Modules\n\n``` js\nimport {\n  getPaginationParams,\n  getPaginationInfo,\n  getMongoosePaginationOptions,\n} from \"@aquibahmad/pagination-utils\"\n\nconst { page, limit, skip } = getPaginationParams(req.query)\n```\n\n------------------------------------------------------------------------\n\n##  Parsing Pagination Parameters\n\nSafely parse and validate pagination input:\n\n``` js\nconst { page, limit, skip } = getPaginationParams(req.query)\n```\n\n### Defaults\n\n  Parameter   Default\n  ----------- ---------\n  page        1\n  limit       10\n\n------------------------------------------------------------------------\n\n##  Example with Express + Mongoose\n\n``` ts\nimport { getPaginationParams, getPaginationInfo } from \"@aquibahmad/pagination-utils\"\n\nexport const getUsers = async (req, res) => {\n  const { page, limit, skip } = getPaginationParams(req.query)\n\n  const users = await User.find().skip(skip).limit(limit)\n  const totalDocs = await User.countDocuments()\n\n  const pagination = getPaginationInfo(totalDocs, page, limit)\n\n  res.json({\n    data: users,\n    pagination,\n  })\n}\n```\n\n------------------------------------------------------------------------\n\n## ✅ Pagination Metadata\n\nGenerate consistent API pagination info:\n\n``` js\nconst pagination = getPaginationInfo(totalDocs, page, limit)\n```\n\nReturns:\n\n``` js\n{\n  totalDocs,\n  totalPages,\n  currentPage,\n  hasNextPage,\n  hasPrevPage,\n  nextPage,\n  prevPage\n}\n```\n\n------------------------------------------------------------------------\n\n## ✅ Mongoose Helper\n\nCleaner MongoDB / Mongoose queries:\n\n``` ts\nimport { getMongoosePaginationOptions } from \"@aquibahmad/pagination-utils\"\n\nconst options = getMongoosePaginationOptions(page, limit)\n\nconst users = await User.find({}, null, options)\n```\n\n------------------------------------------------------------------------\n\n## 📘 API Reference\n\n### getPaginationParams(input)\n\nParses and validates pagination input.\n\nReturns:\n\n``` ts\n{\n  page: number,\n  limit: number,\n  skip: number\n}\n```\n\n------------------------------------------------------------------------\n\n### getPaginationInfo(totalDocs, page, limit)\n\nCalculates pagination metadata.\n\n------------------------------------------------------------------------\n\n### getMongoosePaginationOptions(page, limit)\n\nReturns Mongoose-ready options:\n\n``` ts\n{\n  skip,\n  limit\n}\n```\n\n------------------------------------------------------------------------\n\n## ⚠️ Validation Rules\n\n✔ page must be a positive integer\\\n✔ limit must be a positive integer\\\n✔ limit maximum = 1000\n\nInvalid values automatically throw a validation error.\n\n","readmeFilename":"README.md"}