p2pclaw-api / packages /api /src /utils /gunUtils.js
Frank-Agnuxo's picture
feat: P2PCLAW API for HF Spaces — ChessBoard Reasoning Engine + full API
e92be04
/**
* Sanitize a plain object before passing to Gun.js .put().
*
* Gun's SEA/YSON layer cannot handle:
* - null property values → dropped (Gun treats stored null as "delete node")
* - undefined properties → dropped
* - Array values → serialized to JSON string (Gun is a graph, not array-friendly)
*
* Usage: db.get("p2pclaw_papers_v4").get(id).put(gunSafe({ title, lean_proof: null, tags: [] }));
*/
export function gunSafe(data) {
if (!data || typeof data !== "object" || Array.isArray(data)) return {};
const out = {};
for (const [key, val] of Object.entries(data)) {
if (val === undefined || val === null) continue;
out[key] = Array.isArray(val) ? JSON.stringify(val) : val;
}
return out;
}