UNPKG

@freeword/meta

Version:

Meta package for Freeword: exports all core types, constants, and utilities from the src/ directory.

81 lines 4.23 kB
import { DateTime, Duration } from 'luxon'; import { obj, num, jsdate, custom, bareint } from "../checks/BootChecks.js"; import * as CO from "./internal.js"; export { timestamp, timecode } from "./PrimshapeChecks.js"; // *********************************************************************** // // Time Types // // // Note that there are 1000 milliseconds and 1024 bits ; it is a nanosecond timestamp // // *********************************************************************** // // Time Types // export function isDuration(val) { return val instanceof Duration; } export const isodur_str = CO.trimmed.max(CO.ISODUR.max).regex(CO.ISODUR.re, CO.ISODUR.msg); export const duration = custom(isDuration, 'ISO Duration'); export const duration2obj = duration.transform((dur) => dur.toObject()); export const duration2str = duration.transform((dur) => dur.toISO()); export const isodur = isodur_str.or(duration); export const isotime = CO.trimmed.max(CO.ISO.max).regex(CO.ISO.re, CO.ISO.msg); export const isodate = CO.trimmed.max(CO.ISO.max).regex(CO.ISO_YMD.re, CO.ISO_YMD.msg); export const iso = isotime; export const isonearfut = CO.trimmed.max(CO.ISO_NEARFUT.max).regex(CO.ISO_NEARFUT.re, CO.ISO_NEARFUT.msg); export const isonowish = CO.trimmed.max(CO.ISO_NOWISH.max).regex(CO.ISO_NOWISH.re, CO.ISO_NOWISH.msg); export const isoymdhms = CO.trimmed.max(CO.ISO_YMDHMS.max).regex(CO.ISO_YMDHMS.re, CO.ISO_YMDHMS.msg); export const isoymd = CO.trimmed.max(CO.ISO_YMD.max).regex(CO.ISO_YMD.re, CO.ISO_YMD.msg); export const neartc = CO.lower.length(CO.NEARTC.len).regex(CO.NEARTC.re, { message: CO.NEARTC.msg }).describe('Near Timecode'); export const nearfuttc = CO.lower.length(CO.NEARFUTTC.len).regex(CO.NEARFUTTC.re, { message: CO.NEARFUTTC.msg }).describe('Near Future Timecode'); export const nearts = num.int().gte(CO.NEARTS.min, CO.NEARTS.min_msg).lte(CO.NEARTS.max, CO.NEARTS.max_msg).describe('Near Timestamp'); export const nearfutts = num.int().gte(CO.NEARFUTTS.min, CO.NEARFUTTS.min_msg).lte(CO.NEARFUTTS.max, CO.NEARFUTTS.max_msg).describe('Near Future Timestamp'); export const nearpastts = num.int().gte(CO.NEARPASTTS.gt).lte(CO.NEARPASTTS.lt); export const monthnum = bareint.min(1).max(12); export const monthday = bareint.min(1).max(31); export const hrutc = bareint.min(0).max(23); export const minutc = bareint.min(0).max(59); export const secutc = bareint.min(0).max(59); // disallowing 60 (leap seconds) as most other systems will barf export const nearyear = bareint.min(2025).max(2050); // export function isLuxontime(val) { return (!!val?.isValid); } export const luxontime = custom(isLuxontime, 'Luxon Time'); export const loosetime = isotime.or(isodate).or(jsdate).or(luxontime).describe('dateish'); // export const timevals = obj({ ts: CO.timestamp, tc: CO.timecode, iso: isotime }); // export const crTC = CO.timecode; export const rqTC = CO.timecode; export const upTC = CO.timecode; export const expiresTC = CO.timecode; export const tkvTC = CO.timecode; export const refreshedTC = CO.timecode; export const crTS = CO.timestamp; export const rqTS = CO.timestamp; export const upTS = CO.timestamp; export const expiresTS = CO.timestamp; export const tkvTS = CO.timestamp; export const refreshedTS = CO.timestamp; export const crDT = loosetime; export const rqDT = loosetime; export const upDT = loosetime; export const expiresDT = loosetime; export const tkvDT = loosetime; export const refreshedDT = loosetime; export const crISO = iso; export const rqISO = iso; export const upISO = iso; export const expiresISO = iso; export const tkvISO = iso; export const refreshedISO = iso; // export const years = num.min(CO.YEARS.min).max(CO.YEARS.max); export const quarters = num.min(CO.QUARTERS.min).max(CO.QUARTERS.max); export const months = num.min(CO.MONTHS.min).max(CO.MONTHS.max); export const weeks = num.min(CO.WEEKS.min).max(CO.WEEKS.max); export const days = num.min(CO.DAYS.min).max(CO.DAYS.max); export const hours = num.min(CO.HOURS.min).max(CO.HOURS.max); export const minutes = num.min(CO.MINUTES.min).max(CO.MINUTES.max); export const seconds = num.min(CO.SECONDS.min).max(CO.SECONDS.max); export const millis = num.min(CO.MILLIS.min).max(CO.MILLIS.max); //# sourceMappingURL=TimePrims.js.map