@cran/gql.core
Version:
Cran/GraphQL Core Utilities
48 lines (47 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TstzScalar = exports.DateScalar = void 0;
const createScalar_1 = require("../utilities/createScalar");
const allowed = {
epoch: true,
infinity: true,
"-infinity": true,
now: true,
today: true,
tomorrow: true,
yesterday: true,
};
function asDate(value, 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")}`;
}
exports.DateScalar = (0, createScalar_1.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
);
function asTstz(value, invalid) {
const date = new Date(value);
if (isNaN(date.valueOf())) {
return invalid();
}
return date.toISOString();
}
exports.TstzScalar = (0, createScalar_1.createScalar)("tstz", "times of day only, with time zone", {
string(value, invalid) {
if (allowed[value.toLowerCase()]) {
return value;
}
return asTstz(value, invalid);
},
number: asTstz,
});