apollo-client
Version:
A simple yet functional GraphQL client.
53 lines • 1.97 kB
JavaScript
;
var includes = require('lodash.includes');
function isScalarValue(value) {
var SCALAR_TYPES = ['IntValue', 'FloatValue', 'StringValue', 'BooleanValue'];
return includes(SCALAR_TYPES, value.kind);
}
function isVariable(value) {
return value.kind === 'Variable';
}
function storeKeyNameFromField(field, variables) {
if (field.arguments && field.arguments.length) {
var argObj_1 = {};
field.arguments.forEach(function (_a) {
var name = _a.name, value = _a.value;
if (isScalarValue(value)) {
argObj_1[name.value] = value.value;
}
else if (isVariable(value)) {
if (!variables) {
throw new Error('Internal err: Field has a variable argument but variables not passed.');
}
var variableValue = variables[value.name.value];
argObj_1[name.value] = variableValue;
}
else {
throw new Error("For inline arguments, only scalar types are supported. To use Enum or Object types, please pass them as variables.");
}
});
var stringifiedArgs = JSON.stringify(argObj_1);
return field.name.value + "(" + stringifiedArgs + ")";
}
return field.name.value;
}
exports.storeKeyNameFromField = storeKeyNameFromField;
function resultKeyNameFromField(field) {
return field.alias ?
field.alias.value :
field.name.value;
}
exports.resultKeyNameFromField = resultKeyNameFromField;
function isField(selection) {
return selection.kind === 'Field';
}
exports.isField = isField;
function isInlineFragment(selection) {
return selection.kind === 'InlineFragment';
}
exports.isInlineFragment = isInlineFragment;
function graphQLResultHasError(result) {
return result.errors && result.errors.length;
}
exports.graphQLResultHasError = graphQLResultHasError;
//# sourceMappingURL=storeUtils.js.map