purs-tidy
Version:
A syntax tidy-upper (formatter) for PureScript.
1,930 lines (1,870 loc) • 670 kB
JavaScript
// output-es/runtime.js
function binding(init2) {
let state = 0;
let value;
return () => {
if (state === 2) {
return value;
}
if (state === 1) {
throw new Error("Binding demanded before initialized");
}
state = 1;
value = init2();
state = 2;
return value;
};
}
function* range(lo, hi) {
for (let i = lo; i < hi; i++) {
yield i;
}
}
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/Data.Function/index.js
var $$const = (a) => (v) => a;
var applyFlipped = (x) => (f) => f(x);
var apply = (f) => (x) => 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/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/Record.Unsafe/foreign.js
var unsafeGet = function(label) {
return function(rec) {
return rec[label];
};
};
// output-es/Data.Show/foreign.js
var showIntImpl = function(n) {
return n.toString();
};
// 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 monoidMaybe = (dictSemigroup) => {
const semigroupMaybe1 = {
append: (v) => (v1) => {
if (v.tag === "Nothing") {
return v1;
}
if (v1.tag === "Nothing") {
return v;
}
if (v.tag === "Just" && v1.tag === "Just") {
return $Maybe("Just", dictSemigroup.append(v._1)(v1._1));
}
fail();
}
};
return { mempty: Nothing, Semigroup0: () => semigroupMaybe1 };
};
var isNothing = (v2) => {
if (v2.tag === "Nothing") {
return true;
}
if (v2.tag === "Just") {
return false;
}
fail();
};
var isJust = (v2) => {
if (v2.tag === "Nothing") {
return false;
}
if (v2.tag === "Just") {
return true;
}
fail();
};
var functorMaybe = {
map: (v) => (v1) => {
if (v1.tag === "Just") {
return $Maybe("Just", v(v1._1));
}
return Nothing;
}
};
var ordMaybe = (dictOrd) => {
const $0 = dictOrd.Eq0();
const eqMaybe1 = {
eq: (x) => (y) => {
if (x.tag === "Nothing") {
return y.tag === "Nothing";
}
return x.tag === "Just" && y.tag === "Just" && $0.eq(x._1)(y._1);
}
};
return {
compare: (x) => (y) => {
if (x.tag === "Nothing") {
if (y.tag === "Nothing") {
return EQ;
}
return LT;
}
if (y.tag === "Nothing") {
return GT;
}
if (x.tag === "Just" && y.tag === "Just") {
return dictOrd.compare(x._1)(y._1);
}
fail();
},
Eq0: () => eqMaybe1
};
};
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
};
// 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 applyEither = {
apply: (v) => (v1) => {
if (v.tag === "Left") {
return $Either("Left", v._1);
}
if (v.tag === "Right") {
if (v1.tag === "Left") {
return $Either("Left", v1._1);
}
if (v1.tag === "Right") {
return $Either("Right", v._1(v1._1));
}
}
fail();
},
Functor0: () => functorEither
};
var applicativeEither = { pure: Right, Apply0: () => applyEither };
// output-es/Effect/foreign.js
var pureE = function(a) {
return function() {
return a;
};
};
var bindE = function(a) {
return function(f) {
return function() {
return f(a())();
};
};
};
// output-es/Effect/index.js
var monadEffect = { Applicative0: () => applicativeEffect, Bind1: () => bindEffect };
var bindEffect = { bind: bindE, Apply0: () => applyEffect };
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/Data.Array.ST/foreign.js
var pushAll = function(as) {
return function(xs) {
return function() {
return xs.push.apply(xs, as);
};
};
};
var unsafeThaw = function(xs) {
return function() {
return xs;
};
};
function copyImpl(xs) {
return function() {
return xs.slice();
};
}
var thaw = copyImpl;
// output-es/Data.Array.ST/index.js
var push = (a) => pushAll([a]);
// output-es/Data.Array.ST.Iterator/index.js
var $Iterator = (_1, _2) => ({ tag: "Iterator", _1, _2 });
var pushWhile = (p) => (iter) => (array) => () => {
let $$break2 = false;
const $0 = iter._2;
while (/* @__PURE__ */ (() => {
const $1 = $$break2;
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;
}
$$break2 = true;
}
};
var iterate = (iter) => (f) => () => {
let $$break2 = false;
const $0 = iter._2;
while (/* @__PURE__ */ (() => {
const $1 = $$break2;
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") {
$$break2 = true;
continue;
}
fail();
}
};
// output-es/Data.Foldable/foreign.js
var foldrArray = function(f) {
return function(init2) {
return function(xs) {
var acc = init2;
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(init2) {
return function(xs) {
var acc = init2;
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 traverse_ = (dictApplicative) => {
const $0 = dictApplicative.Apply0();
return (dictFoldable) => (f) => dictFoldable.foldr((x) => {
const $1 = f(x);
return (b) => $0.apply($0.Functor0().map((v) => identity)($1))(b);
})(dictApplicative.pure());
};
var for_ = (dictApplicative) => {
const traverse_1 = traverse_(dictApplicative);
return (dictFoldable) => {
const $0 = traverse_1(dictFoldable);
return (b) => (a) => $0(a)(b);
};
};
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 mempty2 = dictMonoid.mempty;
return (v) => (v1) => {
if (v1.tag === "Nothing") {
return mempty2;
}
if (v1.tag === "Just") {
return v(v1._1);
}
fail();
};
}
};
var foldableArray = {
foldr: foldrArray,
foldl: foldlArray,
foldMap: (dictMonoid) => {
const mempty2 = dictMonoid.mempty;
return (f) => foldableArray.foldr((x) => (acc) => dictMonoid.Semigroup0().append(f(x))(acc))(mempty2);
}
};
var find = (dictFoldable) => (p) => dictFoldable.foldl((v) => (v1) => {
if (v.tag === "Nothing" && p(v1)) {
return $Maybe("Just", v1);
}
return v;
})(Nothing);
// output-es/Data.Eq/foreign.js
var refEq = function(r1) {
return function(r2) {
return r1 === r2;
};
};
var eqBooleanImpl = refEq;
var eqIntImpl = refEq;
var eqNumberImpl = refEq;
var eqStringImpl = refEq;
var eqArrayImpl = function(f) {
return function(xs) {
return function(ys) {
if (xs.length !== ys.length)
return false;
for (var i = 0; i < xs.length; i++) {
if (!f(xs[i])(ys[i]))
return false;
}
return true;
};
};
};
// output-es/Data.Eq/index.js
var eqString = { eq: eqStringImpl };
var eqNumber = { eq: eqNumberImpl };
var eqInt = { eq: eqIntImpl };
var eqBoolean = { eq: eqBooleanImpl };
// 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 ordBooleanImpl = unsafeCompareImpl;
var ordIntImpl = unsafeCompareImpl;
var ordNumberImpl = unsafeCompareImpl;
var ordStringImpl = unsafeCompareImpl;
var ordArrayImpl = function(f) {
return function(xs) {
return function(ys) {
var i = 0;
var xlen = xs.length;
var ylen = ys.length;
while (i < xlen && i < ylen) {
var x = xs[i];
var y = ys[i];
var o = f(x)(y);
if (o !== 0) {
return o;
}
i++;
}
if (xlen === ylen) {
return 0;
} else if (xlen > ylen) {
return -1;
} else {
return 1;
}
};
};
};
// output-es/Data.Ord/index.js
var ordString = { compare: /* @__PURE__ */ ordStringImpl(LT)(EQ)(GT), Eq0: () => eqString };
var ordNumber = { compare: /* @__PURE__ */ ordNumberImpl(LT)(EQ)(GT), Eq0: () => eqNumber };
var ordInt = { compare: /* @__PURE__ */ ordIntImpl(LT)(EQ)(GT), Eq0: () => eqInt };
var ordBoolean = { compare: /* @__PURE__ */ ordBooleanImpl(LT)(EQ)(GT), Eq0: () => eqBoolean };
var ordArray = (dictOrd) => {
const eqArray = { eq: eqArrayImpl(dictOrd.Eq0().eq) };
return {
compare: (xs) => (ys) => ordInt.compare(0)(ordArrayImpl((x) => (y) => {
const v = dictOrd.compare(x)(y);
if (v === "EQ") {
return 0;
}
if (v === "LT") {
return 1;
}
if (v === "GT") {
return -1;
}
fail();
})(xs)(ys)),
Eq0: () => eqArray
};
};
// output-es/Unsafe.Coerce/foreign.js
var unsafeCoerce = function(x) {
return x;
};
// output-es/Data.Tuple/index.js
var $Tuple = (_1, _2) => ({ tag: "Tuple", _1, _2 });
var Tuple = (value0) => (value1) => $Tuple(value0, value1);
var snd = (v) => v._2;
var fst = (v) => v._1;
var ordTuple = (dictOrd) => {
const $0 = dictOrd.Eq0();
return (dictOrd1) => {
const $1 = dictOrd1.Eq0();
const eqTuple2 = { eq: (x) => (y) => $0.eq(x._1)(y._1) && $1.eq(x._2)(y._2) };
return {
compare: (x) => (y) => {
const v = dictOrd.compare(x._1)(y._1);
if (v === "LT") {
return LT;
}
if (v === "GT") {
return GT;
}
return dictOrd1.compare(x._2)(y._2);
},
Eq0: () => eqTuple2
};
};
};
// 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(apply2) {
return function(map) {
return function(pure) {
return function(f) {
return function(array) {
function go(bot, top) {
switch (top - bot) {
case 0:
return pure([]);
case 1:
return map(array1)(f(array[bot]));
case 2:
return apply2(map(array2)(f(array[bot])))(f(array[bot + 1]));
case 3:
return apply2(apply2(map(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2]));
default:
var pivot = bot + Math.floor((top - bot) / 4) * 2;
return apply2(map(concat22)(go(bot, pivot)))(go(pivot, top));
}
}
return go(0, array.length);
};
};
};
};
};
}();
// output-es/Data.Traversable/index.js
var identity4 = (x) => x;
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 range2 = function(start) {
return function(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) {
return function(value) {
if (count < 1) {
return [];
}
var result = new Array(count);
return result.fill(value);
};
};
var replicatePolyfill = function(count) {
return function(value) {
var result = [];
var n = 0;
for (var i = 0; i < count; i++) {
result[n++] = value;
}
return result;
};
};
var replicate = typeof Array.prototype.fill === "function" ? replicateFill : replicatePolyfill;
var fromFoldableImpl = /* @__PURE__ */ function() {
function Cons2(head, tail2) {
this.head = head;
this.tail = tail2;
}
var emptyList = {};
function curryCons(head) {
return function(tail2) {
return new Cons2(head, tail2);
};
}
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(foldr) {
return function(xs) {
return listToArray(foldr(curryCons)(emptyList)(xs));
};
};
}();
var unconsImpl = function(empty4) {
return function(next) {
return function(xs) {
return xs.length === 0 ? empty4({}) : next(xs[0])(xs.slice(1));
};
};
};
var indexImpl = function(just) {
return function(nothing) {
return function(xs) {
return function(i) {
return i < 0 || i >= xs.length ? nothing : just(xs[i]);
};
};
};
};
var findMapImpl = function(nothing) {
return function(isJust2) {
return function(f) {
return function(xs) {
for (var i = 0; i < xs.length; i++) {
var result = f(xs[i]);
if (isJust2(result))
return result;
}
return nothing;
};
};
};
};
var findIndexImpl = function(just) {
return function(nothing) {
return function(f) {
return function(xs) {
for (var i = 0, l = xs.length; i < l; i++) {
if (f(xs[i]))
return just(i);
}
return nothing;
};
};
};
};
var reverse = function(l) {
return l.slice().reverse();
};
var filter = function(f) {
return function(xs) {
return xs.filter(f);
};
};
var partition = function(f) {
return function(xs) {
var yes = [];
var no = [];
for (var i = 0; i < xs.length; i++) {
var x = xs[i];
if (f(x))
yes.push(x);
else
no.push(x);
}
return { yes, no };
};
};
var sortByImpl2 = /* @__PURE__ */ function() {
function mergeFromTo(compare4, 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(compare4, fromOrdering, xs2, xs1, from, mid);
if (to - mid > 1)
mergeFromTo(compare4, fromOrdering, xs2, xs1, mid, to);
i = from;
j = mid;
k = from;
while (i < mid && j < to) {
x = xs2[i];
y = xs2[j];
c = fromOrdering(compare4(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(compare4) {
return function(fromOrdering) {
return function(xs) {
var out;
if (xs.length < 2)
return xs;
out = xs.slice(0);
mergeFromTo(compare4, fromOrdering, out, xs.slice(0), 0, xs.length);
return out;
};
};
};
}();
var slice = function(s) {
return function(e) {
return function(l) {
return l.slice(s, e);
};
};
};
var zipWith = function(f) {
return function(xs) {
return function(ys) {
var l = xs.length < ys.length ? xs.length : ys.length;
var result = new Array(l);
for (var i = 0; i < l; i++) {
result[i] = f(xs[i])(ys[i]);
}
return result;
};
};
};
var all = function(p) {
return function(xs) {
var len = xs.length;
for (var i = 0; i < len; i++) {
if (!p(xs[i]))
return false;
}
return true;
};
};
// output-es/Data.Array/index.js
var intercalate1 = (dictMonoid) => {
const $0 = dictMonoid.Semigroup0();
const mempty2 = dictMonoid.mempty;
return (sep2) => (xs) => foldlArray((v) => (v1) => {
if (v.init) {
return { init: false, acc: v1 };
}
return { init: false, acc: $0.append(v.acc)($0.append(sep2)(v1)) };
})({ init: true, acc: mempty2 })(xs).acc;
};
var zip = /* @__PURE__ */ zipWith(Tuple);
var uncons = /* @__PURE__ */ unconsImpl((v) => Nothing)((x) => (xs) => $Maybe("Just", { head: x, tail: xs }));
var tail = /* @__PURE__ */ unconsImpl((v) => Nothing)((v) => (xs) => $Maybe("Just", xs));
var sortBy = (comp) => sortByImpl2(comp)((v) => {
if (v === "GT") {
return 1;
}
if (v === "EQ") {
return 0;
}
if (v === "LT") {
return -1;
}
fail();
});
var sortWith = (dictOrd) => (f) => sortBy((x) => (y) => dictOrd.compare(f(x))(f(y)));
var snoc = (xs) => (x) => (() => {
const $0 = push(x);
const $1 = thaw(xs);
return () => {
const result = $1();
$0(result)();
return result;
};
})()();
var intersperse = (a) => (arr) => {
const v = arr.length;
if (v < 2) {
return arr;
}
const out = [];
out.push(arr[0]);
for (const idx of range(1, v)) {
out.push(a);
out.push(arr[idx]);
}
return out;
};
var init = (xs) => {
if (xs.length === 0) {
return Nothing;
}
return $Maybe("Just", slice(0)(xs.length - 1 | 0)(xs));
};
var index = /* @__PURE__ */ indexImpl(Just)(Nothing);
var unsnoc = (xs) => applyMaybe.apply((() => {
const $0 = init(xs);
if ($0.tag === "Just") {
return $Maybe(
"Just",
(() => {
const $1 = $0._1;
return (v1) => ({ init: $1, last: v1 });
})()
);
}
return Nothing;
})())(index(xs)(xs.length - 1 | 0));
var unzip = (xs) => {
const fsts = [];
const snds = [];
const $0 = { value: 0 };
iterate($Iterator((v) => index(xs)(v), $0))((v) => {
const $1 = v._2;
const $2 = () => fsts.push(v._1);
return () => {
$2();
snds.push($1);
};
})();
return $Tuple(fsts, snds);
};
var nubBy = (comp) => (xs) => {
const indexedAndSorted = sortBy((x) => (y) => comp(x._2)(y._2))(zipWith(Tuple)(range2(0)(xs.length - 1 | 0))(xs));
const v = index(indexedAndSorted)(0);
if (v.tag === "Nothing") {
return [];
}
if (v.tag === "Just") {
return arrayMap(snd)(sortWith(ordInt)(fst)((() => {
const $0 = unsafeThaw([v._1]);
return () => {
const result = $0();
for (const v1 of indexedAndSorted) {
const $1 = comp((() => {
const $12 = index(result)(result.length - 1 | 0);
if ($12.tag === "Just") {
return $12._1._2;
}
fail();
})())(v1._2);
const $2 = () => result.push(v1);
if ($1 === "LT" || $1 === "GT" || $1 !== "EQ") {
$2();
}
}
return result;
};
})()()));
}
fail();
};
var groupBy = (op) => (xs) => {
const result = [];
const $0 = { value: 0 };
const iter = $Iterator((v) => index(xs)(v), $0);
iterate(iter)((x) => () => {
const sub1 = [];
sub1.push(x);
pushWhile(op(x))(iter)(sub1)();
result.push(sub1);
})();
return result;
};
var findMap = /* @__PURE__ */ findMapImpl(Nothing)(isJust);
var findIndex = /* @__PURE__ */ findIndexImpl(Just)(Nothing);
var elem = (dictEq) => (a) => (arr) => {
const $0 = findIndex((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 slice(n)(xs.length)(xs);
};
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.Void/index.js
var absurd = (a) => {
const spin = (spin$a0$copy) => {
let spin$a0 = spin$a0$copy, spin$c = true, spin$r;
while (spin$c) {
const v = spin$a0;
spin$a0 = v;
}
return spin$r;
};
return spin(a);
};
// output-es/Data.Semigroup/foreign.js
var concatString = function(s1) {
return function(s2) {
return s1 + s2;
};
};
var concatArray = function(xs) {
return function(ys) {
if (xs.length === 0)
return ys;
if (ys.length === 0)
return xs;
return xs.concat(ys);
};
};
// output-es/Data.Semigroup/index.js
var semigroupUnit = { append: (v) => (v1) => {
} };
var semigroupString = { append: concatString };
var semigroupArray = { append: concatArray };
// output-es/Data.FoldableWithIndex/index.js
var traverseWithIndex_ = (dictApplicative) => {
const $0 = dictApplicative.Apply0();
return (dictFoldableWithIndex) => (f) => dictFoldableWithIndex.foldrWithIndex((i) => {
const $1 = f(i);
return (x) => {
const $2 = $1(x);
return (b) => $0.apply($0.Functor0().map((v) => identity)($2))(b);
};
})(dictApplicative.pure());
};
var forWithIndex_ = (dictApplicative) => {
const traverseWithIndex_1 = traverseWithIndex_(dictApplicative);
return (dictFoldableWithIndex) => {
const $0 = traverseWithIndex_1(dictFoldableWithIndex);
return (b) => (a) => $0(a)(b);
};
};
// output-es/Data.Unfoldable1/foreign.js
var unfoldr1ArrayImpl = function(isNothing2) {
return function(fromJust3) {
return function(fst2) {
return function(snd2) {
return function(f) {
return function(b) {
var result = [];
var value = b;
while (true) {
var tuple = f(value);
result.push(fst2(tuple));
var maybe = snd2(tuple);
if (isNothing2(maybe))
return result;
value = fromJust3(maybe);
}
};
};
};
};
};
};
// output-es/Data.Unfoldable1/index.js
var fromJust = (v) => {
if (v.tag === "Just") {
return v._1;
}
fail();
};
var unfoldable1Array = { unfoldr1: /* @__PURE__ */ unfoldr1ArrayImpl(isNothing)(fromJust)(fst)(snd) };
// output-es/Data.Array.NonEmpty.Internal/foreign.js
var foldr1Impl = function(f) {
return function(xs) {
var acc = xs[xs.length - 1];
for (var i = xs.length - 2; i >= 0; i--) {
acc = f(xs[i])(acc);
}
return acc;
};
};
// output-es/Data.Number/foreign.js
var isFiniteImpl = isFinite;
function fromStringImpl(str, isFinite2, just, nothing) {
var num = parseFloat(str);
if (isFinite2(num)) {
return just(num);
} else {
return nothing;
}
}
var ceil = Math.ceil;
// output-es/Data.Int/foreign.js
var fromNumberImpl = function(just) {
return function(nothing) {
return function(n) {
return (n | 0) === n ? just(n) : nothing;
};
};
};
var toNumber = function(n) {
return n;
};
var fromStringAsImpl = function(just) {
return function(nothing) {
return function(radix) {
var digits;
if (radix < 11) {
digits = "[0-" + (radix - 1).toString() + "]";
} else if (radix === 11) {
digits = "[0-9a]";
} else {
digits = "[0-9a-" + String.fromCharCode(86 + radix) + "]";
}
var pattern = new RegExp("^[\\+\\-]?" + digits + "+$", "i");
return function(s) {
if (pattern.test(s)) {
var i = parseInt(s, radix);
return (i | 0) === i ? just(i) : nothing;
} else {
return nothing;
}
};
};
};
};
// output-es/Data.Int/index.js
var fromStringAs = /* @__PURE__ */ fromStringAsImpl(Just)(Nothing);
var fromString = /* @__PURE__ */ fromStringAs(10);
var fromNumber = /* @__PURE__ */ fromNumberImpl(Just)(Nothing);
var unsafeClamp = (x) => {
if (!isFiniteImpl(x)) {
return 0;
}
if (x >= toNumber(2147483647)) {
return 2147483647;
}
if (x <= toNumber(-2147483648)) {
return -2147483648;
}
const $0 = fromNumber(x);
if ($0.tag === "Nothing") {
return 0;
}
if ($0.tag === "Just") {
return $0._1;
}
fail();
};
// output-es/Data.NonEmpty/index.js
var $NonEmpty = (_1, _2) => ({ tag: "NonEmpty", _1, _2 });
// output-es/Data.List.Types/index.js
var $List = (tag, _1, _2) => ({ tag, _1, _2 });
var Nil = /* @__PURE__ */ $List("Nil");
var Cons = (value0) => (value1) => $List("Cons", value0, value1);
var listMap = (f) => {
const chunkedRevMap = (chunkedRevMap$a0$copy) => (chunkedRevMap$a1$copy) => {
let chunkedRevMap$a0 = chunkedRevMap$a0$copy, chunkedRevMap$a1 = chunkedRevMap$a1$copy, chunkedRevMap$c = true, chunkedRevMap$r;
while (chunkedRevMap$c) {
const v = chunkedRevMap$a0, v1 = chunkedRevMap$a1;
if (v1.tag === "Cons" && v1._2.tag === "Cons" && v1._2._2.tag === "Cons") {
chunkedRevMap$a0 = $List("Cons", v1, v);
chunkedRevMap$a1 = v1._2._2._2;
continue;
}
const reverseUnrolledMap = (reverseUnrolledMap$a0$copy) => (reverseUnrolledMap$a1$copy) => {
let reverseUnrolledMap$a0 = reverseUnrolledMap$a0$copy, reverseUnrolledMap$a1 = reverseUnrolledMap$a1$copy, reverseUnrolledMap$c = true, reverseUnrolledMap$r;
while (reverseUnrolledMap$c) {
const v2 = reverseUnrolledMap$a0, v3 = reverseUnrolledMap$a1;
if (v2.tag === "Cons" && v2._1.tag === "Cons" && v2._1._2.tag === "Cons" && v2._1._2._2.tag === "Cons") {
reverseUnrolledMap$a0 = v2._2;
reverseUnrolledMap$a1 = $List("Cons", f(v2._1._1), $List("Cons", f(v2._1._2._1), $List("Cons", f(v2._1._2._2._1), v3)));
continue;
}
reverseUnrolledMap$c = false;
reverseUnrolledMap$r = v3;
}
return reverseUnrolledMap$r;
};
chunkedRevMap$c = false;
chunkedRevMap$r = reverseUnrolledMap(v)((() => {
if (v1.tag === "Cons") {
if (v1._2.tag === "Cons") {
if (v1._2._2.tag === "Nil") {
return $List("Cons", f(v1._1), $List("Cons", f(v1._2._1), Nil));
}
return Nil;
}
if (v1._2.tag === "Nil") {
return $List("Cons", f(v1._1), Nil);
}
}
return Nil;
})());
}
return chunkedRevMap$r;
};
return chunkedRevMap(Nil);
};
var foldableList = {
foldr: (f) => (b) => {
const $0 = foldableList.foldl((b$1) => (a) => f(a)(b$1))(b);
const go = (go$a0$copy) => (go$a1$copy) => {
let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$c = true, go$r;
while (go$c) {
const v = go$a0, v1 = go$a1;
if (v1.tag === "Nil") {
go$c = false;
go$r = v;
continue;
}
if (v1.tag === "Cons") {
go$a0 = $List("Cons", v1._1, v);
go$a1 = v1._2;
continue;
}
fail();
}
return go$r;
};
const $1 = go(Nil);
return (x) => $0($1(x));
},
foldl: (f) => {
const go = (go$a0$copy) => (go$a1$copy) => {
let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$c = true, go$r;
while (go$c) {
const b = go$a0, v = go$a1;
if (v.tag === "Nil") {
go$c = false;
go$r = b;
continue;
}
if (v.tag === "Cons") {
go$a0 = f(b)(v._1);
go$a1 = v._2;
continue;
}
fail();
}
return go$r;
};
return go;
},
foldMap: (dictMonoid) => {
const mempty2 = dictMonoid.mempty;
return (f) => foldableList.foldl((acc) => {
const $0 = dictMonoid.Semigroup0().append(acc);
return (x) => $0(f(x));
})(mempty2);
}
};
var foldableNonEmptyList = {
foldMap: (dictMonoid) => {
const foldMap13 = foldableList.foldMap(dictMonoid);
return (f) => (v) => dictMonoid.Semigroup0().append(f(v._1))(foldMap13(f)(v._2));
},
foldl: (f) => (b) => (v) => {
const go = (go$a0$copy) => (go$a1$copy) => {
let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$c = true, go$r;
while (go$c) {
const b$1 = go$a0, v$1 = go$a1;
if (v$1.tag === "Nil") {
go$c = false;
go$r = b$1;
continue;
}
if (v$1.tag === "Cons") {
go$a0 = f(b$1)(v$1._1);
go$a1 = v$1._2;
continue;
}
fail();
}
return go$r;
};
return go(f(b)(v._1))(v._2);
},
foldr: (f) => (b) => (v) => f(v._1)(foldableList.foldr(f)(b)(v._2))
};
var eq1List = {
eq1: (dictEq) => (xs) => (ys) => {
const go = (v) => (v1) => (v2) => {
if (!v2) {
return false;
}
if (v.tag === "Nil") {
return v1.tag === "Nil" && v2;
}
return v.tag === "Cons" && v1.tag === "Cons" && go(v._2)(v1._2)(v2 && dictEq.eq(v1._1)(v._1));
};
return go(xs)(ys)(true);
}
};
var ord1List = {
compare1: (dictOrd) => (xs) => (ys) => {
const go = (go$a0$copy) => (go$a1$copy) => {
let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$c = true, go$r;
while (go$c) {
const v = go$a0, v1 = go$a1;
if (v.tag === "Nil") {
if (v1.tag === "Nil") {
go$c = false;
go$r = EQ;
continue;
}
go$c = false;
go$r = LT;
continue;
}
if (v1.tag === "Nil") {
go$c = false;
go$r = GT;
continue;
}
if (v.tag === "Cons" && v1.tag === "Cons") {
const v2 = dictOrd.compare(v._1)(v1._1);
if (v2 === "EQ") {
go$a0 = v._2;
go$a1 = v1._2;
continue;
}
go$c = false;
go$r = v2;
continue;
}
fail();
}
return go$r;
};
return go(xs)(ys);
},
Eq10: () => eq1List
};
var ordList = (dictOrd) => {
const $0 = dictOrd.Eq0();
const eqList1 = {
eq: (xs) => (ys) => {
const go = (v) => (v1) => (v2) => {
if (!v2) {
return false;
}
if (v.tag === "Nil") {
return v1.tag === "Nil" && v2;
}
return v.tag === "Cons" && v1.tag === "Cons" && go(v._2)(v1._2)(v2 && $0.eq(v1._1)(v._1));
};
return go(xs)(ys)(true);
}
};
return { compare: ord1List.compare1(dictOrd), Eq0: () => eqList1 };
};
// output-es/Data.List/index.js
var toUnfoldable = (dictUnfoldable) => dictUnfoldable.unfoldr((xs) => {
if (xs.tag === "Nil") {
return Nothing;
}
if (xs.tag === "Cons") {
return $Maybe("Just", $Tuple(xs._1, xs._2));
}
fail();
});
var reverse2 = /* @__PURE__ */ (() => {
const go = (go$a0$copy) => (go$a1$copy) => {
let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$c = true, go$r;
while (go$c) {
const v = go$a0, v1 = go$a1;
if (v1.tag === "Nil") {
go$c = false;
go$r = v;
continue;
}
if (v1.tag === "Cons") {
go$a0 = $List("Cons", v1._1, v);
go$a1 = v1._2;
continue;
}
fail();
}
return go$r;
};
return go(Nil);
})();
// output-es/Data.Semiring/foreign.js
var intAdd = function(x) {
return function(y) {
return x + y | 0;
};
};
// output-es/Data.EuclideanRing/foreign.js
var intMod = function(x) {
return function(y) {
if (y === 0)
return 0;
var yy = Math.abs(y);
return (x % yy + yy) % yy;
};
};
// output-es/Data.Monoid/index.js
var monoidUnit = { mempty: void 0, Semigroup0: () => semigroupUnit };
var monoidString = { mempty: "", Semigroup0: () => semigroupString };
var monoidArray = { mempty: [], Semigroup0: () => semigroupArray };
var monoidRecord = () => (dictMonoidRecord) => {
const semigroupRecord1 = { append: dictMonoidRecord.SemigroupRecord0().appendRecord($$Proxy) };
return { mempty: dictMonoidRecord.memptyRecord($$Proxy), Semigroup0: () => semigroupRecord1 };
};
var power = (dictMonoid) => {
const mempty12 = dictMonoid.mempty;
const $0 = dictMonoid.Semigroup0();
return (x) => {
const go = (p) => {
if (p <= 0) {
return mempty12;
}
if (p === 1) {
return x;
}
if (intMod(p)(2) === 0) {
const x$p2 = go(intDiv(p, 2));
return $0.append(x$p2)(x$p2);
}
const x$p = go(intDiv(p, 2));
return $0.append(x$p)($0.append(x$p)(x));
};
return go;
};
};
// output-es/Data.Bounded/foreign.js
var topChar = String.fromCharCode(65535);
var bottomChar = String.fromCharCode(0);
var topNumber = Number.POSITIVE_INFINITY;
var bottomNumber = Number.NEGATIVE_INFINITY;
// output-es/Data.Enum/foreign.js
function toCharCode(c) {
return c.charCodeAt(0);
}
function fromCharCode(c) {
return String.fromCharCode(c);
}
// output-es/Data.Enum/index.js
var charToEnum = (v) => {
if (v >= -2147483648 && v <= 2147483647) {
return $Maybe("Just", fromCharCode(v));
}
return Nothing;
};
// 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 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 _indexOfStartingAt = function(just) {
return function(nothing) {
return function(x) {
return function(startAt) {
return function(s) {
if (startAt < 0 || startAt > s.length)
return nothing;
var i = s.indexOf(x, startAt);
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 stripSuffix = (v) => (str) => {
const v1 = splitAt(length2(str) - length2(v) | 0)(str);
if (v1.after === v) {
return $Maybe("Just", v1.before);
}
return Nothing;
};
var stripPrefix = (v) => (str) => {
const v1 = splitAt(length2(v))(str);
if (v1.before === v) {
return $Maybe("Just", v1.after);
}
return Nothing;
};
var indexOf$p = /* @__PURE__ */ _indexOfStartingAt(Just)(Nothing);
var indexOf = /* @__PURE__ */ _indexOf(Just)(Nothing);
var charAt2 = /* @__PURE__ */ _charAt(Just)(Nothing);
// output-es/Data.String.Common/foreign.js
var replaceAll = function(s1) {
return function(s2) {
return function(s3) {
return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2);
};
};
};
var split = function(sep2) {
return function(s) {
return s.split(sep2);
};
};
var joinWith = function(s) {
return function(xs) {
return xs.join(s);
};
};
// output-es/Data.Unfoldable/foreign.js
var unfoldrArrayImpl = function(isNothing2) {
return function(fromJust3) {
return function(fst2) {
return function(snd2) {
return function(f) {
return function(b) {
var result = [];
var value = b;
while (true) {
var maybe = f(value);
if (isNothing2(maybe))
return result;
var tuple = fromJust3(maybe);
result.push(fst2(tuple));
value = snd2(tuple);
}
};
};
};
};
};
};
// output-es/Data.Unfoldable/index.js
var fromJust2 = (v) => {
if (v.tag === "Just") {
return v._1;
}
fail();
};
var unfoldableArray = {
unfoldr: /* @__PURE__ */ unfoldrArrayImpl(isNothing)(fromJust2)(fst)(snd),
Unfoldable10: () => unfoldable1Array
};
// output-es/Data.String.CodePoints/foreign.js
var hasArrayFrom = typeof Array.from === "function";
var hasStringIterator = typeof Symbol !== "undefined" && Symbol != null && typeof Symbol.iterator !== "undefined" && typeof String.prototype[Symbol.iterator] === "function";
var hasFromCodePoint = typeof String.prototype.fromCodePoint === "function";
var hasCodePointAt = typeof String.prototype.codePointAt === "function";
var _unsafeCodePointAt0 = function(fallback) {
return hasCodePointAt ? function(str) {
return str.codePointAt(0);
} : fallback;
};
var _countPrefix = function(fallback) {
return function(unsafeCodePointAt02) {
if (hasStringIterator) {
return function(pred) {
return function(str) {
var iter = str[Symbol.iterator]();
for (var cpCount = 0; ; ++cpCount) {
var o = iter.next();
if (o.done)
return cpCount;
var cp = unsafeCodePointAt02(o.value);
if (!pred(cp))
return cpCount;
}
};
};
}
return fallback;
};
};
var _singleton = function(fallback) {
return hasFromCodePoint ? String.fromCodePoint : fallback;
};
var _take = function(fallback) {
return function(n) {
if (hasStringIterator) {
return function(str) {
var accum = "";
var iter = str[Symbol.iterator]();
for (var i = 0; i < n; ++i) {
var o = iter.next();
if (o.done)
return accum;
accum += o.value;
}
return accum;
};
}
return fallback(n);
};
};
var _toCodePointArray = function(fallback) {
return function(unsafeCodePointAt02) {
if (hasArrayFrom) {
return function(str) {
return Array.from(str, unsafeCodePointAt02);
};
}
return fallback;
};
};
// output-es/Data.String.CodePoints/index.js
var uncons2 = (s) => {
const v = length2(s);
if (v === 0) {
return Nothing;
}
if (v === 1) {
return $Maybe("Just", { head: toCharCode(charAt(0)(s)), tail: "" });
}
const cu1 = toCharCode(charAt(1)(s));
const cu0 = toCharCode(charAt(0)(s));
if (55296 <= cu0 && cu0 <= 56319 && 56320 <= cu1 && cu1 <= 57343) {
return $Maybe("Just", { head: (((cu0 - 55296 | 0) * 1024 | 0) + (cu1 - 56320 | 0) | 0) + 65536 | 0, tail: drop2(2)(s) });
}
return $Maybe("Just", { head: cu0, tail: drop2(1)(s) });
};
var unconsButWithTuple = (s) => {
const $0 = uncons2(s);
if ($0.tag === "Just") {
return $Maybe("Just", $Tuple($0._1.head, $0._1.tail));
}
return Nothing;
};
var toCodePointArrayFallback = (s) => unfoldableArray.unfoldr(unconsButWithTuple)(s);
var unsafeCodePointAt0Fallback = (s) => {
const cu0 = toCharCode(charAt(0)(s));
if (55296 <= cu0 && cu0 <= 56319 && length2(s) > 1) {
const cu1 = toCharCode(charAt(1)(s));
if (56320 <= cu1 && cu1 <= 57343) {
return (((cu0 - 55296 | 0) * 1024 | 0) + (cu1 - 56320 | 0) | 0) + 65536 | 0;
}
}
return cu0;
};
var unsafeCodePointAt0 = /* @__PURE__ */ _unsafeCodePointAt0(unsafeCodePointAt0Fallback);
var toCodePointArray = /* @__PURE__ */ _toCodePointArray(toCodePointArrayFallback)(unsafeCodePointAt0);
var fromCharCode2 = (x) => singleton((() => {
if (x >= -2147483648 && x <= 2147483647) {
return fromCharCode(x);
}
if (x < 0) {
return "\0";
}
return "\uFFFF";
})());
var singletonFallback = (v) => {
if (v <= 65535) {
return fromCharCode2(v);
}
return fromCharCode2(intDiv(v - 65536 | 0, 1024) + 55296 | 0) + fromCharCode2(intMod(v - 65536 | 0)(1024) + 56320 | 0);
};
var singleton2 = /* @__PURE__ */ _singleton(singletonFallback);
var takeFallback = (v) => (v1) => {
if (v < 1) {
return "";
}
const v2 = uncons2(v1);
if (v2.tag === "Just") {
return singleton2(v2._1.head) + takeFallback(v - 1 | 0)(v2._1.tail);
}
return v1;
};
var take2 = /* @__PURE__ */ _take(takeFallback);
var eqCodePoint = { eq: (x) => (y) => x === y };
var ordCodePoint = { compare: (x) => (y) => ordInt.compare(x)(y), Eq0: () => eqCodePoint };
var countTail = (countTail$a0$copy) => (countTail$a1$copy) => (countTail$a2$copy) => {
let countTail$a0 = countTail$a0$copy, countTail$a1 = countTail$a1$copy, countTail$a2 = countTail$a2$copy, countTail$c = true, countTail$r;
while (countTail$c) {
const p = countTail$a0, s = countTail$a1, accum = countTail$a2;
const v = uncons2(s);
if (v.tag === "Just" && p(v._1.head)) {
countTail$a0 = p;
countTail$a1 = v._1.tail;
countTail$a2 = accum + 1 | 0;
continue;
}
countTail$c = false;
countTail$r = accum;
}
return countTail$r;
};
var countFallback = (p) => (s) => countTail(p)(s)(0);
var countPrefix2 = /* @__PURE__ */ _countPrefix(countFallback)(unsafeCodePointAt0);
var codePointFromChar = (x) => toCharCode(x);
var boundedCodePoint = { bottom: 0, top: 1114111, Ord0: () => ordCodePoint };
var boundedEnumCodePoint = {
cardinality: 1114112,
fromEnum: (v) => v,
toEnum: (n) => {
if (n >= 0 && n <= 1114111) {
return $Maybe("Just", n);
}
return Nothing;
},
Bounded0: () => boundedCodePoint,
Enum1: () => enumCodePoint
};
var enumCodePoint = {
succ: (a) => {
const $0 = a + 1 | 0;
if ($0 >= 0 && $0 <= 1114111) {
return $Maybe("Just", $0);
}
return Nothing;
},
pred: (a) => {
const $0 = a - 1 | 0;
if ($0 >= 0 && $0 <= 1114111) {
return $Maybe("Just", $0);
}
return Nothing;
},
Ord0: () => ordCodePoint
};
// output-es/Record.Builder/foreign.js
function unsafeInsert(l) {
return function(a) {
return function(rec) {
rec[l] = a;
return rec;
};
};
}
// output-es/Record.Builder/index.js
var buildFromScratch = (a) => a({});
// output-es/ArgParse.Basic/index.js
var $ArgError = (_1, _2) => ({ tag: "ArgError", _1, _2 });
var $ArgErrorMsg = (tag, _1) => ({ tag, _1 });
var $ArgHelp = (tag, _1, _2, _3) => ({ tag, _1, _2, _3 });
var $ArgParser = (_1, _2) => ({ tag: "ArgParser", _1, _2 });
var $ArgResult = (tag, _1, _2) => ({ tag, _1, _2 });
var $HelpClass = (tag, _1) => ({ tag, _1 });
var $HelpFmt = (tag, _1) => ({ tag, _1 });
var intercalate2 = /* @__PURE__ */ intercalate1(monoidString);
var power2 = /* @__PURE__ */ power(monoidString);
var max2 = (x) => (y) => {
const v = ordInt.compare(x)(y);
if (v === "LT") {
return y;
}
if (v === "EQ") {
return x;
}
if (v === "GT") {
return x;
}
fail();
};
var eq = /* @__PURE__ */ eqArrayImpl(eqStringImpl);
var compare = /* @__PURE__ */ (() => ordArray(ordString).compare)();
var intercalate12 = /* @__PURE__ */ intercalate1(monoidArray);
var fromFoldable = /* @__PURE__ */ foldrArray(Cons)(Nil);
var identity8 = (x) => x;
var ExpectedFlag = /* @__PURE__ */ $ArgErrorMsg("ExpectedFlag");
var ExpectedArgValue = /* @__PURE__ */ $ArgErrorMsg("ExpectedArgValue");
var ExpectedArg = /* @__PURE__ */ $ArgErrorMsg("ExpectedArg");
var DuplicateArg = /* @__PURE__ */ $ArgErrorMsg("DuplicateArg");
var ShowHelp = /* @__PURE__ */ $ArgErrorMsg("ShowHelp");
var ArgError = (value0) => (value1) => $ArgError(value0, value1);
var ArgFail = /* @__PURE__ */ $ArgResult("ArgFail");
var unformat = (doc) => (unf) => (v) => {
const go = (v1) => ({
step: (stk) => (args) => {
const v2 = v1.step(stk)(args);
if (v2.tag === "ArgHalt") {
if (v2._1._1.tag === "Cons") {
return $ArgResult("ArgHalt", $ArgError($List("Cons", $ArgHelp("HelpFormat", doc, v._1), v2._1._1._2), v2._1._2));
}
return $ArgResult("ArgHalt", v2._1);
}
if (v2.tag === "ArgMatch") {
return $ArgResult("ArgMatch", go(v2._1), v2._2);
}
if (v2.tag === "ArgFail") {
return ArgFail;
}
fail();
},
done: (stk) => {
const $0 = v1.done($List("Cons", $ArgHelp("HelpFormat", doc, v._1), stk));
return (() => {
if ($0.tag === "Left") {
const $1 = $0._1;
return (v$1) => $Either("Left", $1);
}
if ($0.tag === "Right") {
const $1 = $0._1;
return (f) => f($1);
}
fail();
})()((value) => {
const $1 = ArgError($List("Cons", $ArgHelp("HelpFormat", doc, v._1), stk));
const $2 = unf(value);
if ($2.tag === "Left") {
return $Either("Left", $1($ArgErrorMsg("UnformatFailed", $2._1)));
}
if ($2.tag === "Right") {
return $Either("Right", $2._1);
}
fail();
});
},
saturated: v1.saturated
});
return $ArgParser($ArgHelp("HelpFormat", doc, v._1), go(v._2));
};
var semigroupHelp = {
append: (v) => (v1) => {
if (v.tag === "HelpArgs") {
if (v1.tag === "HelpArgs") {
return $ArgHelp("HelpArgs", [...v._1, ...v1._1]);
}
return $ArgHelp("HelpArgs", snoc(v._1)(v1));
}
if (v1.tag === "HelpArgs") {
return $ArgHelp("HelpArgs", [v, ...v1._1]);
}
return $ArgHelp("HelpArgs", [v, v1]);
}
};
var printHelpTable$p = (stk) => (v) => {
if (v.tag === "HelpFlag") {
const names = intercalate2(",")(v._1);
if (stk.tag === "Cons" && stk._1.tag === "HelpFormat") {
return [$Tuple($HelpClass("IsFlag", v._1), [$HelpFmt("Text", names + " " + stk._1._1), $HelpFmt("Text", v._2)])];
}
return [$Tuple($HelpClass("IsFlag", v._1), [$HelpFmt("Text", names), $HelpFmt("Text", v._2)])];
}
if (v.tag === "HelpAny") {
if (stk.tag === "Cons" && stk._1.tag === "HelpFormat") {
return [$Tuple($HelpClass("IsAny", stk._1._1), [$HelpFmt("Text", stk._1._1), $HelpFmt("Text", v._1)])];
}
return [$Tuple($HelpClass("IsAny", "ANY"), [$HelpFmt("Text", "ANY"), $HelpFmt("Text", v._1)])];
}
if (v.tag === "HelpRest") {
return [$Tuple($HelpClass("IsAny", "--"), [$HelpFmt("Text", "--"), $HelpFmt("Text", v._1)])];
}
if (v.tag === "HelpCommand") {
return [$Tuple($HelpClass("IsCommand", v._1), [$HelpFmt("Text", intercalate2(",")(v._1)), $HelpFmt("Text", v._2)])];
}
if (v.tag === "HelpFormat") {
return printHelpTable$p($List("Cons", $ArgHelp("HelpFormat", v._1, v._2), stk))(v._2);
}
if (v.tag === "HelpChoose") {
return arrayBind(v._2)(printHelpTable$p(stk));
}
if (v.tag === "HelpArgs") {
return arrayBind(v._1)(printHelpTable$p(stk));
}
fail();
};
var parserHelp = (v) => v._1;
var parseArgs$p = (parseArgs$p$a0$copy) => (parseArgs$p$a1$copy) => (parseArgs$p$a2$copy) => {
let parseArgs$p$a0 = parseArgs$p$a0$copy, parseArgs$p$a1 = parseArgs$p$a1$copy, parseArgs$p$a2 = parseArgs$p$a2$copy, parseArgs$p$c = true, parseArgs$p$r;
while (parseArgs$p$c) {
const v = parseArgs$p$a0, stk = parseArgs$p$a1, args = parseArgs$p$a2;
const v1 = v.step(stk)(args);
if (v1.tag === "ArgHalt") {
parseArgs$p$c = false;
parseArgs$p$r = $Either("Left", v1._1);
continue;
}
if (v1.tag === "ArgMatch") {
parseArgs$p$a0 = v1._1;
parseArgs$p$a1 = stk;
parseArgs$p$a2 = v1._2;
continue;
}
if (v1.tag =