fauna
Version:
A driver to query Fauna databases in browsers, Node.js, and other Javascript runtimes
39 lines (31 loc) • 1.14 kB
text/typescript
// Date and Time expressions
const yearpart = /(?:\d{4}|[\u2212-]\d{4,}|\+\d{5,})/;
const monthpart = /(?:0[1-9]|1[0-2])/;
const daypart = /(?:0[1-9]|[12]\d|3[01])/;
const hourpart = /(?:[01][0-9]|2[0-3])/;
const minsecpart = /(?:[0-5][0-9])/;
const decimalpart = /(?:\.\d+)/;
const datesplit = new RegExp(
`(${yearpart.source}-(${monthpart.source})-(${daypart.source}))`
);
const timesplit = new RegExp(
`(${hourpart.source}:${minsecpart.source}:${minsecpart.source}${decimalpart.source}?)`
);
const zonesplit = new RegExp(
`([zZ]|[+\u2212-]${hourpart.source}(?::?${minsecpart.source}|:${minsecpart.source}:${minsecpart.source}))`
);
/**
* Matches the subset of ISO8601 dates that Fauna can accept. Cannot include any
* time part
*/
export const plaindate = new RegExp(`^${datesplit.source}$`);
/**
* Matches a valid ISO8601 date and can have anything trailing after.
*/
export const startsWithPlaindate = new RegExp(`^${datesplit.source}`);
/**
* Matches the subset of ISO8601 times that Fauna can accept.
*/
export const datetime = new RegExp(
`^${datesplit.source}T${timesplit.source}${zonesplit.source}$`
);