UNPKG

@explorable-viz/fluid

Version:

A functional programming language which integrates a bidirectional dynamic analysis, connecting outputs to data sources in a fine-grained way. Fluid is implemented in PureScript and runs in the browser.

1,866 lines (1,820 loc) 962 kB
#!/usr/bin/env node // output-es/runtime.js function binding(init4) { let state = 0; let value; return () => { if (state === 2) { return value; } if (state === 1) { throw new Error("Binding demanded before initialized"); } state = 1; value = init4(); state = 2; return value; }; } function fail() { throw new Error("Failed pattern match"); } function intDiv(x, y) { if (y > 0) return Math.floor(x / y); if (y < 0) return -Math.floor(x / -y); return 0; } // output-es/Control.Monad.Reader.Trans/index.js var withReaderT = (f) => (v) => (x) => v(f(x)); var bindReaderT = (dictBind) => { const $0 = dictBind.Apply0(); const $1 = $0.Functor0(); const applyReaderT1 = /* @__PURE__ */ (() => { const functorReaderT1 = { map: (x) => { const $2 = $1.map(x); return (v) => (x$1) => $2(v(x$1)); } }; return { apply: (v) => (v1) => (r) => $0.apply(v(r))(v1(r)), Functor0: () => functorReaderT1 }; })(); return { bind: (v) => (k) => (r) => dictBind.bind(v(r))((a) => k(a)(r)), Apply0: () => applyReaderT1 }; }; var monadReaderT = (dictMonad) => { const $0 = dictMonad.Applicative0(); const $1 = $0.Apply0(); const applicativeReaderT1 = (() => { const $2 = $1.Functor0(); const functorReaderT1 = { map: (x) => { const $3 = $2.map(x); return (v) => (x$1) => $3(v(x$1)); } }; const applyReaderT1 = { apply: (v) => (v1) => (r) => $1.apply(v(r))(v1(r)), Functor0: () => functorReaderT1 }; return { pure: (x) => { const $3 = $0.pure(x); return (v) => $3; }, Apply0: () => applyReaderT1 }; })(); const bindReaderT1 = bindReaderT(dictMonad.Bind1()); return { Applicative0: () => applicativeReaderT1, Bind1: () => bindReaderT1 }; }; var monadReaderReaderT = (dictMonad) => { const monadReaderT12 = monadReaderT(dictMonad); const monadAskReaderT1 = { ask: dictMonad.Applicative0().pure, Monad0: () => monadReaderT12 }; return { local: withReaderT, MonadAsk0: () => monadAskReaderT1 }; }; var monadEffectReader = (dictMonadEffect) => { const monadReaderT12 = monadReaderT(dictMonadEffect.Monad0()); return { liftEffect: (x) => { const $0 = dictMonadEffect.liftEffect(x); return (v) => $0; }, Monad0: () => monadReaderT12 }; }; var monadThrowReaderT = (dictMonadThrow) => { const monadReaderT12 = monadReaderT(dictMonadThrow.Monad0()); return { throwError: (x) => { const $0 = dictMonadThrow.throwError(x); return (v) => $0; }, Monad0: () => monadReaderT12 }; }; var monadErrorReaderT = (dictMonadError) => { const monadThrowReaderT1 = monadThrowReaderT(dictMonadError.MonadThrow0()); return { catchError: (v) => (h) => (r) => dictMonadError.catchError(v(r))((e) => h(e)(r)), MonadThrow0: () => monadThrowReaderT1 }; }; // output-es/Data.Function/index.js var $$const = (a) => (v) => a; var applyFlipped = (x) => (f) => f(x); // output-es/Control.Semigroupoid/index.js var semigroupoidFn = { compose: (f) => (g) => (x) => f(g(x)) }; // output-es/Type.Proxy/index.js var $$$Proxy = () => ({ tag: "Proxy" }); var $$Proxy = /* @__PURE__ */ $$$Proxy(); // output-es/Data.Functor/foreign.js var arrayMap = function(f) { return function(arr) { var l = arr.length; var result = new Array(l); for (var i = 0; i < l; i++) { result[i] = f(arr[i]); } return result; }; }; // output-es/Data.Functor/index.js var functorArray = { map: arrayMap }; // output-es/Control.Apply/foreign.js var arrayApply = function(fs) { return function(xs) { var l = fs.length; var k = xs.length; var result = new Array(l * k); var n = 0; for (var i = 0; i < l; i++) { var f = fs[i]; for (var j = 0; j < k; j++) { result[n++] = f(xs[j]); } } return result; }; }; // output-es/Control.Apply/index.js var identity = (x) => x; // output-es/Control.Bind/foreign.js var arrayBind = function(arr) { return function(f) { var result = []; for (var i = 0, l = arr.length; i < l; i++) { Array.prototype.push.apply(result, f(arr[i])); } return result; }; }; // output-es/Control.Bind/index.js var identity2 = (x) => x; // output-es/Data.Show/foreign.js var showIntImpl = function(n) { return n.toString(); }; var showNumberImpl = function(n) { var str = n.toString(); return isNaN(str + ".0") ? str : str + ".0"; }; var showCharImpl = function(c) { var code = c.charCodeAt(0); if (code < 32 || code === 127) { switch (c) { case "\x07": return "'\\a'"; case "\b": return "'\\b'"; case "\f": return "'\\f'"; case "\n": return "'\\n'"; case "\r": return "'\\r'"; case " ": return "'\\t'"; case "\v": return "'\\v'"; } return "'\\" + code.toString(10) + "'"; } return c === "'" || c === "\\" ? "'\\" + c + "'" : "'" + c + "'"; }; var showStringImpl = function(s) { var l = s.length; return '"' + s.replace( /[\0-\x1F\x7F"\\]/g, // eslint-disable-line no-control-regex function(c, i) { switch (c) { case '"': case "\\": return "\\" + c; case "\x07": return "\\a"; case "\b": return "\\b"; case "\f": return "\\f"; case "\n": return "\\n"; case "\r": return "\\r"; case " ": return "\\t"; case "\v": return "\\v"; } var k = i + 1; var empty2 = k < l && s[k] >= "0" && s[k] <= "9" ? "\\&" : ""; return "\\" + c.charCodeAt(0).toString(10) + empty2; } ) + '"'; }; var showArrayImpl = function(f) { return function(xs) { var ss = []; for (var i = 0, l = xs.length; i < l; i++) { ss[i] = f(xs[i]); } return "[" + ss.join(",") + "]"; }; }; // output-es/Data.Show/index.js var showUnit = { show: (v) => "unit" }; var showString = { show: showStringImpl }; var showInt = { show: showIntImpl }; // output-es/Data.Generic.Rep/index.js var $NoArguments = () => ({ tag: "NoArguments" }); var $Product = (_1, _2) => ({ tag: "Product", _1, _2 }); var $Sum = (tag, _1) => ({ tag, _1 }); var NoArguments = /* @__PURE__ */ $NoArguments(); // output-es/Data.Ordering/index.js var $Ordering = (tag) => tag; var LT = /* @__PURE__ */ $Ordering("LT"); var GT = /* @__PURE__ */ $Ordering("GT"); var EQ = /* @__PURE__ */ $Ordering("EQ"); // output-es/Data.Maybe/index.js var $Maybe = (tag, _1) => ({ tag, _1 }); var Nothing = /* @__PURE__ */ $Maybe("Nothing"); var Just = (value0) => $Maybe("Just", value0); var isNothing = (v2) => { if (v2.tag === "Nothing") { return true; } if (v2.tag === "Just") { return false; } fail(); }; var functorMaybe = { map: (v) => (v1) => { if (v1.tag === "Just") { return $Maybe("Just", v(v1._1)); } return Nothing; } }; var applyMaybe = { apply: (v) => (v1) => { if (v.tag === "Just") { if (v1.tag === "Just") { return $Maybe("Just", v._1(v1._1)); } return Nothing; } if (v.tag === "Nothing") { return Nothing; } fail(); }, Functor0: () => functorMaybe }; var applicativeMaybe = { pure: Just, Apply0: () => applyMaybe }; // output-es/Data.Either/index.js var $Either = (tag, _1) => ({ tag, _1 }); var Left = (value0) => $Either("Left", value0); var Right = (value0) => $Either("Right", value0); var functorEither = { map: (f) => (m) => { if (m.tag === "Left") { return $Either("Left", m._1); } if (m.tag === "Right") { return $Either("Right", f(m._1)); } fail(); } }; var choose = (dictAlt) => { const $0 = dictAlt.Functor0(); return (a) => (b) => dictAlt.alt($0.map(Left)(a))($0.map(Right)(b)); }; // output-es/Data.Identity/index.js var Identity = (x) => x; var functorIdentity = { map: (f) => (m) => f(m) }; var applyIdentity = { apply: (v) => (v1) => v(v1), Functor0: () => functorIdentity }; var bindIdentity = { bind: (v) => (f) => f(v), Apply0: () => applyIdentity }; var applicativeIdentity = { pure: Identity, Apply0: () => applyIdentity }; var monadIdentity = { Applicative0: () => applicativeIdentity, Bind1: () => bindIdentity }; // output-es/Effect/foreign.js var pureE = function(a) { return function() { return a; }; }; // output-es/Effect/index.js var applyEffect = { apply: (f) => (a) => () => { const f$p = f(); const a$p = a(); return applicativeEffect.pure(f$p(a$p))(); }, Functor0: () => functorEffect }; var applicativeEffect = { pure: pureE, Apply0: () => applyEffect }; var functorEffect = { map: (f) => (a) => () => { const a$p = a(); return f(a$p); } }; // output-es/Control.Monad.Rec.Class/index.js var $Step = (tag, _1) => ({ tag, _1 }); var Loop = (value0) => $Step("Loop", value0); var monadRecIdentity = { tailRecM: (f) => { const go = (go$a0$copy) => { let go$a0 = go$a0$copy, go$c = true, go$r; while (go$c) { const v = go$a0; if (v.tag === "Loop") { go$a0 = f(v._1); continue; } if (v.tag === "Done") { go$c = false; go$r = v._1; continue; } fail(); } return go$r; }; return (x) => go(f(x)); }, Monad0: () => monadIdentity }; // output-es/Control.Monad.ST.Internal/foreign.js var map_ = function(f) { return function(a) { return function() { return f(a()); }; }; }; var pure_ = function(a) { return function() { return a; }; }; var bind_ = function(a) { return function(f) { return function() { return f(a())(); }; }; }; // output-es/Control.Monad.ST.Internal/index.js var functorST = { map: map_ }; var monadST = { Applicative0: () => applicativeST, Bind1: () => bindST }; var bindST = { bind: bind_, Apply0: () => applyST }; var applyST = { apply: (f) => (a) => () => { const f$p = f(); const a$p = a(); return applicativeST.pure(f$p(a$p))(); }, Functor0: () => functorST }; var applicativeST = { pure: pure_, Apply0: () => applyST }; var monadRecST = { tailRecM: (f) => (a) => { const $0 = f(a); return () => { const $1 = $0(); let r = $1; while ((() => { const $22 = r; return $22.tag === "Loop"; })()) { const v = r; if (v.tag === "Loop") { const e = f(v._1)(); r = e; continue; } if (v.tag === "Done") { continue; } fail(); } const $2 = r; if ($2.tag === "Done") { return $2._1; } fail(); }; }, Monad0: () => monadST }; // output-es/Data.Array.ST.Iterator/index.js var $Iterator = (_1, _2) => ({ tag: "Iterator", _1, _2 }); var pushWhile = (p) => (iter) => (array) => () => { let $$break = false; const $0 = iter._2; while (/* @__PURE__ */ (() => { const $1 = $$break; return !$1; })()) { const i = $0.value; const mx = iter._1(i); if (mx.tag === "Just" && p(mx._1)) { array.push(mx._1); iter._2.value; const $1 = iter._2.value; iter._2.value = $1 + 1 | 0; continue; } $$break = true; } }; var iterate = (iter) => (f) => () => { let $$break = false; const $0 = iter._2; while (/* @__PURE__ */ (() => { const $1 = $$break; return !$1; })()) { const i = $0.value; const $1 = $0.value; $0.value = $1 + 1 | 0; const mx = iter._1(i); if (mx.tag === "Just") { f(mx._1)(); continue; } if (mx.tag === "Nothing") { $$break = true; continue; } fail(); } }; // output-es/Data.Maybe.First/index.js var semigroupFirst = { append: (v) => (v1) => { if (v.tag === "Just") { return v; } return v1; } }; var monoidFirst = { mempty: Nothing, Semigroup0: () => semigroupFirst }; // output-es/Data.Foldable/foreign.js var foldrArray = function(f) { return function(init4) { return function(xs) { var acc = init4; var len = xs.length; for (var i = len - 1; i >= 0; i--) { acc = f(xs[i])(acc); } return acc; }; }; }; var foldlArray = function(f) { return function(init4) { return function(xs) { var acc = init4; var len = xs.length; for (var i = 0; i < len; i++) { acc = f(acc)(xs[i]); } return acc; }; }; }; // output-es/Data.Foldable/index.js var identity3 = (x) => x; var monoidEndo = /* @__PURE__ */ (() => { const semigroupEndo1 = { append: (v) => (v1) => (x) => v(v1(x)) }; return { mempty: (x) => x, Semigroup0: () => semigroupEndo1 }; })(); var foldableTuple = { foldr: (f) => (z) => (v) => f(v._2)(z), foldl: (f) => (z) => (v) => f(z)(v._2), foldMap: (dictMonoid) => (f) => (v) => f(v._2) }; var foldableMaybe = { foldr: (v) => (v1) => (v2) => { if (v2.tag === "Nothing") { return v1; } if (v2.tag === "Just") { return v(v2._1)(v1); } fail(); }, foldl: (v) => (v1) => (v2) => { if (v2.tag === "Nothing") { return v1; } if (v2.tag === "Just") { return v(v1)(v2._1); } fail(); }, foldMap: (dictMonoid) => { const mempty4 = dictMonoid.mempty; return (v) => (v1) => { if (v1.tag === "Nothing") { return mempty4; } if (v1.tag === "Just") { return v(v1._1); } fail(); }; } }; var foldableArray = { foldr: foldrArray, foldl: foldlArray, foldMap: (dictMonoid) => { const mempty4 = dictMonoid.mempty; return (f) => foldableArray.foldr((x) => (acc) => dictMonoid.Semigroup0().append(f(x))(acc))(mempty4); } }; var foldrDefault = (dictFoldable) => { const foldMap22 = dictFoldable.foldMap(monoidEndo); return (c) => (u) => (xs) => foldMap22((x) => c(x))(xs)(u); }; var lookup = (dictFoldable) => { const foldMap22 = dictFoldable.foldMap(monoidFirst); return (dictEq) => (a) => foldMap22((v) => { if (dictEq.eq(a)(v._1)) { return $Maybe("Just", v._2); } return Nothing; }); }; // output-es/Data.Tuple/index.js var $Tuple = (_1, _2) => ({ tag: "Tuple", _1, _2 }); var Tuple = (value0) => (value1) => $Tuple(value0, value1); var swap = (v) => $Tuple(v._2, v._1); var snd = (v) => v._2; var functorTuple = { map: (f) => (m) => $Tuple(m._1, f(m._2)) }; var fst = (v) => v._1; // output-es/Data.FunctorWithIndex/foreign.js var mapWithIndexArray = function(f) { return function(xs) { var l = xs.length; var result = Array(l); for (var i = 0; i < l; i++) { result[i] = f(i)(xs[i]); } return result; }; }; // output-es/Data.Eq/foreign.js var refEq = function(r1) { return function(r2) { return r1 === r2; }; }; var eqIntImpl = refEq; var eqNumberImpl = refEq; var eqCharImpl = refEq; var eqStringImpl = refEq; // output-es/Data.Eq/index.js var eqUnit = { eq: (v) => (v1) => true }; var eqString = { eq: eqStringImpl }; var eqInt = { eq: eqIntImpl }; var eqChar = { eq: eqCharImpl }; // output-es/Data.Ord/foreign.js var unsafeCompareImpl = function(lt) { return function(eq2) { return function(gt) { return function(x) { return function(y) { return x < y ? lt : x === y ? eq2 : gt; }; }; }; }; }; var ordIntImpl = unsafeCompareImpl; var ordStringImpl = unsafeCompareImpl; var ordCharImpl = unsafeCompareImpl; // output-es/Data.Ord/index.js var ordString = { compare: /* @__PURE__ */ ordStringImpl(LT)(EQ)(GT), Eq0: () => eqString }; var ordInt = { compare: /* @__PURE__ */ ordIntImpl(LT)(EQ)(GT), Eq0: () => eqInt }; var ordChar = { compare: /* @__PURE__ */ ordCharImpl(LT)(EQ)(GT), Eq0: () => eqChar }; // output-es/Unsafe.Coerce/foreign.js var unsafeCoerce = function(x) { return x; }; // output-es/Data.Traversable/foreign.js var traverseArrayImpl = /* @__PURE__ */ (function() { function array1(a) { return [a]; } function array2(a) { return function(b) { return [a, b]; }; } function array3(a) { return function(b) { return function(c) { return [a, b, c]; }; }; } function concat22(xs) { return function(ys) { return xs.concat(ys); }; } return function(apply5) { return function(map2) { return function(pure3) { return function(f) { return function(array) { function go(bot, top) { switch (top - bot) { case 0: return pure3([]); case 1: return map2(array1)(f(array[bot])); case 2: return apply5(map2(array2)(f(array[bot])))(f(array[bot + 1])); case 3: return apply5(apply5(map2(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2])); default: var pivot = bot + Math.floor((top - bot) / 4) * 2; return apply5(map2(concat22)(go(bot, pivot)))(go(pivot, top)); } } return go(0, array.length); }; }; }; }; }; })(); // output-es/Data.Traversable/index.js var identity4 = (x) => x; var traversableTuple = { traverse: (dictApplicative) => (f) => (v) => dictApplicative.Apply0().Functor0().map(Tuple(v._1))(f(v._2)), sequence: (dictApplicative) => (v) => dictApplicative.Apply0().Functor0().map(Tuple(v._1))(v._2), Functor0: () => functorTuple, Foldable1: () => foldableTuple }; var traversableMaybe = { traverse: (dictApplicative) => (v) => (v1) => { if (v1.tag === "Nothing") { return dictApplicative.pure(Nothing); } if (v1.tag === "Just") { return dictApplicative.Apply0().Functor0().map(Just)(v(v1._1)); } fail(); }, sequence: (dictApplicative) => (v) => { if (v.tag === "Nothing") { return dictApplicative.pure(Nothing); } if (v.tag === "Just") { return dictApplicative.Apply0().Functor0().map(Just)(v._1); } fail(); }, Functor0: () => functorMaybe, Foldable1: () => foldableMaybe }; var traversableArray = { traverse: (dictApplicative) => { const Apply0 = dictApplicative.Apply0(); return traverseArrayImpl(Apply0.apply)(Apply0.Functor0().map)(dictApplicative.pure); }, sequence: (dictApplicative) => traversableArray.traverse(dictApplicative)(identity4), Functor0: () => functorArray, Foldable1: () => foldableArray }; // output-es/Data.Array/foreign.js var rangeImpl = function(start, end) { var step = start > end ? -1 : 1; var result = new Array(step * (end - start) + 1); var i = start, n = 0; while (i !== end) { result[n++] = i; i += step; } result[n] = i; return result; }; var replicateFill = function(count, value) { if (count < 1) { return []; } var result = new Array(count); return result.fill(value); }; var replicatePolyfill = function(count, value) { var result = []; var n = 0; for (var i = 0; i < count; i++) { result[n++] = value; } return result; }; var replicateImpl = typeof Array.prototype.fill === "function" ? replicateFill : replicatePolyfill; var fromFoldableImpl = /* @__PURE__ */ (function() { function Cons2(head, tail3) { this.head = head; this.tail = tail3; } var emptyList = {}; function curryCons(head) { return function(tail3) { return new Cons2(head, tail3); }; } function listToArray(list) { var result = []; var count = 0; var xs = list; while (xs !== emptyList) { result[count++] = xs.head; xs = xs.tail; } return result; } return function(foldr2, xs) { return listToArray(foldr2(curryCons)(emptyList)(xs)); }; })(); var unconsImpl = function(empty2, next, xs) { return xs.length === 0 ? empty2({}) : next(xs[0])(xs.slice(1)); }; var findIndexImpl = function(just, nothing, f, xs) { for (var i = 0, l = xs.length; i < l; i++) { if (f(xs[i])) return just(i); } return nothing; }; var _updateAt = function(just, nothing, i, a, l) { if (i < 0 || i >= l.length) return nothing; var l1 = l.slice(); l1[i] = a; return just(l1); }; var reverse = function(l) { return l.slice().reverse(); }; var concat = function(xss) { if (xss.length <= 1e4) { return Array.prototype.concat.apply([], xss); } var result = []; for (var i = 0, l = xss.length; i < l; i++) { var xs = xss[i]; for (var j = 0, m = xs.length; j < m; j++) { result.push(xs[j]); } } return result; }; var filterImpl = function(f, xs) { return xs.filter(f); }; var sortByImpl2 = /* @__PURE__ */ (function() { function mergeFromTo(compare, fromOrdering, xs1, xs2, from, to) { var mid; var i; var j; var k; var x; var y; var c; mid = from + (to - from >> 1); if (mid - from > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, from, mid); if (to - mid > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, mid, to); i = from; j = mid; k = from; while (i < mid && j < to) { x = xs2[i]; y = xs2[j]; c = fromOrdering(compare(x)(y)); if (c > 0) { xs1[k++] = y; ++j; } else { xs1[k++] = x; ++i; } } while (i < mid) { xs1[k++] = xs2[i++]; } while (j < to) { xs1[k++] = xs2[j++]; } } return function(compare, fromOrdering, xs) { var out; if (xs.length < 2) return xs; out = xs.slice(0); mergeFromTo(compare, fromOrdering, out, xs.slice(0), 0, xs.length); return out; }; })(); var sliceImpl = function(s, e, l) { return l.slice(s, e); }; // output-es/Data.Array/index.js var sortBy = (comp) => ($0) => sortByImpl2( comp, (v) => { if (v === "GT") { return 1; } if (v === "EQ") { return 0; } if (v === "LT") { return -1; } fail(); }, $0 ); var sortWith = (dictOrd) => (f) => sortBy((x) => (y) => dictOrd.compare(f(x))(f(y))); var unsnoc = (xs) => { if (xs.length === 0) { const $02 = xs.length - 1 | 0; return Nothing; } const $0 = xs.length - 1 | 0; if ($0 >= 0 && $0 < xs.length) { return $Maybe("Just", { init: sliceImpl(0, xs.length - 1 | 0, xs), last: xs[$0] }); } return Nothing; }; var groupBy = (op) => (xs) => { const result = []; const $0 = { value: 0 }; const iter = $Iterator( (v) => { if (v >= 0 && v < xs.length) { return $Maybe("Just", xs[v]); } return Nothing; }, $0 ); iterate(iter)((x) => () => { const sub1 = []; sub1.push(x); pushWhile(op(x))(iter)(sub1)(); result.push(sub1); })(); return result; }; var foldM = (dictMonad) => (f) => (b) => ($0) => unconsImpl((v) => dictMonad.Applicative0().pure(b), (a) => (as) => dictMonad.Bind1().bind(f(b)(a))((b$p) => foldM(dictMonad)(f)(b$p)(as)), $0); var elem = (dictEq) => (a) => (arr) => { const $0 = findIndexImpl(Just, Nothing, (v) => dictEq.eq(v)(a), arr); if ($0.tag === "Nothing") { return false; } if ($0.tag === "Just") { return true; } fail(); }; var drop = (n) => (xs) => { if (n < 1) { return xs; } return sliceImpl(n, xs.length, xs); }; var cons = (x) => (xs) => [x, ...xs]; var some = (dictAlternative) => (dictLazy) => (v) => dictAlternative.Applicative0().Apply0().apply(dictAlternative.Plus1().Alt0().Functor0().map(cons)(v))(dictLazy.defer((v1) => many(dictAlternative)(dictLazy)(v))); var many = (dictAlternative) => (dictLazy) => (v) => dictAlternative.Plus1().Alt0().alt(some(dictAlternative)(dictLazy)(v))(dictAlternative.Applicative0().pure([])); var concatMap = (b) => (a) => arrayBind(a)(b); var mapMaybe = (f) => concatMap((x) => { const $0 = f(x); if ($0.tag === "Nothing") { return []; } if ($0.tag === "Just") { return [$0._1]; } fail(); }); // output-es/Data.String.Unsafe/foreign.js var charAt = function(i) { return function(s) { if (i >= 0 && i < s.length) return s.charAt(i); throw new Error("Data.String.Unsafe.charAt: Invalid index."); }; }; // output-es/Data.String.CodeUnits/foreign.js var fromCharArray = function(a) { return a.join(""); }; var toCharArray = function(s) { return s.split(""); }; var singleton = function(c) { return c; }; var _charAt = function(just) { return function(nothing) { return function(i) { return function(s) { return i >= 0 && i < s.length ? just(s.charAt(i)) : nothing; }; }; }; }; var length2 = function(s) { return s.length; }; var _indexOf = function(just) { return function(nothing) { return function(x) { return function(s) { var i = s.indexOf(x); return i === -1 ? nothing : just(i); }; }; }; }; var take = function(n) { return function(s) { return s.substr(0, n); }; }; var drop2 = function(n) { return function(s) { return s.substring(n); }; }; var splitAt = function(i) { return function(s) { return { before: s.substring(0, i), after: s.substring(i) }; }; }; // output-es/Data.String.CodeUnits/index.js var stripPrefix = (v) => (str) => { const v1 = splitAt(length2(v))(str); if (v1.before === v) { return $Maybe("Just", v1.after); } return Nothing; }; var indexOf = /* @__PURE__ */ _indexOf(Just)(Nothing); var charAt2 = /* @__PURE__ */ _charAt(Just)(Nothing); // output-es/Data.String.Common/foreign.js var split = function(sep) { return function(s) { return s.split(sep); }; }; var joinWith = function(s) { return function(xs) { return xs.join(s); }; }; // output-es/Effect.Exception/foreign.js function showErrorImpl(err) { return err.stack || err.toString(); } function error(msg) { return new Error(msg); } function message(e) { return e.message; } function throwException(e) { return function() { throw e; }; } // output-es/Control.Monad.Error.Class/index.js var $$try = (dictMonadError) => { const Monad0 = dictMonadError.MonadThrow0().Monad0(); return (a) => dictMonadError.catchError(Monad0.Bind1().Apply0().Functor0().map(Right)(a))((x) => Monad0.Applicative0().pure($Either("Left", x))); }; // output-es/Partial/foreign.js var _crashWith = function(msg) { throw new Error(msg); }; // output-es/Effect.Aff/foreign.js var Aff = (function() { var EMPTY = {}; var PURE = "Pure"; var THROW = "Throw"; var CATCH = "Catch"; var SYNC = "Sync"; var ASYNC = "Async"; var BIND = "Bind"; var BRACKET = "Bracket"; var FORK = "Fork"; var SEQ = "Sequential"; var MAP = "Map"; var APPLY = "Apply"; var ALT = "Alt"; var CONS = "Cons"; var RESUME = "Resume"; var RELEASE = "Release"; var FINALIZER = "Finalizer"; var FINALIZED = "Finalized"; var FORKED = "Forked"; var FIBER = "Fiber"; var THUNK = "Thunk"; function Aff2(tag, _1, _2, _3) { this.tag = tag; this._1 = _1; this._2 = _2; this._3 = _3; } function AffCtr(tag) { var fn = function(_1, _2, _3) { return new Aff2(tag, _1, _2, _3); }; fn.tag = tag; return fn; } function nonCanceler2(error3) { return new Aff2(PURE, void 0); } function runEff(eff) { try { eff(); } catch (error3) { setTimeout(function() { throw error3; }, 0); } } function runSync(left, right, eff) { try { return right(eff()); } catch (error3) { return left(error3); } } function runAsync(left, eff, k) { try { return eff(k)(); } catch (error3) { k(left(error3))(); return nonCanceler2; } } var Scheduler = (function() { var limit = 1024; var size4 = 0; var ix = 0; var queue = new Array(limit); var draining = false; function drain() { var thunk; draining = true; while (size4 !== 0) { size4--; thunk = queue[ix]; queue[ix] = void 0; ix = (ix + 1) % limit; thunk(); } draining = false; } return { isDraining: function() { return draining; }, enqueue: function(cb) { var i, tmp; if (size4 === limit) { tmp = draining; drain(); draining = tmp; } queue[(ix + size4) % limit] = cb; size4++; if (!draining) { drain(); } } }; })(); function Supervisor(util2) { var fibers = {}; var fiberId = 0; var count = 0; return { register: function(fiber) { var fid = fiberId++; fiber.onComplete({ rethrow: true, handler: function(result) { return function() { count--; delete fibers[fid]; }; } })(); fibers[fid] = fiber; count++; }, isEmpty: function() { return count === 0; }, killAll: function(killError, cb) { return function() { if (count === 0) { return cb(); } var killCount = 0; var kills = {}; function kill(fid) { kills[fid] = fibers[fid].kill(killError, function(result) { return function() { delete kills[fid]; killCount--; if (util2.isLeft(result) && util2.fromLeft(result)) { setTimeout(function() { throw util2.fromLeft(result); }, 0); } if (killCount === 0) { cb(); } }; })(); } for (var k in fibers) { if (fibers.hasOwnProperty(k)) { killCount++; kill(k); } } fibers = {}; fiberId = 0; count = 0; return function(error3) { return new Aff2(SYNC, function() { for (var k2 in kills) { if (kills.hasOwnProperty(k2)) { kills[k2](); } } }); }; }; } }; } var SUSPENDED = 0; var CONTINUE = 1; var STEP_BIND = 2; var STEP_RESULT = 3; var PENDING = 4; var RETURN = 5; var COMPLETED = 6; function Fiber(util2, supervisor, aff) { var runTick = 0; var status = SUSPENDED; var step = aff; var fail3 = null; var interrupt = null; var bhead = null; var btail = null; var attempts = null; var bracketCount = 0; var joinId = 0; var joins = null; var rethrow = true; function run2(localRunTick) { var tmp, result, attempt; while (true) { tmp = null; result = null; attempt = null; switch (status) { case STEP_BIND: status = CONTINUE; try { step = bhead(step); if (btail === null) { bhead = null; } else { bhead = btail._1; btail = btail._2; } } catch (e) { status = RETURN; fail3 = util2.left(e); step = null; } break; case STEP_RESULT: if (util2.isLeft(step)) { status = RETURN; fail3 = step; step = null; } else if (bhead === null) { status = RETURN; } else { status = STEP_BIND; step = util2.fromRight(step); } break; case CONTINUE: switch (step.tag) { case BIND: if (bhead) { btail = new Aff2(CONS, bhead, btail); } bhead = step._2; status = CONTINUE; step = step._1; break; case PURE: if (bhead === null) { status = RETURN; step = util2.right(step._1); } else { status = STEP_BIND; step = step._1; } break; case SYNC: status = STEP_RESULT; step = runSync(util2.left, util2.right, step._1); break; case ASYNC: status = PENDING; step = runAsync(util2.left, step._1, function(result2) { return function() { if (runTick !== localRunTick) { return; } runTick++; Scheduler.enqueue(function() { if (runTick !== localRunTick + 1) { return; } status = STEP_RESULT; step = result2; run2(runTick); }); }; }); return; case THROW: status = RETURN; fail3 = util2.left(step._1); step = null; break; // Enqueue the Catch so that we can call the error handler later on // in case of an exception. case CATCH: if (bhead === null) { attempts = new Aff2(CONS, step, attempts, interrupt); } else { attempts = new Aff2(CONS, step, new Aff2(CONS, new Aff2(RESUME, bhead, btail), attempts, interrupt), interrupt); } bhead = null; btail = null; status = CONTINUE; step = step._1; break; // Enqueue the Bracket so that we can call the appropriate handlers // after resource acquisition. case BRACKET: bracketCount++; if (bhead === null) { attempts = new Aff2(CONS, step, attempts, interrupt); } else { attempts = new Aff2(CONS, step, new Aff2(CONS, new Aff2(RESUME, bhead, btail), attempts, interrupt), interrupt); } bhead = null; btail = null; status = CONTINUE; step = step._1; break; case FORK: status = STEP_RESULT; tmp = Fiber(util2, supervisor, step._2); if (supervisor) { supervisor.register(tmp); } if (step._1) { tmp.run(); } step = util2.right(tmp); break; case SEQ: status = CONTINUE; step = sequential(util2, supervisor, step._1); break; } break; case RETURN: bhead = null; btail = null; if (attempts === null) { status = COMPLETED; step = interrupt || fail3 || step; } else { tmp = attempts._3; attempt = attempts._1; attempts = attempts._2; switch (attempt.tag) { // We cannot recover from an unmasked interrupt. Otherwise we should // continue stepping, or run the exception handler if an exception // was raised. case CATCH: if (interrupt && interrupt !== tmp && bracketCount === 0) { status = RETURN; } else if (fail3) { status = CONTINUE; step = attempt._2(util2.fromLeft(fail3)); fail3 = null; } break; // We cannot resume from an unmasked interrupt or exception. case RESUME: if (interrupt && interrupt !== tmp && bracketCount === 0 || fail3) { status = RETURN; } else { bhead = attempt._1; btail = attempt._2; status = STEP_BIND; step = util2.fromRight(step); } break; // If we have a bracket, we should enqueue the handlers, // and continue with the success branch only if the fiber has // not been interrupted. If the bracket acquisition failed, we // should not run either. case BRACKET: bracketCount--; if (fail3 === null) { result = util2.fromRight(step); attempts = new Aff2(CONS, new Aff2(RELEASE, attempt._2, result), attempts, tmp); if (interrupt === tmp || bracketCount > 0) { status = CONTINUE; step = attempt._3(result); } } break; // Enqueue the appropriate handler. We increase the bracket count // because it should not be cancelled. case RELEASE: attempts = new Aff2(CONS, new Aff2(FINALIZED, step, fail3), attempts, interrupt); status = CONTINUE; if (interrupt && interrupt !== tmp && bracketCount === 0) { step = attempt._1.killed(util2.fromLeft(interrupt))(attempt._2); } else if (fail3) { step = attempt._1.failed(util2.fromLeft(fail3))(attempt._2); } else { step = attempt._1.completed(util2.fromRight(step))(attempt._2); } fail3 = null; bracketCount++; break; case FINALIZER: bracketCount++; attempts = new Aff2(CONS, new Aff2(FINALIZED, step, fail3), attempts, interrupt); status = CONTINUE; step = attempt._1; break; case FINALIZED: bracketCount--; status = RETURN; step = attempt._1; fail3 = attempt._2; break; } } break; case COMPLETED: for (var k in joins) { if (joins.hasOwnProperty(k)) { rethrow = rethrow && joins[k].rethrow; runEff(joins[k].handler(step)); } } joins = null; if (interrupt && fail3) { setTimeout(function() { throw util2.fromLeft(fail3); }, 0); } else if (util2.isLeft(step) && rethrow) { setTimeout(function() { if (rethrow) { throw util2.fromLeft(step); } }, 0); } return; case SUSPENDED: status = CONTINUE; break; case PENDING: return; } } } function onComplete(join2) { return function() { if (status === COMPLETED) { rethrow = rethrow && join2.rethrow; join2.handler(step)(); return function() { }; } var jid = joinId++; joins = joins || {}; joins[jid] = join2; return function() { if (joins !== null) { delete joins[jid]; } }; }; } function kill(error3, cb) { return function() { if (status === COMPLETED) { cb(util2.right(void 0))(); return function() { }; } var canceler = onComplete({ rethrow: false, handler: function() { return cb(util2.right(void 0)); } })(); switch (status) { case SUSPENDED: interrupt = util2.left(error3); status = COMPLETED; step = interrupt; run2(runTick); break; case PENDING: if (interrupt === null) { interrupt = util2.left(error3); } if (bracketCount === 0) { if (status === PENDING) { attempts = new Aff2(CONS, new Aff2(FINALIZER, step(error3)), attempts, interrupt); } status = RETURN; step = null; fail3 = null; run2(++runTick); } break; default: if (interrupt === null) { interrupt = util2.left(error3); } if (bracketCount === 0) { status = RETURN; step = null; fail3 = null; } } return canceler; }; } function join(cb) { return function() { var canceler = onComplete({ rethrow: false, handler: cb })(); if (status === SUSPENDED) { run2(runTick); } return canceler; }; } return { kill, join, onComplete, isSuspended: function() { return status === SUSPENDED; }, run: function() { if (status === SUSPENDED) { if (!Scheduler.isDraining()) { Scheduler.enqueue(function() { run2(runTick); }); } else { run2(runTick); } } } }; } function runPar(util2, supervisor, par, cb) { var fiberId = 0; var fibers = {}; var killId = 0; var kills = {}; var early = new Error("[ParAff] Early exit"); var interrupt = null; var root = EMPTY; function kill(error3, par2, cb2) { var step = par2; var head = null; var tail3 = null; var count = 0; var kills2 = {}; var tmp, kid; loop: while (true) { tmp = null; switch (step.tag) { case FORKED: if (step._3 === EMPTY) { tmp = fibers[step._1]; kills2[count++] = tmp.kill(error3, function(result) { return function() { count--; if (count === 0) { cb2(result)(); } }; }); } if (head === null) { break loop; } step = head._2; if (tail3 === null) { head = null; } else { head = tail3._1; tail3 = tail3._2; } break; case MAP: step = step._2; break; case APPLY: case ALT: if (head) { tail3 = new Aff2(CONS, head, tail3); } head = step; step = step._1; break; } } if (count === 0) { cb2(util2.right(void 0))(); } else { kid = 0; tmp = count; for (; kid < tmp; kid++) { kills2[kid] = kills2[kid](); } } return kills2; } function join(result, head, tail3) { var fail3, step, lhs, rhs, tmp, kid; if (util2.isLeft(result)) { fail3 = result; step = null; } else { step = result; fail3 = null; } loop: while (true) { lhs = null; rhs = null; tmp = null; kid = null; if (interrupt !== null) { return; } if (head === null) { cb(fail3 || step)(); return; } if (head._3 !== EMPTY) { return; } switch (head.tag) { case MAP: if (fail3 === null) { head._3 = util2.right(head._1(util2.fromRight(step))); step = head._3; } else { head._3 = fail3; } break; case APPLY: lhs = head._1._3; rhs = head._2._3; if (fail3) { head._3 = fail3; tmp = true; kid = killId++; kills[kid] = kill(early, fail3 === lhs ? head._2 : head._1, function() { return function() { delete kills[kid]; if (tmp) { tmp = false; } else if (tail3 === null) { join(fail3, null, null); } else { join(fail3, tail3._1, tail3._2); } }; }); if (tmp) { tmp = false; return; } } else if (lhs === EMPTY || rhs === EMPTY) { return; } else { step = util2.right(util2.fromRight(lhs)(util2.fromRight(rhs))); head._3 = step; } break; case ALT: lhs = head._1._3; rhs = head._2._3; if (lhs === EMPTY && util2.isLeft(rhs) || rhs === EMPTY && util2.isLeft(lhs)) { return; } if (lhs !== EMPTY && util2.isLeft(lhs) && rhs !== EMPTY && util2.isLeft(rhs)) { fail3 = step === lhs ? rhs : lhs; step = null; head._3 = fail3; } else { head._3 = step; tmp = true; kid = killId++; kills[kid] = kill(early, step === lhs ? head._2 : head._1, function() { return function() { delete kills[kid]; if (tmp) { tmp = false; } else if (tail3 === null) { join(step, null, null); } else { join(step, tail3._1, tail3._2); } }; }); if (tmp) { tmp = false; return; } } break; } if (tail3 === null) { head = null; } else { head = tail3._1; tail3 = tail3._2; } } } function resolve(fiber) { return function(result) { return function() { delete fibers[fiber._1]; fiber._3 = result; join(result, fiber._2._1, fiber._2._2); }; }; } function run2() { var status = CONTINUE; var step = par; var head = null; var tail3 = null; var tmp, fid; loop: while (true) { tmp = null; fid = null; switch (status) { case CONTINUE: switch (step.tag) { case MAP: if (head) { tail3 = new Aff2(CONS, head, tail3); } head = new Aff2(MAP, step._1, EMPTY, EMPTY); step = step._2; break; case APPLY: if (head) { tail3 = new Aff2(CONS, head, tail3); } head = new Aff2(APPLY, EMPTY, step._2, EMPTY); step = step._1; break; case ALT: if (head) { tail3 = new Aff2(CONS, head, tail3); } head = new Aff2(ALT, EMPTY, step._2, EMPTY); step = step._1; break; default: fid = fiberId++; status = RETURN; tmp = step; step = new Aff2(FORKED, fid, new Aff2(CONS, head, tail3), EMPTY); tmp = Fiber(util2, supervisor, tmp); tmp.onComplete({ rethrow: false, handler: resolve(step) })(); fibers[fid] = tmp; if (supervisor) { supervisor.register(tmp); } } break; case RETURN: if (head === null) { break loop; } if (head._1 === EMPTY) { head._1 = step; status = CONTINUE; step = head._2; head._2 = EMPTY; } else { head._2 = step; step = head; if (tail3 === null) { head = null; } else { head = tail3._1; tail3 = tail3._2; } } } } root = step; for (fid = 0; fid < fiberId; fid++) { fibers[fid].run(); } } function cancel(error3, cb2) { interrupt = util2.left(error3); var innerKills; for (var kid in kills) { if (kills.hasOwnProperty(kid)) { innerKills = kills[kid]; for (kid in innerKills) { if (innerKills.hasOwnProperty(kid)) { innerKills[kid](); } } } } kills = null; var newKills = kill(error3, root, cb2); return function(killError) { return new Aff2(ASYNC, function(killCb) { return function() { for (var kid2 in newKills) { if (newKills.hasOwnProperty(kid2)) { newKills[kid2](); } } return nonCanceler2; }; }); }; } run2(); return function(killError) { return new Aff2(ASYNC, function(killCb) { return function() { return cancel(killError, killCb); }; }); }; } function sequential(util2, supervisor, par) { return new Aff2(ASYNC, function(cb) { return function() { return runPar(util2, supervisor, par, cb); }; }); } Aff2.EMPTY = EMPTY; Aff2.Pure = AffCtr(PURE); Aff2.Throw = AffCtr(THROW); Aff2.Catch = AffCtr(CATCH); Aff2.Sync = AffCtr(SYNC); Aff2.Async = AffCtr(ASYNC); Aff2.Bind = AffCtr(BIND); Aff2.Bracket = AffCtr(BRACKET); Aff2.Fork = AffCtr(FORK);