{"version":3,"sources":["../src/cma/pagination.ts"],"sourcesContent":["// @timbenniks/contentstack-platform-sdk — CMA pagination helper\n\nconst DEFAULT_PAGE_SIZE = 25\n\n/**\n * Create an AsyncIterable that lazily paginates through CMA results.\n * Pages are fetched on demand — only when items are consumed.\n */\nexport function paginate<T>(\n  fetchPage: (skip: number, limit: number) => Promise<{ items: T[]; count?: number }>,\n  options?: { limit?: number },\n): AsyncIterable<T> {\n  const pageSize = options?.limit ?? DEFAULT_PAGE_SIZE\n\n  return {\n    [Symbol.asyncIterator]() {\n      let skip = 0\n      let done = false\n      let buffer: T[] = []\n      let bufferIndex = 0\n      let totalCount: number | undefined\n\n      return {\n        async next(): Promise<IteratorResult<T>> {\n          if (bufferIndex < buffer.length) {\n            return { value: buffer[bufferIndex++] as T, done: false }\n          }\n\n          if (done) {\n            return { value: undefined as unknown as T, done: true }\n          }\n\n          const page = await fetchPage(skip, pageSize)\n          buffer = page.items\n          bufferIndex = 0\n          skip += page.items.length\n\n          if (typeof page.count === \"number\") {\n            totalCount = page.count\n          }\n\n          if (page.items.length === 0) {\n            done = true\n            return { value: undefined as unknown as T, done: true }\n          }\n\n          if (typeof totalCount === \"number\" && skip >= totalCount) {\n            done = true\n          }\n\n          return { value: buffer[bufferIndex++] as T, done: false }\n        },\n      }\n    },\n  }\n}\n\n/**\n * Collect all items from an AsyncIterable into an array.\n * Replaces the repeated listAll() pattern across sub-clients.\n */\nexport async function collectAll<T>(iterable: AsyncIterable<T>): Promise<T[]> {\n  const items: T[] = []\n  for await (const item of iterable) {\n    items.push(item)\n  }\n  return items\n}\n"],"mappings":";AAEA,IAAM,oBAAoB;AAMnB,SAAS,SACd,WACA,SACkB;AAClB,QAAM,WAAW,SAAS,SAAS;AAEnC,SAAO;AAAA,IACL,CAAC,OAAO,aAAa,IAAI;AACvB,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,SAAc,CAAC;AACnB,UAAI,cAAc;AAClB,UAAI;AAEJ,aAAO;AAAA,QACL,MAAM,OAAmC;AACvC,cAAI,cAAc,OAAO,QAAQ;AAC/B,mBAAO,EAAE,OAAO,OAAO,aAAa,GAAQ,MAAM,MAAM;AAAA,UAC1D;AAEA,cAAI,MAAM;AACR,mBAAO,EAAE,OAAO,QAA2B,MAAM,KAAK;AAAA,UACxD;AAEA,gBAAM,OAAO,MAAM,UAAU,MAAM,QAAQ;AAC3C,mBAAS,KAAK;AACd,wBAAc;AACd,kBAAQ,KAAK,MAAM;AAEnB,cAAI,OAAO,KAAK,UAAU,UAAU;AAClC,yBAAa,KAAK;AAAA,UACpB;AAEA,cAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,mBAAO;AACP,mBAAO,EAAE,OAAO,QAA2B,MAAM,KAAK;AAAA,UACxD;AAEA,cAAI,OAAO,eAAe,YAAY,QAAQ,YAAY;AACxD,mBAAO;AAAA,UACT;AAEA,iBAAO,EAAE,OAAO,OAAO,aAAa,GAAQ,MAAM,MAAM;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAMA,eAAsB,WAAc,UAA0C;AAC5E,QAAM,QAAa,CAAC;AACpB,mBAAiB,QAAQ,UAAU;AACjC,UAAM,KAAK,IAAI;AAAA,EACjB;AACA,SAAO;AACT;","names":[]}