UNPKG

@commercelayer/sdk-utils

Version:
88 lines (85 loc) 4.46 kB
'use strict'; var chunkSNXIGDQX_cjs = require('./chunk-SNXIGDQX.cjs'); var chunkOGEPN5MT_cjs = require('./chunk-OGEPN5MT.cjs'); var chunkMLE76YHX_cjs = require('./chunk-MLE76YHX.cjs'); // src/page.ts var TEST_MODE = typeof process === "undefined" ? void 0 : process.env.CL_SDK_TEST; var DEBUG = typeof process === "undefined" ? void 0 : process.env.CL_SDK_DEBUG; var MAX_PAGE_SIZE_LIVE = TEST_MODE ? 950 : 1e3; var MAX_PAGE_SIZE_TEST = TEST_MODE ? 475 : 500; var retrievePage = async (resourceType, params) => { let requests = 0; const cl = chunkMLE76YHX_cjs.init_default().sdk; const client = chunkMLE76YHX_cjs.init_default().api(resourceType); let result = null; const queryParams = { fields: params?.fields, filters: params?.filters, sort: params?.sort, include: params?.include }; const tokenData = chunkSNXIGDQX_cjs.currentTokenData(cl.currentAccessToken); const maxPageSize = tokenData.test ? MAX_PAGE_SIZE_TEST : MAX_PAGE_SIZE_LIVE; if (DEBUG) console.log("maxPageSize: " + maxPageSize); const pageSize = Math.max(1, params?.pageSize || 1); if (DEBUG) console.log("pageSize: " + pageSize); if (pageSize > maxPageSize) throw new Error(`Page size exceeds the maximum allowed of ${maxPageSize}: [${pageSize}]`); if (DEBUG) console.log("requests: " + ++requests); const recordCount = await client.count(queryParams); if (DEBUG) console.log("recordCount: " + recordCount); const pageNumber = Math.max(1, params?.pageNumber || 1); if (DEBUG) console.log("pageNumber: " + pageNumber); const maxPageNumber = Math.ceil(recordCount / pageSize); if (pageNumber > maxPageNumber) throw new Error(`Page number greater than the last page number ${maxPageNumber}: [${pageNumber}]`); if (pageSize <= chunkOGEPN5MT_cjs.config.api.page_max_size) { queryParams.pageSize = pageSize; queryParams.pageNumber = pageNumber; if (DEBUG) console.log("requests: " + ++requests); result = await client.list(queryParams); } else { const pageSizeApi = chunkOGEPN5MT_cjs.config.api.page_max_size; queryParams.pageSize = pageSizeApi; const recordStart = pageSize * (pageNumber - 1) + 1; const recordEnd = Math.min(recordStart + pageSize - 1, recordCount); if (DEBUG) console.log("recordStart: " + recordStart); if (DEBUG) console.log("recordEnd: " + recordEnd); const pageStartApi = Math.ceil(recordStart / pageSizeApi); const pageEndApi = Math.ceil(recordEnd / pageSizeApi); if (DEBUG) console.log("pageStartApi: " + pageStartApi); if (DEBUG) console.log("pageEndApi: " + pageEndApi); for (let pageCurrApi = pageStartApi; pageCurrApi <= pageEndApi; pageCurrApi++) { queryParams.pageNumber = pageCurrApi; if (DEBUG) console.log("FOR requests: " + ++requests); const page = await client.list(queryParams); if (result === null) result = page; else result.push(...page); } if (!result) throw new Error(`Error retrieving ${resourceType} page`); if (DEBUG) console.log("result.length: " + result.length); if (result.length === 0) return result; if (DEBUG) console.log("requests: " + ++requests); if (DEBUG) console.log("requests: " + ++requests); const firstResource = (await client.list({ ...queryParams, ...{ pageNumber: recordStart, pageSize: 1 } })).first(); const lastResource = (await client.list({ ...queryParams, ...{ pageNumber: recordEnd, pageSize: 1 } })).first(); if (DEBUG) console.log("firstResource: " + firstResource?.id); if (DEBUG) console.log("lastResource: " + lastResource?.id); const firstResourceIdx = result.findIndex((r) => r.id === firstResource?.id); const lastResourceIdx = result.findIndex((r) => r.id === lastResource?.id); if (DEBUG) console.log("firstResourceIdx: " + firstResourceIdx); if (DEBUG) console.log("lastResourceIdx: " + lastResourceIdx); result.splice(lastResourceIdx + 1); if (DEBUG) console.log("End trim - result.length: " + result.length); result.splice(0, firstResourceIdx); if (DEBUG) console.log("Start trim - result.length: " + result.length); const meta = result.meta; meta.recordsPerPage = pageSize; meta.currentPage = pageNumber; meta.pageCount = maxPageNumber; if (DEBUG) console.log(meta); if (DEBUG) console.log("requests: " + ++requests); } return result; }; exports.retrievePage = retrievePage; //# sourceMappingURL=chunk-AIUQXTBF.cjs.map //# sourceMappingURL=chunk-AIUQXTBF.cjs.map