@wordpress/core-data
Version:
Access to and manipulation of core WordPress entities.
50 lines (49 loc) • 1.44 kB
JavaScript
// packages/core-data/src/queried-data/get-query-parts.js
import { addQueryArgs } from "@wordpress/url";
import { withWeakMapCache, getNormalizedCommaSeparable } from "../utils";
function getQueryParts(query) {
const parts = {
stableKey: "",
page: 1,
perPage: 10,
fields: null,
include: null,
context: "default"
};
const keys = Object.keys(query).sort();
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
let value = query[key];
switch (key) {
case "page":
parts[key] = Number(value);
break;
case "per_page":
parts.perPage = Number(value);
break;
case "context":
parts.context = value;
break;
default:
if (key === "_fields") {
parts.fields = getNormalizedCommaSeparable(value) ?? [];
value = parts.fields.join();
}
if (key === "include") {
if (typeof value === "number") {
value = value.toString();
}
parts.include = (getNormalizedCommaSeparable(value) ?? []).map(Number);
value = parts.include.join();
}
parts.stableKey += (parts.stableKey ? "&" : "") + addQueryArgs("", { [key]: value }).slice(1);
}
}
return parts;
}
var get_query_parts_default = withWeakMapCache(getQueryParts);
export {
get_query_parts_default as default,
getQueryParts
};
//# sourceMappingURL=get-query-parts.js.map