@cran/lib.gql.core
Version:
GQL Core Functionality
39 lines (31 loc) • 821 B
text/typescript
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
);