UNPKG

gqty

Version:

The No-GraphQL Client for TypeScript

39 lines (35 loc) 1.08 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const pick = (schema, selections) => { const result = {}; for (const { ancestry } of selections) { let srcNode = schema; for (const { key, input } of ancestry) { if (srcNode == null) break; if (typeof srcNode[key] === "function") { srcNode = srcNode[key](input == null ? void 0 : input.values); } else { srcNode = srcNode[key]; } } if (srcNode !== void 0) { let dstNode = result; for (let i = 0; i < ancestry.length - 1; i++) { if (!dstNode) break; const { key } = ancestry[i]; const { key: nextKey } = ancestry[i + 1]; if (typeof nextKey === "number" && (!dstNode[key] || !Array.isArray(dstNode[key]))) { dstNode[key] = []; } else if (!dstNode[key]) { dstNode[key] = {}; } dstNode = dstNode[key]; } if (dstNode) { dstNode[ancestry[ancestry.length - 1].key] = srcNode; } } } return result; }; exports.pick = pick;