UNPKG

pw-js-api

Version:

A PixelWalker Library, aims to be minimal with support for browsers.

81 lines 6.96 kB
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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