UNPKG

bucklescript-tea

Version:
476 lines (450 loc) 17.9 kB
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); var Caml_obj = require("bs-platform/lib/js/caml_obj.js"); var Caml_option = require("bs-platform/lib/js/caml_option.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); function nothing(param) { return /* () */0; } function performOpt(toOptionalMessage, param) { var task = param[0]; return /* EnqueueCall */Block.__(2, [(function (callbacks) { return Curry._1(task, (function (param) { if (param.tag) { throw [ Caml_builtin_exceptions.failure, "ERROR: Task perfom returned error of never! Should not happen!" ]; } else { var match = Curry._1(toOptionalMessage, param[0]); if (match !== undefined) { return Curry._1(callbacks.contents.enqueue, Caml_option.valFromOption(match)); } else { return /* () */0; } } })); })]); } function perform(toMessage, task) { return performOpt((function (v) { return Caml_option.some(Curry._1(toMessage, v)); }), task); } function attemptOpt(resultToOptionalMessage, param) { var task = param[0]; return /* EnqueueCall */Block.__(2, [(function (callbacks) { return Curry._1(task, (function (value) { var match = Curry._1(resultToOptionalMessage, value); if (match !== undefined) { return Curry._1(callbacks.contents.enqueue, Caml_option.valFromOption(match)); } else { return /* () */0; } })); })]); } function attempt(resultToMessage, task) { return attemptOpt((function (v) { return Caml_option.some(Curry._1(resultToMessage, v)); }), task); } function ignore(task) { return attemptOpt((function (param) { return ; }), task); } function succeed(value) { return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; } function fail(value) { return /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [value])); })]; } function nativeBinding(func) { return /* Task */[func]; } function andThen(fn, param) { var task = param[0]; return /* Task */[(function (cb) { return Curry._1(task, (function (err) { if (err.tag) { return Curry._1(cb, err); } else { var match = Curry._1(fn, err[0]); return Curry._1(match[0], cb); } })); })]; } function onError(fn, param) { var task = param[0]; return /* Task */[(function (cb) { return Curry._1(task, (function (ok) { if (ok.tag) { var match = Curry._1(fn, ok[0]); return Curry._1(match[0], cb); } else { return Curry._1(cb, ok); } })); })]; } function fromResult(param) { if (param.tag) { var value = param[0]; return /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [value])); })]; } else { var value$1 = param[0]; return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value$1])); })]; } } function mapError(func, task) { return onError((function (e) { var value = Curry._1(func, e); return /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [value])); })]; }), task); } function toOption(task) { return onError((function (param) { return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [undefined])); })]; }), andThen((function (v) { var value = Caml_option.some(v); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), task)); } function map(func, task1) { return andThen((function (v1) { var value = Curry._1(func, v1); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), task1); } function map2(func, task1, task2) { return andThen((function (v1) { return andThen((function (v2) { var value = Curry._2(func, v1, v2); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), task2); }), task1); } function map3(func, task1, task2, task3) { return andThen((function (v1) { return andThen((function (v2) { return andThen((function (v3) { var value = Curry._3(func, v1, v2, v3); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), task3); }), task2); }), task1); } function map4(func, task1, task2, task3, task4) { return andThen((function (v1) { return andThen((function (v2) { return andThen((function (v3) { return andThen((function (v4) { var value = Curry._4(func, v1, v2, v3, v4); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), task4); }), task3); }), task2); }), task1); } function map5(func, task1, task2, task3, task4, task5) { return andThen((function (v1) { return andThen((function (v2) { return andThen((function (v3) { return andThen((function (v4) { return andThen((function (v5) { var value = Curry._5(func, v1, v2, v3, v4, v5); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), task5); }), task4); }), task3); }), task2); }), task1); } function map6(func, task1, task2, task3, task4, task5, task6) { return andThen((function (v1) { return andThen((function (v2) { return andThen((function (v3) { return andThen((function (v4) { return andThen((function (v5) { return andThen((function (v6) { var value = Curry._6(func, v1, v2, v3, v4, v5, v6); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), task6); }), task5); }), task4); }), task3); }), task2); }), task1); } function sequence(param) { if (param) { return map2((function (l, r) { return /* :: */[ l, r ]; }), param[0], sequence(param[1])); } else { return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [/* [] */0])); })]; } } var testing_deop = { contents: true }; function testing(param) { var doTest = function (expected, param) { return Curry._1(param[0], (function (v) { if (Caml_obj.caml_equal(v, expected)) { console.log(/* tuple */[ "Passed:", expected, v ]); return /* () */0; } else { console.log(/* tuple */[ "FAILED:", expected, v ]); return /* () */0; } })); }; var s = /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [42])); })]; doTest(/* Ok */Block.__(0, [42]), s); var f = /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [86])); })]; doTest(/* Error */Block.__(1, [86]), f); var r = function (param) { if (testing_deop.contents) { return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [42])); })]; } else { return /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [3.14])); })]; } }; var a1 = andThen((function (n) { var value = n + 2 | 0; return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [2])); })]); doTest(/* Ok */Block.__(0, [4]), a1); var a2 = andThen((function (n) { var value = String(n); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [2])); })]); doTest(/* Ok */Block.__(0, ["2"]), a2); var m1 = map((function (prim) { return Math.sqrt(prim); }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [9])); })]); doTest(/* Ok */Block.__(0, [3]), m1); var m2 = map2((function (prim, prim$1) { return prim + prim$1 | 0; }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [9])); })], /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [3])); })]); doTest(/* Ok */Block.__(0, [12]), m2); var m3 = map((function (prim) { return String(prim); }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [9])); })]); doTest(/* Ok */Block.__(0, ["9"]), m3); var s0 = sequence(/* :: */[ /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [1])); })], /* :: */[ /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [2])); })], /* [] */0 ] ]); doTest(/* Ok */Block.__(0, [/* :: */[ 1, /* :: */[ 2, /* [] */0 ] ]]), s0); var s1 = sequence(/* :: */[ /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [1])); })], /* :: */[ /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [2.7])); })], /* :: */[ r(/* () */0), /* [] */0 ] ] ]); doTest(/* Error */Block.__(1, [2.7]), s1); var e0 = onError((function (_msg) { return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [42])); })]; }), /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, ["file not found"])); })]); doTest(/* Ok */Block.__(0, [42]), e0); var e1 = onError((function (_msg) { return /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [42])); })]; }), /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, ["file not found"])); })]); doTest(/* Error */Block.__(1, [42]), e1); var n0 = sequence(/* :: */[ mapError((function (prim) { return String(prim); }), /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [42])); })]), /* :: */[ mapError((function (prim) { return prim.toString(); }), /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [3.14])); })]), /* [] */0 ] ]); doTest(/* Error */Block.__(1, ["42"]), n0); var n1 = sequence(/* :: */[ mapError((function (prim) { return String(prim); }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [1])); })]), /* :: */[ mapError((function (prim) { return prim.toString(); }), /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [3.14])); })]), /* [] */0 ] ]); doTest(/* Error */Block.__(1, ["3.14"]), n1); var n2 = sequence(/* :: */[ mapError((function (prim) { return String(prim); }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [1])); })]), /* :: */[ mapError((function (prim) { return prim.toString(); }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [2])); })]), /* [] */0 ] ]); doTest(/* Ok */Block.__(0, [/* :: */[ 1, /* :: */[ 2, /* [] */0 ] ]]), n2); perform((function (param) { return 42; }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [18])); })]); var value = 42; doTest(/* Ok */Block.__(0, [42]), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]); var value$1 = "failure"; doTest(/* Error */Block.__(1, ["failure"]), /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [value$1])); })]); doTest(/* Ok */Block.__(0, [undefined]), toOption(/* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, ["for some reason"])); })])); doTest(/* Ok */Block.__(0, [42]), toOption(/* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [42])); })])); return /* () */0; } exports.nothing = nothing; exports.performOpt = performOpt; exports.perform = perform; exports.attemptOpt = attemptOpt; exports.attempt = attempt; exports.ignore = ignore; exports.succeed = succeed; exports.fail = fail; exports.nativeBinding = nativeBinding; exports.andThen = andThen; exports.onError = onError; exports.fromResult = fromResult; exports.mapError = mapError; exports.toOption = toOption; exports.map = map; exports.map2 = map2; exports.map3 = map3; exports.map4 = map4; exports.map5 = map5; exports.map6 = map6; exports.sequence = sequence; exports.testing_deop = testing_deop; exports.testing = testing; /* No side effect */