UNPKG

ontotext-platform-custom-scalars

Version:
76 lines (59 loc) 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _graphql = require("graphql"); var _Utilities = require("../Utilities"); var _moment = _interopRequireDefault(require("moment")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var RFC_3339_REGEX = /^(-?\d{4,6}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]))$/; var DATE_FORMAT = "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"; function validateDate(date) { if (!RFC_3339_REGEX.test(date)) { throw new _graphql.GraphQLError("Invalid value for 'Date' - '".concat(date, "'")); } } function parseAndFormat(value) { var date = (0, _moment["default"])(value); return "".concat(date.format("Y"), "-").concat(date.format("MM"), "-").concat(date.format("DD")); } /** * Defines custom GraphQLScalarType for RFC-3339 compliant Full Date values. */ var _default = new _graphql.GraphQLScalarType({ name: "Date", description: "An RFC-3339 compliant Full Date Scalar", serialize: function serialize(value) { if (value instanceof Date) { return parseAndFormat(value); } else if (typeof value === 'string' || value instanceof String) { if (RFC_3339_REGEX.test(value)) { return value; } if (!isNaN(Date.parse(value))) { return parseAndFormat(value); } } throw new _graphql.GraphQLError("Expected '".concat(this.name, "' value, but got '").concat(JSON.stringify(value), "'.")); }, parseValue: function parseValue(value) { if (typeof value === 'string' || value instanceof String) { validateDate(value); if (!isNaN(Date.parse(value))) { return (0, _moment["default"])(value).format(DATE_FORMAT); } } throw new _graphql.GraphQLError("Expected value in '".concat(this.name, "' format, but got '").concat(JSON.stringify(value), "'.")); }, parseLiteral: function parseLiteral(node) { var type = node.kind; if (type !== _graphql.Kind.STRING) { (0, _Utilities.throwConversionError)(type, this.name); } var dateStr = node.value; validateDate(dateStr); return (0, _moment["default"])(dateStr).format(DATE_FORMAT); } }); exports["default"] = _default;