fp-ts-std
Version:
The missing pseudo-standard library for fp-ts.
37 lines (36 loc) • 1.44 kB
JavaScript
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);