Files
talk/graph/resolvers/cursor.js
T
2018-01-11 20:00:34 -07:00

35 lines
753 B
JavaScript

const GraphQLScalarType = require('graphql').GraphQLScalarType;
const Kind = require('graphql/language').Kind;
module.exports = new GraphQLScalarType({
name: 'Cursor',
description: 'Cursor represents a paginating cursor.',
serialize(value) {
if (value instanceof Date) {
return value.toISOString();
}
return value;
},
parseValue(value) {
if (typeof value === 'string') {
return new Date(value);
}
return value;
},
parseLiteral(ast) {
switch (ast.kind) {
case Kind.STRING:
// This handles an empty string.
if (ast.value && ast.value.length === 0) {
return null;
}
return new Date(ast.value);
default:
return ast.value;
}
},
});