@commercelayer/sdk-utils
Version:
Commerce Layer Javascript SDK Utils library
88 lines (85 loc) • 4.46 kB
JavaScript
;
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