// Generated by purs version 0.13.6 "use strict"; var $foreign = require("./foreign.js"); var Control_Applicative = require("../Control.Applicative/index.js"); var Control_Apply = require("../Control.Apply/index.js"); var Control_Bind = require("../Control.Bind/index.js"); var Control_Monad = require("../Control.Monad/index.js"); var Control_Monad_Error_Class = require("../Control.Monad.Error.Class/index.js"); var Control_Parallel = require("../Control.Parallel/index.js"); var Control_Parallel_Class = require("../Control.Parallel.Class/index.js"); var Data_Either = require("../Data.Either/index.js"); var Data_Foldable = require("../Data.Foldable/index.js"); var Data_Function = require("../Data.Function/index.js"); var Data_Functor = require("../Data.Functor/index.js"); var Data_Monoid = require("../Data.Monoid/index.js"); var Data_Semigroup = require("../Data.Semigroup/index.js"); var Data_Unit = require("../Data.Unit/index.js"); var Effect = require("../Effect/index.js"); var Effect_Class = require("../Effect.Class/index.js"); var Partial_Unsafe = require("../Partial.Unsafe/index.js"); var Unsafe_Coerce = require("../Unsafe.Coerce/index.js"); var Fiber = function (x) { return x; }; var FFIUtil = function (x) { return x; }; var Canceler = function (x) { return x; }; var functorParAff = new Data_Functor.Functor($foreign["_parAffMap"]); var functorAff = new Data_Functor.Functor($foreign["_map"]); var ffiUtil = (function () { var unsafeFromRight = function (v) { if (v instanceof Data_Either.Right) { return v.value0; }; if (v instanceof Data_Either.Left) { return Partial_Unsafe.unsafeCrashWith("unsafeFromRight: Left"); }; throw new Error("Failed pattern match at Effect.Aff (line 400, column 21 - line 402, column 54): " + [ v.constructor.name ]); }; var unsafeFromLeft = function (v) { if (v instanceof Data_Either.Left) { return v.value0; }; if (v instanceof Data_Either.Right) { return Partial_Unsafe.unsafeCrashWith("unsafeFromLeft: Right"); }; throw new Error("Failed pattern match at Effect.Aff (line 395, column 20 - line 397, column 54): " + [ v.constructor.name ]); }; var isLeft = function (v) { if (v instanceof Data_Either.Left) { return true; }; if (v instanceof Data_Either.Right) { return false; }; throw new Error("Failed pattern match at Effect.Aff (line 390, column 12 - line 392, column 20): " + [ v.constructor.name ]); }; return { isLeft: isLeft, fromLeft: unsafeFromLeft, fromRight: unsafeFromRight, left: Data_Either.Left.create, right: Data_Either.Right.create }; })(); var makeFiber = function (aff) { return $foreign["_makeFiber"](ffiUtil, aff); }; var launchAff = function (aff) { return function __do() { var fiber = makeFiber(aff)(); return Control_Bind.discard(Control_Bind.discardUnit)(Effect.bindEffect)(fiber.run)(function ($dollar__unused) { return Control_Applicative.pure(Effect.applicativeEffect)(fiber); })(); }; }; var launchAff_ = (function () { var $319 = Data_Functor["void"](Effect.functorEffect); return function ($320) { return $319(launchAff($320)); }; })(); var applyParAff = new Control_Apply.Apply(function ($dollar__unused) { return functorParAff; }, $foreign["_parAffApply"]); var monadAff = new Control_Monad.Monad(function ($dollar__unused) { return applicativeAff; }, function ($dollar__unused) { return bindAff; }); var bindAff = new Control_Bind.Bind(function ($dollar__unused) { return applyAff; }, $foreign["_bind"]); var applyAff = new Control_Apply.Apply(function ($dollar__unused) { return functorAff; }, Control_Monad.ap(monadAff)); var applicativeAff = new Control_Applicative.Applicative(function ($dollar__unused) { return applyAff; }, $foreign["_pure"]); var monadEffectAff = new Effect_Class.MonadEffect(function ($dollar__unused) { return monadAff; }, $foreign["_liftEffect"]); var effectCanceler = (function () { var $321 = Effect_Class.liftEffect(monadEffectAff); return function ($322) { return Canceler(Data_Function["const"]($321($322))); }; })(); var killFiber = function (e) { return function (v) { return Control_Bind.bind(bindAff)(Effect_Class.liftEffect(monadEffectAff)(v.isSuspended))(function (v1) { if (v1) { return Effect_Class.liftEffect(monadEffectAff)(Data_Functor["void"](Effect.functorEffect)(v.kill(e, Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))))); }; return $foreign.makeAff(function (k) { return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.kill(e, k)); }); }); }; }; var monadThrowAff = new Control_Monad_Error_Class.MonadThrow(function ($dollar__unused) { return monadAff; }, $foreign["_throwError"]); var monadErrorAff = new Control_Monad_Error_Class.MonadError(function ($dollar__unused) { return monadThrowAff; }, $foreign["_catchError"]); var attempt = Control_Monad_Error_Class["try"](monadErrorAff); var runAff = function (k) { return function (aff) { return launchAff(Control_Bind.bindFlipped(bindAff)((function () { var $323 = Effect_Class.liftEffect(monadEffectAff); return function ($324) { return $323(k($324)); }; })())(Control_Monad_Error_Class["try"](monadErrorAff)(aff))); }; }; var parallelAff = new Control_Parallel_Class.Parallel(function ($dollar__unused) { return applicativeParAff; }, function ($dollar__unused) { return monadAff; }, Unsafe_Coerce.unsafeCoerce, $foreign["_sequential"]); var applicativeParAff = new Control_Applicative.Applicative(function ($dollar__unused) { return applyParAff; }, (function () { var $325 = Control_Parallel_Class.parallel(parallelAff); var $326 = Control_Applicative.pure(applicativeAff); return function ($327) { return $325($326($327)); }; })()); var semigroupCanceler = new Data_Semigroup.Semigroup(function (v) { return function (v1) { return function (err) { return Control_Parallel.parSequence_(parallelAff)(Data_Foldable.foldableArray)([ v(err), v1(err) ]); }; }; }); var nonCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(Data_Unit.unit)); var monoidCanceler = new Data_Monoid.Monoid(function ($dollar__unused) { return semigroupCanceler; }, nonCanceler); module.exports = { Canceler: Canceler, launchAff: launchAff, launchAff_: launchAff_, runAff: runAff, attempt: attempt, killFiber: killFiber, nonCanceler: nonCanceler, effectCanceler: effectCanceler, functorAff: functorAff, applyAff: applyAff, applicativeAff: applicativeAff, bindAff: bindAff, monadAff: monadAff, monadThrowAff: monadThrowAff, monadErrorAff: monadErrorAff, monadEffectAff: monadEffectAff, functorParAff: functorParAff, applyParAff: applyParAff, applicativeParAff: applicativeParAff, parallelAff: parallelAff, semigroupCanceler: semigroupCanceler, monoidCanceler: monoidCanceler, makeAff: $foreign.makeAff };