UNPKG

@paroicms/server

Version:
31 lines 1.15 kB
import { GraphQLScalarType, Kind } from "graphql"; export const ScalarDateTime = new GraphQLScalarType({ name: "DateTime", description: "A custom scalar for ISO 8601 formatted date-time strings", serialize(value) { if (!(value instanceof Date)) { throw new TypeError(`DateTime.serialize: Value is not a Date object: ${value}`); } return value.toISOString(); }, parseValue(value) { if (typeof value !== "string" || !isValidISODate(value)) { throw new TypeError(`DateTime.parseValue: Invalid ISO 8601 date string: ${value}`); } return new Date(value); }, parseLiteral(ast) { if (ast.kind !== Kind.STRING) { throw new TypeError(`DateTime.parseLiteral: Invalid date type: ${ast.kind}`); } if (!isValidISODate(ast.value)) { throw new TypeError(`DateTime.parseLiteral: Invalid ISO 8601 date string: ${ast.value}`); } return new Date(ast.value); }, }); function isValidISODate(value) { const date = Date.parse(value); return !Number.isNaN(date); } //# sourceMappingURL=DateTime.js.map