pw-js-api
Version:
A PixelWalker Library, aims to be minimal with support for browsers.
81 lines • 6.96 kB
JavaScript
export function queryToString(query) {
if (typeof query === "undefined")
return "";
let str = "";
if (query.filter) {
if (typeof query.filter !== "string") {
str += "&filter=";
const filters = Object.entries(query.filter);
for (let i = 0, len = filters.length; i < len; i++) {
const filt = filters[i];
if (typeof filt[1] === "string")
str += `${filt[0]}="${filt[1]}"`;
// boolean gets toString() to true or false so eh
else
str += `${filt[0]}=${filt[1]}`;
}
}
else
str += "&filter=" + query.filter;
}
if (query.sort) {
if (typeof query.filter !== "string") {
str += "&sort=";
// if (Array.isArray(query.sort)) {
// } else {
const sorts = Array.isArray(query.sort) ? query.sort : Object.entries(query.sort);
for (let i = 0, len = sorts.length; i < len; i++) {
const sort = sorts[i];
if (typeof sort === "string")
str += sort + ",";
else if (sort[1] === undefined)
str += sort[0] + ",";
else if (sort[1] === "ASC")
str += sort[0] + ",";
else if (sort[1] === "DESC")
str += "-" + sort[0] + ",";
}
if (sorts.length)
str = str.slice(0, -1);
// }
}
else
str += "&sort=" + query.sort;
}
return str;
}
/**
* This takes in two parameters - Object A and B.
*
* Object A will be used as the object to add properties from Object B to.
* If some of the properties in Object B are also objects, this will run recursively to ensure they are all added.
*
* Annoyingly, due to how Typescript works, the only way I could get an object with combined properties is if I return it so rip mutability.
*
* IGNORE THE LAST TWO PARAMETERS.
*/
export function mergeObjects(objA, objB, depth = 0, prevObj) {
const keys = Object.keys(objB);
const obj = depth > 0 ? objA : structuredClone(objA);
for (let i = 0; i < keys.length; i++) {
const propA = objA[keys[i]];
const propB = objB[keys[i]];
if (typeof propB === "object" && propB !== null) {
if (typeof propA !== "object" || propA === null) {
obj[keys[i]] = {};
}
mergeObjects(obj[keys[i]], propB, depth + 1);
}
else
obj[keys[i]] = propB;
}
return obj;
}
// console.log(queryToString<ColWorld>({ filter: { id: "a" } }));
// console.log(queryToString<ColWorld>({ filter: { id: "a", created: "nice" } }));
// console.log(queryToString<ColWorld>({ filter: "a~b,ok=lol" }));
// console.log(queryToString<ColWorld>({ sort: ["collectionId", ["id", "ASC"], "collectionName", ["created", "DESC"], ["description"]] }));
export function isCustomPacket(type) {
return type === "debug" || type === "unknown" || type === "raw";
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlsL01pc2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGFBQWEsQ0FBb0IsS0FBOEI7SUFDM0UsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFNUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBRWIsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZixJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxHQUFHLElBQUksVUFBVSxDQUFDO1lBRWxCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV4QixJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7b0JBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNsRSxpREFBaUQ7O29CQUM1QyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEMsQ0FBQztRQUNMLENBQUM7O1lBQU0sR0FBRyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNiLElBQUksT0FBTyxLQUFLLENB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