UNPKG

@commercelayer/sdk

Version:
59 lines (57 loc) 2.6 kB
import { SdkError } from './chunk-ZU7GFVQ6.js'; import { debug_default } from './chunk-XD7GS4QW.js'; // src/query.ts var debug = debug_default("query"); var arrayFilters = ["_any", "_all", "_in", "_not_in_or_null"]; var isArrayFilter = (filter) => { return arrayFilters.some((f) => filter.endsWith(f)); }; var objectFilters = ["_jcont"]; var isObjectFilter = (filter) => { return objectFilters.some((f) => filter.endsWith(f)); }; var isParamsList = (params) => { return params && (params.filters || params.pageNumber || params.pageSize || params.sort); }; var generateQueryStringParams = (params, res) => { debug("generate query string params: %O, %O", params, res); const qp = {}; if (!params) return qp; if (params.include) qp.include = params.include.join(","); if (params.fields) { if (Array.isArray(params.fields)) params.fields = { [res.type || res]: params.fields }; Object.entries(params.fields).forEach(([p, v]) => { qp[`fields[${p}]`] = v.join(","); }); } if (isParamsList(params)) { if (params.sort) { if (Array.isArray(params.sort)) qp.sort = params.sort.join(","); else qp.sort = Object.entries(params.sort).map(([k, v]) => `${v === "desc" ? "-" : ""}${k}`).join(","); } if (params.pageNumber) qp["page[number]"] = String(params.pageNumber); if (params.pageSize) qp["page[size]"] = String(params.pageSize); if (params.filters) { Object.entries(params.filters).forEach(([p, v]) => { let val; if (Array.isArray(v)) { if (!isArrayFilter(p)) throw new SdkError({ message: `Incorrect filter [${p}]: Array value is supported only for the following filters: ${arrayFilters.join(", ")}`, type: "request" /* REQUEST */ }); val = v.join(","); } else if (typeof v === "object") { if (!isObjectFilter(p)) throw new SdkError({ message: `Incorrect filter [${p}]: Object value is supported only for the following filters: ${objectFilters.join(", ")}`, type: "request" /* REQUEST */ }); val = JSON.stringify(v); } else val = String(v); qp[`filter[q][${p}]`] = val; }); } } debug("query string params: %O", qp); return qp; }; var generateSearchString = (params, questionMark = true) => { if (!params || Object.keys(params).length === 0) return ""; return `${questionMark ? "?" : ""}${Object.entries(params).map(([key, val]) => `${key}=${String(val)}`).join("&")}`; }; export { generateQueryStringParams, generateSearchString, isParamsList }; //# sourceMappingURL=chunk-CHYP5F26.js.map //# sourceMappingURL=chunk-CHYP5F26.js.map