midas/task
Types
A task is an effect that returns a result. All errors in a task are snag Errors.
pub type Task(return, reason, key) =
effect.Effect(Result(return, reason), key)
Values
pub fn bundle(
m: String,
f: String,
) -> effect.Effect(Result(String, snag.Snag), a)
pub fn do(
eff: effect.Effect(Result(a, b), c),
next: fn(a) -> effect.Effect(Result(d, b), c),
) -> effect.Effect(Result(d, b), c)
Compose a task with a function that returns a task.
pub fn each(
items: List(a),
run: fn(a) -> effect.Effect(Result(b, c), d),
) -> effect.Effect(Result(List(b), c), d)
pub fn export_jwk(
key: a,
) -> effect.Effect(Result(json.Json, snag.Snag), a)
pub fn fetch(
request: request.Request(BitArray),
) -> effect.Effect(
Result(response.Response(BitArray), snag.Snag),
a,
)
pub fn generate_keypair(
algorithm: effect.KeyPairAlgorithm,
extractable: Bool,
usages: List(effect.KeyUsage),
) -> effect.Effect(Result(effect.KeyPair(a), snag.Snag), a)
pub fn hash(
algorithm: effect.HashAlgorithm,
bytes: BitArray,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn list(
file: String,
) -> effect.Effect(Result(List(String), snag.Snag), a)
pub fn log(
message: String,
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn proxy(
task: effect.Effect(a, b),
scheme: http.Scheme,
host: String,
port: option.Option(Int),
prefix: String,
) -> effect.Effect(a, b)
pub fn read(
file: String,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn sequential(
tasks: List(effect.Effect(Result(a, b), c)),
) -> effect.Effect(Result(List(a), b), c)
pub fn serve(
port: option.Option(Int),
handle: fn(request.Request(BitArray)) -> response.Response(
BitArray,
),
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn sign(
algorithm: effect.SignAlgorithm,
key: a,
data: BitArray,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn strong_random(
length: Int,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn try(
result: Result(a, b),
then: fn(a) -> effect.Effect(Result(c, b), d),
) -> effect.Effect(Result(c, b), d)
Work with results that are not effectful.
pub fn unix_now() -> effect.Effect(Result(Int, a), b)
pub fn visit(
message: uri.Uri,
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn write(
file: String,
bytes: BitArray,
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn zip(
message: List(#(String, BitArray)),
) -> effect.Effect(Result(BitArray, snag.Snag), a)