import { compose, path, pathOr, prop, propOr, when, is, split } from './func' import { IEvent } from './events' const payloadOrEmptyObj = propOr({}, 'payload') export const payload =

(ev: IEvent) => payloadOrEmptyObj(ev) export const payloadProp = (_prop: string) => compose<[IEvent], string, T>(prop(_prop) as any, payloadOrEmptyObj) export const payloadPropOr = (prop: string, defaultVal: any) => compose(propOr(defaultVal, prop), payloadOrEmptyObj) export const payloadPath = (_path: Array | string) => compose<[IEvent], string, T>(path(when(is(String), split('.'))(_path)), payloadOrEmptyObj) export const payloadPathOr = (path: Array | string, defaultVal: any) => compose<[IEvent], string, T>( pathOr(defaultVal, when(is(String), split('.'))(path)), payloadOrEmptyObj, )