@jokio/graphql
Version:
High level, pre-configured, GraphQL Server
38 lines (37 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var language_1 = require("graphql/language");
function identity(value) {
return value;
}
function parseLiteral(ast) {
switch (ast.kind) {
case language_1.Kind.STRING:
case language_1.Kind.BOOLEAN:
return ast.value;
case language_1.Kind.INT:
case language_1.Kind.FLOAT:
return parseFloat(ast.value);
case language_1.Kind.OBJECT: {
var value_1 = Object.create(null);
ast.fields.forEach(function (field) {
value_1[field.name.value] = parseLiteral(field.value);
});
return value_1;
}
case language_1.Kind.LIST:
return ast.values.map(parseLiteral);
default:
return null;
}
}
exports.default = new graphql_1.GraphQLScalarType({
name: 'JSON',
description: 'The `JSON` scalar type represents JSON values as specified by ' +
'[ECMA-404](http://www.ecma-international.org/' +
'publications/files/ECMA-ST/ECMA-404.pdf).',
serialize: identity,
parseValue: identity,
parseLiteral: parseLiteral,
});