UNPKG

apollo-client

Version:
45 lines 1.73 kB
export function shouldInclude(selection, variables) { if (variables === void 0) { variables = {}; } if (!selection.directives) { return true; } var res = true; selection.directives.forEach(function (directive) { if (directive.name.value !== 'skip' && directive.name.value !== 'include') { return; } var directiveArguments = directive.arguments || []; var directiveName = directive.name.value; if (directiveArguments.length !== 1) { throw new Error("Incorrect number of arguments for the @" + directiveName + " directive."); } var ifArgument = directiveArguments[0]; if (!ifArgument.name || ifArgument.name.value !== 'if') { throw new Error("Invalid argument for the @" + directiveName + " directive."); } var ifValue = directiveArguments[0].value; var evaledValue = false; if (!ifValue || ifValue.kind !== 'BooleanValue') { if (ifValue.kind !== 'Variable') { throw new Error("Argument for the @" + directiveName + " directive must be a variable or a bool ean value."); } else { evaledValue = variables[ifValue.name.value]; if (evaledValue === undefined) { throw new Error("Invalid variable referenced in @" + directiveName + " directive."); } } } else { evaledValue = ifValue.value; } if (directiveName === 'skip') { evaledValue = !evaledValue; } if (!evaledValue) { res = false; } }); return res; } //# sourceMappingURL=directives.js.map