fp-ts-std
Version:
The missing pseudo-standard library for fp-ts.
24 lines (23 loc) • 1.21 kB
JavaScript
import { now as nownum } from "fp-ts/Date";
import * as IO from "fp-ts/IO";
import { flow, pipe } from "fp-ts/function";
import { Field as fieldNumber, Ord as ordNumber } from "fp-ts/number";
import { getField, getOrd, iso } from "newtype-ts";
import { isValid as isValidNum } from "./Number";
import * as O from "fp-ts/Option";
import { construct, invokeOn, isInstanceOf } from "./Function";
import { pack, unpack } from "./Newtype";
export const unsafeParseDate = (x) => construct(Date)([x]);
export const ordMilliseconds = getOrd(ordNumber);
export const fieldMilliseconds = getField(fieldNumber);
export const isoMilliseconds = iso();
export const mkMilliseconds = pack;
export const unMilliseconds = unpack;
export const fromMilliseconds = flow(unMilliseconds, unsafeParseDate);
export const getTime = flow(invokeOn()("getTime")([]), mkMilliseconds);
export const toISOString = invokeOn()("toISOString")([]);
export const toUTCString = invokeOn()("toUTCString")([]);
export const isDate = isInstanceOf(Date);
export const isValid = flow(getTime, unMilliseconds, isValidNum);
export const parseDate = flow(unsafeParseDate, O.fromPredicate(isValid));
export const now = pipe(nownum, IO.map(mkMilliseconds));