UNPKG

@cran/lib.gql.core

Version:

GQL Core Functionality

39 lines (31 loc) 821 B
import { createScalar } from "../utilities"; const allowed: Record<string, true> = { epoch : true, infinity : true, "-infinity": true, now : true, today : true, tomorrow : true, yesterday : true, }; function asDate ( value: number | string, invalid: createScalar.Invalid ) { const date = new Date(value); if (isNaN(date.valueOf())) { invalid(); } return `${ date.getUTCFullYear() }-${ date.getUTCMonth().toString().padStart(2, "0") }-${ date.getDate().toString().padStart(2, "0") }`; } export const DateScalar = createScalar( "date", "date (no time of day)", { string ( value, invalid ) { if (allowed[value.toLowerCase()]) { return value; } return asDate(value, invalid); }, number: asDate, } // serialized as YYYY-MM-DD );