graphql-compose
Version:
GraphQL schema builder from different data sources with middleware extensions.
67 lines (51 loc) • 2.11 kB
JavaScript
;
var _create = require('babel-runtime/core-js/object/create');
var _create2 = _interopRequireDefault(_create);
var _iterator = require('babel-runtime/core-js/symbol/iterator');
var _iterator2 = _interopRequireDefault(_iterator);
var _symbol = require('babel-runtime/core-js/symbol');
var _symbol2 = _interopRequireDefault(_symbol);
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; // copied from https://github.com/taion/graphql-type-json
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _graphql = require('graphql');
var _language = require('graphql/language');
function identity(value) {
return value;
}
function parseLiteral(ast) {
switch (ast.kind) {
case _language.Kind.STRING:
case _language.Kind.BOOLEAN:
return ast.value;
case _language.Kind.INT:
case _language.Kind.FLOAT:
return parseFloat(ast.value);
case _language.Kind.OBJECT:
{
var _ret = function () {
var value = (0, _create2.default)(null);
ast.fields.forEach(function (field) {
value[field.name.value] = parseLiteral(field.value);
});
return {
v: value
};
}();
if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
}
case _language.Kind.LIST:
return ast.values.map(parseLiteral);
default:
return null;
}
}
exports.default = new _graphql.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
});