hypertune
Version:
[Hypertune](https://www.hypertune.com/) is the most flexible platform for feature flags, A/B testing, analytics and app configuration. Built with full end-to-end type-safety, Git-style version control and local, synchronous, in-memory flag evaluation. Opt
48 lines • 2.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = mergeFieldQueryAndArgs;
const getInlineFragment_1 = __importDefault(require("../shared/helpers/getInlineFragment"));
function mergeFieldQueryAndArgs(fragmentDefinitions, query, queryArgs, unwrapObjectArgs = false) {
if (!query) {
return null;
}
return Object.fromEntries(Object.entries(query).map(([objectTypeName, fragment]) => {
const objectArgs = unwrapObjectArgs
? queryArgs &&
queryArgs[objectTypeName] &&
queryArgs[objectTypeName] instanceof Object
? queryArgs[objectTypeName]
: null
: queryArgs;
const inlineFragment = (0, getInlineFragment_1.default)(fragmentDefinitions, fragment);
return [
objectTypeName,
{
type: "InlineFragment",
objectTypeName,
selection: Object.fromEntries(Object.entries(inlineFragment.selection).map(([fieldName, { fieldQuery }]) => {
const fieldArgs = objectArgs &&
objectArgs[fieldName] &&
objectArgs[fieldName] instanceof Object
? objectArgs[fieldName]
: null;
return [
fieldName,
{
fieldArguments: Object.assign({}, (fieldArgs && fieldArgs.args
? fieldArgs.args
: {})),
fieldQuery: fieldQuery
? mergeFieldQueryAndArgs(fragmentDefinitions, fieldQuery, fieldArgs, true)
: null,
},
];
})),
},
];
}));
}
//# sourceMappingURL=mergeFieldQueryAndArgs.js.map