chore: removed IO functor

This commit is contained in:
Roberto Tonino 2021-05-11 20:31:21 +02:00
parent 9fc36abf06
commit a6fe1bff19
3 changed files with 3 additions and 45 deletions

View File

@ -1,38 +0,0 @@
import { compose } from 'ramda'
// https://mostly-adequate.gitbook.io/mostly-adequate-guide/appendix_b#io
export class IO {
public unsafePerformIO: any
constructor(fn: any) {
this.unsafePerformIO = fn
}
// [util.inspect.custom]() {
// return 'IO(?)';
// }
// ----- Pointed IO
static of(x: any) {
return new IO(() => x)
}
// ----- Functor IO
map(fn: any) {
return new IO(compose(fn, this.unsafePerformIO))
}
// ----- Applicative IO
ap(f: any) {
return this.chain((fn: any) => f.map(fn))
}
// ----- Monad IO
chain(fn: any) {
return this.map(fn).join()
}
join() {
return new IO(() => this.unsafePerformIO().unsafePerformIO())
}
}

View File

@ -1,12 +1,8 @@
import { compose, concat, map } from 'ramda' import { concat } from 'ramda'
import { IO } from '../functors/IO'
export const consoleErrorIo = IO.of(console.error)
const prependDeemix = concat('[deemix-server]: ') const prependDeemix = concat('[deemix-server]: ')
export const consoleError = (errorText: string) => export const consoleError = (errorText: string) => console.error(prependDeemix(errorText))
map((fn: any) => compose(fn, prependDeemix)(errorText), consoleErrorIo)
export class BadRequestError extends Error { export class BadRequestError extends Error {
constructor() { constructor() {

View File

@ -33,7 +33,7 @@ const handler: RequestHandler<{}, {}, {}, RawChartTracksQuery> = async (req, res
next() next()
} catch (error) { } catch (error) {
if (isBadRequestError(error)) { if (isBadRequestError(error)) {
consoleError(error.message).unsafePerformIO() consoleError(error.message)
res.status(400).send() res.status(400).send()
return next() return next()
} }