UNPKG

fp-ts-std

Version:

The missing pseudo-standard library for fp-ts.

37 lines (36 loc) 1.44 kB
import * as E from "fp-ts/Either"; import * as Eq_ from "fp-ts/Eq"; import * as O from "fp-ts/Option"; import { constant, flow, identity } from "fp-ts/function"; import * as Str from "fp-ts/string"; import { isInstanceOf } from "./Function"; import * as Params from "./URLSearchParams"; const constructor = (x) => new URL(x); export const clone = constructor; export const unsafeParse = constructor; export const parse = (f) => (x) => E.tryCatch(() => unsafeParse(x), e => f(e)); export const parseO = flow(parse(identity), O.fromEither); export const isURL = isInstanceOf(URL); export const isStringlyURL = flow(parseO, O.isSome); export const toString = (x) => x.toString(); export const getPathname = (x) => x.pathname; export const modifyPathname = (f) => flow(clone, x => { x.pathname = f(x.pathname); return x; }); export const setPathname = flow(constant, modifyPathname); export const getParams = (x) => x.searchParams; export const modifyParams = (f) => flow(clone, x => { x.search = Params.toString(f(x.searchParams)); return x; }); export const setParams = flow(constant, modifyParams); export const getHash = (x) => x.hash; export const modifyHash = (f) => flow(clone, x => { x.hash = f(x.hash); return x; }); export const setHash = flow(constant, modifyHash); export const getOrigin = (x) => x.origin; export const getHostname = (x) => x.hostname; export const Eq = Eq_.contramap(toString)(Str.Eq);